[clang] Reapply "[clang][ARM][AArch64] Define intrinsics guarded by __has_builtin on all platforms" (#128222)" (PR #140910)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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