brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.4 KiB · ba0d814 Raw
201 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple aarch64 -run-pass=aarch64-postlegalizer-combiner -verify-machineinstrs %s -o - | FileCheck %s3 4...5---6name:            v2s64_split7legalized:       true8tracksRegLiveness: true9body:             |10  bb.1.entry:11    liveins: $x012 13    ; Split a store of <2 x i64> into two scalar stores.14 15    ; CHECK-LABEL: name: v2s64_split16    ; CHECK: liveins: $x017    ; CHECK-NEXT: {{  $}}18    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x019    ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 020    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 821    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C]](s64)22    ; CHECK-NEXT: G_STORE %zero(s64), [[COPY]](p0) :: (store (s64), align 16)23    ; CHECK-NEXT: G_STORE %zero(s64), [[PTR_ADD]](p0) :: (store (s64) into unknown-address + 8)24    ; CHECK-NEXT: RET_ReallyLR25    %0:_(p0) = COPY $x026    %zero:_(s64) = G_CONSTANT i64 027    %zerovec:_(<2 x s64>) = G_BUILD_VECTOR %zero, %zero28    G_STORE %zerovec(<2 x s64>), %0(p0) :: (store (<2 x s64>))29    RET_ReallyLR30 31...32---33name:            v4i32_split34legalized:       true35tracksRegLiveness: true36body:             |37  bb.1.entry:38    liveins: $x039 40    ; CHECK-LABEL: name: v4i32_split41    ; CHECK: liveins: $x042    ; CHECK-NEXT: {{  $}}43    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x044    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 045    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 846    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C1]](s64)47    ; CHECK-NEXT: G_STORE [[C]](s64), [[COPY]](p0) :: (store (s64), align 16)48    ; CHECK-NEXT: G_STORE [[C]](s64), [[PTR_ADD]](p0) :: (store (s64) into unknown-address + 8)49    ; CHECK-NEXT: RET_ReallyLR50    %0:_(p0) = COPY $x051    %zero:_(s32) = G_CONSTANT i32 052    %zerovec:_(<4 x s32>) = G_BUILD_VECTOR %zero, %zero, %zero, %zero53    G_STORE %zerovec(<4 x s32>), %0(p0) :: (store (<4 x s32>))54    RET_ReallyLR55 56...57---58name:            v8i16_split59legalized:       true60tracksRegLiveness: true61body:             |62  bb.1.entry:63    liveins: $x064 65    ; CHECK-LABEL: name: v8i16_split66    ; CHECK: liveins: $x067    ; CHECK-NEXT: {{  $}}68    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x069    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 070    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 871    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C1]](s64)72    ; CHECK-NEXT: G_STORE [[C]](s64), [[COPY]](p0) :: (store (s64), align 16)73    ; CHECK-NEXT: G_STORE [[C]](s64), [[PTR_ADD]](p0) :: (store (s64) into unknown-address + 8)74    ; CHECK-NEXT: RET_ReallyLR75    %0:_(p0) = COPY $x076    %zero:_(s16) = G_CONSTANT i16 077    %zerovec:_(<8 x s16>) = G_BUILD_VECTOR %zero, %zero, %zero, %zero, %zero, %zero, %zero, %zero78    G_STORE %zerovec(<8 x s16>), %0(p0) :: (store (<8 x s16>))79    RET_ReallyLR80 81...82 83# Negative tests84---85name:            v2i32_nosplit86legalized:       true87tracksRegLiveness: true88body:             |89  bb.1.entry:90    liveins: $x091 92    ; CHECK-LABEL: name: v2i32_nosplit93    ; CHECK: liveins: $x094    ; CHECK-NEXT: {{  $}}95    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x096    ; CHECK-NEXT: %zero:_(s32) = G_CONSTANT i32 097    ; CHECK-NEXT: %zerovec:_(<2 x s32>) = G_BUILD_VECTOR %zero(s32), %zero(s32)98    ; CHECK-NEXT: G_STORE %zerovec(<2 x s32>), [[COPY]](p0) :: (store (<2 x s32>))99    ; CHECK-NEXT: RET_ReallyLR100    %0:_(p0) = COPY $x0101    %zero:_(s32) = G_CONSTANT i32 0102    %zerovec:_(<2 x s32>) = G_BUILD_VECTOR %zero, %zero103    G_STORE %zerovec(<2 x s32>), %0(p0) :: (store (<2 x s32>))104    RET_ReallyLR105 106...107---108name:            multiple_uses109legalized:       true110tracksRegLiveness: true111body:             |112  bb.1.entry:113    liveins: $x0114 115    ; CHECK-LABEL: name: multiple_uses116    ; CHECK: liveins: $x0117    ; CHECK-NEXT: {{  $}}118    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0119    ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0120    ; CHECK-NEXT: %zerovec:_(<2 x s64>) = G_BUILD_VECTOR %zero(s64), %zero(s64)121    ; CHECK-NEXT: G_STORE %zerovec(<2 x s64>), [[COPY]](p0) :: (store (<2 x s64>))122    ; CHECK-NEXT: $q0 = COPY %zerovec(<2 x s64>)123    ; CHECK-NEXT: RET_ReallyLR124    %0:_(p0) = COPY $x0125    %zero:_(s64) = G_CONSTANT i64 0126    %zerovec:_(<2 x s64>) = G_BUILD_VECTOR %zero, %zero127    G_STORE %zerovec(<2 x s64>), %0(p0) :: (store (<2 x s64>))128    $q0 = COPY %zerovec129    RET_ReallyLR130 131...132---133name:            truncating134legalized:       true135tracksRegLiveness: true136body:             |137  bb.1.entry:138    liveins: $x0139 140    ; CHECK-LABEL: name: truncating141    ; CHECK: liveins: $x0142    ; CHECK-NEXT: {{  $}}143    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0144    ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0145    ; CHECK-NEXT: %zerovec:_(<2 x s64>) = G_BUILD_VECTOR %zero(s64), %zero(s64)146    ; CHECK-NEXT: G_STORE %zerovec(<2 x s64>), [[COPY]](p0) :: (store (<2 x s32>))147    ; CHECK-NEXT: RET_ReallyLR148    %0:_(p0) = COPY $x0149    %zero:_(s64) = G_CONSTANT i64 0150    %zerovec:_(<2 x s64>) = G_BUILD_VECTOR %zero, %zero151    G_STORE %zerovec(<2 x s64>), %0(p0) :: (store (<2 x s32>))152    RET_ReallyLR153 154...155---156name:            volatile157legalized:       true158tracksRegLiveness: true159body:             |160  bb.1.entry:161    liveins: $x0162 163    ; CHECK-LABEL: name: volatile164    ; CHECK: liveins: $x0165    ; CHECK-NEXT: {{  $}}166    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0167    ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0168    ; CHECK-NEXT: %zerovec:_(<2 x s64>) = G_BUILD_VECTOR %zero(s64), %zero(s64)169    ; CHECK-NEXT: G_STORE %zerovec(<2 x s64>), [[COPY]](p0) :: (volatile store (<2 x s64>))170    ; CHECK-NEXT: RET_ReallyLR171    %0:_(p0) = COPY $x0172    %zero:_(s64) = G_CONSTANT i64 0173    %zerovec:_(<2 x s64>) = G_BUILD_VECTOR %zero, %zero174    G_STORE %zerovec(<2 x s64>), %0(p0) :: (volatile store (<2 x s64>))175    RET_ReallyLR176 177...178---179name:            s128_scalar180legalized:       true181tracksRegLiveness: true182body:             |183  bb.1.entry:184    liveins: $x0185 186    ; Split a store of <2 x i64> into two scalar stores.187 188    ; CHECK-LABEL: name: s128_scalar189    ; CHECK: liveins: $x0190    ; CHECK-NEXT: {{  $}}191    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0192    ; CHECK-NEXT: %zero:_(s128) = G_CONSTANT i128 0193    ; CHECK-NEXT: G_STORE %zero(s128), [[COPY]](p0) :: (store (s128))194    ; CHECK-NEXT: RET_ReallyLR195    %0:_(p0) = COPY $x0196    %zero:_(s128) = G_CONSTANT i128 0197    G_STORE %zero(s128), %0(p0) :: (store (s128))198    RET_ReallyLR199 200...201