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

Reply via email to