[clang] [llvm] [CodeGen] Add support for multiple constraints (PR #195592)
Bill Wendling via cfe-commits
cfe-commits at lists.llvm.org
Mon May 4 08:31:15 PDT 2026
================
@@ -0,0 +1,74 @@
+// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm %s -o - | FileCheck --check-prefixes=O0 %s
+// RUN: %clang_cc1 -triple i386-unknown-unknown -emit-llvm -O2 %s -o - | FileCheck --check-prefixes=O2 %s
+
+void test_1(unsigned long flags) {
+ // O0-LABEL: @test_1
+ // O0: call void asm sideeffect "", "rm,~{dirflag},~{fpsr},~{flags}"(i32 %0)
+ //
+ // O2-LABEL: @test_1
+ // O2: call void asm sideeffect "", "rm,~{dirflag},~{fpsr},~{flags}"(i32 %flags)
+ asm ("" : : "rm" (flags));
+}
+
+unsigned long test_2(void) {
+ // O0-LABEL: @test_2
+ // O0: call void asm "", "=*rm,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) %out)
+ //
+ // O2-LABEL: @test_2
+ // O2: %0 = tail call i32 asm "", "=rm,~{dirflag},~{fpsr},~{flags}"()
+ unsigned long out;
+ asm ("" : "=rm" (out));
+ return out;
+}
+
+void test_3(unsigned long flags) {
+ // O0-LABEL: @test_3
+ // O0: call void asm sideeffect "", "imr,~{dirflag},~{fpsr},~{flags}"(i32 %0)
+ //
+ // O2-LABEL: @test_3
+ // O2: call void asm sideeffect "", "imr,~{dirflag},~{fpsr},~{flags}"(i32 %flags)
+ asm ("" : : "g" (flags));
+}
+
+unsigned long test_4(void) {
+ // O0-LABEL: @test_4
+ // O0: call void asm "", "=*imr,~{dirflag},~{fpsr},~{flags}"(ptr elementtype(i32) %out)
+ //
+ // O2-LABEL: @test_4
+ // O2: %0 = tail call i32 asm "", "=imr,~{dirflag},~{fpsr},~{flags}"()
+ unsigned long out;
+ asm ("" : "=g" (out));
+ return out;
+}
+
+void test_5(int len) {
----------------
bwendling wrote:
Testcases don't normally have descriptive function names...
https://github.com/llvm/llvm-project/pull/195592
More information about the cfe-commits
mailing list