Add AVX10/v2 FP8 to FP4 and vice-versa conversions.
Enables conversions between FP8 and FP4 floating-point formats using AVX10/v2 intrinsics.
New AVX10/v2 intrinsic functions have been added to GCC to facilitate conversions between FP8 and FP4 (4-bit floating-point) formats. This includes support for various vector sizes (128, 256, and 512 bits) and masked operations. The changes also introduce new built-in types and definitions, along with test cases to ensure the correct implementation of these low-precision floating-point conversions.
In Details
This commit extends GCC's AVX10/v2 intrinsic support with conversions between FP8 and FP4 formats. It introduces intrinsics for transforming between BF8/HF8 and FP4, supporting masked and unmasked operations across 128-bit, 256-bit, and 512-bit vectors. The necessary definitions are added to i386-builtin-types.def, i386-builtin.def, and sse.md, along with new test files in gcc.target/i386/. This enables the use of even lower precision floating-point arithmetic on compliant x86 hardware.
- FP4
- A 4-bit floating-point format, representing an extremely low-precision floating-point number. It offers maximum data density but significantly reduced range and precision, primarily useful for specific AI or deep learning workloads.
- BF8
- Brain Floating Point 8-bit format, a specific type of 8-bit floating-point representation designed to balance precision and range, often used in deep learning inference and training.
- HF8
- Half-precision Floating Point 8-bit format. A variant of the 8-bit floating-point standard, likely with different range/precision characteristics compared to BF8.
- AVX10/v2
- An extension to the AVX (Advanced Vector Extensions) instruction set for x86 processors, introducing new features and capabilities, including support for newer floating-point formats like FP8.
- Intrinsics
- Special functions or constructs provided by a compiler that allow programmers to access low-level hardware instructions directly, often for performance-critical operations like vector arithmetic.