Skip to content

Commit 4f49a0d

Browse files
committed
Eliminate G_TRUNC to S1 SGPR
1 parent fc1e872 commit 4f49a0d

File tree

4 files changed

+34
-3
lines changed

4 files changed

+34
-3
lines changed

llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeHelper.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1132,7 +1132,8 @@ void RegBankLegalizeHelper::applyMappingDst(
11321132
assert(RB == SgprRB);
11331133
Register NewDst = MRI.createVirtualRegister(SgprRB_S32);
11341134
Op.setReg(NewDst);
1135-
B.buildTrunc(Reg, NewDst);
1135+
if (!MRI.use_empty(Reg))
1136+
B.buildTrunc(Reg, NewDst);
11361137
break;
11371138
}
11381139
case InvalidMapping: {

llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-add.mir

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,3 +448,29 @@ body: |
448448
%4:_(s32), %5:_(s1) = G_UADDE %0, %1, %3
449449
S_ENDPGM 0, implicit %4
450450
...
451+
452+
---
453+
name: uadde_s32_ss_scc_use
454+
legalized: true
455+
456+
body: |
457+
bb.0:
458+
liveins: $sgpr0, $sgpr1, $sgpr2
459+
; CHECK-LABEL: name: uadde_s32_ss_scc_use
460+
; CHECK: liveins: $sgpr0, $sgpr1, $sgpr2
461+
; CHECK-NEXT: {{ $}}
462+
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
463+
; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
464+
; CHECK-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2
465+
; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1
466+
; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[COPY2]], [[C]]
467+
; CHECK-NEXT: [[UADDE:%[0-9]+]]:sgpr(s32), [[UADDE1:%[0-9]+]]:sgpr(s32) = G_UADDE [[COPY]], [[COPY1]], [[AND]]
468+
; CHECK-NEXT: S_ENDPGM 0, implicit [[UADDE]](s32)
469+
%0:_(s32) = COPY $sgpr0
470+
%1:_(s32) = COPY $sgpr1
471+
%2:_(s32) = COPY $sgpr2
472+
%3:_(s1) = G_TRUNC %2
473+
%4:_(s32), %5:_(s1) = G_UADDE %0, %1, %3
474+
%6:_(s32) = G_ANYEXT %5:_(s1)
475+
S_ENDPGM 0, implicit %4
476+
...

llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-sext.mir

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,12 @@ body: |
7777
; CHECK-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0
7878
; CHECK-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[AND]](s32), [[C1]], [[C2]]
7979
; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[SELECT]](s32)
80+
; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s16)
8081
%0:_(s32) = COPY $sgpr0
8182
%1:_(s32) = COPY $sgpr1
8283
%2:_(s1) = G_ICMP intpred(eq), %0, %1
8384
%3:_(s16) = G_SEXT %2
85+
S_ENDPGM 0, implicit %3
8486
...
8587

8688
---
@@ -215,9 +217,11 @@ body: |
215217
; CHECK-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0
216218
; CHECK-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[AND]](s32), [[C1]], [[C2]]
217219
; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[SELECT]](s32)
220+
; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s16)
218221
%0:_(s32) = COPY $sgpr0
219222
%1:_(s1) = G_TRUNC %0
220223
%2:_(s16) = G_SEXT %1
224+
S_ENDPGM 0, implicit %2
221225
...
222226

223227
---

llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-zext.mir

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,11 @@ body: |
7272
; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[ICMP]], [[C]]
7373
; CHECK-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0
7474
; CHECK-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[AND]](s32), [[C]], [[C1]]
75-
; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[SELECT]](s32)
7675
%0:_(s32) = COPY $sgpr0
7776
%1:_(s32) = COPY $sgpr1
7877
%2:_(s1) = G_ICMP intpred(eq), %0, %1
7978
%3:_(s16) = G_ZEXT %2
79+
S_ENDPGM 0, implicit %3
8080
...
8181

8282
---
@@ -208,10 +208,10 @@ body: |
208208
; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[COPY]], [[C]]
209209
; CHECK-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0
210210
; CHECK-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[AND]](s32), [[C]], [[C1]]
211-
; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[SELECT]](s32)
212211
%0:_(s32) = COPY $sgpr0
213212
%1:_(s1) = G_TRUNC %0
214213
%2:_(s16) = G_ZEXT %1
214+
S_ENDPGM 0, implicit %2
215215
...
216216

217217
---

0 commit comments

Comments
 (0)