[ARM] Regenerate hoist-and-by-const-from-shl-in-eqcmp-zero.ll
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Fri, 15 Jul 2022 10:28:33 +0000 (11:28 +0100)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Fri, 15 Jul 2022 10:28:41 +0000 (11:28 +0100)
cleanup some common prefixes

llvm/test/CodeGen/ARM/hoist-and-by-const-from-shl-in-eqcmp-zero.ll

index a644465..a8421ae 100644 (file)
@@ -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