aboutsummaryrefslogtreecommitdiff
path: root/clang/lib
diff options
context:
space:
mode:
authorNick Sarnie <nick.sarnie@intel.com>2025-04-25 17:44:40 +0000
committerGitHub <noreply@github.com>2025-04-25 17:44:40 +0000
commit62328ab7fcaeea023b454b4e78fc6c7756439bf4 (patch)
tree75df9945af55349d26575325fc9f915a38a42481 /clang/lib
parenta643ac439594a0a53799ee42932eef53618b091c (diff)
downloadllvm-revert-128222-cuda.zip
llvm-revert-128222-cuda.tar.gz
llvm-revert-128222-cuda.tar.bz2
Revert "[clang][ARM][AArch64] Define intrinsics guarded by __has_builtin on a…"revert-128222-cuda
This reverts commit de0153da325b21340747d8a064906a8c1c2f95ea.
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Headers/arm_acle.h47
-rw-r--r--clang/lib/Sema/SemaARM.cpp6
2 files changed, 39 insertions, 14 deletions
diff --git a/clang/lib/Headers/arm_acle.h b/clang/lib/Headers/arm_acle.h
index 5cfa3d0..aabcbe0 100644
--- a/clang/lib/Headers/arm_acle.h
+++ b/clang/lib/Headers/arm_acle.h
@@ -29,16 +29,47 @@ extern "C" {
/* 7 SYNCHRONIZATION, BARRIER AND HINT INTRINSICS */
/* 7.3 Memory barriers */
-void __dmb(unsigned int);
-void __dsb(unsigned int);
-void __isb(unsigned int);
+#if !__has_builtin(__dmb)
+#define __dmb(i) __builtin_arm_dmb(i)
+#endif
+#if !__has_builtin(__dsb)
+#define __dsb(i) __builtin_arm_dsb(i)
+#endif
+#if !__has_builtin(__isb)
+#define __isb(i) __builtin_arm_isb(i)
+#endif
/* 7.4 Hints */
-void __wfi(void);
-void __wfe(void);
-void __sev(void);
-void __sevl(void);
-void __yield(void);
+
+#if !__has_builtin(__wfi)
+static __inline__ void __attribute__((__always_inline__, __nodebug__)) __wfi(void) {
+ __builtin_arm_wfi();
+}
+#endif
+
+#if !__has_builtin(__wfe)
+static __inline__ void __attribute__((__always_inline__, __nodebug__)) __wfe(void) {
+ __builtin_arm_wfe();
+}
+#endif
+
+#if !__has_builtin(__sev)
+static __inline__ void __attribute__((__always_inline__, __nodebug__)) __sev(void) {
+ __builtin_arm_sev();
+}
+#endif
+
+#if !__has_builtin(__sevl)
+static __inline__ void __attribute__((__always_inline__, __nodebug__)) __sevl(void) {
+ __builtin_arm_sevl();
+}
+#endif
+
+#if !__has_builtin(__yield)
+static __inline__ void __attribute__((__always_inline__, __nodebug__)) __yield(void) {
+ __builtin_arm_yield();
+}
+#endif
#if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE
#define __dbg(t) __builtin_arm_dbg(t)
diff --git a/clang/lib/Sema/SemaARM.cpp b/clang/lib/Sema/SemaARM.cpp
index c1cfea0..de6cf1a 100644
--- a/clang/lib/Sema/SemaARM.cpp
+++ b/clang/lib/Sema/SemaARM.cpp
@@ -1010,11 +1010,8 @@ bool SemaARM::CheckARMBuiltinFunctionCall(const TargetInfo &TI,
case ARM::BI__builtin_arm_vcvtr_d:
return SemaRef.BuiltinConstantArgRange(TheCall, 1, 0, 1);
case ARM::BI__builtin_arm_dmb:
- case ARM::BI__dmb:
case ARM::BI__builtin_arm_dsb:
- case ARM::BI__dsb:
case ARM::BI__builtin_arm_isb:
- case ARM::BI__isb:
case ARM::BI__builtin_arm_dbg:
return SemaRef.BuiltinConstantArgRange(TheCall, 0, 0, 15);
case ARM::BI__builtin_arm_cdp:
@@ -1111,11 +1108,8 @@ bool SemaARM::CheckAArch64BuiltinFunctionCall(const TargetInfo &TI,
switch (BuiltinID) {
default: return false;
case AArch64::BI__builtin_arm_dmb:
- case AArch64::BI__dmb:
case AArch64::BI__builtin_arm_dsb:
- case AArch64::BI__dsb:
case AArch64::BI__builtin_arm_isb:
- case AArch64::BI__isb:
l = 0;
u = 15;
break;