aarch64: Port NEON halving-add intrinsics to pragma framework
NEON vhadd and vrhadd intrinsics now use the pragma-based framework, changing test expectations and removing inline implementations.
The NEON halving-add intrinsics vhadd and vrhadd have been ported to GCC’s pragma-based framework for aarch64. This change updates test cases to expect streaming-mode diagnostics instead of inlining failures and removes the always_inline attribute from these functions in arm_neon.h, requiring alternative intrinsics like vqtbl in some tests.
In Details
The vhadd and vrhadd NEON intrinsics are now handled via GCC's pragma-based intrinsic framework instead of direct always-inline function definitions in arm_neon.h. This change aligns their implementation with other intrinsics managed by pragmas, affecting how they are recognized and lowered by the compiler. Test cases were updated to reflect the new framework's behavior and the removal of always_inline.
- NEON
- An Advanced SIMD (Single Instruction, Multiple Data) extension for ARM processors, providing accelerated xử lý of vector data.
- intrinsics
- Special functions that map directly to specific hardware instructions, allowing C/C++ code to leverage specialized processor capabilities.
- pragma-based framework
- A mechanism within GCC where compiler behavior, particularly for intrinsics, is controlled by pragmas, enabling more flexible and maintainable handling of built-in functions.
- always_inline
- A compiler attribute that suggests or forces a function to be inlined at every call site, even if the compiler might otherwise decide not to.