Skip to content

Commit 0cd5c0d

Browse files
committed
Exact does not block reducing shift size
Signed-off-by: John Lu <[email protected]>
1 parent 9435c88 commit 0cd5c0d

File tree

2 files changed

+6
-8
lines changed

2 files changed

+6
-8
lines changed

llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4209,10 +4209,6 @@ SDValue AMDGPUTargetLowering::performSrlCombine(SDNode *N,
42094209
}
42104210
}
42114211

4212-
// If the shift is exact, the shifted out bits matter.
4213-
if (N->getFlags().hasExact())
4214-
return SDValue();
4215-
42164212
if (VT.getScalarType() != MVT::i64)
42174213
return SDValue();
42184214

llvm/test/CodeGen/AMDGPU/srl64_reduce.ll

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ define i64 @srl_exact_metadata(i64 %arg0, ptr %arg1.ptr) {
4545
; CHECK-LABEL: srl_exact_metadata:
4646
; CHECK: ; %bb.0:
4747
; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48-
; CHECK-NEXT: flat_load_dword v2, v[2:3]
48+
; CHECK-NEXT: flat_load_dword v0, v[2:3]
4949
; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
50-
; CHECK-NEXT: v_lshrrev_b64 v[0:1], v2, v[0:1]
50+
; CHECK-NEXT: v_lshrrev_b32_e32 v0, v0, v1
5151
; CHECK-NEXT: v_mov_b32_e32 v1, 0
5252
; CHECK-NEXT: s_setpc_b64 s[30:31]
5353
%shift.amt = load i64, ptr %arg1.ptr, !range !0, !noundef !{}
@@ -121,8 +121,10 @@ define <2 x i64> @srl_exact_v2_metadata(<2 x i64> %arg0, ptr %arg1.ptr) {
121121
; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
122122
; CHECK-NEXT: flat_load_dwordx4 v[4:7], v[4:5]
123123
; CHECK-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
124-
; CHECK-NEXT: v_lshrrev_b64 v[0:1], v4, v[0:1]
125-
; CHECK-NEXT: v_lshrrev_b64 v[2:3], v6, v[2:3]
124+
; CHECK-NEXT: v_lshrrev_b32_e32 v0, v4, v1
125+
; CHECK-NEXT: v_lshrrev_b32_e32 v2, v6, v3
126+
; CHECK-NEXT: v_mov_b32_e32 v1, 0
127+
; CHECK-NEXT: v_mov_b32_e32 v3, 0
126128
; CHECK-NEXT: s_setpc_b64 s[30:31]
127129
%shift.amt = load <2 x i64>, ptr %arg1.ptr, !range !0, !noundef !{}
128130
%srl = lshr exact <2 x i64> %arg0, %shift.amt

0 commit comments

Comments
 (0)