Skip to content

[clang] Add arm64_neon.h wrapper#196014

Merged
GkvJwa merged 3 commits intollvm:mainfrom
GkvJwa:add_arm64_neon_wrappert
May 11, 2026
Merged

[clang] Add arm64_neon.h wrapper#196014
GkvJwa merged 3 commits intollvm:mainfrom
GkvJwa:add_arm64_neon_wrappert

Conversation

@GkvJwa
Copy link
Copy Markdown
Contributor

@GkvJwa GkvJwa commented May 6, 2026

Add an MSVC-compatible <arm64_neon.h> resource header that forwards to
Clang's generated <arm_neon.h>. This lets ARM64 Windows code using the
MSVC header name lower NEON intrinsics through Clang builtins instead of
eaving external neon_* calls such as neon_ld1m4_q32

Fixes #195683

Add an MSVC-compatible <arm64_neon.h> resource header that forwards to
Clang's generated <arm_neon.h>. This lets ARM64 Windows code using the
MSVC header name lower NEON intrinsics through Clang builtins instead of
leaving external neon_* calls such as neon_ld1m4_q32

Fix llvm#195683
@GkvJwa GkvJwa requested a review from efriedma-quic May 6, 2026 07:08
@llvmorg-github-actions llvmorg-github-actions Bot added clang Clang issues not falling into any other category backend:X86 clang:headers Headers provided by Clang, e.g. for intrinsics labels May 6, 2026
@llvmorg-github-actions
Copy link
Copy Markdown

@llvm/pr-subscribers-clang

Author: GkvJwa

Changes

Add an MSVC-compatible <arm64_neon.h> resource header that forwards to
Clang's generated <arm_neon.h>. This lets ARM64 Windows code using the
MSVC header name lower NEON intrinsics through Clang builtins instead of
eaving external neon_* calls such as neon_ld1m4_q32

Fix #195683


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

4 Files Affected:

  • (modified) clang/lib/Headers/CMakeLists.txt (+1)
  • (added) clang/lib/Headers/arm64_neon.h (+15)
  • (modified) clang/lib/Headers/module.modulemap (+6)
  • (added) clang/test/CodeGen/arm64-neon-header.c (+13)
diff --git a/clang/lib/Headers/CMakeLists.txt b/clang/lib/Headers/CMakeLists.txt
index d60ae2b5961e0..ce34f8b9410a7 100644
--- a/clang/lib/Headers/CMakeLists.txt
+++ b/clang/lib/Headers/CMakeLists.txt
@@ -55,6 +55,7 @@ set(arm_only_files
   )
 
 set(aarch64_only_files
+  arm64_neon.h
   arm64intr.h
   arm_neon_sve_bridge.h
   )
