rs6000: Build DMF accumulators using DMR insert operations

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-22  Kishan Parmar  <kishan@linux.ibm.com>

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/dmf-xxacc.c: New test.
	* gcc.target/powerpc/nodmf-xxacc.c: New test.
7 files changed