@@ -143,8 +143,7 @@ define i64 @rol_i64(i64 %a, i64 %b) nounwind {
143
143
; CHECK-NEXT: bltu a6, a4, .LBB7_2
144
144
; CHECK-NEXT: # %bb.1:
145
145
; 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
148
147
; CHECK-NEXT: j .LBB7_3
149
148
; CHECK-NEXT: .LBB7_2:
150
149
; CHECK-NEXT: sll a3, a0, a2
@@ -162,8 +161,7 @@ define i64 @rol_i64(i64 %a, i64 %b) nounwind {
162
161
; CHECK-NEXT: andi a6, a5, 63
163
162
; CHECK-NEXT: bltu a6, a4, .LBB7_7
164
163
; 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
167
165
; CHECK-NEXT: bnez a6, .LBB7_8
168
166
; CHECK-NEXT: j .LBB7_9
169
167
; CHECK-NEXT: .LBB7_7:
@@ -220,8 +218,7 @@ define i64 @ror_i64(i64 %a, i64 %b) nounwind {
220
218
; CHECK-NEXT: li a4, 32
221
219
; CHECK-NEXT: bltu a5, a4, .LBB9_2
222
220
; 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
225
222
; CHECK-NEXT: mv a3, a0
226
223
; CHECK-NEXT: bnez a5, .LBB9_3
227
224
; CHECK-NEXT: j .LBB9_4
@@ -235,33 +232,32 @@ define i64 @ror_i64(i64 %a, i64 %b) nounwind {
235
232
; CHECK-NEXT: .LBB9_3:
236
233
; CHECK-NEXT: mv a3, a6
237
234
; CHECK-NEXT: .LBB9_4:
238
- ; CHECK-NEXT: neg a7 , a2
235
+ ; CHECK-NEXT: neg a6 , a2
239
236
; CHECK-NEXT: bltu a5, a4, .LBB9_7
240
237
; CHECK-NEXT: # %bb.5:
241
238
; CHECK-NEXT: li a2, 0
242
- ; CHECK-NEXT: andi a5, a7 , 63
239
+ ; CHECK-NEXT: andi a5, a6 , 63
243
240
; CHECK-NEXT: bgeu a5, a4, .LBB9_8
244
241
; 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
250
247
; CHECK-NEXT: bnez a5, .LBB9_9
251
248
; CHECK-NEXT: j .LBB9_10
252
249
; CHECK-NEXT: .LBB9_7:
253
250
; CHECK-NEXT: srl a2, a1, a2
254
- ; CHECK-NEXT: andi a5, a7 , 63
251
+ ; CHECK-NEXT: andi a5, a6 , 63
255
252
; CHECK-NEXT: bltu a5, a4, .LBB9_6
256
253
; 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
260
256
; CHECK-NEXT: beqz a5, .LBB9_10
261
257
; CHECK-NEXT: .LBB9_9:
262
258
; CHECK-NEXT: mv a1, a0
263
259
; CHECK-NEXT: .LBB9_10:
264
- ; CHECK-NEXT: or a0, a3, a6
260
+ ; CHECK-NEXT: or a0, a3, a4
265
261
; CHECK-NEXT: or a1, a2, a1
266
262
; CHECK-NEXT: ret
267
263
%or = tail call i64 @llvm.fshr.i64 (i64 %a , i64 %a , i64 %b )
0 commit comments