https://gcc.gnu.org/g:68d8a00bdad3204f3909f5a6c01903f8f1bfdef5
commit r15-5261-g68d8a00bdad3204f3909f5a6c01903f8f1bfdef5 Author: Yury Khrustalev <yury.khrusta...@arm.com> Date: Thu Nov 14 16:15:05 2024 +0000 aarch64: Add ACLE __chkfeat intrinsic Note that compared to __builtin_aarch64_chkfeat (x) the ACLE __chkfeat(x) flips the bits to be more intuitive (xor the input to output). gcc/ChangeLog: * config/aarch64/arm_acle.h (__chkfeat): New. Diff: --- gcc/config/aarch64/arm_acle.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/gcc/config/aarch64/arm_acle.h b/gcc/config/aarch64/arm_acle.h index ab4e7e60e046..ca9aabf8ebb9 100644 --- a/gcc/config/aarch64/arm_acle.h +++ b/gcc/config/aarch64/arm_acle.h @@ -190,8 +190,21 @@ __rint64x (double __a) #pragma GCC pop_options + #pragma GCC push_options +#pragma GCC target ("+nothing") + +__extension__ extern __inline uint64_t +__attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) +__chkfeat (uint64_t __feat) +{ + return __builtin_aarch64_chkfeat (__feat) ^ __feat; +} +#pragma GCC pop_options + + +#pragma GCC push_options #pragma GCC target ("+nothing+crc") __extension__ extern __inline uint32_t