@@ -167,8 +167,7 @@ define i1 @test_disjoint(i1 %0, i32 %1, i32 %2) {
167167; CHECK-NEXT: mov w8, #1 // =0x1
168168; CHECK-NEXT: orr w9, w2, #0x800000
169169; CHECK-NEXT: lsl w8, w8, w1
170- ; CHECK-NEXT: and w8, w9, w8
171- ; CHECK-NEXT: cmp w8, #0
170+ ; CHECK-NEXT: tst w9, w8
172171; CHECK-NEXT: cset w8, eq
173172; CHECK-NEXT: orr w8, w0, w8
174173; CHECK-NEXT: and w0, w8, #0x1
@@ -188,8 +187,7 @@ define i1 @test_disjoint2(i1 %0, i32 %1, i32 %2) {
188187; CHECK-NEXT: mov w8, #1 // =0x1
189188; CHECK-NEXT: orr w9, w2, #0x800000
190189; CHECK-NEXT: lsl w8, w8, w1
191- ; CHECK-NEXT: and w8, w9, w8
192- ; CHECK-NEXT: cmp w8, #0
190+ ; CHECK-NEXT: tst w9, w8
193191; CHECK-NEXT: cset w8, gt
194192; CHECK-NEXT: orr w8, w0, w8
195193; CHECK-NEXT: and w0, w8, #0x1
@@ -209,8 +207,7 @@ define i1 @test_disjoint3(i1 %0, i32 %1, i32 %2) {
209207; CHECK-NEXT: mov w8, #1 // =0x1
210208; CHECK-NEXT: orr w9, w2, #0x800000
211209; CHECK-NEXT: lsl w8, w8, w1
212- ; CHECK-NEXT: and w8, w9, w8
213- ; CHECK-NEXT: cmp w8, #0
210+ ; CHECK-NEXT: tst w9, w8
214211; CHECK-NEXT: cset w8, mi
215212; CHECK-NEXT: orr w8, w0, w8
216213; CHECK-NEXT: and w0, w8, #0x1
@@ -273,8 +270,7 @@ define i1 @test_disjoint_inverse(i1 %0, i32 %1, i32 %2) {
273270; CHECK-NEXT: mov w8, #1 // =0x1
274271; CHECK-NEXT: orr w9, w2, #0x800000
275272; CHECK-NEXT: lsl w8, w8, w1
276- ; CHECK-NEXT: bic w8, w9, w8
277- ; CHECK-NEXT: cmp w8, #0
273+ ; CHECK-NEXT: bics wzr, w9, w8
278274; CHECK-NEXT: cset w8, eq
279275; CHECK-NEXT: orr w8, w0, w8
280276; CHECK-NEXT: and w0, w8, #0x1
@@ -295,8 +291,7 @@ define i1 @test_disjoint2_inverse(i1 %0, i32 %1, i32 %2) {
295291; CHECK-NEXT: mov w8, #1 // =0x1
296292; CHECK-NEXT: orr w9, w2, #0x800000
297293; CHECK-NEXT: lsl w8, w8, w1
298- ; CHECK-NEXT: bic w8, w9, w8
299- ; CHECK-NEXT: cmp w8, #0
294+ ; CHECK-NEXT: bics wzr, w9, w8
300295; CHECK-NEXT: cset w8, gt
301296; CHECK-NEXT: orr w8, w0, w8
302297; CHECK-NEXT: and w0, w8, #0x1
@@ -317,8 +312,7 @@ define i1 @test_disjoint3_inverse(i1 %0, i32 %1, i32 %2) {
317312; CHECK-NEXT: mov w8, #1 // =0x1
318313; CHECK-NEXT: orr w9, w2, #0x800000
319314; CHECK-NEXT: lsl w8, w8, w1
320- ; CHECK-NEXT: bic w8, w9, w8
321- ; CHECK-NEXT: cmp w8, #0
315+ ; CHECK-NEXT: bics wzr, w9, w8
322316; CHECK-NEXT: cset w8, mi
323317; CHECK-NEXT: orr w8, w0, w8
324318; CHECK-NEXT: and w0, w8, #0x1
@@ -339,8 +333,7 @@ define i1 @test_disjoint_64(i1 %0, i64 %1, i64 %2) {
339333; CHECK-NEXT: mov w8, #1 // =0x1
340334; CHECK-NEXT: orr x9, x2, #0x80000000000000
341335; CHECK-NEXT: lsl x8, x8, x1
342- ; CHECK-NEXT: and x8, x9, x8
343- ; CHECK-NEXT: cmp x8, #0
336+ ; CHECK-NEXT: tst x9, x8
344337; CHECK-NEXT: cset w8, eq
345338; CHECK-NEXT: orr w8, w0, w8
346339; CHECK-NEXT: and w0, w8, #0x1
@@ -360,8 +353,7 @@ define i1 @test_disjoint2_64(i1 %0, i64 %1, i64 %2) {
360353; CHECK-NEXT: mov w8, #1 // =0x1
361354; CHECK-NEXT: orr x9, x2, #0x80000000000000
362355; CHECK-NEXT: lsl x8, x8, x1
363- ; CHECK-NEXT: and x8, x9, x8
364- ; CHECK-NEXT: cmp x8, #0
356+ ; CHECK-NEXT: tst x9, x8
365357; CHECK-NEXT: cset w8, gt
366358; CHECK-NEXT: orr w8, w0, w8
367359; CHECK-NEXT: and w0, w8, #0x1
@@ -381,8 +373,7 @@ define i1 @test_disjoint3_64(i1 %0, i64 %1, i64 %2) {
381373; CHECK-NEXT: mov w8, #1 // =0x1
382374; CHECK-NEXT: orr x9, x2, #0x80000000000000
383375; CHECK-NEXT: lsl x8, x8, x1
384- ; CHECK-NEXT: and x8, x9, x8
385- ; CHECK-NEXT: cmp x8, #0
376+ ; CHECK-NEXT: tst x9, x8
386377; CHECK-NEXT: cset w8, mi
387378; CHECK-NEXT: orr w8, w0, w8
388379; CHECK-NEXT: and w0, w8, #0x1
@@ -445,8 +436,7 @@ define i1 @test_disjoint_inverse_64(i1 %0, i64 %1, i64 %2) {
445436; CHECK-NEXT: mov w8, #1 // =0x1
446437; CHECK-NEXT: orr x9, x2, #0x80000000000000
447438; CHECK-NEXT: lsl x8, x8, x1
448- ; CHECK-NEXT: bic x8, x9, x8
449- ; CHECK-NEXT: cmp x8, #0
439+ ; CHECK-NEXT: bics xzr, x9, x8
450440; CHECK-NEXT: cset w8, eq
451441; CHECK-NEXT: orr w8, w0, w8
452442; CHECK-NEXT: and w0, w8, #0x1
@@ -467,8 +457,7 @@ define i1 @test_disjoint2_inverse_64(i1 %0, i64 %1, i64 %2) {
467457; CHECK-NEXT: mov w8, #1 // =0x1
468458; CHECK-NEXT: orr x9, x2, #0x80000000000000
469459; CHECK-NEXT: lsl x8, x8, x1
470- ; CHECK-NEXT: bic x8, x9, x8
471- ; CHECK-NEXT: cmp x8, #0
460+ ; CHECK-NEXT: bics xzr, x9, x8
472461; CHECK-NEXT: cset w8, gt
473462; CHECK-NEXT: orr w8, w0, w8
474463; CHECK-NEXT: and w0, w8, #0x1
@@ -489,8 +478,7 @@ define i1 @test_disjoint3_inverse_64(i1 %0, i64 %1, i64 %2) {
489478; CHECK-NEXT: mov w8, #1 // =0x1
490479; CHECK-NEXT: orr x9, x2, #0x80000000000000
491480; CHECK-NEXT: lsl x8, x8, x1
492- ; CHECK-NEXT: bic x8, x9, x8
493- ; CHECK-NEXT: cmp x8, #0
481+ ; CHECK-NEXT: bics xzr, x9, x8
494482; CHECK-NEXT: cset w8, mi
495483; CHECK-NEXT: orr w8, w0, w8
496484; CHECK-NEXT: and w0, w8, #0x1
0 commit comments