[compiler-rt] [AArch64][SME] Fix broken compiler check for SME2 support in compiler-rt (PR #121625)
Amara Emerson via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 3 22:06:58 PST 2025
https://github.com/aemerson created https://github.com/llvm/llvm-project/pull/121625
This compile time test uses inline asm with `.arch` directives to set the target feature. It is however broken and always fails, since each `asm()` construct in LLVM sets up a new AsmParser, and therefore the `.arch` directive has no effect on later `asm()` contents. To fix this we need to use a single inline `asm()` call with the entire code chunk to emit contained inside.
>From e0b121ce26bb3146f7336325f33ce3070eaa6b0c Mon Sep 17 00:00:00 2001
From: Amara Emerson <amara at apple.com>
Date: Fri, 3 Jan 2025 22:01:34 -0800
Subject: [PATCH] [AArch64][SME] Fix broken compiler check for SME2 support in
compiler-rt.
This compile time test uses inline asm with .arch directives to set the
target feature. It is however broken and always fails, since each asm()
construct in LLVM sets up a new AsmParser, and therefore the .arch directive
has no effect on later asm() contents. To fix this we need to use a single
inline asm() call with the entire code chunk to emit contained inside.
---
compiler-rt/cmake/builtin-config-ix.cmake | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/compiler-rt/cmake/builtin-config-ix.cmake b/compiler-rt/cmake/builtin-config-ix.cmake
index 706a1ff7eeb6db..b1bde47ec8555f 100644
--- a/compiler-rt/cmake/builtin-config-ix.cmake
+++ b/compiler-rt/cmake/builtin-config-ix.cmake
@@ -43,9 +43,9 @@ asm(\"cas w0, w1, [x2]\");
builtin_check_c_compiler_source(COMPILER_RT_HAS_AARCH64_SME
"
void foo(void) __arm_streaming_compatible {
- asm(\".arch armv9-a+sme2\");
- asm(\"smstart\");
- asm(\"ldr zt0, [sp]\");
+ asm(\".arch armv9-a+sme2\\n\"
+ \"smstart\\n\"
+ \"ldr zt0, [sp]\");
}
")
More information about the llvm-commits
mailing list