@@ -17,12 +17,11 @@ declare i64 @llvm.cttz.i64(i64, i1)
1717define i8 @test_i8 (i8 %a ) {
1818; CHECK-5-LABEL: test_i8:
1919; CHECK-5: @ %bb.0:
20- ; CHECK-5-NEXT: tst r0, #255
21- ; CHECK-5-NEXT: moveq r0, #8
22- ; CHECK-5-NEXT: subne r1, r0, #1
23- ; CHECK-5-NEXT: bicne r0, r1, r0
24- ; CHECK-5-NEXT: clzne r0, r0
25- ; CHECK-5-NEXT: rsbne r0, r0, #32
20+ ; CHECK-5-NEXT: orr r0, r0, #256
21+ ; CHECK-5-NEXT: sub r1, r0, #1
22+ ; CHECK-5-NEXT: bic r0, r1, r0
23+ ; CHECK-5-NEXT: clz r0, r0
24+ ; CHECK-5-NEXT: rsb r0, r0, #32
2625; CHECK-5-NEXT: bx lr
2726;
2827; CHECK-LABEL: test_i8:
@@ -94,14 +93,11 @@ define i8 @test_i8(i8 %a) {
9493define i16 @test_i16 (i16 %a ) {
9594; CHECK-5-LABEL: test_i16:
9695; CHECK-5: @ %bb.0:
97- ; CHECK-5-NEXT: mov r1, #255
98- ; CHECK-5-NEXT: orr r1, r1, #65280
99- ; CHECK-5-NEXT: tst r0, r1
100- ; CHECK-5-NEXT: moveq r0, #16
101- ; CHECK-5-NEXT: subne r1, r0, #1
102- ; CHECK-5-NEXT: bicne r0, r1, r0
103- ; CHECK-5-NEXT: clzne r0, r0
104- ; CHECK-5-NEXT: rsbne r0, r0, #32
96+ ; CHECK-5-NEXT: orr r0, r0, #65536
97+ ; CHECK-5-NEXT: sub r1, r0, #1
98+ ; CHECK-5-NEXT: bic r0, r1, r0
99+ ; CHECK-5-NEXT: clz r0, r0
100+ ; CHECK-5-NEXT: rsb r0, r0, #32
105101; CHECK-5-NEXT: bx lr
106102;
107103; CHECK-LABEL: test_i16:
@@ -173,12 +169,10 @@ define i16 @test_i16(i16 %a) {
173169define i32 @test_i32 (i32 %a ) {
174170; CHECK-5-LABEL: test_i32:
175171; CHECK-5: @ %bb.0:
176- ; CHECK-5-NEXT: cmp r0, #0
177- ; CHECK-5-NEXT: moveq r0, #32
178- ; CHECK-5-NEXT: subne r1, r0, #1
179- ; CHECK-5-NEXT: bicne r0, r1, r0
180- ; CHECK-5-NEXT: clzne r0, r0
181- ; CHECK-5-NEXT: rsbne r0, r0, #32
172+ ; CHECK-5-NEXT: sub r1, r0, #1
173+ ; CHECK-5-NEXT: bic r0, r1, r0
174+ ; CHECK-5-NEXT: clz r0, r0
175+ ; CHECK-5-NEXT: rsb r0, r0, #32
182176; CHECK-5-NEXT: bx lr
183177;
184178; CHECK-LABEL: test_i32:
@@ -242,22 +236,17 @@ define i32 @test_i32(i32 %a) {
242236define i64 @test_i64 (i64 %a ) {
243237; CHECK-5-LABEL: test_i64:
244238; CHECK-5: @ %bb.0:
245- ; CHECK-5-NEXT: mov r2, r1
246- ; CHECK-5-NEXT: orrs r1, r0, r1
247- ; CHECK-5-NEXT: mov r1, #0
248- ; CHECK-5-NEXT: moveq r0, #64
249- ; CHECK-5-NEXT: bxeq lr
250- ; CHECK-5-NEXT: .LBB3_1: @ %cond.false
251- ; CHECK-5-NEXT: sub r3, r0, #1
252- ; CHECK-5-NEXT: bic r3, r3, r0
253- ; CHECK-5-NEXT: clz r12, r3
254- ; CHECK-5-NEXT: sub r3, r2, #1
255- ; CHECK-5-NEXT: bic r2, r3, r2
256- ; CHECK-5-NEXT: mov r3, r0
239+ ; CHECK-5-NEXT: sub r3, r1, #1
240+ ; CHECK-5-NEXT: sub r2, r0, #1
241+ ; CHECK-5-NEXT: bic r1, r3, r1
242+ ; CHECK-5-NEXT: bic r2, r2, r0
243+ ; CHECK-5-NEXT: clz r1, r1
257244; CHECK-5-NEXT: clz r2, r2
258- ; CHECK-5-NEXT: cmp r3, #0
259- ; CHECK-5-NEXT: rsb r0, r2, #64
260- ; CHECK-5-NEXT: rsbne r0, r12, #32
245+ ; CHECK-5-NEXT: rsb r1, r1, #64
246+ ; CHECK-5-NEXT: cmp r0, #0
247+ ; CHECK-5-NEXT: rsbne r1, r2, #32
248+ ; CHECK-5-NEXT: mov r0, r1
249+ ; CHECK-5-NEXT: mov r1, #0
261250; CHECK-5-NEXT: bx lr
262251;
263252; CHECK-LABEL: test_i64:
0 commit comments