rs6000: Builtins for MMA+ float16 outer product instructions
Adds builtins for new Matrix Multiply Assist Plus float16 outer product instructions on PowerPC.
This commit introduces GCC built-in functions for forthcoming Matrix Multiply Assist Plus (MMA+) float16 generalized outer product (GER) instructions on PowerPC architectures. These additions prepare the compiler to support potential future hardware, enabling developers to utilize these specialized matrix operations.
In Details
New UNSPEC entries and corresponding __builtin_mma_ functions have been added to GCC's configuration for rs6000 to support upcoming MMA+ float16 GER instructions (e.g., dmxvf16gerx2, pmdmxvf16gerx2). This prepares the compiler for potential future Power processor enhancements without enabling them by default, as per the mma.md and rs6000-builtins.def files.
- Builtin function
- A function provided by the compiler that has a special meaning to the compiler itself. These often map directly to specific machine instructions for performance optimization.
- rs6000
- GCC's target architecture identifier for IBM's PowerPC architecture, commonly found in various server and workstation products.
- MMA+
- Matrix Multiply Assist Plus, an extension for PowerPC processors that accelerates matrix multiplication operations.
- float16
- A data type representing floating-point numbers using 16 bits, offering reduced precision and memory footprint compared to standard 32-bit (float) or 64-bit (double) types, useful for machine learning and graphics.
- GER
- Generalized Outer Product, a matrix operation often used as a building block for more complex matrix multiplications.
- UNSPEC
- An internal GCC construct used in pattern matching and code generation to represent undefined or special operations that do not map directly to standard machine instructions.