rs6000: Add support for Dense Math Facility (DMF) registers
GCC on rs6000 now supports new 1024-bit Dense Math Facility registers for accelerated matrix and crypto operations.
This commit introduces support for the Dense Math Facility (DMF) registers on the rs6000 backend, enabling future processors to accelerate matrix and cryptographic operations. It adds eight 1024-bit registers (dmr0-dmr7), introduces a new 1024-bit data mode (TDOmode), extends XOmode to utilize these registers, and integrates them into the register allocation system, including mechanisms for transferring data between DMR and VSX registers.
In Details
The rs6000 backend now exposes the Dense Math Facility (DMF) registers (dmr0-dmr7) via new modes TDOmode and an extended XOmode. These 1024-bit registers are call-used and are integrated into the register class hierarchy and pressure classes. The commit adds logic for DMR-VSX transfers, as DMRs lack direct memory access. This is part of ongoing work to support upcoming IBM POWER processors with advanced matrix and crypto acceleration.
- rs6000
- GCC's backend for the PowerPC architecture, historically known as POWER/RS6000.
- Dense Math Facility (DMF)
- A future feature for IBM POWER processors that adds dedicated registers for accelerating matrix and cryptographic operations.
- VSX
- Vector Scalar Extension. An instruction set extension for the PowerPC architecture that provides vector processing capabilities, often using 128-bit registers.
- TDOmode
- A new 1024-bit data mode introduced in GCC for handling operations specifically with the Dense Math Facility registers.
- XOmode
- An existing data mode in GCC that has been extended to support operations using both MMA accumulator registers (in FPRs) and the new DMR registers.
- call-used
- Registers that are not preserved across function calls; their values may be overwritten by called functions. Also known as caller-saved registers.
- ABI
- Application Binary Interface. Defines how compiled code components interact at the binary level, including function calling conventions, data representation, and system calls.