rs6000: Add TDOmode reload patterns for DMR registers
Introduces new patterns for loading and storing TDOmode data to/from memory using DMR registers on rs6000 when TARGET_DMF is enabled.
The rs6000 backend now includes new define_insn_and_split patterns for handling TDOmode reloads between Dense Math Registers (DMRs) and memory. These patterns are activated when TARGET_DMF is enabled, allowing the compiler to efficiently manage data transfers for TDOmode values involving DMRs and memory.
In Details
This commit enhances the rs6000 backend's support for the Dense Math Registers (DMRs) when the TARGET_DMF (Dense Math Feature) option is enabled. It introduces new machine-dependent UNSPEC_ codes (UNSPEC_DMR_RELOAD_FROM_MEMORY and UNSPEC_DMR_RELOAD_TO_MEMORY) and corresponding define_insn_and_split patterns (reload_tdo_load and reload_tdo_store). These patterns are designed to handle the reloading of TDOmode values between DMRs and memory, enabling efficient data movement for operations involving these registers and modes. Additionally, rs6000_init_hard_regno_mode_ok is upda…
- rs6000
- The GCC target specific name for IBM's PowerPC architecture, commonly used in their server and workstation products.
- TDOmode
- A GCC machine mode representing a data type, likely a Vector Double-WORD or similar, used on specific architectures like PowerPC for handling larger floating-point or vector data.
- DMR
- Dense Math Registers, a set of registers on certain PowerPC architectures (like POWER10) optimized for dense matrix operations and math-intensive workloads.
- TARGET_DMF
- A compiler target flag indicating that the Dense Math Feature (DMF) instructions and capabilities are available and should be used for code generation on the target architecture (e.g., specific PowerPC processors).
- define_insn_and_split
- A macro used in GCC's machine description files to define a new instruction pattern (
insn) and specify how it should be 'split' into simpler instructions by the compiler if it's too complex for direct hardware implementation. - reload
- In compileritettura, 'reload' is the process of ensuring that values are available in registers when they are needed, especially after operations that might have stored them back to memory or when register pressure is high.