Skip to content

Commit a000a1b

Browse files
committed
Handle G_TRUNC on S1 SGPR
1 parent 278fa03 commit a000a1b

File tree

6 files changed

+5
-12
lines changed

6 files changed

+5
-12
lines changed

llvm/lib/Target/AMDGPU/AMDGPURegBankLegalize.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -482,9 +482,9 @@ bool AMDGPURegBankLegalize::runOnMachineFunction(MachineFunction &MF) {
482482
}
483483
}
484484

485-
// assert(!getAnySgprS1(MRI).isValid() &&
486-
// "Registers with sgpr reg bank and S1 LLT are not legal after "
487-
// "AMDGPURegBankLegalize. Should lower to sgpr S32");
485+
assert(!getAnySgprS1(MRI).isValid() &&
486+
"Registers with sgpr reg bank and S1 LLT are not legal after "
487+
"AMDGPURegBankLegalize. Should lower to sgpr S32");
488488

489489
return true;
490490
}

llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeHelper.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1136,7 +1136,8 @@ void RegBankLegalizeHelper::applyMappingDst(
11361136
assert(RB == SgprRB);
11371137
Register NewDst = MRI.createVirtualRegister(SgprRB_S32);
11381138
Op.setReg(NewDst);
1139-
B.buildTrunc(Reg, NewDst);
1139+
if (!MRI.use_empty(Reg))
1140+
B.buildTrunc(Reg, NewDst);
11401141
break;
11411142
}
11421143
case InvalidMapping: {

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ body: |
1414
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
1515
; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
1616
; CHECK-NEXT: [[UADDO:%[0-9]+]]:sgpr(s32), [[UADDO1:%[0-9]+]]:sgpr(s32) = G_UADDO [[COPY]], [[COPY1]]
17-
; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[UADDO1]](s32)
1817
%0:_(s32) = COPY $sgpr0
1918
%1:_(s32) = COPY $sgpr1
2019
%2:_(s32), %3:_(s1) = G_UADDO %0, %1
@@ -92,7 +91,6 @@ body: |
9291
; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1
9392
; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[COPY2]], [[C]]
9493
; CHECK-NEXT: [[UADDE:%[0-9]+]]:sgpr(s32), [[UADDE1:%[0-9]+]]:sgpr(s32) = G_UADDE [[COPY]], [[COPY1]], [[AND]]
95-
; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[UADDE1]](s32)
9694
%0:_(s32) = COPY $sgpr0
9795
%1:_(s32) = COPY $sgpr1
9896
%2:_(s32) = COPY $sgpr2

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ body: |
7676
; CHECK-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -1
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]]
79-
; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[SELECT]](s32)
8079
%0:_(s32) = COPY $sgpr0
8180
%1:_(s32) = COPY $sgpr1
8281
%2:_(s1) = G_ICMP intpred(eq), %0, %1
@@ -214,7 +213,6 @@ body: |
214213
; CHECK-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -1
215214
; CHECK-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0
216215
; CHECK-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[AND]](s32), [[C1]], [[C2]]
217-
; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[SELECT]](s32)
218216
%0:_(s32) = COPY $sgpr0
219217
%1:_(s1) = G_TRUNC %0
220218
%2:_(s16) = G_SEXT %1

llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-sub-overflow.s32.mir

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ body: |
1414
; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
1515
; CHECK-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
1616
; CHECK-NEXT: [[USUBO:%[0-9]+]]:sgpr(s32), [[USUBO1:%[0-9]+]]:sgpr(s32) = G_USUBO [[COPY]], [[COPY1]]
17-
; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[USUBO1]](s32)
1817
%0:_(s32) = COPY $sgpr0
1918
%1:_(s32) = COPY $sgpr1
2019
%2:_(s32), %3:_(s1) = G_USUBO %0, %1
@@ -92,7 +91,6 @@ body: |
9291
; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1
9392
; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[COPY2]], [[C]]
9493
; CHECK-NEXT: [[USUBE:%[0-9]+]]:sgpr(s32), [[USUBE1:%[0-9]+]]:sgpr(s32) = G_USUBE [[COPY]], [[COPY1]], [[AND]]
95-
; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[USUBE1]](s32)
9694
%0:_(s32) = COPY $sgpr0
9795
%1:_(s32) = COPY $sgpr1
9896
%2:_(s32) = COPY $sgpr2

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ 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
@@ -208,7 +207,6 @@ body: |
208207
; CHECK-NEXT: [[AND:%[0-9]+]]:sgpr(s32) = G_AND [[COPY]], [[C]]
209208
; CHECK-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0
210209
; 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)
212210
%0:_(s32) = COPY $sgpr0
213211
%1:_(s1) = G_TRUNC %0
214212
%2:_(s16) = G_ZEXT %1

0 commit comments

Comments
 (0)