122 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -debugify-and-strip-all-safe -mtriple arm64-apple-ios -O0 -run-pass=aarch64-prelegalizer-combiner --aarch64prelegalizercombiner-only-enable-rule="overlapping_and" -global-isel -verify-machineinstrs %s -o - | FileCheck %s3# REQUIRES: asserts4---5name: bitmask_overlap16body: |7 bb.1:8 ; CHECK-LABEL: name: bitmask_overlap19 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w010 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12811 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]12 ; CHECK-NEXT: $w0 = COPY [[AND]](s32)13 ; CHECK-NEXT: RET_ReallyLR implicit $w014 %0:_(s32) = COPY $w015 %1:_(s32) = G_CONSTANT i32 -12816 %3:_(s32) = G_CONSTANT i32 25517 %2:_(s32) = G_AND %0, %118 %4:_(s32) = G_AND %2, %319 $w0 = COPY %4(s32)20 RET_ReallyLR implicit $w021 22...23---24name: bitmask_overlap225body: |26 bb.1:27 ; CHECK-LABEL: name: bitmask_overlap228 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w029 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12830 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]31 ; CHECK-NEXT: $w0 = COPY [[AND]](s32)32 ; CHECK-NEXT: RET_ReallyLR implicit $w033 %0:_(s32) = COPY $w034 %1:_(s32) = G_CONSTANT i32 25535 %3:_(s32) = G_CONSTANT i32 -12836 %2:_(s32) = G_AND %1, %037 %4:_(s32) = G_AND %2, %338 $w0 = COPY %4(s32)39 RET_ReallyLR implicit $w040 41...42---43name: bitmask_overlap344body: |45 bb.1:46 ; CHECK-LABEL: name: bitmask_overlap347 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w048 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12849 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]50 ; CHECK-NEXT: $w0 = COPY [[AND]](s32)51 ; CHECK-NEXT: RET_ReallyLR implicit $w052 %0:_(s32) = COPY $w053 %1:_(s32) = G_CONSTANT i32 25554 %3:_(s32) = G_CONSTANT i32 -12855 %2:_(s32) = G_AND %1, %056 %4:_(s32) = G_AND %3, %257 $w0 = COPY %4(s32)58 RET_ReallyLR implicit $w059 60...61---62name: bitmask_overlap463body: |64 bb.1:65 ; CHECK-LABEL: name: bitmask_overlap466 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w067 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 12868 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]69 ; CHECK-NEXT: $w0 = COPY [[AND]](s32)70 ; CHECK-NEXT: RET_ReallyLR implicit $w071 %0:_(s32) = COPY $w072 %1:_(s32) = G_CONSTANT i32 25573 %3:_(s32) = G_CONSTANT i32 -12874 %2:_(s32) = G_AND %0, %175 %4:_(s32) = G_AND %3, %276 $w0 = COPY %4(s32)77 RET_ReallyLR implicit $w078 79...80---81name: bitmask_no_overlap82body: |83 bb.1:84 ; CHECK-LABEL: name: bitmask_no_overlap85 ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 086 ; CHECK-NEXT: $w0 = COPY [[C]](s32)87 ; CHECK-NEXT: RET_ReallyLR implicit $w088 %0:_(s32) = COPY $w089 %1:_(s32) = G_CONSTANT i32 190 %3:_(s32) = G_CONSTANT i32 291 %2:_(s32) = G_AND %0, %192 %4:_(s32) = G_AND %2, %393 $w0 = COPY %4(s32)94 RET_ReallyLR implicit $w095 96...97---98name: bitmask_overlap_extrause99body: |100 bb.1:101 ; CHECK-LABEL: name: bitmask_overlap_extrause102 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w0103 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $x1104 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255105 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]106 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 128107 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]108 ; CHECK-NEXT: G_STORE [[AND]](s32), [[COPY1]](p0) :: (store (s32))109 ; CHECK-NEXT: $w0 = COPY [[AND1]](s32)110 ; CHECK-NEXT: RET_ReallyLR implicit $w0111 %0:_(s32) = COPY $w0112 %1:_(p0) = COPY $x1113 %2:_(s32) = G_CONSTANT i32 255114 %4:_(s32) = G_CONSTANT i32 -128115 %3:_(s32) = G_AND %0, %2116 %5:_(s32) = G_AND %3, %4117 G_STORE %3(s32), %1(p0) :: (store (s32))118 $w0 = COPY %5(s32)119 RET_ReallyLR implicit $w0120 121...122