diff --git a/clang/lib/Headers/arm64_neon.h b/clang/lib/Headers/arm64_neon.h
new file mode 100644
index 0000000000000..380e88d545621
--- /dev/null
+++ b/clang/lib/Headers/arm64_neon.h
@@ -0,0 +1,15 @@
+/*===---- arm64_neon.h - ARM64 NEON intrinsics -----------------------------===
+ *
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+ * See https://llvm.org/LICENSE.txt for license information.
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+ *
+ *===-----------------------------------------------------------------------===
+ */
+
+#ifndef __ARM64_NEON_H
+#define __ARM64_NEON_H
+
+#include <arm_neon.h>
+
+#endif /* __ARM64_NEON_H */
diff --git a/clang/lib/Headers/module.modulemap b/clang/lib/Headers/module.modulemap
index 3fcaa55f1110e..c8f96df1672c1 100644
--- a/clang/lib/Headers/module.modulemap
+++ b/clang/lib/Headers/module.modulemap
@@ -50,6 +50,12 @@ module _Builtin_intrinsics [system] [extern_c] {
 
     header "arm64intr.h"
     export *
+
+    explicit module neon {
+      requires neon
+      header "arm64_neon.h"
+      export *
+    }
   }
 
   explicit module intel {
diff --git a/clang/test/CodeGen/arm64-neon-header.c b/clang/test/CodeGen/arm64-neon-header.c
new file mode 100644
index 0000000000000..f0aea4093caad
--- /dev/null
+++ b/clang/test/CodeGen/arm64-neon-header.c
@@ -0,0 +1,13 @@
+// RUN: %clang_cc1 -triple arm64-pc-windows-msvc -fms-compatibility \
+// RUN:     -emit-llvm -o - %s | FileCheck %s
+
+#include <arm64_neon.h>
+
+// CHECK-LABEL: define{{.*}} @test_vld1q_s32_x4(
+// CHECK-NOT: neon_ld1m4_q32
+// CHECK: call { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld1x4.v4i32.p0(ptr {{.*}})
+// CHECK-NOT: neon_ld1m4_q32
+// CHECK: ret
+int32x4x4_t test_vld1q_s32_x4(int32_t const *a) {
+  return vld1q_s32_x4(a);
+}

@llvmorg-github-actions
Copy link
Copy Markdown

@llvm/pr-subscribers-backend-x86

Author: GkvJwa

Changes

Add an MSVC-compatible <arm64_neon.h> resource header that forwards to
Clang's generated <arm_neon.h>. This lets ARM64 Windows code using the
MSVC header name lower NEON intrinsics through Clang builtins instead of
eaving external neon_* calls such as neon_ld1m4_q32

Fix #195683


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

4 Files Affected:

  • (modified) clang/lib/Headers/CMakeLists.txt (+1)
  • (added) clang/lib/Headers/arm64_neon.h (+15)
  • (modified) clang/lib/Headers/module.modulemap (+6)
  • (added) clang/test/CodeGen/arm64-neon-header.c (+13)
diff --git a/clang/lib/Headers/CMakeLists.txt b/clang/lib/Headers/CMakeLists.txt
index d60ae2b5961e0..ce34f8b9410a7 100644
--- a/clang/lib/Headers/CMakeLists.txt
+++ b/clang/lib/Headers/CMakeLists.txt
@@ -55,6 +55,7 @@ set(arm_only_files
   )
 
 set(aarch64_only_files
+  arm64_neon.h
   arm64intr.h
   arm_neon_sve_bridge.h
   )
diff --git a/clang/lib/Headers/arm64_neon.h b/clang/lib/Headers/arm64_neon.h
new file mode 100644
index 0000000000000..380e88d545621
--- /dev/null
+++ b/clang/lib/Headers/arm64_neon.h
@@ -0,0 +1,15 @@
+/*===---- arm64_neon.h - ARM64 NEON intrinsics -----------------------------===
+ *
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+ * See https://llvm.org/LICENSE.txt for license information.
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+ *
+ *===-----------------------------------------------------------------------===
+ */
+
+#ifndef __ARM64_NEON_H
+#define __ARM64_NEON_H
+
+#include <arm_neon.h>
+
+#endif /* __ARM64_NEON_H */
diff --git a/clang/lib/Headers/module.modulemap b/clang/lib/Headers/module.modulemap
index 3fcaa55f1110e..c8f96df1672c1 100644
--- a/clang/lib/Headers/module.modulemap
+++ b/clang/lib/Headers/module.modulemap
@@ -50,6 +50,12 @@ module _Builtin_intrinsics [system] [extern_c] {
 
     header "arm64intr.h"
     export *
+
+    explicit module neon {
+      requires neon
+      header "arm64_neon.h"
+      export *
+    }
   }
 
   explicit module intel {
diff --git a/clang/test/CodeGen/arm64-neon-header.c b/clang/test/CodeGen/arm64-neon-header.c
new file mode 100644
index 0000000000000..f0aea4093caad
--- /dev/null
+++ b/clang/test/CodeGen/arm64-neon-header.c
@@ -0,0 +1,13 @@
+// RUN: %clang_cc1 -triple arm64-pc-windows-msvc -fms-compatibility \
+// RUN:     -emit-llvm -o - %s | FileCheck %s
+
+#include <arm64_neon.h>
+
+// CHECK-LABEL: define{{.*}} @test_vld1q_s32_x4(
+// CHECK-NOT: neon_ld1m4_q32
+// CHECK: call { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld1x4.v4i32.p0(ptr {{.*}})
+// CHECK-NOT: neon_ld1m4_q32
+// CHECK: ret
+int32x4x4_t test_vld1q_s32_x4(int32_t const *a) {
+  return vld1q_s32_x4(a);
+}

*/

#ifndef __ARM64_NEON_H
#define __ARM64_NEON_H
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please restrict this so we only do this forwarding on MSVC targets: #ifndef _MSC_VER #include_next "arm64_neon.h" or something like that. (There should be some examples in other headers.)

@efriedma-quic
Copy link
Copy Markdown
Contributor

Adding some reviewers for the modulemap changes; I'm not really confident to review that. Otherwise LGTM

@llvm llvm deleted a comment from github-actions Bot May 7, 2026
@GkvJwa GkvJwa force-pushed the add_arm64_neon_wrappert branch from 2437a74 to ae0a8aa Compare May 7, 2026 07:25
@GkvJwa GkvJwa requested a review from boomanaiden154 May 9, 2026 05:15
@GkvJwa GkvJwa merged commit 3a7c0eb into llvm:main May 11, 2026
16 of 17 checks passed
@GkvJwa
Copy link
Copy Markdown
Contributor Author

GkvJwa commented May 11, 2026

Merge it, if any problems with module, leave a comment and I will handle it

@llvm-ci
Copy link
Copy Markdown

llvm-ci commented May 11, 2026

LLVM Buildbot has detected a new failure on builder sanitizer-aarch64-linux running on sanitizer-buildbot7 while building clang at step 2 "annotate".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/51/builds/36917

Here is the relevant piece of the build log for the reference
Step 2 (annotate) failure: 'python ../sanitizer_buildbot/sanitizers/zorg/buildbot/builders/sanitizers/buildbot_selector.py' (failure)
...
[203/207] Generating MSAN_INST_TEST_OBJECTS.msan_test.cpp.aarch64-with-call.o
[204/207] Generating Msan-aarch64-with-call-Test
[205/207] Generating MSAN_INST_TEST_OBJECTS.msan_test.cpp.aarch64.o
[206/207] Generating Msan-aarch64-Test
[206/207] Running compiler_rt regression tests
llvm-lit: /home/b/sanitizer-aarch64-linux/build/llvm-project/llvm/utils/lit/lit/discovery.py:273: warning: input '/home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/interception/Unit' contained no tests
llvm-lit: /home/b/sanitizer-aarch64-linux/build/llvm-project/llvm/utils/lit/lit/discovery.py:273: warning: input '/home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/sanitizer_common/Unit' contained no tests
llvm-lit: /home/b/sanitizer-aarch64-linux/build/llvm-project/llvm/utils/lit/lit/main.py:74: note: The test suite configuration requested an individual test timeout of 0 seconds but a timeout of 900 seconds was requested on the command line. Forcing timeout to be 900 seconds.
-- Testing: 3227 of 6419 tests, 72 workers --
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90
FAIL: ThreadSanitizer-aarch64 :: stress.cpp (3074 of 3227)
******************** TEST 'ThreadSanitizer-aarch64 :: stress.cpp' FAILED ********************
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/b/sanitizer-aarch64-linux/build/build_default/./bin/clang  --driver-mode=g++ -fsanitize=thread -Wall   -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta    -gline-tables-only -I/home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/tsan/../ -std=c++11 -I/home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/tsan/../ -nostdinc++ -I/home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/lib/tsan/libcxx_tsan_aarch64/include/c++/v1 -O1 /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/tsan/stress.cpp -o /home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tsan/AARCH64Config/Output/stress.cpp.tmp && env TSAN_OPTIONS=atexit_sleep_ms=0:flush_memory_ms=1:flush_symbolizer_ms=1:memory_limit_mb=1  /home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tsan/AARCH64Config/Output/stress.cpp.tmp 2>&1 | FileCheck /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/tsan/stress.cpp --check-prefix=CHECK-NORACE
# executed command: /home/b/sanitizer-aarch64-linux/build/build_default/./bin/clang --driver-mode=g++ -fsanitize=thread -Wall -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta -gline-tables-only -I/home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/tsan/../ -std=c++11 -I/home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/tsan/../ -nostdinc++ -I/home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/lib/tsan/libcxx_tsan_aarch64/include/c++/v1 -O1 /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/tsan/stress.cpp -o /home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tsan/AARCH64Config/Output/stress.cpp.tmp
# note: command had no output on stdout or stderr
# executed command: env TSAN_OPTIONS=atexit_sleep_ms=0:flush_memory_ms=1:flush_symbolizer_ms=1:memory_limit_mb=1 /home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tsan/AARCH64Config/Output/stress.cpp.tmp
# note: command had no output on stdout or stderr
# error: command failed with exit status: 66
# executed command: FileCheck /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/tsan/stress.cpp --check-prefix=CHECK-NORACE
# .---command stderr------------
# | /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/tsan/stress.cpp:99:18: error: CHECK-NORACE: expected string not found in input
# | // CHECK-NORACE: DONE
# |                  ^
# | <stdin>:1:1: note: scanning from here
# | ThreadSanitizer: CHECK failed: tsan_rtl_access.cpp:84 "((res)) != (0)" (0x0, 0x0) (tid=460022)
# | ^
# | 
# | Input file: <stdin>
# | Check file: /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/tsan/stress.cpp
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |           1: ThreadSanitizer: CHECK failed: tsan_rtl_access.cpp:84 "((res)) != (0)" (0x0, 0x0) (tid=460022) 
# | check:99     X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
# |           2:  #0 __tsan::CheckUnwind() /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp:697:21 (stress.cpp.tmp+0x11a7bc) 
# | check:99     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           3:  #1 __sanitizer::CheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_termination.cpp:86:5 (stress.cpp.tmp+0xa3478) 
# | check:99     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           4:  #2 __tsan::TraceMemoryAccessRange(__tsan::ThreadState*, unsigned long, unsigned long, unsigned long, unsigned long) /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/lib/tsan/rtl/tsan_rtl_access.cpp (stress.cpp.tmp+0x11e600) 
# | check:99     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           5:  #3 __tsan::MemoryRangeImitateWrite(__tsan::ThreadState*, unsigned long, unsigned long, unsigned long) /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/lib/tsan/rtl/tsan_rtl_access.cpp:645:3 (stress.cpp.tmp+0x1236dc) 
# | check:99     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Step 11 (test compiler-rt debug) failure: test compiler-rt debug (failure)
...
[203/207] Generating MSAN_INST_TEST_OBJECTS.msan_test.cpp.aarch64-with-call.o
[204/207] Generating Msan-aarch64-with-call-Test
[205/207] Generating MSAN_INST_TEST_OBJECTS.msan_test.cpp.aarch64.o
[206/207] Generating Msan-aarch64-Test
[206/207] Running compiler_rt regression tests
llvm-lit: /home/b/sanitizer-aarch64-linux/build/llvm-project/llvm/utils/lit/lit/discovery.py:273: warning: input '/home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/interception/Unit' contained no tests
llvm-lit: /home/b/sanitizer-aarch64-linux/build/llvm-project/llvm/utils/lit/lit/discovery.py:273: warning: input '/home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/sanitizer_common/Unit' contained no tests
llvm-lit: /home/b/sanitizer-aarch64-linux/build/llvm-project/llvm/utils/lit/lit/main.py:74: note: The test suite configuration requested an individual test timeout of 0 seconds but a timeout of 900 seconds was requested on the command line. Forcing timeout to be 900 seconds.
-- Testing: 3227 of 6419 tests, 72 workers --
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90
FAIL: ThreadSanitizer-aarch64 :: stress.cpp (3074 of 3227)
******************** TEST 'ThreadSanitizer-aarch64 :: stress.cpp' FAILED ********************
Exit Code: 1

Command Output (stdout):
--
# RUN: at line 2
/home/b/sanitizer-aarch64-linux/build/build_default/./bin/clang  --driver-mode=g++ -fsanitize=thread -Wall   -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta    -gline-tables-only -I/home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/tsan/../ -std=c++11 -I/home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/tsan/../ -nostdinc++ -I/home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/lib/tsan/libcxx_tsan_aarch64/include/c++/v1 -O1 /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/tsan/stress.cpp -o /home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tsan/AARCH64Config/Output/stress.cpp.tmp && env TSAN_OPTIONS=atexit_sleep_ms=0:flush_memory_ms=1:flush_symbolizer_ms=1:memory_limit_mb=1  /home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tsan/AARCH64Config/Output/stress.cpp.tmp 2>&1 | FileCheck /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/tsan/stress.cpp --check-prefix=CHECK-NORACE
# executed command: /home/b/sanitizer-aarch64-linux/build/build_default/./bin/clang --driver-mode=g++ -fsanitize=thread -Wall -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta -gline-tables-only -I/home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/tsan/../ -std=c++11 -I/home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/tsan/../ -nostdinc++ -I/home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/lib/tsan/libcxx_tsan_aarch64/include/c++/v1 -O1 /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/tsan/stress.cpp -o /home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tsan/AARCH64Config/Output/stress.cpp.tmp
# note: command had no output on stdout or stderr
# executed command: env TSAN_OPTIONS=atexit_sleep_ms=0:flush_memory_ms=1:flush_symbolizer_ms=1:memory_limit_mb=1 /home/b/sanitizer-aarch64-linux/build/build_default/runtimes/runtimes-bins/compiler-rt/test/tsan/AARCH64Config/Output/stress.cpp.tmp
# note: command had no output on stdout or stderr
# error: command failed with exit status: 66
# executed command: FileCheck /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/tsan/stress.cpp --check-prefix=CHECK-NORACE
# .---command stderr------------
# | /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/tsan/stress.cpp:99:18: error: CHECK-NORACE: expected string not found in input
# | // CHECK-NORACE: DONE
# |                  ^
# | <stdin>:1:1: note: scanning from here
# | ThreadSanitizer: CHECK failed: tsan_rtl_access.cpp:84 "((res)) != (0)" (0x0, 0x0) (tid=460022)
# | ^
# | 
# | Input file: <stdin>
# | Check file: /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/test/tsan/stress.cpp
# | 
# | -dump-input=help explains the following input dump.
# | 
# | Input was:
# | <<<<<<
# |           1: ThreadSanitizer: CHECK failed: tsan_rtl_access.cpp:84 "((res)) != (0)" (0x0, 0x0) (tid=460022) 
# | check:99     X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
# |           2:  #0 __tsan::CheckUnwind() /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp:697:21 (stress.cpp.tmp+0x11a7bc) 
# | check:99     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           3:  #1 __sanitizer::CheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_termination.cpp:86:5 (stress.cpp.tmp+0xa3478) 
# | check:99     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           4:  #2 __tsan::TraceMemoryAccessRange(__tsan::ThreadState*, unsigned long, unsigned long, unsigned long, unsigned long) /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/lib/tsan/rtl/tsan_rtl_access.cpp (stress.cpp.tmp+0x11e600) 
# | check:99     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |           5:  #3 __tsan::MemoryRangeImitateWrite(__tsan::ThreadState*, unsigned long, unsigned long, unsigned long) /home/b/sanitizer-aarch64-linux/build/llvm-project/compiler-rt/lib/tsan/rtl/tsan_rtl_access.cpp:645:3 (stress.cpp.tmp+0x1236dc) 
# | check:99     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

@llvm llvm deleted a comment from llvm-ci May 11, 2026
@llvm llvm deleted a comment from llvm-ci May 11, 2026
@llvm llvm deleted a comment from llvm-ci May 11, 2026
@llvm llvm deleted a comment from llvm-ci May 11, 2026
@llvm llvm deleted a comment from llvm-ci May 11, 2026
@llvm llvm deleted a comment from llvm-ci May 11, 2026
@llvm llvm deleted a comment from llvm-ci May 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backend:X86 clang:headers Headers provided by Clang, e.g. for intrinsics clang Clang issues not falling into any other category

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Clang doesn't inline intrinsic neon_ld1m4_q32 when targeting Windows for ARM64

3 participants