From: Simon Pilgrim Date: Fri, 15 Jul 2022 10:28:33 +0000 (+0100) Subject: [ARM] Regenerate hoist-and-by-const-from-shl-in-eqcmp-zero.ll X-Git-Tag: upstream/15.0.7~1586 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0a9752d937e1b35729b5d21808389dab615f4dd3;p=platform%2Fupstream%2Fllvm.git [ARM] Regenerate hoist-and-by-const-from-shl-in-eqcmp-zero.ll cleanup some common prefixes --- diff --git a/llvm/test/CodeGen/ARM/hoist-and-by-const-from-shl-in-eqcmp-zero.ll b/llvm/test/CodeGen/ARM/hoist-and-by-const-from-shl-in-eqcmp-zero.ll index a644465..a8421ae 100644 --- a/llvm/test/CodeGen/ARM/hoist-and-by-const-from-shl-in-eqcmp-zero.ll +++ b/llvm/test/CodeGen/ARM/hoist-and-by-const-from-shl-in-eqcmp-zero.ll @@ -2,9 +2,9 @@ ; RUN: llc -mtriple=armv6 < %s | FileCheck %s --check-prefixes=ARM,ARM6 ; RUN: llc -mtriple=armv7 < %s | FileCheck %s --check-prefixes=ARM,ARM78 ; RUN: llc -mtriple=armv8a < %s | FileCheck %s --check-prefixes=ARM,ARM78 -; RUN: llc -mtriple=thumbv6 < %s | FileCheck %s --check-prefixes=THUMB6 -; RUN: llc -mtriple=thumbv7 < %s | FileCheck %s --check-prefixes=THUMB78,THUMB7 -; RUN: llc -mtriple=thumbv8-eabi < %s | FileCheck %s --check-prefixes=THUMB78,THUMB8 +; RUN: llc -mtriple=thumbv6 < %s | FileCheck %s --check-prefixes=THUMB,THUMB6 +; RUN: llc -mtriple=thumbv7 < %s | FileCheck %s --check-prefixes=THUMB,THUMB78 +; RUN: llc -mtriple=thumbv8-eabi < %s | FileCheck %s --check-prefixes=THUMB,THUMB78 ; We are looking for the following pattern here: ; (X & (C << Y)) ==/!= 0 @@ -38,23 +38,14 @@ define i1 @scalar_i8_signbit_eq(i8 %x, i8 %y) nounwind { ; THUMB6-NEXT: adcs r0, r1 ; THUMB6-NEXT: bx lr ; -; THUMB7-LABEL: scalar_i8_signbit_eq: -; THUMB7: @ %bb.0: -; THUMB7-NEXT: uxtb r1, r1 -; THUMB7-NEXT: uxtb r0, r0 -; THUMB7-NEXT: lsrs r0, r1 -; THUMB7-NEXT: movs r1, #1 -; THUMB7-NEXT: eor.w r0, r1, r0, lsr #7 -; THUMB7-NEXT: bx lr -; -; THUMB8-LABEL: scalar_i8_signbit_eq: -; THUMB8: @ %bb.0: -; THUMB8-NEXT: uxtb r1, r1 -; THUMB8-NEXT: uxtb r0, r0 -; THUMB8-NEXT: lsrs r0, r1 -; THUMB8-NEXT: movs r1, #1 -; THUMB8-NEXT: eor.w r0, r1, r0, lsr #7 -; THUMB8-NEXT: bx lr +; THUMB78-LABEL: scalar_i8_signbit_eq: +; THUMB78: @ %bb.0: +; THUMB78-NEXT: uxtb r1, r1 +; THUMB78-NEXT: uxtb r0, r0 +; THUMB78-NEXT: lsrs r0, r1 +; THUMB78-NEXT: movs r1, #1 +; THUMB78-NEXT: eor.w r0, r1, r0, lsr #7 +; THUMB78-NEXT: bx lr %t0 = shl i8 128, %y %t1 = and i8 %t0, %x %res = icmp eq i8 %t1, 0 @@ -81,23 +72,14 @@ define i1 @scalar_i8_lowestbit_eq(i8 %x, i8 %y) nounwind { ; THUMB6-NEXT: adcs r0, r1 ; THUMB6-NEXT: bx lr ; -; THUMB7-LABEL: scalar_i8_lowestbit_eq: -; THUMB7: @ %bb.0: -; THUMB7-NEXT: uxtb r1, r1 -; THUMB7-NEXT: uxtb r0, r0 -; THUMB7-NEXT: lsrs r0, r1 -; THUMB7-NEXT: movs r1, #1 -; THUMB7-NEXT: bic.w r0, r1, r0 -; THUMB7-NEXT: bx lr -; -; THUMB8-LABEL: scalar_i8_lowestbit_eq: -; THUMB8: @ %bb.0: -; THUMB8-NEXT: uxtb r1, r1 -; THUMB8-NEXT: uxtb r0, r0 -; THUMB8-NEXT: lsrs r0, r1 -; THUMB8-NEXT: movs r1, #1 -; THUMB8-NEXT: bic.w r0, r1, r0 -; THUMB8-NEXT: bx lr +; THUMB78-LABEL: scalar_i8_lowestbit_eq: +; THUMB78: @ %bb.0: +; THUMB78-NEXT: uxtb r1, r1 +; THUMB78-NEXT: uxtb r0, r0 +; THUMB78-NEXT: lsrs r0, r1 +; THUMB78-NEXT: movs r1, #1 +; THUMB78-NEXT: bic.w r0, r1, r0 +; THUMB78-NEXT: bx lr %t0 = shl i8 1, %y %t1 = and i8 %t0, %x %res = icmp eq i8 %t1, 0 @@ -126,25 +108,15 @@ define i1 @scalar_i8_bitsinmiddle_eq(i8 %x, i8 %y) nounwind { ; THUMB6-NEXT: adcs r0, r1 ; THUMB6-NEXT: bx lr ; -; THUMB7-LABEL: scalar_i8_bitsinmiddle_eq: -; THUMB7: @ %bb.0: -; THUMB7-NEXT: uxtb r1, r1 -; THUMB7-NEXT: uxtb r0, r0 -; THUMB7-NEXT: lsrs r0, r1 -; THUMB7-NEXT: and r0, r0, #24 -; THUMB7-NEXT: clz r0, r0 -; THUMB7-NEXT: lsrs r0, r0, #5 -; THUMB7-NEXT: bx lr -; -; THUMB8-LABEL: scalar_i8_bitsinmiddle_eq: -; THUMB8: @ %bb.0: -; THUMB8-NEXT: uxtb r1, r1 -; THUMB8-NEXT: uxtb r0, r0 -; THUMB8-NEXT: lsrs r0, r1 -; THUMB8-NEXT: and r0, r0, #24 -; THUMB8-NEXT: clz r0, r0 -; THUMB8-NEXT: lsrs r0, r0, #5 -; THUMB8-NEXT: bx lr +; THUMB78-LABEL: scalar_i8_bitsinmiddle_eq: +; THUMB78: @ %bb.0: +; THUMB78-NEXT: uxtb r1, r1 +; THUMB78-NEXT: uxtb r0, r0 +; THUMB78-NEXT: lsrs r0, r1 +; THUMB78-NEXT: and r0, r0, #24 +; THUMB78-NEXT: clz r0, r0 +; THUMB78-NEXT: lsrs r0, r0, #5 +; THUMB78-NEXT: bx lr %t0 = shl i8 24, %y %t1 = and i8 %t0, %x %res = icmp eq i8 %t1, 0 @@ -175,23 +147,14 @@ define i1 @scalar_i16_signbit_eq(i16 %x, i16 %y) nounwind { ; THUMB6-NEXT: adcs r0, r1 ; THUMB6-NEXT: bx lr ; -; THUMB7-LABEL: scalar_i16_signbit_eq: -; THUMB7: @ %bb.0: -; THUMB7-NEXT: uxth r1, r1 -; THUMB7-NEXT: uxth r0, r0 -; THUMB7-NEXT: lsrs r0, r1 -; THUMB7-NEXT: movs r1, #1 -; THUMB7-NEXT: eor.w r0, r1, r0, lsr #15 -; THUMB7-NEXT: bx lr -; -; THUMB8-LABEL: scalar_i16_signbit_eq: -; THUMB8: @ %bb.0: -; THUMB8-NEXT: uxth r1, r1 -; THUMB8-NEXT: uxth r0, r0 -; THUMB8-NEXT: lsrs r0, r1 -; THUMB8-NEXT: movs r1, #1 -; THUMB8-NEXT: eor.w r0, r1, r0, lsr #15 -; THUMB8-NEXT: bx lr +; THUMB78-LABEL: scalar_i16_signbit_eq: +; THUMB78: @ %bb.0: +; THUMB78-NEXT: uxth r1, r1 +; THUMB78-NEXT: uxth r0, r0 +; THUMB78-NEXT: lsrs r0, r1 +; THUMB78-NEXT: movs r1, #1 +; THUMB78-NEXT: eor.w r0, r1, r0, lsr #15 +; THUMB78-NEXT: bx lr %t0 = shl i16 32768, %y %t1 = and i16 %t0, %x %res = icmp eq i16 %t1, 0 @@ -218,23 +181,14 @@ define i1 @scalar_i16_lowestbit_eq(i16 %x, i16 %y) nounwind { ; THUMB6-NEXT: adcs r0, r1 ; THUMB6-NEXT: bx lr ; -; THUMB7-LABEL: scalar_i16_lowestbit_eq: -; THUMB7: @ %bb.0: -; THUMB7-NEXT: uxth r1, r1 -; THUMB7-NEXT: uxth r0, r0 -; THUMB7-NEXT: lsrs r0, r1 -; THUMB7-NEXT: movs r1, #1 -; THUMB7-NEXT: bic.w r0, r1, r0 -; THUMB7-NEXT: bx lr -; -; THUMB8-LABEL: scalar_i16_lowestbit_eq: -; THUMB8: @ %bb.0: -; THUMB8-NEXT: uxth r1, r1 -; THUMB8-NEXT: uxth r0, r0 -; THUMB8-NEXT: lsrs r0, r1 -; THUMB8-NEXT: movs r1, #1 -; THUMB8-NEXT: bic.w r0, r1, r0 -; THUMB8-NEXT: bx lr +; THUMB78-LABEL: scalar_i16_lowestbit_eq: +; THUMB78: @ %bb.0: +; THUMB78-NEXT: uxth r1, r1 +; THUMB78-NEXT: uxth r0, r0 +; THUMB78-NEXT: lsrs r0, r1 +; THUMB78-NEXT: movs r1, #1 +; THUMB78-NEXT: bic.w r0, r1, r0 +; THUMB78-NEXT: bx lr %t0 = shl i16 1, %y %t1 = and i16 %t0, %x %res = icmp eq i16 %t1, 0 @@ -264,25 +218,15 @@ define i1 @scalar_i16_bitsinmiddle_eq(i16 %x, i16 %y) nounwind { ; THUMB6-NEXT: adcs r0, r1 ; THUMB6-NEXT: bx lr ; -; THUMB7-LABEL: scalar_i16_bitsinmiddle_eq: -; THUMB7: @ %bb.0: -; THUMB7-NEXT: uxth r1, r1 -; THUMB7-NEXT: uxth r0, r0 -; THUMB7-NEXT: lsrs r0, r1 -; THUMB7-NEXT: and r0, r0, #4080 -; THUMB7-NEXT: clz r0, r0 -; THUMB7-NEXT: lsrs r0, r0, #5 -; THUMB7-NEXT: bx lr -; -; THUMB8-LABEL: scalar_i16_bitsinmiddle_eq: -; THUMB8: @ %bb.0: -; THUMB8-NEXT: uxth r1, r1 -; THUMB8-NEXT: uxth r0, r0 -; THUMB8-NEXT: lsrs r0, r1 -; THUMB8-NEXT: and r0, r0, #4080 -; THUMB8-NEXT: clz r0, r0 -; THUMB8-NEXT: lsrs r0, r0, #5 -; THUMB8-NEXT: bx lr +; THUMB78-LABEL: scalar_i16_bitsinmiddle_eq: +; THUMB78: @ %bb.0: +; THUMB78-NEXT: uxth r1, r1 +; THUMB78-NEXT: uxth r0, r0 +; THUMB78-NEXT: lsrs r0, r1 +; THUMB78-NEXT: and r0, r0, #4080 +; THUMB78-NEXT: clz r0, r0 +; THUMB78-NEXT: lsrs r0, r0, #5 +; THUMB78-NEXT: bx lr %t0 = shl i16 4080, %y %t1 = and i16 %t0, %x %res = icmp eq i16 %t1, 0 @@ -464,31 +408,18 @@ define i1 @scalar_i64_lowestbit_eq(i64 %x, i64 %y) nounwind { ; THUMB6-NEXT: adcs r0, r1 ; THUMB6-NEXT: pop {r7, pc} ; -; THUMB7-LABEL: scalar_i64_lowestbit_eq: -; THUMB7: @ %bb.0: -; THUMB7-NEXT: rsb.w r3, r2, #32 -; THUMB7-NEXT: lsrs r0, r2 -; THUMB7-NEXT: subs r2, #32 -; THUMB7-NEXT: lsl.w r3, r1, r3 -; THUMB7-NEXT: orr.w r0, r0, r3 -; THUMB7-NEXT: it pl -; THUMB7-NEXT: lsrpl.w r0, r1, r2 -; THUMB7-NEXT: movs r1, #1 -; THUMB7-NEXT: bic.w r0, r1, r0 -; THUMB7-NEXT: bx lr -; -; THUMB8-LABEL: scalar_i64_lowestbit_eq: -; THUMB8: @ %bb.0: -; THUMB8-NEXT: rsb.w r3, r2, #32 -; THUMB8-NEXT: lsrs r0, r2 -; THUMB8-NEXT: subs r2, #32 -; THUMB8-NEXT: lsl.w r3, r1, r3 -; THUMB8-NEXT: orr.w r0, r0, r3 -; THUMB8-NEXT: it pl -; THUMB8-NEXT: lsrpl.w r0, r1, r2 -; THUMB8-NEXT: movs r1, #1 -; THUMB8-NEXT: bic.w r0, r1, r0 -; THUMB8-NEXT: bx lr +; THUMB78-LABEL: scalar_i64_lowestbit_eq: +; THUMB78: @ %bb.0: +; THUMB78-NEXT: rsb.w r3, r2, #32 +; THUMB78-NEXT: lsrs r0, r2 +; THUMB78-NEXT: subs r2, #32 +; THUMB78-NEXT: lsl.w r3, r1, r3 +; THUMB78-NEXT: orr.w r0, r0, r3 +; THUMB78-NEXT: it pl +; THUMB78-NEXT: lsrpl.w r0, r1, r2 +; THUMB78-NEXT: movs r1, #1 +; THUMB78-NEXT: bic.w r0, r1, r0 +; THUMB78-NEXT: bx lr %t0 = shl i64 1, %y %t1 = and i64 %t0, %x %res = icmp eq i64 %t1, 0 @@ -540,39 +471,22 @@ define i1 @scalar_i64_bitsinmiddle_eq(i64 %x, i64 %y) nounwind { ; THUMB6-NEXT: .LCPI11_0: ; THUMB6-NEXT: .long 4294901760 @ 0xffff0000 ; -; THUMB7-LABEL: scalar_i64_bitsinmiddle_eq: -; THUMB7: @ %bb.0: -; THUMB7-NEXT: rsb.w r3, r2, #32 -; THUMB7-NEXT: lsrs r0, r2 -; THUMB7-NEXT: lsl.w r3, r1, r3 -; THUMB7-NEXT: orrs r0, r3 -; THUMB7-NEXT: subs.w r3, r2, #32 -; THUMB7-NEXT: it pl -; THUMB7-NEXT: lsrpl.w r0, r1, r3 -; THUMB7-NEXT: lsr.w r1, r1, r2 -; THUMB7-NEXT: it pl -; THUMB7-NEXT: movpl r1, #0 -; THUMB7-NEXT: pkhbt r0, r1, r0 -; THUMB7-NEXT: clz r0, r0 -; THUMB7-NEXT: lsrs r0, r0, #5 -; THUMB7-NEXT: bx lr -; -; THUMB8-LABEL: scalar_i64_bitsinmiddle_eq: -; THUMB8: @ %bb.0: -; THUMB8-NEXT: rsb.w r3, r2, #32 -; THUMB8-NEXT: lsrs r0, r2 -; THUMB8-NEXT: lsl.w r3, r1, r3 -; THUMB8-NEXT: orrs r0, r3 -; THUMB8-NEXT: subs.w r3, r2, #32 -; THUMB8-NEXT: it pl -; THUMB8-NEXT: lsrpl.w r0, r1, r3 -; THUMB8-NEXT: lsr.w r1, r1, r2 -; THUMB8-NEXT: it pl -; THUMB8-NEXT: movpl r1, #0 -; THUMB8-NEXT: pkhbt r0, r1, r0 -; THUMB8-NEXT: clz r0, r0 -; THUMB8-NEXT: lsrs r0, r0, #5 -; THUMB8-NEXT: bx lr +; THUMB78-LABEL: scalar_i64_bitsinmiddle_eq: +; THUMB78: @ %bb.0: +; THUMB78-NEXT: rsb.w r3, r2, #32 +; THUMB78-NEXT: lsrs r0, r2 +; THUMB78-NEXT: lsl.w r3, r1, r3 +; THUMB78-NEXT: orrs r0, r3 +; THUMB78-NEXT: subs.w r3, r2, #32 +; THUMB78-NEXT: it pl +; THUMB78-NEXT: lsrpl.w r0, r1, r3 +; THUMB78-NEXT: lsr.w r1, r1, r2 +; THUMB78-NEXT: it pl +; THUMB78-NEXT: movpl r1, #0 +; THUMB78-NEXT: pkhbt r0, r1, r0 +; THUMB78-NEXT: clz r0, r0 +; THUMB78-NEXT: lsrs r0, r0, #5 +; THUMB78-NEXT: bx lr %t0 = shl i64 281474976645120, %y %t1 = and i64 %t0, %x %res = icmp eq i64 %t1, 0 @@ -968,29 +882,13 @@ define i1 @scalar_i8_signbit_ne(i8 %x, i8 %y) nounwind { ; ARM-NEXT: lsr r0, r0, #7 ; ARM-NEXT: bx lr ; -; THUMB6-LABEL: scalar_i8_signbit_ne: -; THUMB6: @ %bb.0: -; THUMB6-NEXT: uxtb r1, r1 -; THUMB6-NEXT: uxtb r0, r0 -; THUMB6-NEXT: lsrs r0, r1 -; THUMB6-NEXT: lsrs r0, r0, #7 -; THUMB6-NEXT: bx lr -; -; THUMB7-LABEL: scalar_i8_signbit_ne: -; THUMB7: @ %bb.0: -; THUMB7-NEXT: uxtb r1, r1 -; THUMB7-NEXT: uxtb r0, r0 -; THUMB7-NEXT: lsrs r0, r1 -; THUMB7-NEXT: lsrs r0, r0, #7 -; THUMB7-NEXT: bx lr -; -; THUMB8-LABEL: scalar_i8_signbit_ne: -; THUMB8: @ %bb.0: -; THUMB8-NEXT: uxtb r1, r1 -; THUMB8-NEXT: uxtb r0, r0 -; THUMB8-NEXT: lsrs r0, r1 -; THUMB8-NEXT: lsrs r0, r0, #7 -; THUMB8-NEXT: bx lr +; THUMB-LABEL: scalar_i8_signbit_ne: +; THUMB: @ %bb.0: +; THUMB-NEXT: uxtb r1, r1 +; THUMB-NEXT: uxtb r0, r0 +; THUMB-NEXT: lsrs r0, r1 +; THUMB-NEXT: lsrs r0, r0, #7 +; THUMB-NEXT: bx lr %t0 = shl i8 128, %y %t1 = and i8 %t0, %x %res = icmp ne i8 %t1, 0 ; we are perfectly happy with 'ne' predicate