On Thu, Jul 16, 2026 at 11:11:00AM +0530, Kishan Parmar wrote:
> Hi All,
> 
> The following patch has been bootstrapped and regtested on powerpc64le-linux.
> 
> 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-16  Kishan Parmar  <[email protected]>
>           Peter Bergner  <[email protected]>
> 
> gcc/ChangeLog:
>       * 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/ChangeLog:
>       * gcc.target/powerpc/future-dmf-xxacc.c: New test.
>       * gcc.target/powerpc/future-nodmf-xxacc.c: New test.

All of these patches are cleared to be back ported to the GCC 16 branch
after a short delay to make sure the master branch was not broken,
given they only modify PowerPC specific files or documentation files.

-- 
Michael Meissner, IBM
PO Box 98, Ayer, Massachusetts, USA, 01432
email: [email protected]

Reply via email to