rs6000: Builtins for MMA+ bfloat16 and int8 instructions
Adds builtins for Matrix Multiply Assist Plus bfloat16 and int8 instructions on PowerPC.
This commit introduces GCC built-in functions for new Matrix Multiply Assist Plus (MMA+) instructions on PowerPC architectures, specifically targeting bfloat16 and signed 8-bit integer operations. These additions prepare the compiler for potential future hardware that may incorporate these specialized matrix and accumulation capabilities.
In Details
GCC's rs6000 backend now includes builtins for upcoming MMA+ instructions involving bfloat16 GER operations (e.g., dmxvbf16gerx2) and signed 8-bit integer accumulation (e.g., dmxvi8gerx4spp, pmdmxvi8gerx4spp), as defined in RFC02658. These are defined in mma.md and rs6000-builtins.def to support potential future Power processor revisions.
- 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.
- bfloat16
- A 16-bit floating-point format designed to have the same range as 32-bit float but with less precision, optimized for deep learning workloads.
- int8
- Refers to signed 8-bit integer data types. Used here for specialized accumulation operations in matrix multiply assist units.
- GER
- Generalized Outer Product, a matrix operation often used as a building block for more complex matrix multiplications.
- RFC02658
- Request for Comments document number, likely specifying the details of the new MMA+ instructions for PowerPC processors.
- 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.