[clang] Reapply "[clang][ARM][AArch64] Define intrinsics guarded by __has_builtin on all platforms" (#128222)" (PR #140910)

2025-06-03 Thread Reid Kleckner via cfe-commits

https://github.com/rnk approved this pull request.

Yep, feel free to reland this.

https://github.com/llvm/llvm-project/pull/140910
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] Reapply "[clang][ARM][AArch64] Define intrinsics guarded by __has_builtin on all platforms" (#128222)" (PR #140910)

2025-06-03 Thread Nick Sarnie via cfe-commits

https://github.com/sarnex ready_for_review 
https://github.com/llvm/llvm-project/pull/140910
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] Reapply "[clang][ARM][AArch64] Define intrinsics guarded by __has_builtin on all platforms" (#128222)" (PR #140910)

2025-06-03 Thread Nick Sarnie via cfe-commits

sarnex wrote:

Dependent commit reapplied.

https://github.com/llvm/llvm-project/pull/140910
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] Reapply "[clang][ARM][AArch64] Define intrinsics guarded by __has_builtin on all platforms" (#128222)" (PR #140910)

2025-05-28 Thread Nick Sarnie via cfe-commits

https://github.com/sarnex converted_to_draft 
https://github.com/llvm/llvm-project/pull/140910
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] Reapply "[clang][ARM][AArch64] Define intrinsics guarded by __has_builtin on all platforms" (#128222)" (PR #140910)

2025-05-28 Thread Nick Sarnie via cfe-commits

sarnex wrote:

Looks like the fix commit broke something again :(

https://github.com/llvm/llvm-project/pull/140910
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] Reapply "[clang][ARM][AArch64] Define intrinsics guarded by __has_builtin on all platforms" (#128222)" (PR #140910)

2025-05-21 Thread via cfe-commits

llvmbot wrote:




@llvm/pr-subscribers-backend-aarch64

Author: Nick Sarnie (sarnex)


Changes

The original change caused issues on MSVC due to a new warning thrown inside 
MSVC headers. That was fixed 
[here](https://github.com/llvm/llvm-project/commit/95bd9eef42679f3d13e3279204c75372e2c062f0),
 so reapply this commit. Original description below.

Instead of defining ARM ACLE intrinsics only on MSVC and guarding wrapper 
functions in headers with __has_builtin, universally define the intrinsics as 
target header builtins.

---
Full diff: https://github.com/llvm/llvm-project/pull/140910.diff


14 Files Affected:

- (modified) clang/include/clang/Basic/BuiltinHeaders.def (+1) 
- (modified) clang/include/clang/Basic/BuiltinsAArch64.def (+8-10) 
- (modified) clang/include/clang/Basic/BuiltinsARM.def (+8-9) 
- (modified) clang/lib/Headers/arm_acle.h (+8-44) 
- (modified) clang/lib/Sema/SemaARM.cpp (+6) 
- (added) clang/test/CodeGen/arm-former-microsoft-intrinsics-header-warning.c 
(+50) 
- (added) clang/test/CodeGen/arm-former-microsoft-intrinsics.c (+53) 
- (modified) clang/test/CodeGen/arm-microsoft-intrinsics.c (-21) 
- (added) clang/test/CodeGen/arm64-former-microsoft-intrinsics-header-warning.c 
(+53) 
- (added) clang/test/CodeGen/arm64-former-microsoft-intrinsics.c (+59) 
- (modified) clang/test/CodeGen/arm64-microsoft-intrinsics.c (-56) 
- (modified) clang/test/CodeGen/builtins-arm-microsoft.c (+7-5) 
- (modified) clang/test/Headers/Inputs/include/stdint.h (+12) 
- (modified) clang/test/Headers/ms-intrin.cpp (+4) 


``diff
diff --git a/clang/include/clang/Basic/BuiltinHeaders.def 
b/clang/include/clang/Basic/BuiltinHeaders.def
index 8e4a2f9bee9aa..22668ec7a3396 100644
--- a/clang/include/clang/Basic/BuiltinHeaders.def
+++ b/clang/include/clang/Basic/BuiltinHeaders.def
@@ -12,6 +12,7 @@
 
//===--===//
 
 HEADER(NO_HEADER, nullptr)
+HEADER(ARMACLE_H, "arm_acle.h")
 HEADER(BLOCKS_H, "Blocks.h")
 HEADER(COMPLEX_H, "complex.h")
 HEADER(CTYPE_H, "ctype.h")
diff --git a/clang/include/clang/Basic/BuiltinsAArch64.def 
b/clang/include/clang/Basic/BuiltinsAArch64.def
index 0b2dba86d9930..8867a9fe09fb9 100644
--- a/clang/include/clang/Basic/BuiltinsAArch64.def
+++ b/clang/include/clang/Basic/BuiltinsAArch64.def
@@ -50,6 +50,11 @@ BUILTIN(__builtin_arm_wfi, "v", "")
 BUILTIN(__builtin_arm_sev, "v", "")
 BUILTIN(__builtin_arm_sevl, "v", "")
 BUILTIN(__builtin_arm_chkfeat, "WUiWUi", "")
+TARGET_HEADER_BUILTIN(__yield, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__wfe,   "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__wfi,   "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__sev,   "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__sevl,  "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
 
 // Like __builtin_trap but provide an 16-bit immediate reason code (which goes 
into `brk #N`).
 BUILTIN(__builtin_arm_trap, "vUIs", "nr")
@@ -82,6 +87,9 @@ TARGET_BUILTIN(__builtin_arm_mops_memset_tag, "v*v*iz", "", 
"mte,mops")
 BUILTIN(__builtin_arm_dmb, "vUi", "nc")
 BUILTIN(__builtin_arm_dsb, "vUi", "nc")
 BUILTIN(__builtin_arm_isb, "vUi", "nc")
+TARGET_HEADER_BUILTIN(__dmb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__dsb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__isb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
 
 TARGET_BUILTIN(__builtin_arm_jcvt, "Zid", "nc", "v8.3a")
 
@@ -98,16 +106,6 @@ BUILTIN(__builtin_arm_wsr64, "vcC*WUi", "nc")
 TARGET_BUILTIN(__builtin_arm_wsr128, "vcC*LLLUi", "nc", "d128")
 BUILTIN(__builtin_arm_wsrp, "vcC*vC*", "nc")
 
-// MSVC
-LANGBUILTIN(__dmb, "vUi", "nc", ALL_MS_LANGUAGES)
-LANGBUILTIN(__dsb, "vUi", "nc", ALL_MS_LANGUAGES)
-LANGBUILTIN(__isb, "vUi", "nc", ALL_MS_LANGUAGES)
-LANGBUILTIN(__yield, "v", "",   ALL_MS_LANGUAGES)
-LANGBUILTIN(__wfe,   "v", "",   ALL_MS_LANGUAGES)
-LANGBUILTIN(__wfi,   "v", "",   ALL_MS_LANGUAGES)
-LANGBUILTIN(__sev,   "v", "",   ALL_MS_LANGUAGES)
-LANGBUILTIN(__sevl,  "v", "",   ALL_MS_LANGUAGES)
-
 // Misc
 BUILTIN(__builtin_sponentry, "v*", "c")
 
diff --git a/clang/include/clang/Basic/BuiltinsARM.def 
b/clang/include/clang/Basic/BuiltinsARM.def
index cbab87cecbc7d..2592e25e95c37 100644
--- a/clang/include/clang/Basic/BuiltinsARM.def
+++ b/clang/include/clang/Basic/BuiltinsARM.def
@@ -186,11 +186,19 @@ BUILTIN(__builtin_arm_wfi, "v", "")
 BUILTIN(__builtin_arm_sev, "v", "")
 BUILTIN(__builtin_arm_sevl, "v", "")
 BUILTIN(__builtin_arm_dbg, "vUi", "")
+TARGET_HEADER_BUILTIN(__yield, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__wfe, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__wfi, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__sev, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__sevl, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
 
 // Data barrier
 BUILTIN(__builtin_arm_dmb, "vUi", "nc")
 BUILTIN(__builtin_arm_dsb, "

[clang] Reapply "[clang][ARM][AArch64] Define intrinsics guarded by __has_builtin on all platforms" (#128222)" (PR #140910)

2025-05-21 Thread via cfe-commits

llvmbot wrote:




@llvm/pr-subscribers-backend-arm

Author: Nick Sarnie (sarnex)


Changes

The original change caused issues on MSVC due to a new warning thrown inside 
MSVC headers. That was fixed 
[here](https://github.com/llvm/llvm-project/commit/95bd9eef42679f3d13e3279204c75372e2c062f0),
 so reapply this commit. Original description below.

Instead of defining ARM ACLE intrinsics only on MSVC and guarding wrapper 
functions in headers with __has_builtin, universally define the intrinsics as 
target header builtins.

---
Full diff: https://github.com/llvm/llvm-project/pull/140910.diff


14 Files Affected:

- (modified) clang/include/clang/Basic/BuiltinHeaders.def (+1) 
- (modified) clang/include/clang/Basic/BuiltinsAArch64.def (+8-10) 
- (modified) clang/include/clang/Basic/BuiltinsARM.def (+8-9) 
- (modified) clang/lib/Headers/arm_acle.h (+8-44) 
- (modified) clang/lib/Sema/SemaARM.cpp (+6) 
- (added) clang/test/CodeGen/arm-former-microsoft-intrinsics-header-warning.c 
(+50) 
- (added) clang/test/CodeGen/arm-former-microsoft-intrinsics.c (+53) 
- (modified) clang/test/CodeGen/arm-microsoft-intrinsics.c (-21) 
- (added) clang/test/CodeGen/arm64-former-microsoft-intrinsics-header-warning.c 
(+53) 
- (added) clang/test/CodeGen/arm64-former-microsoft-intrinsics.c (+59) 
- (modified) clang/test/CodeGen/arm64-microsoft-intrinsics.c (-56) 
- (modified) clang/test/CodeGen/builtins-arm-microsoft.c (+7-5) 
- (modified) clang/test/Headers/Inputs/include/stdint.h (+12) 
- (modified) clang/test/Headers/ms-intrin.cpp (+4) 


``diff
diff --git a/clang/include/clang/Basic/BuiltinHeaders.def 
b/clang/include/clang/Basic/BuiltinHeaders.def
index 8e4a2f9bee9aa..22668ec7a3396 100644
--- a/clang/include/clang/Basic/BuiltinHeaders.def
+++ b/clang/include/clang/Basic/BuiltinHeaders.def
@@ -12,6 +12,7 @@
 
//===--===//
 
 HEADER(NO_HEADER, nullptr)
+HEADER(ARMACLE_H, "arm_acle.h")
 HEADER(BLOCKS_H, "Blocks.h")
 HEADER(COMPLEX_H, "complex.h")
 HEADER(CTYPE_H, "ctype.h")
diff --git a/clang/include/clang/Basic/BuiltinsAArch64.def 
b/clang/include/clang/Basic/BuiltinsAArch64.def
index 0b2dba86d9930..8867a9fe09fb9 100644
--- a/clang/include/clang/Basic/BuiltinsAArch64.def
+++ b/clang/include/clang/Basic/BuiltinsAArch64.def
@@ -50,6 +50,11 @@ BUILTIN(__builtin_arm_wfi, "v", "")
 BUILTIN(__builtin_arm_sev, "v", "")
 BUILTIN(__builtin_arm_sevl, "v", "")
 BUILTIN(__builtin_arm_chkfeat, "WUiWUi", "")
+TARGET_HEADER_BUILTIN(__yield, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__wfe,   "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__wfi,   "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__sev,   "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__sevl,  "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
 
 // Like __builtin_trap but provide an 16-bit immediate reason code (which goes 
into `brk #N`).
 BUILTIN(__builtin_arm_trap, "vUIs", "nr")
@@ -82,6 +87,9 @@ TARGET_BUILTIN(__builtin_arm_mops_memset_tag, "v*v*iz", "", 
"mte,mops")
 BUILTIN(__builtin_arm_dmb, "vUi", "nc")
 BUILTIN(__builtin_arm_dsb, "vUi", "nc")
 BUILTIN(__builtin_arm_isb, "vUi", "nc")
+TARGET_HEADER_BUILTIN(__dmb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__dsb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__isb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
 
 TARGET_BUILTIN(__builtin_arm_jcvt, "Zid", "nc", "v8.3a")
 
@@ -98,16 +106,6 @@ BUILTIN(__builtin_arm_wsr64, "vcC*WUi", "nc")
 TARGET_BUILTIN(__builtin_arm_wsr128, "vcC*LLLUi", "nc", "d128")
 BUILTIN(__builtin_arm_wsrp, "vcC*vC*", "nc")
 
-// MSVC
-LANGBUILTIN(__dmb, "vUi", "nc", ALL_MS_LANGUAGES)
-LANGBUILTIN(__dsb, "vUi", "nc", ALL_MS_LANGUAGES)
-LANGBUILTIN(__isb, "vUi", "nc", ALL_MS_LANGUAGES)
-LANGBUILTIN(__yield, "v", "",   ALL_MS_LANGUAGES)
-LANGBUILTIN(__wfe,   "v", "",   ALL_MS_LANGUAGES)
-LANGBUILTIN(__wfi,   "v", "",   ALL_MS_LANGUAGES)
-LANGBUILTIN(__sev,   "v", "",   ALL_MS_LANGUAGES)
-LANGBUILTIN(__sevl,  "v", "",   ALL_MS_LANGUAGES)
-
 // Misc
 BUILTIN(__builtin_sponentry, "v*", "c")
 
diff --git a/clang/include/clang/Basic/BuiltinsARM.def 
b/clang/include/clang/Basic/BuiltinsARM.def
index cbab87cecbc7d..2592e25e95c37 100644
--- a/clang/include/clang/Basic/BuiltinsARM.def
+++ b/clang/include/clang/Basic/BuiltinsARM.def
@@ -186,11 +186,19 @@ BUILTIN(__builtin_arm_wfi, "v", "")
 BUILTIN(__builtin_arm_sev, "v", "")
 BUILTIN(__builtin_arm_sevl, "v", "")
 BUILTIN(__builtin_arm_dbg, "vUi", "")
+TARGET_HEADER_BUILTIN(__yield, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__wfe, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__wfi, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__sev, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__sevl, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
 
 // Data barrier
 BUILTIN(__builtin_arm_dmb, "vUi", "nc")
 BUILTIN(__builtin_arm_dsb, "vUi"

[clang] Reapply "[clang][ARM][AArch64] Define intrinsics guarded by __has_builtin on all platforms" (#128222)" (PR #140910)

2025-05-21 Thread via cfe-commits

llvmbot wrote:



@llvm/pr-subscribers-clang

@llvm/pr-subscribers-backend-x86

Author: Nick Sarnie (sarnex)


Changes

The original change caused issues on MSVC due to a new warning thrown inside 
MSVC headers. That was fixed 
[here](https://github.com/llvm/llvm-project/commit/95bd9eef42679f3d13e3279204c75372e2c062f0),
 so reapply this commit. Original description below.

Instead of defining ARM ACLE intrinsics only on MSVC and guarding wrapper 
functions in headers with __has_builtin, universally define the intrinsics as 
target header builtins.

---
Full diff: https://github.com/llvm/llvm-project/pull/140910.diff


14 Files Affected:

- (modified) clang/include/clang/Basic/BuiltinHeaders.def (+1) 
- (modified) clang/include/clang/Basic/BuiltinsAArch64.def (+8-10) 
- (modified) clang/include/clang/Basic/BuiltinsARM.def (+8-9) 
- (modified) clang/lib/Headers/arm_acle.h (+8-44) 
- (modified) clang/lib/Sema/SemaARM.cpp (+6) 
- (added) clang/test/CodeGen/arm-former-microsoft-intrinsics-header-warning.c 
(+50) 
- (added) clang/test/CodeGen/arm-former-microsoft-intrinsics.c (+53) 
- (modified) clang/test/CodeGen/arm-microsoft-intrinsics.c (-21) 
- (added) clang/test/CodeGen/arm64-former-microsoft-intrinsics-header-warning.c 
(+53) 
- (added) clang/test/CodeGen/arm64-former-microsoft-intrinsics.c (+59) 
- (modified) clang/test/CodeGen/arm64-microsoft-intrinsics.c (-56) 
- (modified) clang/test/CodeGen/builtins-arm-microsoft.c (+7-5) 
- (modified) clang/test/Headers/Inputs/include/stdint.h (+12) 
- (modified) clang/test/Headers/ms-intrin.cpp (+4) 


``diff
diff --git a/clang/include/clang/Basic/BuiltinHeaders.def 
b/clang/include/clang/Basic/BuiltinHeaders.def
index 8e4a2f9bee9aa..22668ec7a3396 100644
--- a/clang/include/clang/Basic/BuiltinHeaders.def
+++ b/clang/include/clang/Basic/BuiltinHeaders.def
@@ -12,6 +12,7 @@
 
//===--===//
 
 HEADER(NO_HEADER, nullptr)
+HEADER(ARMACLE_H, "arm_acle.h")
 HEADER(BLOCKS_H, "Blocks.h")
 HEADER(COMPLEX_H, "complex.h")
 HEADER(CTYPE_H, "ctype.h")
diff --git a/clang/include/clang/Basic/BuiltinsAArch64.def 
b/clang/include/clang/Basic/BuiltinsAArch64.def
index 0b2dba86d9930..8867a9fe09fb9 100644
--- a/clang/include/clang/Basic/BuiltinsAArch64.def
+++ b/clang/include/clang/Basic/BuiltinsAArch64.def
@@ -50,6 +50,11 @@ BUILTIN(__builtin_arm_wfi, "v", "")
 BUILTIN(__builtin_arm_sev, "v", "")
 BUILTIN(__builtin_arm_sevl, "v", "")
 BUILTIN(__builtin_arm_chkfeat, "WUiWUi", "")
+TARGET_HEADER_BUILTIN(__yield, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__wfe,   "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__wfi,   "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__sev,   "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__sevl,  "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
 
 // Like __builtin_trap but provide an 16-bit immediate reason code (which goes 
into `brk #N`).
 BUILTIN(__builtin_arm_trap, "vUIs", "nr")
@@ -82,6 +87,9 @@ TARGET_BUILTIN(__builtin_arm_mops_memset_tag, "v*v*iz", "", 
"mte,mops")
 BUILTIN(__builtin_arm_dmb, "vUi", "nc")
 BUILTIN(__builtin_arm_dsb, "vUi", "nc")
 BUILTIN(__builtin_arm_isb, "vUi", "nc")
+TARGET_HEADER_BUILTIN(__dmb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__dsb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__isb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
 
 TARGET_BUILTIN(__builtin_arm_jcvt, "Zid", "nc", "v8.3a")
 
@@ -98,16 +106,6 @@ BUILTIN(__builtin_arm_wsr64, "vcC*WUi", "nc")
 TARGET_BUILTIN(__builtin_arm_wsr128, "vcC*LLLUi", "nc", "d128")
 BUILTIN(__builtin_arm_wsrp, "vcC*vC*", "nc")
 
-// MSVC
-LANGBUILTIN(__dmb, "vUi", "nc", ALL_MS_LANGUAGES)
-LANGBUILTIN(__dsb, "vUi", "nc", ALL_MS_LANGUAGES)
-LANGBUILTIN(__isb, "vUi", "nc", ALL_MS_LANGUAGES)
-LANGBUILTIN(__yield, "v", "",   ALL_MS_LANGUAGES)
-LANGBUILTIN(__wfe,   "v", "",   ALL_MS_LANGUAGES)
-LANGBUILTIN(__wfi,   "v", "",   ALL_MS_LANGUAGES)
-LANGBUILTIN(__sev,   "v", "",   ALL_MS_LANGUAGES)
-LANGBUILTIN(__sevl,  "v", "",   ALL_MS_LANGUAGES)
-
 // Misc
 BUILTIN(__builtin_sponentry, "v*", "c")
 
diff --git a/clang/include/clang/Basic/BuiltinsARM.def 
b/clang/include/clang/Basic/BuiltinsARM.def
index cbab87cecbc7d..2592e25e95c37 100644
--- a/clang/include/clang/Basic/BuiltinsARM.def
+++ b/clang/include/clang/Basic/BuiltinsARM.def
@@ -186,11 +186,19 @@ BUILTIN(__builtin_arm_wfi, "v", "")
 BUILTIN(__builtin_arm_sev, "v", "")
 BUILTIN(__builtin_arm_sevl, "v", "")
 BUILTIN(__builtin_arm_dbg, "vUi", "")
+TARGET_HEADER_BUILTIN(__yield, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__wfe, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__wfi, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__sev, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__sevl, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
 
 // Data barrier
 BUILTIN(__builtin_arm_dmb, "vUi", "nc")
 BUILT

[clang] Reapply "[clang][ARM][AArch64] Define intrinsics guarded by __has_builtin on all platforms" (#128222)" (PR #140910)

2025-05-21 Thread Nick Sarnie via cfe-commits

https://github.com/sarnex ready_for_review 
https://github.com/llvm/llvm-project/pull/140910
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] Reapply "[clang][ARM][AArch64] Define intrinsics guarded by __has_builtin on all platforms" (#128222)" (PR #140910)

2025-05-21 Thread Nick Sarnie via cfe-commits

https://github.com/sarnex created 
https://github.com/llvm/llvm-project/pull/140910

The original change caused issues on MSVC due to a new warning thrown inside 
MSVC headers. That was fixed 
[here](https://github.com/llvm/llvm-project/commit/95bd9eef42679f3d13e3279204c75372e2c062f0),
 so reapply this commit. Original description below.

Instead of defining ARM ACLE intrinsics only on MSVC and guarding wrapper 
functions in headers with __has_builtin, universally define the intrinsics as 
target header builtins.

>From 59b53be8590eb285ba23485e5658dcd5ab6d1180 Mon Sep 17 00:00:00 2001
From: "Sarnie, Nick" 
Date: Wed, 21 May 2025 07:31:28 -0700
Subject: [PATCH] Reapply "[clang][ARM][AArch64] Define intrinsics guarded by
 __has_builtin on all platforms" (#128222)"

---
 clang/include/clang/Basic/BuiltinHeaders.def  |  1 +
 clang/include/clang/Basic/BuiltinsAArch64.def | 18 +++---
 clang/include/clang/Basic/BuiltinsARM.def | 17 +++---
 clang/lib/Headers/arm_acle.h  | 52 +++-
 clang/lib/Sema/SemaARM.cpp|  6 ++
 ...rmer-microsoft-intrinsics-header-warning.c | 50 
 .../CodeGen/arm-former-microsoft-intrinsics.c | 53 +
 clang/test/CodeGen/arm-microsoft-intrinsics.c | 21 ---
 ...rmer-microsoft-intrinsics-header-warning.c | 53 +
 .../arm64-former-microsoft-intrinsics.c   | 59 +++
 .../test/CodeGen/arm64-microsoft-intrinsics.c | 56 --
 clang/test/CodeGen/builtins-arm-microsoft.c   | 12 ++--
 clang/test/Headers/Inputs/include/stdint.h| 12 
 clang/test/Headers/ms-intrin.cpp  |  4 ++
 14 files changed, 269 insertions(+), 145 deletions(-)
 create mode 100644 
clang/test/CodeGen/arm-former-microsoft-intrinsics-header-warning.c
 create mode 100644 clang/test/CodeGen/arm-former-microsoft-intrinsics.c
 create mode 100644 
clang/test/CodeGen/arm64-former-microsoft-intrinsics-header-warning.c
 create mode 100644 clang/test/CodeGen/arm64-former-microsoft-intrinsics.c

diff --git a/clang/include/clang/Basic/BuiltinHeaders.def 
b/clang/include/clang/Basic/BuiltinHeaders.def
index 8e4a2f9bee9aa..22668ec7a3396 100644
--- a/clang/include/clang/Basic/BuiltinHeaders.def
+++ b/clang/include/clang/Basic/BuiltinHeaders.def
@@ -12,6 +12,7 @@
 
//===--===//
 
 HEADER(NO_HEADER, nullptr)
+HEADER(ARMACLE_H, "arm_acle.h")
 HEADER(BLOCKS_H, "Blocks.h")
 HEADER(COMPLEX_H, "complex.h")
 HEADER(CTYPE_H, "ctype.h")
diff --git a/clang/include/clang/Basic/BuiltinsAArch64.def 
b/clang/include/clang/Basic/BuiltinsAArch64.def
index 0b2dba86d9930..8867a9fe09fb9 100644
--- a/clang/include/clang/Basic/BuiltinsAArch64.def
+++ b/clang/include/clang/Basic/BuiltinsAArch64.def
@@ -50,6 +50,11 @@ BUILTIN(__builtin_arm_wfi, "v", "")
 BUILTIN(__builtin_arm_sev, "v", "")
 BUILTIN(__builtin_arm_sevl, "v", "")
 BUILTIN(__builtin_arm_chkfeat, "WUiWUi", "")
+TARGET_HEADER_BUILTIN(__yield, "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__wfe,   "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__wfi,   "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__sev,   "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__sevl,  "v", "h", ARMACLE_H, ALL_LANGUAGES, "")
 
 // Like __builtin_trap but provide an 16-bit immediate reason code (which goes 
into `brk #N`).
 BUILTIN(__builtin_arm_trap, "vUIs", "nr")
@@ -82,6 +87,9 @@ TARGET_BUILTIN(__builtin_arm_mops_memset_tag, "v*v*iz", "", 
"mte,mops")
 BUILTIN(__builtin_arm_dmb, "vUi", "nc")
 BUILTIN(__builtin_arm_dsb, "vUi", "nc")
 BUILTIN(__builtin_arm_isb, "vUi", "nc")
+TARGET_HEADER_BUILTIN(__dmb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__dsb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
+TARGET_HEADER_BUILTIN(__isb, "vUi", "nch", ARMACLE_H, ALL_LANGUAGES, "")
 
 TARGET_BUILTIN(__builtin_arm_jcvt, "Zid", "nc", "v8.3a")
 
@@ -98,16 +106,6 @@ BUILTIN(__builtin_arm_wsr64, "vcC*WUi", "nc")
 TARGET_BUILTIN(__builtin_arm_wsr128, "vcC*LLLUi", "nc", "d128")
 BUILTIN(__builtin_arm_wsrp, "vcC*vC*", "nc")
 
-// MSVC
-LANGBUILTIN(__dmb, "vUi", "nc", ALL_MS_LANGUAGES)
-LANGBUILTIN(__dsb, "vUi", "nc", ALL_MS_LANGUAGES)
-LANGBUILTIN(__isb, "vUi", "nc", ALL_MS_LANGUAGES)
-LANGBUILTIN(__yield, "v", "",   ALL_MS_LANGUAGES)
-LANGBUILTIN(__wfe,   "v", "",   ALL_MS_LANGUAGES)
-LANGBUILTIN(__wfi,   "v", "",   ALL_MS_LANGUAGES)
-LANGBUILTIN(__sev,   "v", "",   ALL_MS_LANGUAGES)
-LANGBUILTIN(__sevl,  "v", "",   ALL_MS_LANGUAGES)
-
 // Misc
 BUILTIN(__builtin_sponentry, "v*", "c")
 
diff --git a/clang/include/clang/Basic/BuiltinsARM.def 
b/clang/include/clang/Basic/BuiltinsARM.def
index cbab87cecbc7d..2592e25e95c37 100644
--- a/clang/include/clang/Basic/BuiltinsARM.def
+++ b/clang/include/clang/Basic/BuiltinsARM.def
@@ -186,11 +186,19 @@ BUILTIN(__builtin_arm_wfi, "v", "")
 BUILTIN(__builtin_arm_sev, "v", "")
 BUILTIN(__builtin_arm_sevl, "v", "")
 BUI