rs6000: Add DMF-specific XO move pattern
Introduces specific instruction patterns for moving data between accumulator/DMR registers on rs6000 when the DMF feature is enabled.
The rs6000 backend now distinguishes between DMF and non-DMF variants for the movxo instruction pattern. This allows the compiler to utilize specialized DMF move instructions, such as dmxxinstdmr512, dmmr, and dmxxextfdmr512, for accumulator and DMR register moves when TARGET_DMF is active, potentially improving performance for these operations.
In Details
This commit refines the machine description for the rs6000 target, specifically within the MMA (Matrix Multiply-Accumulate) and VSX (Vector-Scalar Extension) instruction set extensions, by splitting the movxo (move extended) pattern. The new movxo_dmf pattern targets the Dense Math Registers (DMRs) and is enabled only when TARGET_DMF is set, utilizing specific instructions like dmxxinstdmr512 and dmmr. The existing movxo_nodmf pattern is retained for non-DMR operands, ensuring correct code generation for both scenarios.
- rs6000
- The GCC target specific name for IBM's PowerPC architecture, commonly used in their server and workstation products.
- DMF
- Dense Math Registers, a set of registers on certain PowerPC architectures (like POWER10) optimized for dense matrix operations and math-intensive workloads.
- DMR
- Dense Math Registers, see DMF.
- movxo
- A machine-dependent instruction pattern representing a move operation that can handle extended data types or vector elements, potentially including scalar-to-vector or vector-to-scalar moves.
- VSX
- Vector-Scalar Extension, an instruction set extension for PowerPC architectures that provides single-instruction, multiple-data (SIMD) capabilities alongside scalar operations.