@@ -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