Support ACEv1 instructions reused from AMX-AVX512 and tilemovcol
Adds ACEv1 instructions formerly from AMX-AVX512 and a new tilemovcol implementation, distinguishing intrinsics from legacy AMX.
This commit integrates ACEv1 instructions that were previously part of AMX-AVX512, ensuring distinct intrinsic names to avoid conflicts with legacy AMX. It also introduces a new tilemovcol implementation, noting its similarity to tilemovrow. The changes include updates to intrinsic headers, definition files, expansion logic, and machine descriptions, along with new compile tests.
In Details
Introduces ACEv1 support for instructions reused from AMX-AVX512 and implements tilemovcol. Distinguishes ACE intrinsics from legacy AMX by using unique names (e.g., _ace_ suffix or distinct names for convert instructions). Adds UNSPEC_TCVTROWD2PS and related patterns, along with UNSPECV_TILEMOVCOLINSERT. The tilemovcol implementation reuses logic from tilemovrow, focusing on insert/extract operations. Runtime tests are added for tilemovcol.
- ACEv1
- AI Compute Extensions version 1, a new x86 instruction set architecture designed for AI and compute-intensive workloads.
- AMX-AVX512
- Advanced Matrix Extensions, a set of x86 instructions for matrix operations, often combined with AVX-512 for enhanced performance.
- intrinsics
- Special functions that allow C/C++ code to directly invoke specific machine instructions, often providing performance benefits over traditional function calls.
- tilemovcol
- An instruction likely related to moving data between tiles (2D data structures) and registers, specifically operating on columns.