Skip to content

Commit 598ca52

Browse files
tclin914tomtor
authored andcommitted
[RISCV] Don't select sh{1,2,3}add if shl doesn't have one use (llvm#143351)
Try to fix llvm#130829 (review). There's no benefit if shl doesn't have one use.
1 parent 216bd41 commit 598ca52

File tree

2 files changed

+12
-13
lines changed

2 files changed

+12
-13
lines changed

llvm/lib/Target/RISCV/RISCVISelLowering.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14898,7 +14898,7 @@ static SDValue combineShlAddIAddImpl(SDNode *N, SDValue AddI, SDValue Other,
1489814898
return SDValue();
1489914899

1490014900
APInt VShift;
14901-
if (!sd_match(SHLVal, m_BinOp(ISD::SHL, m_Value(), m_ConstInt(VShift))))
14901+
if (!sd_match(SHLVal, m_OneUse(m_Shl(m_Value(), m_ConstInt(VShift)))))
1490214902
return SDValue();
1490314903

1490414904
if (VShift.slt(1) || VShift.sgt(3))

llvm/test/CodeGen/RISCV/reassoc-shl-addi-add.ll

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ declare i32 @callee(i32 noundef, i32 noundef, i32 noundef, i32 noundef)
88
define void @t1(i32 noundef %a, i32 noundef %b, i32 noundef %c, i32 noundef %d) #0 {
99
; CHECK-LABEL: t1:
1010
; CHECK: # %bb.0: # %entry
11-
; CHECK-NEXT: sh2add a2, a0, a2
12-
; CHECK-NEXT: sh2add a1, a0, a1
13-
; CHECK-NEXT: addi a1, a1, 45
14-
; CHECK-NEXT: addi a2, a2, 45
11+
; CHECK-NEXT: slli a4, a0, 2
12+
; CHECK-NEXT: addi a4, a4, 45
13+
; CHECK-NEXT: add a1, a4, a1
14+
; CHECK-NEXT: add a2, a4, a2
1515
; CHECK-NEXT: sh2add a3, a0, a3
1616
; CHECK-NEXT: mv a0, a1
1717
; CHECK-NEXT: tail callee
@@ -133,12 +133,11 @@ entry:
133133
define void @t8(i32 noundef %a, i32 noundef %b, i32 noundef %c, i32 noundef %d) #0 {
134134
; CHECK-LABEL: t8:
135135
; CHECK: # %bb.0: # %entry
136-
; CHECK-NEXT: sh3add a2, a0, a2
137-
; CHECK-NEXT: sh3add a1, a0, a1
138136
; CHECK-NEXT: lui a4, 1
139137
; CHECK-NEXT: addi a4, a4, 1307
140-
; CHECK-NEXT: add a1, a1, a4
141-
; CHECK-NEXT: add a2, a2, a4
138+
; CHECK-NEXT: sh3add a4, a0, a4
139+
; CHECK-NEXT: add a1, a4, a1
140+
; CHECK-NEXT: add a2, a4, a2
142141
; CHECK-NEXT: sh3add a3, a0, a3
143142
; CHECK-NEXT: mv a0, a1
144143
; CHECK-NEXT: tail callee
@@ -155,10 +154,10 @@ entry:
155154
define void @t9(i32 noundef %a, i32 noundef %b, i32 noundef %c, i32 noundef %d) #0 {
156155
; CHECK-LABEL: t9:
157156
; CHECK: # %bb.0: # %entry
158-
; CHECK-NEXT: sh2add a2, a0, a2
159-
; CHECK-NEXT: sh2add a1, a0, a1
160-
; CHECK-NEXT: addi a1, a1, -42
161-
; CHECK-NEXT: addi a2, a2, -42
157+
; CHECK-NEXT: slli a4, a0, 2
158+
; CHECK-NEXT: addi a4, a4, -42
159+
; CHECK-NEXT: add a1, a4, a1
160+
; CHECK-NEXT: add a2, a4, a2
162161
; CHECK-NEXT: sh2add a3, a0, a3
163162
; CHECK-NEXT: mv a0, a1
164163
; CHECK-NEXT: tail callee

0 commit comments

Comments
 (0)