Add FP4/FP8 operand support for SubgroupMatrixMultiplyAccumulateINTEL (#3609)
Extend SubgroupMatrixMultiplyAccumulateINTEL to support packed 4-bit and
8-bit floating-point matrix operands by implementing extensions:
- SPV_INTEL_subgroup_matrix_multiply_accumulate_float4
- SPV_INTEL_subgroup_matrix_multiply_accumulate_float8
These extensions add operand flags that interpret packed integer data as
FP4/FP8 without requiring actual FP4/FP8 type support added by
SPV_INTEL_float4 or SPV_EXT_float8.
FP4 operands:
`MatrixAPackedFloat4E2M1INTEL` (0x40000) /
`MatrixBPackedFloat4E2M1INTEL` (0x80000)
FP8 operands:
`MatrixAPackedFloat8E4M3INTEL` (0x4000) / `MatrixBPackedFloat8E4M3INTEL`
(0x8000)
`MatrixAPackedFloat8E5M2INTEL` (0x10000) /
`MatrixBPackedFloat8E5M2INTEL` (0x20000)
Specs:
https://github.com/intel/llvm/blob/sycl/sycl/doc/design/spirv-extensions/SPV_INTEL_subgroup_matrix_multiply_accumulate_float4.asciidoc
https://github.com/intel/llvm/blob/sycl/sycl/doc/design/spirv-extensions/SPV_INTEL_subgroup_matrix_multiply_accumulate_float8.asciidoc
Original commit:
https://github.com/KhronosGroup/SPIRV-LLVM-Translator/commit/564a5623d7f2808