[clang] [llvm] CodeGen: Mark inline asm clobber defs dead (PR #227026)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 28 09:52:21 PDT 2026
https://github.com/arsenm updated https://github.com/llvm/llvm-project/pull/227026
>From f52815cefa0501ffb7ef016486674d463409a29d Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Fri, 25 Sep 2026 09:40:07 +0200
Subject: [PATCH] CodeGen: Mark inline asm clobber defs dead
A clobber operand has no value associated with it, so the def is always
dead. Set the flag where the INLINEASM is built instead of relying on
later inference.
Co-authored-by: Claude Opus 5 <noreply at anthropic.com>
---
clang/test/CodeGen/msp430-register-names.c | 32 ++---
.../CodeGen/GlobalISel/InlineAsmLowering.cpp | 1 +
.../lib/CodeGen/SelectionDAG/InstrEmitter.cpp | 1 +
.../GlobalISel/irtranslator-inline-asm.ll | 2 +-
llvm/test/CodeGen/AArch64/aarch64-sme2-asm.ll | 128 +++++++++---------
.../CodeGen/AArch64/aarch64-za-clobber.ll | 4 +-
.../GlobalISel/irtranslator-inline-asm.ll | 6 +-
llvm/test/CodeGen/PowerPC/pr47155-47156.ll | 8 +-
.../GlobalISel/irtranslator-inline-asm.ll | 2 +-
llvm/test/CodeGen/X86/cfi-xmm.ll | 2 +-
.../X86/inline-asm-avx512f-x-constraint.ll | 6 +-
.../X86/inline-asm-default-clobbers.ll | 2 +-
llvm/test/CodeGen/X86/tail-dup-asm-goto.ll | 2 +-
13 files changed, 98 insertions(+), 98 deletions(-)
diff --git a/clang/test/CodeGen/msp430-register-names.c b/clang/test/CodeGen/msp430-register-names.c
index 106b6c933a49b..83f290b2718de 100644
--- a/clang/test/CodeGen/msp430-register-names.c
+++ b/clang/test/CodeGen/msp430-register-names.c
@@ -86,20 +86,20 @@ void test_function(void) {
// CHECK: call void asm sideeffect "", "~{r13}"()
// CHECK: call void asm sideeffect "", "~{r14}"()
// CHECK: call void asm sideeffect "", "~{r15}"()
- // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $pc
- // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $sp
- // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $sr
- // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $cg
- // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r4
- // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r5
- // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r6
- // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r7
- // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r8
- // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r9
- // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r10
- // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r11
- // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r12
- // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r13
- // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r14
- // CHECK: INLINEASM &"", {{.*}} implicit-def early-clobber $r15
+ // CHECK: INLINEASM &"", {{.*}} implicit-def dead early-clobber $pc
+ // CHECK: INLINEASM &"", {{.*}} implicit-def dead early-clobber $sp
+ // CHECK: INLINEASM &"", {{.*}} implicit-def dead early-clobber $sr
+ // CHECK: INLINEASM &"", {{.*}} implicit-def dead early-clobber $cg
+ // CHECK: INLINEASM &"", {{.*}} implicit-def dead early-clobber $r4
+ // CHECK: INLINEASM &"", {{.*}} implicit-def dead early-clobber $r5
+ // CHECK: INLINEASM &"", {{.*}} implicit-def dead early-clobber $r6
+ // CHECK: INLINEASM &"", {{.*}} implicit-def dead early-clobber $r7
+ // CHECK: INLINEASM &"", {{.*}} implicit-def dead early-clobber $r8
+ // CHECK: INLINEASM &"", {{.*}} implicit-def dead early-clobber $r9
+ // CHECK: INLINEASM &"", {{.*}} implicit-def dead early-clobber $r10
+ // CHECK: INLINEASM &"", {{.*}} implicit-def dead early-clobber $r11
+ // CHECK: INLINEASM &"", {{.*}} implicit-def dead early-clobber $r12
+ // CHECK: INLINEASM &"", {{.*}} implicit-def dead early-clobber $r13
+ // CHECK: INLINEASM &"", {{.*}} implicit-def dead early-clobber $r14
+ // CHECK: INLINEASM &"", {{.*}} implicit-def dead early-clobber $r15
}
diff --git a/llvm/lib/CodeGen/GlobalISel/InlineAsmLowering.cpp b/llvm/lib/CodeGen/GlobalISel/InlineAsmLowering.cpp
index 14ce305376459..19eae930cc26b 100644
--- a/llvm/lib/CodeGen/GlobalISel/InlineAsmLowering.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/InlineAsmLowering.cpp
@@ -583,6 +583,7 @@ bool InlineAsmLowering::lowerInlineAsm(
for (Register Reg : OpInfo.Regs) {
Inst.addReg(Reg, RegState::Define | RegState::EarlyClobber |
+ RegState::Dead |
getImplRegState(Reg.isPhysical()));
}
}
diff --git a/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp b/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
index 8da255cda656d..6db23303bbc13 100644
--- a/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
@@ -1394,6 +1394,7 @@ EmitSpecialNode(SDNode *Node, bool IsClone, bool IsCloned,
for (unsigned j = 0; j != NumVals; ++j, ++i) {
Register Reg = cast<RegisterSDNode>(Node->getOperand(i))->getReg();
MIB.addReg(Reg, RegState::Define | RegState::EarlyClobber |
+ getDeadRegState(F.isClobberKind()) |
getImplRegState(Reg.isPhysical()));
ECRegs.push_back(Reg);
}
diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-inline-asm.ll b/llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-inline-asm.ll
index 638b2f0f8732d..5569de5c4ba61 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-inline-asm.ll
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/irtranslator-inline-asm.ll
@@ -17,7 +17,7 @@ define void @asm_simple_memory_clobber() {
define void @asm_simple_register_clobber() {
; CHECK-LABEL: name: asm_simple_register_clobber
; CHECK: bb.1 (%ir-block.0):
- ; CHECK-NEXT: INLINEASM &"mov x0, 7", sideeffect attdialect, clobber, implicit-def early-clobber $x0, !0
+ ; CHECK-NEXT: INLINEASM &"mov x0, 7", sideeffect attdialect, clobber, implicit-def dead early-clobber $x0, !0
; CHECK-NEXT: RET_ReallyLR
call void asm sideeffect "mov x0, 7", "~{x0}"(), !srcloc !0
ret void
diff --git a/llvm/test/CodeGen/AArch64/aarch64-sme2-asm.ll b/llvm/test/CodeGen/AArch64/aarch64-sme2-asm.ll
index d3f5a769e2d23..62ac067115da6 100644
--- a/llvm/test/CodeGen/AArch64/aarch64-sme2-asm.ll
+++ b/llvm/test/CodeGen/AArch64/aarch64-sme2-asm.ll
@@ -47,38 +47,38 @@ define <2 x float> @sme_nosve_nonstreaming(ptr %in) "target-features"="+sme,-sve
entry:
; CHECK-LABEL: name: sme_nosve_nonstreaming
; CHECK: INLINEASM &"smstart sm; smstop sm;"
-; CHECK-SAME: implicit-def early-clobber $q0
-; CHECK-SAME: implicit-def early-clobber $q1
-; CHECK-SAME: implicit-def early-clobber $q2
-; CHECK-SAME: implicit-def early-clobber $q3
-; CHECK-SAME: implicit-def early-clobber $q4
-; CHECK-SAME: implicit-def early-clobber $q5
-; CHECK-SAME: implicit-def early-clobber $q6
-; CHECK-SAME: implicit-def early-clobber $q7
-; CHECK-SAME: implicit-def early-clobber $q8
-; CHECK-SAME: implicit-def early-clobber $q9
-; CHECK-SAME: implicit-def early-clobber $q10
-; CHECK-SAME: implicit-def early-clobber $q11
-; CHECK-SAME: implicit-def early-clobber $q12
-; CHECK-SAME: implicit-def early-clobber $q13
-; CHECK-SAME: implicit-def early-clobber $q14
-; CHECK-SAME: implicit-def early-clobber $q15
-; CHECK-SAME: implicit-def early-clobber $q16
-; CHECK-SAME: implicit-def early-clobber $q17
-; CHECK-SAME: implicit-def early-clobber $q18
-; CHECK-SAME: implicit-def early-clobber $q19
-; CHECK-SAME: implicit-def early-clobber $q20
-; CHECK-SAME: implicit-def early-clobber $q21
-; CHECK-SAME: implicit-def early-clobber $q22
-; CHECK-SAME: implicit-def early-clobber $q23
-; CHECK-SAME: implicit-def early-clobber $q24
-; CHECK-SAME: implicit-def early-clobber $q25
-; CHECK-SAME: implicit-def early-clobber $q26
-; CHECK-SAME: implicit-def early-clobber $q27
-; CHECK-SAME: implicit-def early-clobber $q28
-; CHECK-SAME: implicit-def early-clobber $q29
-; CHECK-SAME: implicit-def early-clobber $q30
-; CHECK-SAME: implicit-def early-clobber $q31
+; CHECK-SAME: implicit-def dead early-clobber $q0
+; CHECK-SAME: implicit-def dead early-clobber $q1
+; CHECK-SAME: implicit-def dead early-clobber $q2
+; CHECK-SAME: implicit-def dead early-clobber $q3
+; CHECK-SAME: implicit-def dead early-clobber $q4
+; CHECK-SAME: implicit-def dead early-clobber $q5
+; CHECK-SAME: implicit-def dead early-clobber $q6
+; CHECK-SAME: implicit-def dead early-clobber $q7
+; CHECK-SAME: implicit-def dead early-clobber $q8
+; CHECK-SAME: implicit-def dead early-clobber $q9
+; CHECK-SAME: implicit-def dead early-clobber $q10
+; CHECK-SAME: implicit-def dead early-clobber $q11
+; CHECK-SAME: implicit-def dead early-clobber $q12
+; CHECK-SAME: implicit-def dead early-clobber $q13
+; CHECK-SAME: implicit-def dead early-clobber $q14
+; CHECK-SAME: implicit-def dead early-clobber $q15
+; CHECK-SAME: implicit-def dead early-clobber $q16
+; CHECK-SAME: implicit-def dead early-clobber $q17
+; CHECK-SAME: implicit-def dead early-clobber $q18
+; CHECK-SAME: implicit-def dead early-clobber $q19
+; CHECK-SAME: implicit-def dead early-clobber $q20
+; CHECK-SAME: implicit-def dead early-clobber $q21
+; CHECK-SAME: implicit-def dead early-clobber $q22
+; CHECK-SAME: implicit-def dead early-clobber $q23
+; CHECK-SAME: implicit-def dead early-clobber $q24
+; CHECK-SAME: implicit-def dead early-clobber $q25
+; CHECK-SAME: implicit-def dead early-clobber $q26
+; CHECK-SAME: implicit-def dead early-clobber $q27
+; CHECK-SAME: implicit-def dead early-clobber $q28
+; CHECK-SAME: implicit-def dead early-clobber $q29
+; CHECK-SAME: implicit-def dead early-clobber $q30
+; CHECK-SAME: implicit-def dead early-clobber $q31
%0 = load <2 x float>, ptr %in, align 8
call void asm sideeffect "smstart sm; smstop sm;", "~{z0},~{z1},~{z2},~{z3},~{z4},~{z5},~{z6},~{z7},~{z8},~{z9},~{z10},~{z11},~{z12},~{z13},~{z14},~{z15},~{z16},~{z17},~{z18},~{z19},~{z20},~{z21},~{z22},~{z23},~{z24},~{z25},~{z26},~{z27},~{z28},~{z29},~{z30},~{z31}"()
ret <2 x float> %0
@@ -88,38 +88,38 @@ define <2 x float> @sme_nosve_streaming(ptr %in) "target-features"="+sme,-sve" "
entry:
; CHECK-LABEL: name: sme_nosve_streaming
; CHECK: INLINEASM &"smstart sm; smstop sm;"
-; CHECK-SAME: implicit-def early-clobber $z0
-; CHECK-SAME: implicit-def early-clobber $z1
-; CHECK-SAME: implicit-def early-clobber $z2
-; CHECK-SAME: implicit-def early-clobber $z3
-; CHECK-SAME: implicit-def early-clobber $z4
-; CHECK-SAME: implicit-def early-clobber $z5
-; CHECK-SAME: implicit-def early-clobber $z6
-; CHECK-SAME: implicit-def early-clobber $z7
-; CHECK-SAME: implicit-def early-clobber $z8
-; CHECK-SAME: implicit-def early-clobber $z9
-; CHECK-SAME: implicit-def early-clobber $z10
-; CHECK-SAME: implicit-def early-clobber $z11
-; CHECK-SAME: implicit-def early-clobber $z12
-; CHECK-SAME: implicit-def early-clobber $z13
-; CHECK-SAME: implicit-def early-clobber $z14
-; CHECK-SAME: implicit-def early-clobber $z15
-; CHECK-SAME: implicit-def early-clobber $z16
-; CHECK-SAME: implicit-def early-clobber $z17
-; CHECK-SAME: implicit-def early-clobber $z18
-; CHECK-SAME: implicit-def early-clobber $z19
-; CHECK-SAME: implicit-def early-clobber $z20
-; CHECK-SAME: implicit-def early-clobber $z21
-; CHECK-SAME: implicit-def early-clobber $z22
-; CHECK-SAME: implicit-def early-clobber $z23
-; CHECK-SAME: implicit-def early-clobber $z24
-; CHECK-SAME: implicit-def early-clobber $z25
-; CHECK-SAME: implicit-def early-clobber $z26
-; CHECK-SAME: implicit-def early-clobber $z27
-; CHECK-SAME: implicit-def early-clobber $z28
-; CHECK-SAME: implicit-def early-clobber $z29
-; CHECK-SAME: implicit-def early-clobber $z30
-; CHECK-SAME: implicit-def early-clobber $z31
+; CHECK-SAME: implicit-def dead early-clobber $z0
+; CHECK-SAME: implicit-def dead early-clobber $z1
+; CHECK-SAME: implicit-def dead early-clobber $z2
+; CHECK-SAME: implicit-def dead early-clobber $z3
+; CHECK-SAME: implicit-def dead early-clobber $z4
+; CHECK-SAME: implicit-def dead early-clobber $z5
+; CHECK-SAME: implicit-def dead early-clobber $z6
+; CHECK-SAME: implicit-def dead early-clobber $z7
+; CHECK-SAME: implicit-def dead early-clobber $z8
+; CHECK-SAME: implicit-def dead early-clobber $z9
+; CHECK-SAME: implicit-def dead early-clobber $z10
+; CHECK-SAME: implicit-def dead early-clobber $z11
+; CHECK-SAME: implicit-def dead early-clobber $z12
+; CHECK-SAME: implicit-def dead early-clobber $z13
+; CHECK-SAME: implicit-def dead early-clobber $z14
+; CHECK-SAME: implicit-def dead early-clobber $z15
+; CHECK-SAME: implicit-def dead early-clobber $z16
+; CHECK-SAME: implicit-def dead early-clobber $z17
+; CHECK-SAME: implicit-def dead early-clobber $z18
+; CHECK-SAME: implicit-def dead early-clobber $z19
+; CHECK-SAME: implicit-def dead early-clobber $z20
+; CHECK-SAME: implicit-def dead early-clobber $z21
+; CHECK-SAME: implicit-def dead early-clobber $z22
+; CHECK-SAME: implicit-def dead early-clobber $z23
+; CHECK-SAME: implicit-def dead early-clobber $z24
+; CHECK-SAME: implicit-def dead early-clobber $z25
+; CHECK-SAME: implicit-def dead early-clobber $z26
+; CHECK-SAME: implicit-def dead early-clobber $z27
+; CHECK-SAME: implicit-def dead early-clobber $z28
+; CHECK-SAME: implicit-def dead early-clobber $z29
+; CHECK-SAME: implicit-def dead early-clobber $z30
+; CHECK-SAME: implicit-def dead early-clobber $z31
%0 = load <2 x float>, ptr %in, align 8
call void asm sideeffect "smstart sm; smstop sm;", "~{z0},~{z1},~{z2},~{z3},~{z4},~{z5},~{z6},~{z7},~{z8},~{z9},~{z10},~{z11},~{z12},~{z13},~{z14},~{z15},~{z16},~{z17},~{z18},~{z19},~{z20},~{z21},~{z22},~{z23},~{z24},~{z25},~{z26},~{z27},~{z28},~{z29},~{z30},~{z31}"()
ret <2 x float> %0
diff --git a/llvm/test/CodeGen/AArch64/aarch64-za-clobber.ll b/llvm/test/CodeGen/AArch64/aarch64-za-clobber.ll
index 83e2c4f74c0ff..8faab7321071a 100644
--- a/llvm/test/CodeGen/AArch64/aarch64-za-clobber.ll
+++ b/llvm/test/CodeGen/AArch64/aarch64-za-clobber.ll
@@ -3,14 +3,14 @@
define void @alpha(<vscale x 4 x i32> %x) local_unnamed_addr {
entry:
-; CHECK: INLINEASM &"movt zt0[3, mul vl], z0", sideeffect attdialect, clobber, implicit-def early-clobber $za
+; CHECK: INLINEASM &"movt zt0[3, mul vl], z0", sideeffect attdialect, clobber, implicit-def dead early-clobber $za
tail call void asm sideeffect "movt zt0[3, mul vl], z0", "~{za}"()
ret void
}
define void @beta(<vscale x 4 x i32> %x) local_unnamed_addr {
entry:
-; CHECK: INLINEASM &"movt zt0[3, mul vl], z0", sideeffect attdialect, clobber, implicit-def early-clobber $zt0
+; CHECK: INLINEASM &"movt zt0[3, mul vl], z0", sideeffect attdialect, clobber, implicit-def dead early-clobber $zt0
tail call void asm sideeffect "movt zt0[3, mul vl], z0", "~{zt0}"()
ret void
}
diff --git a/llvm/test/CodeGen/AMDGPU/GlobalISel/irtranslator-inline-asm.ll b/llvm/test/CodeGen/AMDGPU/GlobalISel/irtranslator-inline-asm.ll
index fda4647c73b4f..026f43ba0655e 100644
--- a/llvm/test/CodeGen/AMDGPU/GlobalISel/irtranslator-inline-asm.ll
+++ b/llvm/test/CodeGen/AMDGPU/GlobalISel/irtranslator-inline-asm.ll
@@ -33,7 +33,7 @@ define amdgpu_kernel void @asm_simple_vgpr_clobber() {
; CHECK-NEXT: liveins: $sgpr8_sgpr9
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
- ; CHECK-NEXT: INLINEASM &"v_mov_b32 v0, 7", sideeffect attdialect, clobber, implicit-def early-clobber $vgpr0, !1
+ ; CHECK-NEXT: INLINEASM &"v_mov_b32 v0, 7", sideeffect attdialect, clobber, implicit-def dead early-clobber $vgpr0, !1
; CHECK-NEXT: S_ENDPGM 0
call void asm sideeffect "v_mov_b32 v0, 7", "~{v0}"(), !srcloc !0
ret void
@@ -45,7 +45,7 @@ define amdgpu_kernel void @asm_simple_sgpr_clobber() {
; CHECK-NEXT: liveins: $sgpr8_sgpr9
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
- ; CHECK-NEXT: INLINEASM &"s_mov_b32 s0, 7", sideeffect attdialect, clobber, implicit-def early-clobber $sgpr0, !1
+ ; CHECK-NEXT: INLINEASM &"s_mov_b32 s0, 7", sideeffect attdialect, clobber, implicit-def dead early-clobber $sgpr0, !1
; CHECK-NEXT: S_ENDPGM 0
call void asm sideeffect "s_mov_b32 s0, 7", "~{s0}"(), !srcloc !0
ret void
@@ -57,7 +57,7 @@ define amdgpu_kernel void @asm_simple_agpr_clobber() {
; CHECK-NEXT: liveins: $sgpr8_sgpr9
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $sgpr8_sgpr9
- ; CHECK-NEXT: INLINEASM &"; def a0", sideeffect attdialect, clobber, implicit-def early-clobber $agpr0, !1
+ ; CHECK-NEXT: INLINEASM &"; def a0", sideeffect attdialect, clobber, implicit-def dead early-clobber $agpr0, !1
; CHECK-NEXT: S_ENDPGM 0
call void asm sideeffect "; def a0", "~{a0}"(), !srcloc !0
ret void
diff --git a/llvm/test/CodeGen/PowerPC/pr47155-47156.ll b/llvm/test/CodeGen/PowerPC/pr47155-47156.ll
index a9848d95a666b..058bd46517f98 100644
--- a/llvm/test/CodeGen/PowerPC/pr47155-47156.ll
+++ b/llvm/test/CodeGen/PowerPC/pr47155-47156.ll
@@ -8,13 +8,11 @@ define void @pr47155() {
; CHECK: *** Final schedule for %bb.0 ***
; CHECK: Current Schedule Region
; CHECK-NEXT: pr47155:%bb.0 entry
-; CHECK: SU(0): INLINEASM &"mtlr 31"{{.*}}implicit-def early-clobber $lr
+; CHECK: SU(0): INLINEASM &"mtlr 31"{{.*}}implicit-def dead early-clobber $lr
; CHECK: Successors:
-; CHECK-NEXT: SU(1): Out Latency=0
; CHECK-NEXT: SU(1): Ord Latency=0 Barrier
-; CHECK-NEXT: SU(1): INLINEASM &"mtlr 31"{{.*}}implicit-def early-clobber $lr8
+; CHECK-NEXT: SU(1): INLINEASM &"mtlr 31"{{.*}}implicit-def dead early-clobber $lr8
; CHECK: Predecessors:
-; CHECK-NEXT: SU(0): Out Latency=0
; CHECK-NEXT: SU(0): Ord Latency=0 Barrier
; CHECK-NEXT: ExitSU:
entry:
@@ -28,7 +26,7 @@ define void @pr47156(ptr %fn) {
; CHECK: *** Final schedule for %bb.0 ***
; CHECK: Current Schedule Region
; CHECK-NEXT: pr47156:%bb.0 entry
-; CHECK: SU(0): INLINEASM &"mtctr 31"{{.*}}implicit-def early-clobber $ctr
+; CHECK: SU(0): INLINEASM &"mtctr 31"{{.*}}implicit-def dead early-clobber $ctr
; CHECK: Successors:
; CHECK-NEXT: SU(1): Out Latency=0
; CHECK-NEXT: SU(1): MTCTR8 renamable $x3, implicit-def $ctr8
diff --git a/llvm/test/CodeGen/RISCV/GlobalISel/irtranslator-inline-asm.ll b/llvm/test/CodeGen/RISCV/GlobalISel/irtranslator-inline-asm.ll
index bf3a9fb75dc22..c5bbc15aaff7e 100644
--- a/llvm/test/CodeGen/RISCV/GlobalISel/irtranslator-inline-asm.ll
+++ b/llvm/test/CodeGen/RISCV/GlobalISel/irtranslator-inline-asm.ll
@@ -15,7 +15,7 @@ define void @test_simple_memory_clobber() {
define void @test_simple_register_clobber() {
; CHECK-LABEL: name: test_simple_register_clobber
; CHECK: bb.1 (%ir-block.0):
- ; CHECK-NEXT: INLINEASM &"", sideeffect attdialect, clobber, implicit-def early-clobber $x10
+ ; CHECK-NEXT: INLINEASM &"", sideeffect attdialect, clobber, implicit-def dead early-clobber $x10
; CHECK-NEXT: PseudoRET
call void asm sideeffect "", "~{x10}"()
ret void
diff --git a/llvm/test/CodeGen/X86/cfi-xmm.ll b/llvm/test/CodeGen/X86/cfi-xmm.ll
index 68c001bb9c86f..6dbc017252fae 100644
--- a/llvm/test/CodeGen/X86/cfi-xmm.ll
+++ b/llvm/test/CodeGen/X86/cfi-xmm.ll
@@ -12,7 +12,7 @@ define void @_Z1fv() {
; PEI-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 48
; PEI-NEXT: CFI_INSTRUCTION offset $xmm10, -48
; PEI-NEXT: CFI_INSTRUCTION offset $xmm15, -32
- ; PEI-NEXT: INLINEASM &"", sideeffect attdialect, clobber, implicit-def dead early-clobber $xmm10, clobber, implicit-def dead early-clobber $xmm15, clobber, implicit-def dead early-clobber $df, clobber, implicit-def early-clobber $fpsw, clobber, implicit-def dead early-clobber $eflags
+ ; PEI-NEXT: INLINEASM &"", sideeffect attdialect, clobber, implicit-def dead early-clobber $xmm10, clobber, implicit-def dead early-clobber $xmm15, clobber, implicit-def dead early-clobber $df, clobber, implicit-def dead early-clobber $fpsw, clobber, implicit-def dead early-clobber $eflags
; PEI-NEXT: $xmm10 = frame-destroy MOVAPSrm $rsp, 1, $noreg, 0, $noreg :: (load (s128) from %fixed-stack.0)
; PEI-NEXT: $xmm15 = frame-destroy MOVAPSrm $rsp, 1, $noreg, 16, $noreg :: (load (s128) from %fixed-stack.1)
; PEI-NEXT: $rsp = frame-destroy ADD64ri32 $rsp, 40, implicit-def dead $eflags
diff --git a/llvm/test/CodeGen/X86/inline-asm-avx512f-x-constraint.ll b/llvm/test/CodeGen/X86/inline-asm-avx512f-x-constraint.ll
index 56950b995ac59..b8b3c937bfd1b 100644
--- a/llvm/test/CodeGen/X86/inline-asm-avx512f-x-constraint.ll
+++ b/llvm/test/CodeGen/X86/inline-asm-avx512f-x-constraint.ll
@@ -6,7 +6,7 @@
; CHECK-LABEL: name: mask_Yk_i8
; CHECK: %[[REG1:.*]]:vr512_0_15 = COPY %1
; CHECK: %[[REG2:.*]]:vr512_0_15 = COPY %2
-; CHECK: INLINEASM &"vpaddq\09$3, $2, $0 {$1}", attdialect, {{.*}}, def %{{.*}}, {{.*}}, %{{.*}}, {{.*}}, %[[REG1]], {{.*}}, %[[REG2]], clobber, implicit-def early-clobber $df, clobber, implicit-def early-clobber $fpsw, clobber, implicit-def early-clobber $eflags
+; CHECK: INLINEASM &"vpaddq\09$3, $2, $0 {$1}", attdialect, {{.*}}, def %{{.*}}, {{.*}}, %{{.*}}, {{.*}}, %[[REG1]], {{.*}}, %[[REG2]], clobber, implicit-def dead early-clobber $df, clobber, implicit-def dead early-clobber $fpsw, clobber, implicit-def dead early-clobber $eflags
define <8 x i64> @mask_Yk_i8(i8 signext %msk, <8 x i64> %x, <8 x i64> %y) {
entry:
@@ -17,7 +17,7 @@ entry:
; FP16-LABEL: name: mask_Yk_f16
; FP16: %[[REG1:.*]]:vr512_0_15 = COPY %1
; FP16: %[[REG2:.*]]:vr512_0_15 = COPY %2
-; FP16: INLINEASM &"vaddph\09$3, $2, $0 {$1}", attdialect, {{.*}}, def %{{.*}}, {{.*}}, %{{.*}}, {{.*}}, %[[REG1]], {{.*}}, %[[REG2]], clobber, implicit-def early-clobber $df, clobber, implicit-def early-clobber $fpsw, clobber, implicit-def early-clobber $eflags
+; FP16: INLINEASM &"vaddph\09$3, $2, $0 {$1}", attdialect, {{.*}}, def %{{.*}}, {{.*}}, %{{.*}}, {{.*}}, %[[REG1]], {{.*}}, %[[REG2]], clobber, implicit-def dead early-clobber $df, clobber, implicit-def dead early-clobber $fpsw, clobber, implicit-def dead early-clobber $eflags
; CHECK-STDERR: could not allocate output register for constraint 'x'
define <32 x half> @mask_Yk_f16(i8 signext %msk, <32 x half> %x, <32 x half> %y) {
entry:
@@ -28,7 +28,7 @@ entry:
; FP16-LABEL: name: mask_Yk_bf16
; FP16: %[[REG1:.*]]:vr512_0_15 = COPY %1
; FP16: %[[REG2:.*]]:vr512_0_15 = COPY %2
-; FP16: INLINEASM &"vaddph\09$3, $2, $0 {$1}", attdialect, {{.*}}, def %{{.*}}, {{.*}}, %{{.*}}, {{.*}}, %[[REG1]], {{.*}}, %[[REG2]], clobber, implicit-def early-clobber $df, clobber, implicit-def early-clobber $fpsw, clobber, implicit-def early-clobber $eflags
+; FP16: INLINEASM &"vaddph\09$3, $2, $0 {$1}", attdialect, {{.*}}, def %{{.*}}, {{.*}}, %{{.*}}, {{.*}}, %[[REG1]], {{.*}}, %[[REG2]], clobber, implicit-def dead early-clobber $df, clobber, implicit-def dead early-clobber $fpsw, clobber, implicit-def dead early-clobber $eflags
; CHECK-STDERR: could not allocate output register for constraint 'x'
define <32 x bfloat> @mask_Yk_bf16(i8 signext %msk, <32 x bfloat> %x, <32 x bfloat> %y) {
entry:
diff --git a/llvm/test/CodeGen/X86/inline-asm-default-clobbers.ll b/llvm/test/CodeGen/X86/inline-asm-default-clobbers.ll
index b0112bd80a259..7a23b6ec2e9e4 100644
--- a/llvm/test/CodeGen/X86/inline-asm-default-clobbers.ll
+++ b/llvm/test/CodeGen/X86/inline-asm-default-clobbers.ll
@@ -1,6 +1,6 @@
; RUN: llc < %s -mtriple=i686 -stop-after=finalize-isel | FileCheck %s
-; CHECK: INLINEASM &"", sideeffect attdialect, clobber, implicit-def early-clobber $df, clobber, implicit-def early-clobber $fpsw, clobber, implicit-def early-clobber $eflags
+; CHECK: INLINEASM &"", sideeffect attdialect, clobber, implicit-def dead early-clobber $df, clobber, implicit-def dead early-clobber $fpsw, clobber, implicit-def dead early-clobber $eflags
define void @foo() {
entry:
call void asm sideeffect "", "~{dirflag},~{fpsr},~{flags}"()
diff --git a/llvm/test/CodeGen/X86/tail-dup-asm-goto.ll b/llvm/test/CodeGen/X86/tail-dup-asm-goto.ll
index 7c22c0e117091..60bf8662856b0 100644
--- a/llvm/test/CodeGen/X86/tail-dup-asm-goto.ll
+++ b/llvm/test/CodeGen/X86/tail-dup-asm-goto.ll
@@ -36,7 +36,7 @@ define ptr @test1(ptr %arg1, ptr %arg2) {
; CHECK-NEXT: successors: %bb.5(0x80000000), %bb.4(0x00000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: [[PHI:%[0-9]+]]:gr64 = PHI [[COPY]], %bb.2, [[MOV64rm]], %bb.1
- ; CHECK-NEXT: INLINEASM_BR &"#$0 $1 $2", sideeffect mayload attdialect, imm, 42, imm, 0, imm, %bb.4, clobber, implicit-def early-clobber $df, clobber, implicit-def early-clobber $fpsw, clobber, implicit-def early-clobber $eflags
+ ; CHECK-NEXT: INLINEASM_BR &"#$0 $1 $2", sideeffect mayload attdialect, imm, 42, imm, 0, imm, %bb.4, clobber, implicit-def dead early-clobber $df, clobber, implicit-def dead early-clobber $fpsw, clobber, implicit-def dead early-clobber $eflags
; CHECK-NEXT: JMP_1 %bb.5
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.4.bb17.i.i.i (inlineasm-br-indirect-target):
More information about the llvm-commits
mailing list