Skip to content

Commit 5005f8d

Browse files
committed
[RISCV] Add sub_to_add to RISCVPostLegalizerCombiner.
1 parent e579632 commit 5005f8d

File tree

2 files changed

+17
-20
lines changed

2 files changed

+17
-20
lines changed

llvm/lib/Target/RISCV/RISCVCombine.td

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ def RISCVO0PreLegalizerCombiner: GICombiner<
2323
// TODO: Add more combines.
2424
def RISCVPostLegalizerCombiner
2525
: GICombiner<"RISCVPostLegalizerCombinerImpl",
26-
[combines_for_extload, redundant_and, identity_combines,
27-
commute_constant_to_rhs, constant_fold_cast_op]> {
26+
[sub_to_add, combines_for_extload, redundant_and,
27+
identity_combines, commute_constant_to_rhs,
28+
constant_fold_cast_op]> {
2829
}

llvm/test/CodeGen/RISCV/GlobalISel/rv32zbb-zbkb.ll

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,7 @@ define i64 @rol_i64(i64 %a, i64 %b) nounwind {
143143
; CHECK-NEXT: bltu a6, a4, .LBB7_2
144144
; CHECK-NEXT: # %bb.1:
145145
; CHECK-NEXT: li a3, 0
146-
; CHECK-NEXT: sub a5, a6, a4
147-
; CHECK-NEXT: sll a7, a0, a5
146+
; CHECK-NEXT: sll a7, a0, a6
148147
; CHECK-NEXT: j .LBB7_3
149148
; CHECK-NEXT: .LBB7_2:
150149
; CHECK-NEXT: sll a3, a0, a2
@@ -162,8 +161,7 @@ define i64 @rol_i64(i64 %a, i64 %b) nounwind {
162161
; CHECK-NEXT: andi a6, a5, 63
163162
; CHECK-NEXT: bltu a6, a4, .LBB7_7
164163
; CHECK-NEXT: # %bb.6:
165-
; CHECK-NEXT: sub a7, a6, a4
166-
; CHECK-NEXT: srl a7, a1, a7
164+
; CHECK-NEXT: srl a7, a1, a6
167165
; CHECK-NEXT: bnez a6, .LBB7_8
168166
; CHECK-NEXT: j .LBB7_9
169167
; CHECK-NEXT: .LBB7_7:
@@ -220,8 +218,7 @@ define i64 @ror_i64(i64 %a, i64 %b) nounwind {
220218
; CHECK-NEXT: li a4, 32
221219
; CHECK-NEXT: bltu a5, a4, .LBB9_2
222220
; CHECK-NEXT: # %bb.1:
223-
; CHECK-NEXT: sub a3, a5, a4
224-
; CHECK-NEXT: srl a6, a1, a3
221+
; CHECK-NEXT: srl a6, a1, a5
225222
; CHECK-NEXT: mv a3, a0
226223
; CHECK-NEXT: bnez a5, .LBB9_3
227224
; CHECK-NEXT: j .LBB9_4
@@ -235,33 +232,32 @@ define i64 @ror_i64(i64 %a, i64 %b) nounwind {
235232
; CHECK-NEXT: .LBB9_3:
236233
; CHECK-NEXT: mv a3, a6
237234
; CHECK-NEXT: .LBB9_4:
238-
; CHECK-NEXT: neg a7, a2
235+
; CHECK-NEXT: neg a6, a2
239236
; CHECK-NEXT: bltu a5, a4, .LBB9_7
240237
; CHECK-NEXT: # %bb.5:
241238
; CHECK-NEXT: li a2, 0
242-
; CHECK-NEXT: andi a5, a7, 63
239+
; CHECK-NEXT: andi a5, a6, 63
243240
; CHECK-NEXT: bgeu a5, a4, .LBB9_8
244241
; CHECK-NEXT: .LBB9_6:
245-
; CHECK-NEXT: sll a6, a0, a7
246-
; CHECK-NEXT: neg a4, a5
247-
; CHECK-NEXT: srl a0, a0, a4
248-
; CHECK-NEXT: sll a4, a1, a7
249-
; CHECK-NEXT: or a0, a0, a4
242+
; CHECK-NEXT: sll a4, a0, a6
243+
; CHECK-NEXT: neg a7, a5
244+
; CHECK-NEXT: srl a0, a0, a7
245+
; CHECK-NEXT: sll a6, a1, a6
246+
; CHECK-NEXT: or a0, a0, a6
250247
; CHECK-NEXT: bnez a5, .LBB9_9
251248
; CHECK-NEXT: j .LBB9_10
252249
; CHECK-NEXT: .LBB9_7:
253250
; CHECK-NEXT: srl a2, a1, a2
254-
; CHECK-NEXT: andi a5, a7, 63
251+
; CHECK-NEXT: andi a5, a6, 63
255252
; CHECK-NEXT: bltu a5, a4, .LBB9_6
256253
; CHECK-NEXT: .LBB9_8:
257-
; CHECK-NEXT: li a6, 0
258-
; CHECK-NEXT: sub a4, a5, a4
259-
; CHECK-NEXT: sll a0, a0, a4
254+
; CHECK-NEXT: li a4, 0
255+
; CHECK-NEXT: sll a0, a0, a5
260256
; CHECK-NEXT: beqz a5, .LBB9_10
261257
; CHECK-NEXT: .LBB9_9:
262258
; CHECK-NEXT: mv a1, a0
263259
; CHECK-NEXT: .LBB9_10:
264-
; CHECK-NEXT: or a0, a3, a6
260+
; CHECK-NEXT: or a0, a3, a4
265261
; CHECK-NEXT: or a1, a2, a1
266262
; CHECK-NEXT: ret
267263
%or = tail call i64 @llvm.fshr.i64(i64 %a, i64 %a, i64 %b)

0 commit comments

Comments
 (0)