brintos

brintos / llvm-project-archived public Read only

0
0
Text · 22.4 KiB · dafc304 Raw
536 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=aarch64-linux-gnu -O0 -run-pass=legalizer -global-isel-abort=0 -verify-machineinstrs %s -o - | FileCheck %s3 4---5name:            test_eve_16body: |7  bb.0:8    liveins: $q09    ; CHECK-LABEL: name: test_eve_110    ; CHECK: liveins: $q011    ; CHECK-NEXT: {{  $}}12    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q013    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 114    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[COPY]](<2 x s64>), [[C]](s64)15    ; CHECK-NEXT: $x0 = COPY [[EVEC]](s64)16    ; CHECK-NEXT: RET_ReallyLR17    %0:_(<2 x s64>) = COPY $q018    %1:_(s64) = G_CONSTANT i64 119    %2:_(s64) = G_EXTRACT_VECTOR_ELT %0(<2 x s64>), %1(s64)20    $x0 = COPY %2(s64)21    RET_ReallyLR22...23---24name:            test_eve_v2s125body: |26  bb.0:27    liveins: $q0, $q128    ; CHECK-LABEL: name: test_eve_v2s129    ; CHECK: liveins: $q0, $q130    ; CHECK-NEXT: {{  $}}31    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q032    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $q133    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 134    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<2 x s64>) = G_ICMP intpred(eq), [[COPY]](<2 x s64>), [[COPY1]]35    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[ICMP]](<2 x s64>), [[C]](s64)36    ; CHECK-NEXT: $x0 = COPY [[EVEC]](s64)37    ; CHECK-NEXT: RET_ReallyLR38    %0:_(<2 x s64>) = COPY $q039    %1:_(<2 x s64>) = COPY $q140    %2:_(s64) = G_CONSTANT i64 141    %3:_(<2 x s1>) = G_ICMP intpred(eq), %0(<2 x s64>), %142    %4:_(s1) = G_EXTRACT_VECTOR_ELT %3:_(<2 x s1>), %2:_(s64)43    %5:_(s64) = G_ANYEXT %4(s1)44    $x0 = COPY %5(s64)45    RET_ReallyLR46...47---48name:            test_eve_v4s149body: |50  bb.0:51    liveins: $q0, $q152    ; CHECK-LABEL: name: test_eve_v4s153    ; CHECK: liveins: $q0, $q154    ; CHECK-NEXT: {{  $}}55    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q056    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $q157    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 158    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<4 x s32>) = G_ICMP intpred(eq), [[COPY]](<4 x s32>), [[COPY1]]59    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[ICMP]](<4 x s32>), [[C]](s64)60    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[EVEC]](s32)61    ; CHECK-NEXT: $x0 = COPY [[ANYEXT]](s64)62    ; CHECK-NEXT: RET_ReallyLR63    %0:_(<4 x s32>) = COPY $q064    %1:_(<4 x s32>) = COPY $q165    %2:_(s64) = G_CONSTANT i64 166    %3:_(<4 x s1>) = G_ICMP intpred(eq), %0(<4 x s32>), %167    %4:_(s1) = G_EXTRACT_VECTOR_ELT %3:_(<4 x s1>), %2:_(s64)68    %5:_(s64) = G_ANYEXT %4(s1)69    $x0 = COPY %5(s64)70    RET_ReallyLR71...72---73name:            test_eve_v8s174body: |75  bb.0:76    liveins: $q0, $q177    ; CHECK-LABEL: name: test_eve_v8s178    ; CHECK: liveins: $q0, $q179    ; CHECK-NEXT: {{  $}}80    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q081    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s16>) = COPY $q182    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 183    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<8 x s16>) = G_ICMP intpred(eq), [[COPY]](<8 x s16>), [[COPY1]]84    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[ICMP]](<8 x s16>), [[C]](s64)85    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[EVEC]](s16)86    ; CHECK-NEXT: $x0 = COPY [[ANYEXT]](s64)87    ; CHECK-NEXT: RET_ReallyLR88    %0:_(<8 x s16>) = COPY $q089    %1:_(<8 x s16>) = COPY $q190    %2:_(s64) = G_CONSTANT i64 191    %3:_(<8 x s1>) = G_ICMP intpred(eq), %0(<8 x s16>), %192    %4:_(s1) = G_EXTRACT_VECTOR_ELT %3:_(<8 x s1>), %2:_(s64)93    %5:_(s64) = G_ANYEXT %4(s1)94    $x0 = COPY %5(s64)95    RET_ReallyLR96...97---98name:            test_eve_v16s199body: |100  bb.0:101    liveins: $q0, $q1102    ; CHECK-LABEL: name: test_eve_v16s1103    ; CHECK: liveins: $q0, $q1104    ; CHECK-NEXT: {{  $}}105    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<16 x s8>) = COPY $q0106    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<16 x s8>) = COPY $q1107    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1108    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<16 x s8>) = G_ICMP intpred(eq), [[COPY]](<16 x s8>), [[COPY1]]109    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s8) = G_EXTRACT_VECTOR_ELT [[ICMP]](<16 x s8>), [[C]](s64)110    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[EVEC]](s8)111    ; CHECK-NEXT: $x0 = COPY [[ANYEXT]](s64)112    ; CHECK-NEXT: RET_ReallyLR113    %0:_(<16 x s8>) = COPY $q0114    %1:_(<16 x s8>) = COPY $q1115    %2:_(s64) = G_CONSTANT i64 1116    %3:_(<16 x s1>) = G_ICMP intpred(eq), %0(<16 x s8>), %1117    %4:_(s1) = G_EXTRACT_VECTOR_ELT %3:_(<16 x s1>), %2:_(s64)118    %5:_(s64) = G_ANYEXT %4(s1)119    $x0 = COPY %5(s64)120    RET_ReallyLR121...122---123name:            test_eve_v2p0124body: |125  bb.0:126    liveins: $q0, $q1127    ; CHECK-LABEL: name: test_eve_v2p0128    ; CHECK: liveins: $q0, $q1129    ; CHECK-NEXT: {{  $}}130    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x p0>) = COPY $q0131    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1132    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(p0) = G_EXTRACT_VECTOR_ELT [[COPY]](<2 x p0>), [[C]](s64)133    ; CHECK-NEXT: $x0 = COPY [[EVEC]](p0)134    ; CHECK-NEXT: RET_ReallyLR135    %0:_(<2 x p0>) = COPY $q0136    %2:_(s64) = G_CONSTANT i64 1137    %3:_(p0) = G_EXTRACT_VECTOR_ELT %0:_(<2 x p0>), %2:_(s64)138    $x0 = COPY %3(p0)139    RET_ReallyLR140...141---142name:            test_eve_v4s64143body: |144  bb.0:145    liveins: $q0, $q1, $x0146    ; CHECK-LABEL: name: test_eve_v4s64147    ; CHECK: liveins: $q0, $q1, $x0148    ; CHECK-NEXT: {{  $}}149    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0150    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1151    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s64) = G_EXTRACT_VECTOR_ELT [[COPY]](<2 x s64>), [[C]](s64)152    ; CHECK-NEXT: $x0 = COPY [[EVEC]](s64)153    ; CHECK-NEXT: RET_ReallyLR154    %0:_(<2 x s64>) = COPY $q0155    %1:_(<2 x s64>) = COPY $q1156    %concat:_(<4 x s64>) = G_CONCAT_VECTORS %0(<2 x s64>), %1(<2 x s64>)157    %idx:_(s32) = G_CONSTANT i32 1158    %idxprom:_(s64) = G_SEXT %idx(s32)159    %3:_(s64) = G_EXTRACT_VECTOR_ELT %concat:_(<4 x s64>), %idxprom:_(s64)160    $x0 = COPY %3(s64)161    RET_ReallyLR162...163---164name:            test_eve_v2s1_unknown_idx165body: |166  bb.0:167    liveins: $q0, $q1, $x0168    ; CHECK-LABEL: name: test_eve_v2s1_unknown_idx169    ; CHECK: liveins: $q0, $q1, $x0170    ; CHECK-NEXT: {{  $}}171    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0172    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $q1173    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x0174    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<2 x s64>) = G_ICMP intpred(eq), [[COPY]](<2 x s64>), [[COPY1]]175    ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0176    ; CHECK-NEXT: G_STORE [[ICMP]](<2 x s64>), [[FRAME_INDEX]](p0) :: (store (<2 x s64>) into %stack.0)177    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1178    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY2]], [[C]]179    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 8180    ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[AND]], [[C1]]181    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[FRAME_INDEX]], [[MUL]](s64)182    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s64) = G_LOAD [[PTR_ADD]](p0) :: (load (s64))183    ; CHECK-NEXT: $x0 = COPY [[LOAD]](s64)184    ; CHECK-NEXT: RET_ReallyLR185    %0:_(<2 x s64>) = COPY $q0186    %1:_(<2 x s64>) = COPY $q1187    %2:_(s64) = COPY $x0188    %3:_(<2 x s1>) = G_ICMP intpred(eq), %0(<2 x s64>), %1189    %4:_(s1) = G_EXTRACT_VECTOR_ELT %3:_(<2 x s1>), %2:_(s64)190    %5:_(s64) = G_ANYEXT %4(s1)191    $x0 = COPY %5(s64)192    RET_ReallyLR193...194---195name:            test_eve_v4s1_unknown_idx196body: |197  bb.0:198    liveins: $q0, $q1, $x0199    ; CHECK-LABEL: name: test_eve_v4s1_unknown_idx200    ; CHECK: liveins: $q0, $q1, $x0201    ; CHECK-NEXT: {{  $}}202    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0203    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $q1204    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x0205    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<4 x s32>) = G_ICMP intpred(eq), [[COPY]](<4 x s32>), [[COPY1]]206    ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0207    ; CHECK-NEXT: G_STORE [[ICMP]](<4 x s32>), [[FRAME_INDEX]](p0) :: (store (<4 x s32>) into %stack.0)208    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 3209    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY2]], [[C]]210    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 4211    ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[AND]], [[C1]]212    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[FRAME_INDEX]], [[MUL]](s64)213    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p0) :: (load (s32))214    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[LOAD]](s32)215    ; CHECK-NEXT: $x0 = COPY [[ANYEXT]](s64)216    ; CHECK-NEXT: RET_ReallyLR217    %0:_(<4 x s32>) = COPY $q0218    %1:_(<4 x s32>) = COPY $q1219    %2:_(s64) = COPY $x0220    %3:_(<4 x s1>) = G_ICMP intpred(eq), %0(<4 x s32>), %1221    %4:_(s1) = G_EXTRACT_VECTOR_ELT %3:_(<4 x s1>), %2:_(s64)222    %5:_(s64) = G_ANYEXT %4(s1)223    $x0 = COPY %5(s64)224    RET_ReallyLR225...226---227name:            test_eve_v8s1_unknown_idx228body: |229  bb.0:230    liveins: $q0, $q1, $x0231    ; CHECK-LABEL: name: test_eve_v8s1_unknown_idx232    ; CHECK: liveins: $q0, $q1, $x0233    ; CHECK-NEXT: {{  $}}234    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q0235    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s16>) = COPY $q1236    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x0237    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<8 x s16>) = G_ICMP intpred(eq), [[COPY]](<8 x s16>), [[COPY1]]238    ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0239    ; CHECK-NEXT: G_STORE [[ICMP]](<8 x s16>), [[FRAME_INDEX]](p0) :: (store (<8 x s16>) into %stack.0)240    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 7241    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY2]], [[C]]242    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2243    ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[AND]], [[C1]]244    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[FRAME_INDEX]], [[MUL]](s64)245    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[PTR_ADD]](p0) :: (load (s16))246    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[LOAD]](s16)247    ; CHECK-NEXT: $x0 = COPY [[ANYEXT]](s64)248    ; CHECK-NEXT: RET_ReallyLR249    %0:_(<8 x s16>) = COPY $q0250    %1:_(<8 x s16>) = COPY $q1251    %2:_(s64) = COPY $x0252    %3:_(<8 x s1>) = G_ICMP intpred(eq), %0(<8 x s16>), %1253    %4:_(s1) = G_EXTRACT_VECTOR_ELT %3:_(<8 x s1>), %2:_(s64)254    %5:_(s64) = G_ANYEXT %4(s1)255    $x0 = COPY %5(s64)256    RET_ReallyLR257...258---259name:            test_eve_v16s1_unknown_idx260body: |261  bb.0:262    liveins: $q0, $q1, $x0263    ; CHECK-LABEL: name: test_eve_v16s1_unknown_idx264    ; CHECK: liveins: $q0, $q1, $x0265    ; CHECK-NEXT: {{  $}}266    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<16 x s8>) = COPY $q0267    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<16 x s8>) = COPY $q1268    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x0269    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(<16 x s8>) = G_ICMP intpred(eq), [[COPY]](<16 x s8>), [[COPY1]]270    ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0271    ; CHECK-NEXT: G_STORE [[ICMP]](<16 x s8>), [[FRAME_INDEX]](p0) :: (store (<16 x s8>) into %stack.0)272    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 15273    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY2]], [[C]]274    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1275    ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[AND]], [[C1]]276    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[FRAME_INDEX]], [[MUL]](s64)277    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s8) = G_LOAD [[PTR_ADD]](p0) :: (load (s8))278    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[LOAD]](s8)279    ; CHECK-NEXT: $x0 = COPY [[ANYEXT]](s64)280    ; CHECK-NEXT: RET_ReallyLR281    %0:_(<16 x s8>) = COPY $q0282    %1:_(<16 x s8>) = COPY $q1283    %2:_(s64) = COPY $x0284    %3:_(<16 x s1>) = G_ICMP intpred(eq), %0(<16 x s8>), %1285    %4:_(s1) = G_EXTRACT_VECTOR_ELT %3:_(<16 x s1>), %2:_(s64)286    %5:_(s64) = G_ANYEXT %4(s1)287    $x0 = COPY %5(s64)288    RET_ReallyLR289...290---291name:            test_eve_v2p0_unknown_idx292body: |293  bb.0:294    liveins: $q0, $q1, $x0295    ; CHECK-LABEL: name: test_eve_v2p0_unknown_idx296    ; CHECK: liveins: $q0, $q1, $x0297    ; CHECK-NEXT: {{  $}}298    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x p0>) = COPY $q0299    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x0300    ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0301    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s64>) = G_BITCAST [[COPY]](<2 x p0>)302    ; CHECK-NEXT: G_STORE [[BITCAST]](<2 x s64>), [[FRAME_INDEX]](p0) :: (store (<2 x s64>) into %stack.0)303    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1304    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]]305    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 8306    ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[AND]], [[C1]]307    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[FRAME_INDEX]], [[MUL]](s64)308    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(p0) = G_LOAD [[PTR_ADD]](p0) :: (load (p0))309    ; CHECK-NEXT: $x0 = COPY [[LOAD]](p0)310    ; CHECK-NEXT: RET_ReallyLR311    %0:_(<2 x p0>) = COPY $q0312    %2:_(s64) = COPY $x0313    %3:_(p0) = G_EXTRACT_VECTOR_ELT %0:_(<2 x p0>), %2:_(s64)314    $x0 = COPY %3(p0)315    RET_ReallyLR316...317---318name:            test_eve_v4s64_unknown_idx319body: |320  bb.0:321    liveins: $q0, $q1, $x0322    ; CHECK-LABEL: name: test_eve_v4s64_unknown_idx323    ; CHECK: liveins: $q0, $q1, $x0324    ; CHECK-NEXT: {{  $}}325    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0326    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $q1327    ; CHECK-NEXT: %idx:_(s64) = COPY $x0328    ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0329    ; CHECK-NEXT: G_STORE [[COPY]](<2 x s64>), [[FRAME_INDEX]](p0) :: (store (<2 x s64>) into %stack.0, align 32)330    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16331    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[FRAME_INDEX]], [[C]](s64)332    ; CHECK-NEXT: G_STORE [[COPY1]](<2 x s64>), [[PTR_ADD]](p0) :: (store (<2 x s64>) into %stack.0 + 16, basealign 32)333    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 3334    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND %idx, [[C1]]335    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 8336    ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[AND]], [[C2]]337    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[FRAME_INDEX]], [[MUL]](s64)338    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s64) = G_LOAD [[PTR_ADD1]](p0) :: (load (s64))339    ; CHECK-NEXT: $x0 = COPY [[LOAD]](s64)340    ; CHECK-NEXT: RET_ReallyLR341    %0:_(<2 x s64>) = COPY $q0342    %1:_(<2 x s64>) = COPY $q1343    %concat:_(<4 x s64>) = G_CONCAT_VECTORS %0(<2 x s64>), %1(<2 x s64>)344    %idx:_(s64) = COPY $x0345    %3:_(s64) = G_EXTRACT_VECTOR_ELT %concat:_(<4 x s64>), %idx:_(s64)346    $x0 = COPY %3(s64)347    RET_ReallyLR348...349---350name:            test_eve_v8s32351body: |352  bb.0:353    liveins: $q0, $q1, $x0354    ; CHECK-LABEL: name: test_eve_v8s32355    ; CHECK: liveins: $q0, $q1, $x0356    ; CHECK-NEXT: {{  $}}357    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0358    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1359    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[COPY]](<4 x s32>), [[C]](s64)360    ; CHECK-NEXT: $w0 = COPY [[EVEC]](s32)361    ; CHECK-NEXT: RET_ReallyLR362    %0:_(<4 x s32>) = COPY $q0363    %1:_(<4 x s32>) = COPY $q1364    %concat:_(<8 x s32>) = G_CONCAT_VECTORS %0(<4 x s32>), %1(<4 x s32>)365    %idx:_(s32) = G_CONSTANT i32 1366    %idxprom:_(s64) = G_SEXT %idx(s32)367    %3:_(s32) = G_EXTRACT_VECTOR_ELT %concat:_(<8 x s32>), %idxprom:_(s64)368    $w0 = COPY %3(s32)369    RET_ReallyLR370...371---372name:            test_eve_v16s16373body: |374  bb.0:375    liveins: $q0, $q1, $x0376    ; CHECK-LABEL: name: test_eve_v16s16377    ; CHECK: liveins: $q0, $q1, $x0378    ; CHECK-NEXT: {{  $}}379    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q1380    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1381    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s16) = G_EXTRACT_VECTOR_ELT [[COPY]](<8 x s16>), [[C]](s64)382    ; CHECK-NEXT: %ext:_(s32) = G_ANYEXT [[EVEC]](s16)383    ; CHECK-NEXT: $w0 = COPY %ext(s32)384    ; CHECK-NEXT: RET_ReallyLR385    %0:_(<8 x s16>) = COPY $q0386    %1:_(<8 x s16>) = COPY $q1387    %concat:_(<16 x s16>) = G_CONCAT_VECTORS %0(<8 x s16>), %1(<8 x s16>)388    %idx:_(s32) = G_CONSTANT i32 9389    %idxprom:_(s64) = G_SEXT %idx(s32)390    %3:_(s16) = G_EXTRACT_VECTOR_ELT %concat:_(<16 x s16>), %idxprom:_(s64)391    %ext:_(s32) = G_ANYEXT %3392    $w0 = COPY %ext(s32)393    RET_ReallyLR394...395---396name:            test_eve_v4p0397body: |398  bb.0:399    liveins: $x0400    ; CHECK-LABEL: name: test_eve_v4p0401    ; CHECK: liveins: $x0402    ; CHECK-NEXT: {{  $}}403    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<2 x p0>) = G_IMPLICIT_DEF404    ; CHECK-NEXT: %idx:_(s64) = G_CONSTANT i64 1405    ; CHECK-NEXT: %eve:_(p0) = G_EXTRACT_VECTOR_ELT [[DEF]](<2 x p0>), %idx(s64)406    ; CHECK-NEXT: $x0 = COPY %eve(p0)407    ; CHECK-NEXT: RET_ReallyLR408    %vec:_(<4 x p0>) = G_IMPLICIT_DEF409    %idx:_(s64) = G_CONSTANT i64 1410    %eve:_(p0) = G_EXTRACT_VECTOR_ELT %vec:_(<4 x p0>), %idx:_(s64)411    $x0 = COPY %eve(p0)412    RET_ReallyLR413...414---415name:            test_eve_v8s32_unknown_idx416body: |417  bb.0:418    liveins: $q0, $q1, $w0419    ; CHECK-LABEL: name: test_eve_v8s32_unknown_idx420    ; CHECK: liveins: $q0, $q1, $w0421    ; CHECK-NEXT: {{  $}}422    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0423    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $q1424    ; CHECK-NEXT: %idx:_(s32) = COPY $w0425    ; CHECK-NEXT: %idxprom:_(s64) = G_SEXT %idx(s32)426    ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0427    ; CHECK-NEXT: G_STORE [[COPY]](<4 x s32>), [[FRAME_INDEX]](p0) :: (store (<4 x s32>) into %stack.0, align 32)428    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16429    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[FRAME_INDEX]], [[C]](s64)430    ; CHECK-NEXT: G_STORE [[COPY1]](<4 x s32>), [[PTR_ADD]](p0) :: (store (<4 x s32>) into %stack.0 + 16, basealign 32)431    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 7432    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND %idxprom, [[C1]]433    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 4434    ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[AND]], [[C2]]435    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[FRAME_INDEX]], [[MUL]](s64)436    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p0) :: (load (s32))437    ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)438    ; CHECK-NEXT: RET_ReallyLR439    %0:_(<4 x s32>) = COPY $q0440    %1:_(<4 x s32>) = COPY $q1441    %concat:_(<8 x s32>) = G_CONCAT_VECTORS %0(<4 x s32>), %1(<4 x s32>)442    %idx:_(s32) = COPY $w0443    %idxprom:_(s64) = G_SEXT %idx(s32)444    %3:_(s32) = G_EXTRACT_VECTOR_ELT %concat:_(<8 x s32>), %idxprom:_(s64)445    $w0 = COPY %3(s32)446    RET_ReallyLR447...448---449name:            test_eve_v16s16_unknown_idx450body: |451  bb.0:452    liveins: $q0, $q1, $w0453    ; CHECK-LABEL: name: test_eve_v16s16_unknown_idx454    ; CHECK: liveins: $q0, $q1, $w0455    ; CHECK-NEXT: {{  $}}456    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q0457    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s16>) = COPY $q1458    ; CHECK-NEXT: %idx:_(s32) = COPY $w0459    ; CHECK-NEXT: %idxprom:_(s64) = G_SEXT %idx(s32)460    ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0461    ; CHECK-NEXT: G_STORE [[COPY]](<8 x s16>), [[FRAME_INDEX]](p0) :: (store (<8 x s16>) into %stack.0, align 32)462    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16463    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[FRAME_INDEX]], [[C]](s64)464    ; CHECK-NEXT: G_STORE [[COPY1]](<8 x s16>), [[PTR_ADD]](p0) :: (store (<8 x s16>) into %stack.0 + 16, basealign 32)465    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 15466    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND %idxprom, [[C1]]467    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2468    ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[AND]], [[C2]]469    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[FRAME_INDEX]], [[MUL]](s64)470    ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[PTR_ADD1]](p0) :: (load (s16))471    ; CHECK-NEXT: %ext:_(s32) = G_ANYEXT [[LOAD]](s16)472    ; CHECK-NEXT: $w0 = COPY %ext(s32)473    ; CHECK-NEXT: RET_ReallyLR474    %0:_(<8 x s16>) = COPY $q0475    %1:_(<8 x s16>) = COPY $q1476    %concat:_(<16 x s16>) = G_CONCAT_VECTORS %0(<8 x s16>), %1(<8 x s16>)477    %idx:_(s32) = COPY $w0478    %idxprom:_(s64) = G_SEXT %idx(s32)479    %3:_(s16) = G_EXTRACT_VECTOR_ELT %concat:_(<16 x s16>), %idxprom:_(s64)480    %ext:_(s32) = G_ANYEXT %3481    $w0 = COPY %ext(s32)482    RET_ReallyLR483...484---485name:            test_eve_v4p0_unknown_idx486body: |487  bb.0:488    liveins: $x0489    ; CHECK-LABEL: name: test_eve_v4p0_unknown_idx490    ; CHECK: liveins: $x0491    ; CHECK-NEXT: {{  $}}492    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<2 x p0>) = G_IMPLICIT_DEF493    ; CHECK-NEXT: %idx:_(s64) = COPY $x0494    ; CHECK-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p0) = G_FRAME_INDEX %stack.0495    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s64>) = G_BITCAST [[DEF]](<2 x p0>)496    ; CHECK-NEXT: G_STORE [[BITCAST]](<2 x s64>), [[FRAME_INDEX]](p0) :: (store (<2 x s64>) into %stack.0, align 32)497    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16498    ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = nuw inbounds G_PTR_ADD [[FRAME_INDEX]], [[C]](s64)499    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s64>) = G_BITCAST [[DEF]](<2 x p0>)500    ; CHECK-NEXT: G_STORE [[BITCAST1]](<2 x s64>), [[PTR_ADD]](p0) :: (store (<2 x s64>) into %stack.0 + 16, basealign 32)501    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 3502    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND %idx, [[C1]]503    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 8504    ; CHECK-NEXT: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[AND]], [[C2]]505    ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[FRAME_INDEX]], [[MUL]](s64)506    ; CHECK-NEXT: %eve:_(p0) = G_LOAD [[PTR_ADD1]](p0) :: (load (p0))507    ; CHECK-NEXT: $x0 = COPY %eve(p0)508    ; CHECK-NEXT: RET_ReallyLR509    %vec:_(<4 x p0>) = G_IMPLICIT_DEF510    %idx:_(s64) = COPY $x0511    %eve:_(p0) = G_EXTRACT_VECTOR_ELT %vec:_(<4 x p0>), %idx:_(s64)512    $x0 = COPY %eve(p0)513    RET_ReallyLR514...515---516# Make sure that the pointer legalization rules don't apply when we have517# different address spaces.518name:            cant_legalize_different_address_spaces519body: |520  bb.0:521    liveins: $x0522 523    ; CHECK-LABEL: name: cant_legalize_different_address_spaces524    ; CHECK: liveins: $x0525    ; CHECK-NEXT: {{  $}}526    ; CHECK-NEXT: %vec:_(<4 x p1>) = G_IMPLICIT_DEF527    ; CHECK-NEXT: %idx:_(s64) = G_CONSTANT i64 1528    ; CHECK-NEXT: %eve:_(p0) = G_EXTRACT_VECTOR_ELT %vec(<4 x p1>), %idx(s64)529    ; CHECK-NEXT: $x0 = COPY %eve(p0)530    ; CHECK-NEXT: RET_ReallyLR531    %vec:_(<4 x p1>) = G_IMPLICIT_DEF532    %idx:_(s64) = G_CONSTANT i64 1533    %eve:_(p0) = G_EXTRACT_VECTOR_ELT %vec:_(<4 x p1>), %idx:_(s64)534    $x0 = COPY %eve(p0)535    RET_ReallyLR536