@@ -221,87 +221,99 @@ define i64 @test_i64(i64 %a) {
221
221
;
222
222
; CHECK-6M-LABEL: test_i64:
223
223
; CHECK-6M: @ %bb.0:
224
- ; CHECK-6M-NEXT: .save {r4, r5, r7, lr}
225
- ; CHECK-6M-NEXT: push {r4, r5, r7, lr}
224
+ ; CHECK-6M-NEXT: .save {r4, r5, r6, lr}
225
+ ; CHECK-6M-NEXT: push {r4, r5, r6, lr}
226
+ ; CHECK-6M-NEXT: mov r3, r1
226
227
; CHECK-6M-NEXT: mov r2, r0
227
- ; CHECK-6M-NEXT: ldr r5, .LCPI3_0
228
- ; CHECK-6M-NEXT: adr r3, .LCPI3_1
228
+ ; CHECK-6M-NEXT: movs r1, #0
229
+ ; CHECK-6M-NEXT: orrs r0, r3
230
+ ; CHECK-6M-NEXT: beq .LBB3_6
231
+ ; CHECK-6M-NEXT: @ %bb.1: @ %cond.false
232
+ ; CHECK-6M-NEXT: ldr r6, .LCPI3_0
233
+ ; CHECK-6M-NEXT: adr r4, .LCPI3_1
229
234
; CHECK-6M-NEXT: movs r0, #32
230
- ; CHECK-6M-NEXT: cmp r1 , #0
231
- ; CHECK-6M-NEXT: mov r4 , r0
232
- ; CHECK-6M-NEXT: beq .LBB3_2
233
- ; CHECK-6M-NEXT: @ %bb.1:
234
- ; CHECK-6M-NEXT: rsbs r4, r1 , #0
235
- ; CHECK-6M-NEXT: ands r4, r1
236
- ; CHECK-6M-NEXT: muls r4, r5, r4
237
- ; CHECK-6M-NEXT: lsrs r1, r4 , #27
238
- ; CHECK-6M-NEXT: ldrb r4 , [r3, r1 ]
239
- ; CHECK-6M-NEXT: .LBB3_2:
240
- ; CHECK-6M-NEXT: adds r4 , #32
241
- ; CHECK-6M-NEXT: rsbs r1 , r2, #0
242
- ; CHECK-6M-NEXT: ands r1 , r2
243
- ; CHECK-6M-NEXT: muls r5, r1, r5
244
- ; CHECK-6M-NEXT: lsrs r1, r5 , #27
235
+ ; CHECK-6M-NEXT: cmp r3 , #0
236
+ ; CHECK-6M-NEXT: mov r5 , r0
237
+ ; CHECK-6M-NEXT: beq .LBB3_3
238
+ ; CHECK-6M-NEXT: @ %bb.2: @ %cond.false
239
+ ; CHECK-6M-NEXT: rsbs r5, r3 , #0
240
+ ; CHECK-6M-NEXT: ands r5, r3
241
+ ; CHECK-6M-NEXT: muls r5, r6, r5
242
+ ; CHECK-6M-NEXT: lsrs r3, r5 , #27
243
+ ; CHECK-6M-NEXT: ldrb r5 , [r4, r3 ]
244
+ ; CHECK-6M-NEXT: .LBB3_3: @ %cond.false
245
+ ; CHECK-6M-NEXT: adds r5 , #32
246
+ ; CHECK-6M-NEXT: rsbs r3 , r2, #0
247
+ ; CHECK-6M-NEXT: ands r3 , r2
248
+ ; CHECK-6M-NEXT: muls r6, r3, r6
249
+ ; CHECK-6M-NEXT: lsrs r3, r6 , #27
245
250
; CHECK-6M-NEXT: cmp r2, #0
246
- ; CHECK-6M-NEXT: bne .LBB3_5
247
- ; CHECK-6M-NEXT: @ %bb.3:
248
- ; CHECK-6M-NEXT: beq .LBB3_6
249
- ; CHECK-6M-NEXT: .LBB3_4:
250
- ; CHECK-6M-NEXT: movs r1, #0
251
- ; CHECK-6M-NEXT: pop {r4, r5, r7, pc}
252
- ; CHECK-6M-NEXT: .LBB3_5:
253
- ; CHECK-6M-NEXT: ldrb r0, [r3, r1]
254
- ; CHECK-6M-NEXT: bne .LBB3_4
251
+ ; CHECK-6M-NEXT: bne .LBB3_7
252
+ ; CHECK-6M-NEXT: @ %bb.4: @ %cond.false
253
+ ; CHECK-6M-NEXT: beq .LBB3_8
254
+ ; CHECK-6M-NEXT: .LBB3_5: @ %cond.end
255
+ ; CHECK-6M-NEXT: pop {r4, r5, r6, pc}
255
256
; CHECK-6M-NEXT: .LBB3_6:
256
- ; CHECK-6M-NEXT: mov r0, r4
257
- ; CHECK-6M-NEXT: movs r1, #0
258
- ; CHECK-6M-NEXT: pop {r4, r5, r7, pc}
257
+ ; CHECK-6M-NEXT: movs r0, #64
258
+ ; CHECK-6M-NEXT: pop {r4, r5, r6, pc}
259
+ ; CHECK-6M-NEXT: .LBB3_7: @ %cond.false
260
+ ; CHECK-6M-NEXT: ldrb r0, [r4, r3]
261
+ ; CHECK-6M-NEXT: bne .LBB3_5
262
+ ; CHECK-6M-NEXT: .LBB3_8: @ %cond.false
263
+ ; CHECK-6M-NEXT: mov r0, r5
264
+ ; CHECK-6M-NEXT: pop {r4, r5, r6, pc}
259
265
; CHECK-6M-NEXT: .p2align 2
260
- ; CHECK-6M-NEXT: @ %bb.7 :
266
+ ; CHECK-6M-NEXT: @ %bb.9 :
261
267
; CHECK-6M-NEXT: .LCPI3_0:
262
268
; CHECK-6M-NEXT: .long 125613361 @ 0x77cb531
263
269
; CHECK-6M-NEXT: .LCPI3_1:
264
270
; CHECK-6M-NEXT: .ascii "\000\001\034\002\035\016\030\003\036\026\024\017\031\021\004\b\037\033\r\027\025\023\020\007\032\f\022\006\013\005\n\t"
265
271
;
266
272
; CHECK-8MBASE-LABEL: test_i64:
267
273
; CHECK-8MBASE: @ %bb.0:
268
- ; CHECK-8MBASE-NEXT: .save {r4, r5, r7, lr}
269
- ; CHECK-8MBASE-NEXT: push {r4, r5, r7, lr}
274
+ ; CHECK-8MBASE-NEXT: .save {r4, r5, r6, lr}
275
+ ; CHECK-8MBASE-NEXT: push {r4, r5, r6, lr}
276
+ ; CHECK-8MBASE-NEXT: mov r3, r1
270
277
; CHECK-8MBASE-NEXT: mov r2, r0
271
- ; CHECK-8MBASE-NEXT: movw r5, #46385
272
- ; CHECK-8MBASE-NEXT: movt r5, #1916
273
- ; CHECK-8MBASE-NEXT: adr r3, .LCPI3_0
278
+ ; CHECK-8MBASE-NEXT: movs r1, #0
279
+ ; CHECK-8MBASE-NEXT: orrs r0, r3
280
+ ; CHECK-8MBASE-NEXT: beq .LBB3_6
281
+ ; CHECK-8MBASE-NEXT: @ %bb.1: @ %cond.false
282
+ ; CHECK-8MBASE-NEXT: movw r6, #46385
283
+ ; CHECK-8MBASE-NEXT: movt r6, #1916
284
+ ; CHECK-8MBASE-NEXT: adr r4, .LCPI3_0
274
285
; CHECK-8MBASE-NEXT: movs r0, #32
275
- ; CHECK-8MBASE-NEXT: mov r4 , r0
276
- ; CHECK-8MBASE-NEXT: cbz r1 , .LBB3_2
277
- ; CHECK-8MBASE-NEXT: @ %bb.1:
278
- ; CHECK-8MBASE-NEXT: rsbs r4, r1 , #0
279
- ; CHECK-8MBASE-NEXT: ands r4, r1
280
- ; CHECK-8MBASE-NEXT: muls r4, r5, r4
281
- ; CHECK-8MBASE-NEXT: lsrs r1, r4 , #27
282
- ; CHECK-8MBASE-NEXT: ldrb r4 , [r3, r1 ]
283
- ; CHECK-8MBASE-NEXT: .LBB3_2:
284
- ; CHECK-8MBASE-NEXT: adds r4 , #32
285
- ; CHECK-8MBASE-NEXT: rsbs r1 , r2, #0
286
- ; CHECK-8MBASE-NEXT: ands r1 , r2
287
- ; CHECK-8MBASE-NEXT: muls r5, r1, r5
288
- ; CHECK-8MBASE-NEXT: lsrs r1, r5 , #27
286
+ ; CHECK-8MBASE-NEXT: mov r5 , r0
287
+ ; CHECK-8MBASE-NEXT: cbz r3 , .LBB3_3
288
+ ; CHECK-8MBASE-NEXT: @ %bb.2: @ %cond.false
289
+ ; CHECK-8MBASE-NEXT: rsbs r5, r3 , #0
290
+ ; CHECK-8MBASE-NEXT: ands r5, r3
291
+ ; CHECK-8MBASE-NEXT: muls r5, r6, r5
292
+ ; CHECK-8MBASE-NEXT: lsrs r3, r5 , #27
293
+ ; CHECK-8MBASE-NEXT: ldrb r5 , [r4, r3 ]
294
+ ; CHECK-8MBASE-NEXT: .LBB3_3: @ %cond.false
295
+ ; CHECK-8MBASE-NEXT: adds r5 , #32
296
+ ; CHECK-8MBASE-NEXT: rsbs r3 , r2, #0
297
+ ; CHECK-8MBASE-NEXT: ands r3 , r2
298
+ ; CHECK-8MBASE-NEXT: muls r6, r3, r6
299
+ ; CHECK-8MBASE-NEXT: lsrs r3, r6 , #27
289
300
; CHECK-8MBASE-NEXT: cmp r2, #0
290
- ; CHECK-8MBASE-NEXT: bne .LBB3_5
291
- ; CHECK-8MBASE-NEXT: @ %bb.3:
292
- ; CHECK-8MBASE-NEXT: beq .LBB3_6
293
- ; CHECK-8MBASE-NEXT: .LBB3_4:
294
- ; CHECK-8MBASE-NEXT: movs r1, #0
295
- ; CHECK-8MBASE-NEXT: pop {r4, r5, r7, pc}
296
- ; CHECK-8MBASE-NEXT: .LBB3_5:
297
- ; CHECK-8MBASE-NEXT: ldrb r0, [r3, r1]
298
- ; CHECK-8MBASE-NEXT: bne .LBB3_4
301
+ ; CHECK-8MBASE-NEXT: bne .LBB3_7
302
+ ; CHECK-8MBASE-NEXT: @ %bb.4: @ %cond.false
303
+ ; CHECK-8MBASE-NEXT: beq .LBB3_8
304
+ ; CHECK-8MBASE-NEXT: .LBB3_5: @ %cond.end
305
+ ; CHECK-8MBASE-NEXT: pop {r4, r5, r6, pc}
299
306
; CHECK-8MBASE-NEXT: .LBB3_6:
300
- ; CHECK-8MBASE-NEXT: mov r0, r4
301
- ; CHECK-8MBASE-NEXT: movs r1, #0
302
- ; CHECK-8MBASE-NEXT: pop {r4, r5, r7, pc}
307
+ ; CHECK-8MBASE-NEXT: movs r0, #64
308
+ ; CHECK-8MBASE-NEXT: pop {r4, r5, r6, pc}
309
+ ; CHECK-8MBASE-NEXT: .LBB3_7: @ %cond.false
310
+ ; CHECK-8MBASE-NEXT: ldrb r0, [r4, r3]
311
+ ; CHECK-8MBASE-NEXT: bne .LBB3_5
312
+ ; CHECK-8MBASE-NEXT: .LBB3_8: @ %cond.false
313
+ ; CHECK-8MBASE-NEXT: mov r0, r5
314
+ ; CHECK-8MBASE-NEXT: pop {r4, r5, r6, pc}
303
315
; CHECK-8MBASE-NEXT: .p2align 2
304
- ; CHECK-8MBASE-NEXT: @ %bb.7 :
316
+ ; CHECK-8MBASE-NEXT: @ %bb.9 :
305
317
; CHECK-8MBASE-NEXT: .LCPI3_0:
306
318
; CHECK-8MBASE-NEXT: .ascii "\000\001\034\002\035\016\030\003\036\026\024\017\031\021\004\b\037\033\r\027\025\023\020\007\032\f\022\006\013\005\n\t"
307
319
%tmp = call i64 @llvm.cttz.i64 (i64 %a , i1 false )
0 commit comments