[gcc(refs/users/meissner/heads/work251-dmf)] Update ChangeLog.*

Michael Meissner via Gcc-cvs <[email protected]>
Newsgroups gmane.comp.gcc.cvs
Message-ID <[email protected]>
https://gcc.gnu.org/g:fcf47bd477b6820269c9f6a62ba78d97a796357d

commit fcf47bd477b6820269c9f6a62ba78d97a796357d
Author: Michael Meissner <[email protected]>
Date:   Sat Jul 18 03:10:26 2026 -0400

    Update ChangeLog.*

Diff:
---
 gcc/ChangeLog.dmf | 680 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 680 insertions(+)

diff --git a/gcc/ChangeLog.dmf b/gcc/ChangeLog.dmf
index dcc4a00fe9bb..45e4d2d3b4d5 100644
--- a/gcc/ChangeLog.dmf
+++ b/gcc/ChangeLog.dmf
@@ -1,3 +1,683 @@
+==================== Branch work251-dmf, patch #124 ====================
+
+Add paddis support.
+
+This patch adds support for the paddis instruction that might be added to a
+future PowerPC processor.
+
+I have committed all of the patches in my backlog (dense math registers, other
+-mcpu=future instructions, random bug fixes, support for _Float16 and
+__bfloat16, and optimizations for vector logical operations on power10/power11)
+into the IBM vendor branch:
+
+	vendors/ibm/gcc-17-future
+
+2026-07-18  Michael Meissner  <[email protected]>
+
+gcc/
+
+	* config/rs6000/constraints.md (eU): New constraint.
+	(eV): Likewise.
+	* config/rs6000/predicates.md (paddis_operand): New predicate.
+	(paddis_paddi_operand): Likewise.
+	(add_cint_operand): Add paddis support.
+	(reg_or_add_cint_operand): Add support for adds that can be done with
+	paddis and paddi/addi.
+	(add_operand): Add support for adds that can be done with paddis, but
+	not paddis + paddi/addi..
+	* config/rs6000/rs6000.cc (num_insns_constant_gpr): Add support for adds
+	that can be done with paddis and also paddis combined with paddi/addi.
+	(print_operand): Add %B<n> for paddis support.
+	* config/rs6000/rs6000.h (TARGET_PADDIS): New macro.
+	(SIGNED_INTEGER_64BIT_P): Likewise.
+	* config/rs6000/rs6000.md (add<mode>3 define_expand): Add paddis
+	support.
+	(*add<mode>3 define_insn): Likewise.
+	(movdi_internal64): Likewise.
+	(movdi splitter): New splitter for paddis + paddi/addi.
+	* doc/md.texi (PowerPC constraints): Add eU and eV documentation.
+
+gcc/testsuite/
+
+	* gcc.target/powerpc/prefixed-addis.c: New test.
+
+==================== Branch work251-dmf, patch #123 ====================
+
+Support load/store vector with right length.
+
+This patch adds support for new instructions that may be added to the PowerPC
+architecture in the future to enhance the load and store vector with length
+instructions.
+
+The current instructions (lxvl, lxvll, stxvl, and stxvll) are inconvient to use
+since the count for the number of bytes must be in the top 8 bits of the GPR
+register, instead of the bottom 8 bits.  This meant that code generating these
+instructions typically had to do a shift left by 56 bits to get the count into
+the right position.  In a future version of the PowerPC architecture, new
+variants of these instructions might be added that expect the count to be in
+the bottom 8 bits of the GPR register.  These patches add this support to GCC
+if the user uses the -mcpu=future option.
+
+I discovered that the code in rs6000-string.cc to generate ISA 3.1 lxvl/stxvl
+future lxvll/stxvll instructions would generate these instructions on 32-bit.
+However the patterns for these instructions is only done on 64-bit systems.  So
+I added a check for 64-bit support before generating the instructions.
+
+I have committed all of the patches in my backlog (dense math registers, other
+-mcpu=future instructions, random bug fixes, support for _Float16 and
+__bfloat16, and optimizations for vector logical operations on power10/power11)
+into the IBM vendor branch:
+
+	vendors/ibm/gcc-17-future
+
+The patches have been tested on both little and big endian systems.  Can I check
+it into the master branch?
+
+2026-07-18   Michael Meissner  <[email protected]>
+
+gcc/
+
+	* config/rs6000/rs6000-string.cc (expand_block_move): Do not generate
+	lxvl and stxvl on 32-bit.
+	* config/rs6000/vsx.md (lxvl): If -mcpu=future, generate the lxvl with
+	the shift count automaticaly used in the insn.
+	(lxvrl): New insn for -mcpu=future.
+	(lxvrll): Likewise.
+	(stxvl): If -mcpu=future, generate the stxvl with the shift count
+	automaticaly used in the insn.
+	(stxvrl): New insn for -mcpu=future.
+	(stxvrll): Likewise.
+
+gcc/testsuite/
+
+	* gcc.target/powerpc/lxvrl.c: New test.
+
+==================== Branch work251-dmf, patch #122 ====================
+
+Add xvrlw support.
+
+This patch adds support for a possible new variant of the vector rotate left
+instruction that might be added to a future PowerPC.  This variant (xvrlw) can
+use any VSX register instead of requiring only Altivec registers.
+
+I have committed all of the patches in my backlog (dense math registers, other
+-mcpu=future instructions, random bug fixes, support for _Float16 and
+__bfloat16, and optimizations for vector logical operations on power10/power11)
+into the IBM vendor branch:
+
+	vendors/ibm/gcc-17-future
+
+2026-07-18  Michael Meissner  <[email protected]>
+
+gcc/
+
+	* config/rs6000/altivec.md (xvrlw): New insn.
+	* config/rs6000/rs6000.h (TARGET_XVRLW): New macro.
+
+gcc/testsuite/
+
+	* gcc.target/powerpc/vector-rotate-left.c: New test.
+
+==================== Branch work251-dmf, patch #121 ====================
+
+Add saturate subtract support
+
+This patch adds support for saturating subtract instructions that might be added
+to a future PowerPC.r  I think I had originally submitted patches that added a
+new built-in function to generate the subfus and subdus instructions.  Segher
+suggested that instead of generating a built-in function, that I should just
+having GCC automatically recognize cases where a saturating subtract could be
+generated.  This patch generates the saturating subtract instructions in the
+appropriate context.
+
+I have committed all of the patches in my backlog (dense math registers, other
+-mcpu=future instructions, random bug fixes, support for _Float16 and
+__bfloat16, and optimizations for vector logical operations on power10/power11)
+into the IBM vendor branch:
+
+	vendors/ibm/gcc-17-future
+
+2026-07-18   Michael Meissner  <[email protected]>
+
+gcc/
+
+	* config/rs6000/rs6000.md (gtu_geu): New code iterator.
+	(subfus<mode>3_<code>): New insns.
+
+gcc/testsuite/
+
+	* gcc.target/powerpc/saturate-subtract-1.c: New test.
+	* gcc.target/powerpc/saturate-subtract-2.c: Likewise.
+	* lib/target-supports.exp (check_effective_target_powerpc_future_ok):
+	New target test.
+
+==================== Branch work251-dmf, patch #120 ====================
+
+Use vector pair load/store for memcpy with -mcpu=future
+
+In the development for the power10 processor, GCC did not enable using the load
+vector pair and store vector pair instructions when optimizing things like
+memory copy.  This patch enables using those instructions if -mcpu=future is
+used.
+
+I have committed all of the patches in my backlog (dense math registers, other
+-mcpu=future instructions, random bug fixes, support for _Float16 and
+__bfloat16, and optimizations for vector logical operations on power10/power11)
+into the IBM vendor branch:
+
+	vendors/ibm/gcc-17-future
+
+I have tested these patches on both big endian and little endian PowerPC
+servers, with no regressions.  Can I check these patchs into the trunk?
+
+2026-07-18  Michael Meissner  <[email protected]>
+
+gcc/
+
+	* config/rs6000/rs6000-cpus.def (FUTURE_MASKS_SERVER): Enable using load
+	vector pair and store vector pair instructions for memory copy
+	operations.
+	(POWERPC_MASKS): Make the option for enabling using load vector pair and
+	store vector pair operations set and reset when the PowerPC processor is
+	changed.
+	* config/rs6000/rs6000.cc (rs6000_machine_from_flags): Disable
+	-mblock-ops-vector-pair from influencing .machine selection.
+
+gcc/testsuite/
+
+	* gcc.target/powerpc/future-3.c: New test.
+
+==================== Branch work251-dmf, patch #112 ====================
+
+DMF patch 12
+
+(note, the patch adding UNSPEC_DMF_EXTRACT1024 has been removed).
+
+Add two new builtins for extracting data from 1024-bit Dense Math
+Registers (DMRs):
+
+  - __builtin_dmr_extract512 (void *, dmr1024 *, const int<2>):
+    extracts one 512-bit half of a DMR into four 128-bit vectors.
+  - __builtin_disassemble_dmr (void *, dmr1024 *):
+    extracts both 512-bit halves of a DMR into eight 128-bit vectors.
+
+2026-07-16  Surya Kumari Jangala  <[email protected]>
+
+gcc/
+
+	* config/rs6000/rs6000-builtins.def (__builtin_dmr_extract512): New
+	built-in.
+	(__builtin_disassemble_dmr): Likewise.
+	(__builtin_dmr_extract512_internal): New internal built-in.
+	* config/rs6000/rs6000-builtin.cc (rs6000_gimple_fold_mma_builtin):
+	Exempt RS6000_BIF_DISASSEMBLE_DMR from the early-return guard.
+	Generate appropriate gimple code for the extract builtins.
+
+gcc/testsuite/
+
+	* gcc.target/powerpc/dmf-extract512.c: New test.
+	* gcc.target/powerpc/dmf-disassemble-dmr.c: New test.
+
+==================== Branch work251-dmf, patch #111 ====================
+
+DMF patch 11
+
+This patch replaces the 'd' constraint that was used for accumulators
+previously since they overlapped with the FPRs, to use 'wD' constraint
+and the new accumulator_operand in the existing mma define_insns. The
+behaviour without dense-math option will be same as before, only if
+dense-math option is used will the DMR registers be used.
+
+It also updates the %A operand printer to print the DMR register numbers
+instead of FPR if dense-math option is enabled
+
+2026-07-16  Avinash Jayakar  <[email protected]>
+	    Vijay Shankar  <[email protected]>
+
+gcc/
+
+	* config/rs6000/mma.md (mma_xxsetaccz): Use wD constraint and
+	accumulator operand.
+	(mma_<vv>): Likewise.
+	(mma_<avv>): Likewise.
+	(mma_<pv>): Likewise.
+	(mma_<apv>): Likewise.
+	(mma_<vvi4i4i8>): Likewise.
+	(mma_<avvi4i4i8>): Likewise.
+	(mma_<vvi4i4i2>): Likewise.
+	(mma_<avvi4i4i2>): Likewise.
+	(mma_<vvi4i4>): Likewise.
+	(mma_<avvi4i4>): Likewise.
+	(mma_<pvi4i2>): Likewise.
+	(mma_<apvi4i2>): Likewise.
+	(mma_<vvi4i4i4>): Likewise.
+	(mma_<avvi4i4i4>): Likewise.
+	* config/rs6000/rs6000.cc (print_operand): Print DMR register
+	numbers if dense math option enabled.
+
+==================== Branch work251-dmf, patch #110 ====================
+
+DMF patch 10
+
+Add support for the DMF (Dense Math Facility) and MMA+
+(Matrix-Multiply Assist Plus) builtins and instructions which may be
+available on a future Power processor.
+
+This patch extends the existing MMA infrastructure to support Dense
+Math Registers (DMRs).
+
+Key changes:
+
+1. Extended MMA operand support from 7 to 9 operands (MAX_MMA_OPERANDS)
+
+2. Added new DMF-specific unspecs:
+
+   * UNSPEC_DMF_DMXOR for DMR XOR operations
+   * UNSPEC_DMF_DMXVI8GERX4* for DMR GER (outer product) operations
+   * UNSPEC_DMF_PMDMXVI8GERX4* for prefixed DMR GER operations
+   * UNSPEC_DMF_DMSETDMRZ for zeroing a DMR register
+
+3. Implemented new instruction patterns in mma.md:
+
+   * dmf_build_dmr: Build a DMR from eight vector operands
+   * dmf_dmsetdmrz: Zero a DMR register
+   * dmf_dmxor: XOR operation on DMR registers
+   * dmf_dmxvi8gerx4/dmxvi8gerx4pp: DMR outer product operations
+   * dmf_pmdmxvi8gerx4/pmdmxvi8gerx4pp: Prefixed DMR outer product
+     operations
+
+4. Added new DMF builtins and updated GIMPLE folding:
+
+   * Added DMF and MMA+ builtins
+   * Updated GIMPLE folding to handle DMR pass-by-reference semantics
+   * Extended builtin expansion to support up to 9 operand instructions
+
+5. Added documentation for the new DMF and MMA+ builtins.
+
+The implementation follows the existing MMA pattern where user-facing
+builtins use pass-by-reference for DMR arguments, while internal
+builtins use pass-by-value for optimization.
+
+2026-07-15  Peter Bergner  <[email protected]>
+	    Surya Kumari Jangala  <[email protected]>
+	    Kishan Parmar  <[email protected]>
+
+gcc/
+
+	* config/rs6000/mma.md (MAX_MMA_OPERANDS): Increase from 7 to 9.
+	(UNSPEC_DMF_DMXOR): New unspec.
+	(UNSPEC_DMF_DMXVI8GERX4): Likewise.
+	(UNSPEC_DMF_DMXVI8GERX4PP): Likewise.
+	(UNSPEC_DMF_PMDMXVI8GERX4): Likewise.
+	(UNSPEC_DMF_PMDMXVI8GERX4PP): Likewise.
+	(UNSPEC_DMF_DMSETDMRZ): Likewise.
+	(DMF_PV): New iterator.
+	(DMF_DPV): Likewise.
+	(DMF_PVI8I4I4): Likewise.
+	(DMF_DPVI8I4I4): Likewise.
+	(pv): Add DMF mappings.
+	(apv): Likewise.
+	(pvi8i4i4): New attribute.
+	(dpvi8i4i4): Likewise.
+	(dmf_build_dmr): New define_expand.
+	(dmf_dmsetdmrz): New insn.
+	(dmf_dmxor): Likewise.
+	(dmf_<pv>): New insn pattern.
+	(dmf_<apv>): Likewise.
+	(dmf_<pvi8i4i4>): Likewise.
+	(dmf_<dpvi8i4i4>): Likewise.
+	* config/rs6000/rs6000-builtin.cc (rs6000_gimple_fold_mma_builtin): Add
+	DMF builtin support. Handle DMR pass-by-reference semantics.
+	Support up to nine builtin operands.
+	(mma_expand_builtin): Likewise.
+	(rs6000_expand_builtin): Handle DMF builtins.
+	* config/rs6000/rs6000-builtins.def: Add DMF and MMA+ builtin
+	definitions.
+	* doc/extend.texi
+	(PowerPC Matrix-Multiply Assist Built-in Functions): Document
+	MMA+ builtins.
+	(PowerPC Dense Math Facility Built-in Functions): Document DMF builtins.
+
+gcc/testsuite/
+
+	* gcc.target/powerpc/dmf-build-dmr.c: New test.
+	* gcc.target/powerpc/dmf-builtin.c: New test.
+
+==================== Branch work251-dmf, patch #109 ====================
+
+DMF patch 9
+
+(note movxo_dmf has been modified to use %W<n> instead of %Y<n>).
+
+Split the movxo pattern into DMF and non-DMF variants.
+
+Use DMF move instructions (dmxxinstdmr512, dmmr, and dmxxextfdmr512)
+for accumulator/DMR moves while retaining the existing split for
+non-DMR operands.
+
+2026-07-15  Vijay Shankar  <[email protected]>
+
+gcc/ChangeLog:
+	* config/rs6000/mma.md (*movxo): renamed to movxo_nodmf
+	(*movxo_nodmf): updated contraint to use wD and add !TARGET_DMF
+	(*movxo_dmf): New pattern to handle dmf insert/extract from vsx
+
+==================== Branch work251-dmf, patch #108 ====================
+
+DMF patch 8
+
+Add define_insn_and_split patterns for reloading TDOmode values between
+Dense Math Registers (DMRs) and memory when TARGET_DMF is enabled.
+
+2026-07-15  Surya Kumari Jangala  <[email protected]>
+	    Peter Bergner  <[email protected]>
+
+gcc/
+
+	* config/rs6000/mma.md (UNSPEC_DMF_RELOAD_FROM_MEMORY): New unspec.
+	(UNSPEC_DMF_RELOAD_TO_MEMORY): Likewise.
+	(reload_tdo_load): New define_insn_and_split.
+	(reload_tdo_store): Likewise.
+	* config/rs6000/rs6000.cc (rs6000_init_hard_regno_mode_ok): Set
+	reload_load and reload_store for TDOmode when TARGET_DMF.
+
+==================== Branch work251-dmf, patch #107 ====================
+
+DMF patch 7
+
+(note the 'W' case in print_operand has been moved from the original patch).
+
+Hi All,
+
+The following patch has been bootstrapped and regtested on powerpc64le-linux.
+
+Add move support for the new TDOmode opaque type used to represent
+1024-bit Dense Math Registers that may be supported by future Power
+processors.
+
+Implement the movtdo pattern to support moves between memory, VSX
+registers, and Dense Math Registers. Memory moves and VSX
+register-to-register moves are handled by the generic multi-register
+splitter. Dense Math Register-to-Register moves use dmmr, while moves
+between VSX and Dense Math Registers are expanded using dm_insert1024
+and dm_extract512.
+
+2026-07-14  Jeevitha Palanisamy  <[email protected]>
+
+gcc/
+
+	* config/rs6000/mma.md (UNSPEC_DMF_EXTRACT512): New unspec.
+	(dm_extract512): New insn.
+	(movtdo): New expander.
+	(*movtdo): New insn_and_split to support TDOmode moves between
+	memory, VSX registers, and Dense Math Registers.
+	* config/rs6000/rs6000.cc (rs6000_emit_move): Diagnose constant
+	assignments to TDOmode objects.
+	(rs6000_split_multireg_move): Handle TDOmode when splitting
+	multi-register moves.
+
+==================== Branch work251-dmf, patch #106 ====================
+
+DMF patch 6
+
+Hi All,
+
+The following patch has been bootstrapped and regtested on powerpc64le-linux.
+
+Changes from v1:
+	- Removed duplicated code from the previous patch so this patch
+	applies cleanly.
+
+Thank You,
+Kishan
+
+A future PowerPC processor may provide the Dense Math Facility (DMF),
+where accumulators are backed by dedicated Dense Math Registers (DMRs).
+Update accumulator assembly to build accumulators in DMRs using the new
+DMR insert operations rather than xxmtacc/xxmfacc.
+
+Add DMR register predicate support, enable the required OOmode VSX pair
+patterns under TARGET_DMF, use accumulator operands for MMA accumulator
+assembly and disassembly, and avoid emitting xxmtacc/xxmfacc during
+internal accumulator moves and GIMPLE folding when DMF is enabled.
+Add DMF instruction type and ISA attributes for instruction scheduling
+and enablement.
+
+2026-07-15  Kishan Parmar  <[email protected]>
+
+gcc/
+
+	* config/rs6000/mma.md (UNSPEC_DMF_INSERT512): New unspec.
+	(UNSPEC_DMF_INSERT1024): Likewise.
+	(movoo): Enable for TARGET_DMF.
+	(*movoo): Likewise.
+	(vsx_assemble_pair): Likewise.
+	(*vsx_assemble_pair): Likewise.
+	(vsx_disassemble_pair): Likewise.
+	(*vsx_disassemble_pair): Likewise.
+	(dm_insert512): New insn.
+	(dm_insert1024): Likewise.
+	(mma_assemble_acc): Use accumulator_operand.
+	Build accumulators via DMR insert operations when TARGET_DMF.
+	(*mma_assemble_acc): Use accumulator_operand.
+	(mma_<acc>): New define_expand treating xxmtacc/xxmfacc as no-ops
+	for TARGET_DMF.
+	(*mma_<acc>): Restrict to !TARGET_DMF and use accumulator_operand.
+	(mma_disassemble_acc): Use accumulator_operand.
+	* config/rs6000/predicates.md (dmr_register_operand): New predicate.
+	(gpc_reg_operand): Accept DMR registers.
+	* config/rs6000/rs6000-builtin.cc (rs6000_gimple_fold_mma_builtin): Do
+	not emit xxmfacc for DISASSEMBLE_ACC when TARGET_DMF.
+	* config/rs6000/rs6000.cc (rs6000_hard_regno_mode_ok_uncached): Allow
+	OOmode in VSX register pairs for TARGET_DMF.
+	(rs6000_split_multireg_move): Avoid emitting xxmtacc/xxmfacc when
+	TARGET_DMF.
+	* config/rs6000/rs6000.md (type): Add dmf type.
+	(isa): Add mma and dmf ISA attributes.
+	(enabled): Add mma and dmf enable conditions.
+
+gcc/testsuite/
+
+	* gcc.target/powerpc/future-dmf-xxacc.c: New test.
+	* gcc.target/powerpc/future-nodmf-xxacc.c: New test.
+
+==================== Branch work251-dmf, patch #105 ====================
+
+DMF patch 5
+
+Following patch has been bootstrapped and regtested on
+powerpc64le-linux-gnu. Ok for trunk and gcc-16?
+
+The future processor may introduce new set of registers for
+accumulators. This patch adds a constraint and predicate for the
+accumulator registers which can be used by the dense math and mma
+patterns.
+
+2026-07-16  Avinash Jayakar  <[email protected]>
+
+gcc/
+
+	* config/rs6000/constraints.md
+	(rs6000_constraints[RS6000_CONSTRAINT_wD]): New wD constraint.
+	* config/rs6000/predicates.md (accumulator_operand): New predicate.
+	* config/rs6000/rs6000.cc (rs6000_debug_reg_global): Support wD
+	register class.
+	(rs6000_init_hard_regno_mode_ok): Map wD to FLOAT_REGS.
+	* config/rs6000/rs6000.h (enum r6000_reg_class_enum): Add wD constraint.
+	* doc/md.texi: Document the new constraint.
+
+==================== Branch work251-dmf, patch #104 ====================
+
+DMF patch 4
+
+The Dense Math Facility, which may be present in a future processor,
+extends the Power architecture's computational capabilities by providing
+eight dedicated registers (dmr0-dmr7) that can efficiently handle large
+matrix operations. These registers will also be used in cryptographic
+operations.
+There are no operations to load/store Dense Math registers from/to
+memory. For loading from memory, the 1024 bit value is first loaded into
+8 VSX registers which are then copied into a DMR register. Similarly,
+to store the contents of a DMR register into memory, the the contents
+of the DMR are copied to 8 VSX registers which are then loaded into
+memory.
+The DMR registers are treated as caller-saved.
+
+Key Features:
+
+ 1. Register Infrastructure:
+    - Adds 8 new DMR registers (dmr0-dmr7), numbered 111-118
+    - Each register is 1024 bits (128 bytes) in size
+    - Registers are call-used (caller-saved) following ABI conventions
+    - Increases total pseudo registers from 111 to 119
+
+ 2. Data Type Support:
+    - TDOmode: New 1024-bit mode specifically for DMR operations
+    - XOmode: Extended to support both MMA accumulators (in FPRs) and
+      DMR registers, providing flexibility in register allocation
+    - Both modes support DMR registers when TARGET_DMF is enabled
+    - TDOmode and XOmode excluded from register tying to prevent
+      incorrect cross-class allocation
+
+ 3. Register Allocation:
+    - Integrated DMR_REGS into the register class hierarchy
+    - Added to register pressure classes for optimal allocation
+    - Implements proper register allocation ordering
+    - DMR registers can be allocated for XOmode and TDOmode values
+
+ 4. Addressing and Memory Operations:
+    - Supports offset addressing mode for TDOmode values
+    - Implements secondary reload mechanisms for DMR ↔ VSX transfers
+    - New rs6000_dmr_register_move_cost helper computes move costs
+      between a DMR register and any register class via VSX:
+      XOmode costs 2, TDOmode costs 4, other modes scale by nregs
+    - Ensures proper alignment requirements (vector alignment)
+    - rs6000_register_move_cost and rs6000_memory_move_cost extended
+      to handle DMR_REGS as source or destination
+
+ 5. Register Moves and Transfers:
+    - Enables simple moves between DMR and VSX registers
+
+ 6. Debugging and Toolchain Support:
+    - Assigns debugger register numbers 112-119 for DMR registers
+
+2027-07-13  Surya Kumari jangala  <[email protected]>
+
+gcc/
+
+	* config/rs6000/rs6000.cc (enum rs6000_reg_type): Add DMR_REG_TYPE.
+	(enum rs6000_reload_reg_type): Add RELOAD_REG_DMR.
+	(LAST_RELOAD_REG_CLASS): Update to RELOAD_REG_DMR.
+	(reload_reg_map): Add DMR entry.
+	(rs6000_reg_names): Add DMR register names.
+	(alt_reg_names): Add alternate DMR register names.
+	(rs6000_hard_regno_nregs_internal): Handle DMR registers.
+	(rs6000_hard_regno_mode_ok_uncached): Add TDOmode and XOmode support for
+	DMR registers.
+	(rs6000_debug_reg_global): Add TDOmode to debug modes and print DMR
+	register range.
+	(rs6000_setup_reg_addr_masks): Handle RELOAD_REG_DMR.
+	Allow offset loads for TDOmode values.
+	(rs6000_init_hard_regno_mode_ok): Add DMR_REGS to reg_class_to_reg_type
+	mapping.
+	Update precalculation of CLASS_MAX_NREGS.
+	(rs6000_secondary_reload_memory): Handle DMR_REGS class.
+	(rs6000_secondary_reload_simple_move): Add DMR to VSX moves.
+	(rs6000_preferred_reload_class): Handle DMR_REGS.
+	(rs6000_modes_tieable_p): Exclude TDOmode from register tying.
+	(reg_offset_addressing_ok_p): Allow XOmode with TARGET_DMF.
+	Add TDOmode support with TARGET_DMF.
+	(rs6000_secondary_reload_class): Handle DMR_REGS reload routing.
+	(rs6000_dmr_register_move_cost): New helper.
+	(rs6000_register_move_cost): Handle DMR_REGS as source or destination.
+	(rs6000_memory_move_cost): Add DMR_REGS case routing cost through VSX.
+	(rs6000_compute_pressure_classes): Add DMR_REGS when TARGET_DMF.
+	(rs6000_debugger_regno): Add DMR register numbering.
+	* config/rs6000/rs6000.h (UNITS_PER_DMR_WORD): Define as 128.
+	(FIRST_PSEUDO_REGISTER): Increase from 111 to 119.
+	(FIXED_REGISTERS): Add 8 DMR registers as non-fixed.
+	(CALL_USED_REGISTERS): Mark all DMR registers as call-used.
+	(REG_ALLOC_ORDER): Add DMR registers to allocation order.
+	(DMR_REGNO_P): New macro.
+	(VECTOR_ALIGNMENT_P): Add TDOmode.
+	(enum reg_class): Add DMR_REGS entry.
+	(REG_CLASS_CONTENTS): Add DMR_REGS bitmask.
+	(REGISTER_NAMES): Add dmr0-dmr7 register names.
+	(ADDITIONAL_REGISTER_NAMES): Add dmr0-dmr7 mappings.
+	* config/rs6000/rs6000.md (FIRST_DMR_REGNO): Define as 111.
+	(LAST_DMR_REGNO): Define as 118.
+
+==================== Branch work251-dmf, patch #103 ====================
+
+DMF patch 3
+
+The changes have been bootstrapped and regression tested on
+powerpc64le-linux.
+
+Register __dmr1024 as a new 1024-bit opaque built-in type, following
+the same pattern as the existing __vector_pair (OOmode) and
+__vector_quad (XOmode) opaque types.  __dmr1024 uses TDOmode, which
+was already added in a previous commit ("rs6000: Add TDOmode
+support"), and is intended to hold the contents of a Dense Math
+Register (DMR) when the Dense Math Facility (-mdense-math) is
+enabled.
+
+Note there is no __dmr1024 move pattern (movtdo) yet, so none of
+these tests perform an actual load/store/copy of a __dmr1024 value;
+that is left for a follow-on patch that adds the Dense Math move
+support.
+
+2026-07-13  Manjunath Matti  <[email protected]>
+
+gcc/
+
+	* config/rs6000/rs6000.h (RS6000_BTI_dmr1024): New enumerator.
+	(RS6000_BTI_ptr_dmr1024): New enumerator.
+	(dmr1024_type_node): New macro.
+	(ptr_dmr1024_type_node): New macro.
+	* config/rs6000/rs6000-builtin.cc (rs6000_type_string): Handle
+	dmr1024_type_node.
+	(rs6000_init_builtins): Register the __dmr1024 opaque type and
+	its pointer-to-const variant, with 512-bit alignment.
+	* config/rs6000/rs6000.cc (rs6000_mangle_type): Handle
+	dmr1024_type_node.
+	(rs6000_invalid_conversion): Reject conversions to/from TDOmode.
+	(rs6000_opaque_type_invalid_use_p): Gate __vector_quad and
+	__vector_pair on TARGET_MMA and __dmr1024 on TARGET_DMF
+	independently, and require -mdense-math for __dmr1024.
+
+gcc/testsuite/
+
+	* gcc.target/powerpc/dmr1024-alignment.c: New test case.
+	* gcc.target/powerpc/dmr1024-compile.c: Likewise.
+	* gcc/testsuite/gcc.target/powerpc/dmr1024-invalid-use-1.c: Likewise.
+	* gcc/testsuite/gcc.target/powerpc/dmr1024-invalid-use-2.c: Likewise.
+	* gcc/testsuite/gcc.target/powerpc/dmf-no-mma.c: Likewise.
+
+==================== Branch work251-dmf, patch #102 ====================
+
+DMF patch 2
+
+Hi All,
+
+The following patch has been bootstrapped and regtested on powerpc64le-linux.
+
+Add a new %W print modifier to print_operand that prints the VSX
+register number plus two.
+
+Some future Power instruction patterns require printing two VSX
+registers corresponding to a __vector_pair operand. The existing
+%x print modifier emits the first VSX register using VSX register
+numbering. Add a new %W print modifier to emit the second VSX
+register of the pair.
+
+2025-07-14  Jeevitha Palanisamy  <[email protected]>
+	    Kishan Parmar  <[email protected]>
+
+gcc/
+	* config/rs6000/rs6000.cc (print_operand): Add the `%W`
+	print modifier to print the VSX register number plus two.
+
 ==================== Branch work251-dmf, baseline ====================
 
 2026-07-16   Michael Meissner  <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.