brintos

brintos / llvm-project-archived public Read only

0
0
Text · 20.0 KiB · e81447a Raw
662 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -o - -mtriple=aarch64 -run-pass=aarch64-prelegalizer-combiner -verify-machineinstrs %s | FileCheck %s3---4name:            extract_from_build_vector5alignment:       46tracksRegLiveness: true7liveins:8  - { reg: '$x0' }9  - { reg: '$x1' }10frameInfo:11  maxAlignment:    112  maxCallFrameSize: 013machineFunctionInfo: {}14body:             |15  bb.0:16    liveins: $x0, $x117 18    ; CHECK-LABEL: name: extract_from_build_vector19    ; CHECK: liveins: $x0, $x120    ; CHECK-NEXT: {{  $}}21    ; CHECK-NEXT: %arg1:_(s64) = COPY $x022    ; CHECK-NEXT: $x0 = COPY %arg1(s64)23    ; CHECK-NEXT: RET_ReallyLR implicit $x024    %arg1:_(s64) = COPY $x025    %arg2:_(s64) = COPY $x126    %zero:_(s64) = G_CONSTANT i64 027    %bv:_(<2 x s64>) = G_BUILD_VECTOR %arg1(s64), %arg2(s64)28    %extract:_(s64) = G_EXTRACT_VECTOR_ELT %bv(<2 x s64>), %zero(s64)29    $x0 = COPY %extract(s64)30    RET_ReallyLR implicit $x031 32...33---34name:            extract_from_trunc_build_vector35alignment:       436tracksRegLiveness: true37liveins:38  - { reg: '$x0' }39  - { reg: '$x1' }40frameInfo:41  maxAlignment:    142  maxCallFrameSize: 043machineFunctionInfo: {}44body:             |45  bb.0:46    liveins: $x0, $x147 48    ; CHECK-LABEL: name: extract_from_trunc_build_vector49    ; CHECK: liveins: $x0, $x150    ; CHECK-NEXT: {{  $}}51    ; CHECK-NEXT: %arg1:_(s64) = COPY $x052    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC %arg1(s64)53    ; CHECK-NEXT: %zext:_(s64) = G_ZEXT [[TRUNC]](s32)54    ; CHECK-NEXT: $x0 = COPY %zext(s64)55    ; CHECK-NEXT: RET_ReallyLR implicit $x056    %arg1:_(s64) = COPY $x057    %arg2:_(s64) = COPY $x158    %zero:_(s64) = G_CONSTANT i64 059    %bv:_(<2 x s64>) = G_BUILD_VECTOR %arg1(s64), %arg2(s64)60    %truncbv:_(<2 x s32>) = G_TRUNC %bv61    %extract:_(s32) = G_EXTRACT_VECTOR_ELT %truncbv(<2 x s32>), %zero(s64)62    %zext:_(s64) = G_ZEXT %extract63    $x0 = COPY %zext(s64)64    RET_ReallyLR implicit $x065 66...67---68name:            extract_from_build_vector_idx169alignment:       470tracksRegLiveness: true71liveins:72  - { reg: '$x0' }73  - { reg: '$x1' }74frameInfo:75  maxAlignment:    176  maxCallFrameSize: 077machineFunctionInfo: {}78body:             |79  bb.0:80    liveins: $x0, $x181 82    ; CHECK-LABEL: name: extract_from_build_vector_idx183    ; CHECK: liveins: $x0, $x184    ; CHECK-NEXT: {{  $}}85    ; CHECK-NEXT: %arg2:_(s64) = COPY $x186    ; CHECK-NEXT: $x0 = COPY %arg2(s64)87    ; CHECK-NEXT: RET_ReallyLR implicit $x088    %arg1:_(s64) = COPY $x089    %arg2:_(s64) = COPY $x190    %one:_(s64) = G_CONSTANT i64 191    %bv:_(<2 x s64>) = G_BUILD_VECTOR %arg1(s64), %arg2(s64)92    %extract:_(s64) = G_EXTRACT_VECTOR_ELT %bv(<2 x s64>), %one(s64)93    $x0 = COPY %extract(s64)94    RET_ReallyLR implicit $x095 96...97---98name:            extract_from_build_vector_idx_invalid99alignment:       4100tracksRegLiveness: true101liveins:102  - { reg: '$x0' }103  - { reg: '$x1' }104frameInfo:105  maxAlignment:    1106  maxCallFrameSize: 0107machineFunctionInfo: {}108body:             |109  bb.0:110    liveins: $x0, $x1111 112    ; CHECK-LABEL: name: extract_from_build_vector_idx_invalid113    ; CHECK: liveins: $x0, $x1114    ; CHECK-NEXT: {{  $}}115    ; CHECK-NEXT: %extract:_(s64) = G_IMPLICIT_DEF116    ; CHECK-NEXT: $x0 = COPY %extract(s64)117    ; CHECK-NEXT: RET_ReallyLR implicit $x0118    %arg1:_(s64) = COPY $x0119    %arg2:_(s64) = COPY $x1120    %idx:_(s64) = G_CONSTANT i64 4121    %bv:_(<2 x s64>) = G_BUILD_VECTOR %arg1(s64), %arg2(s64)122    %extract:_(s64) = G_EXTRACT_VECTOR_ELT %bv(<2 x s64>), %idx(s64)123    $x0 = COPY %extract(s64)124    RET_ReallyLR implicit $x0125 126...127---128name:            extract_from_build_vector_trunc129alignment:       4130tracksRegLiveness: true131liveins:132  - { reg: '$x0' }133  - { reg: '$x1' }134frameInfo:135  maxAlignment:    1136  maxCallFrameSize: 0137machineFunctionInfo: {}138body:             |139  bb.0:140    liveins: $x0, $x1141 142    ; CHECK-LABEL: name: extract_from_build_vector_trunc143    ; CHECK: liveins: $x0, $x1144    ; CHECK-NEXT: {{  $}}145    ; CHECK-NEXT: %arg1:_(s64) = COPY $x0146    ; CHECK-NEXT: %extract:_(s32) = G_TRUNC %arg1(s64)147    ; CHECK-NEXT: $w0 = COPY %extract(s32)148    ; CHECK-NEXT: RET_ReallyLR implicit $w0149    %arg1:_(s64) = COPY $x0150    %arg2:_(s64) = COPY $x1151    %zero:_(s64) = G_CONSTANT i64 0152    %bv:_(<2 x s32>) = G_BUILD_VECTOR_TRUNC %arg1(s64), %arg2(s64)153    %extract:_(s32) = G_EXTRACT_VECTOR_ELT %bv(<2 x s32>), %zero(s64)154    $w0 = COPY %extract(s32)155    RET_ReallyLR implicit $w0156 157...158---159name:            extract_from_build_vector_multiple_uses160alignment:       4161tracksRegLiveness: true162liveins:163  - { reg: '$x0' }164  - { reg: '$x1' }165frameInfo:166  maxAlignment:    1167  maxCallFrameSize: 0168machineFunctionInfo: {}169body:             |170  bb.0:171    liveins: $x0, $x1172 173    ; CHECK-LABEL: name: extract_from_build_vector_multiple_uses174    ; CHECK: liveins: $x0, $x1175    ; CHECK-NEXT: {{  $}}176    ; CHECK-NEXT: %arg1:_(s64) = COPY $x0177    ; CHECK-NEXT: %arg2:_(s64) = COPY $x1178    ; CHECK-NEXT: %bv:_(<2 x s64>) = G_BUILD_VECTOR %arg1(s64), %arg2(s64)179    ; CHECK-NEXT: $x0 = COPY %arg1(s64)180    ; CHECK-NEXT: $q0 = COPY %bv(<2 x s64>)181    ; CHECK-NEXT: RET_ReallyLR implicit $x0182    %arg1:_(s64) = COPY $x0183    %arg2:_(s64) = COPY $x1184    %zero:_(s64) = G_CONSTANT i64 0185    %bv:_(<2 x s64>) = G_BUILD_VECTOR %arg1(s64), %arg2(s64)186    %extract:_(s64) = G_EXTRACT_VECTOR_ELT %bv(<2 x s64>), %zero(s64)187    $x0 = COPY %extract(s64)188    $q0 = COPY %bv(<2 x s64>)189    RET_ReallyLR implicit $x0190 191...192---193# This test checks that this combine runs after the insertvec->build_vector194name:            extract_from_insert195tracksRegLiveness: true196liveins:197  - { reg: '$x0' }198  - { reg: '$x1' }199frameInfo:200  maxAlignment:    1201body:             |202  bb.1:203    liveins: $x0, $x1204    ; CHECK-LABEL: name: extract_from_insert205    ; CHECK: liveins: $x0, $x1206    ; CHECK-NEXT: {{  $}}207    ; CHECK-NEXT: %arg1:_(s64) = COPY $x0208    ; CHECK-NEXT: $x0 = COPY %arg1(s64)209    ; CHECK-NEXT: RET_ReallyLR implicit $x0210    %arg1:_(s64) = COPY $x0211    %arg2:_(s64) = COPY $x1212    %undef:_(<2 x s64>) = G_IMPLICIT_DEF213    %zero:_(s64) = G_CONSTANT i64 0214    %one:_(s64) = G_CONSTANT i64 1215    %ins1:_(<2 x s64>) = G_INSERT_VECTOR_ELT %undef, %arg1(s64), %zero(s64)216    %ins2:_(<2 x s64>) = G_INSERT_VECTOR_ELT %ins1, %arg2(s64), %one(s64)217    %extract:_(s64) = G_EXTRACT_VECTOR_ELT %ins2(<2 x s64>), %zero(s64)218    $x0 = COPY %extract(s64)219    RET_ReallyLR implicit $x0220 221...222---223# This test checks that this combine runs after the insertvec->build_vector224name:            extract_from_insert2225tracksRegLiveness: true226liveins:227  - { reg: '$x0' }228  - { reg: '$x1' }229frameInfo:230  maxAlignment:    1231body:             |232  bb.1:233    liveins: $q0, $x0, $x1234    ; CHECK-LABEL: name: extract_from_insert2235    ; CHECK: liveins: $q0, $x0, $x1236    ; CHECK-NEXT: {{  $}}237    ; CHECK-NEXT: %arg1:_(s64) = COPY $x0238    ; CHECK-NEXT: %arg2:_(s64) = COPY $x1239    ; CHECK-NEXT: %ins2:_(<2 x s64>) = G_BUILD_VECTOR %arg1(s64), %arg2(s64)240    ; CHECK-NEXT: $q0 = COPY %ins2(<2 x s64>)241    ; CHECK-NEXT: RET_ReallyLR implicit $q0242    %arg0:_(<2 x s64>) = COPY $q0243    %arg1:_(s64) = COPY $x0244    %arg2:_(s64) = COPY $x1245    %zero:_(s64) = G_CONSTANT i64 0246    %one:_(s64) = G_CONSTANT i64 1247    %ins1:_(<2 x s64>) = G_INSERT_VECTOR_ELT %arg0, %arg1(s64), %zero(s64)248    %ins2:_(<2 x s64>) = G_INSERT_VECTOR_ELT %ins1, %arg2(s64), %one(s64)249    $q0 = COPY %ins2(<2 x s64>)250    RET_ReallyLR implicit $q0251 252...253---254name:            extract_from_idx_negative255alignment:       4256liveins:257  - { reg: '$x0' }258  - { reg: '$x1' }259frameInfo:260  maxAlignment:    1261body:             |262  bb.1:263    liveins: $x0, $x1264    ; CHECK-LABEL: name: extract_from_idx_negative265    ; CHECK: liveins: $x0, $x1266    ; CHECK-NEXT: {{  $}}267    ; CHECK-NEXT: %extract:_(s64) = G_IMPLICIT_DEF268    ; CHECK-NEXT: $x0 = COPY %extract(s64)269    ; CHECK-NEXT: RET_ReallyLR implicit $x0270    %vec:_(<2 x s64>) = COPY $q0271    %idx:_(s64) = G_CONSTANT i64 -2272    %extract:_(s64) = G_EXTRACT_VECTOR_ELT %vec(<2 x s64>), %idx(s64)273    $x0 = COPY %extract(s64)274    RET_ReallyLR implicit $x0275 276...277---278name:            extract_from_vector_undef279alignment:       4280liveins:281  - { reg: '$x0' }282  - { reg: '$x1' }283frameInfo:284  maxAlignment:    1285body:             |286  bb.1:287    liveins: $x0, $x1288    ; CHECK-LABEL: name: extract_from_vector_undef289    ; CHECK: liveins: $x0, $x1290    ; CHECK-NEXT: {{  $}}291    ; CHECK-NEXT: %extract:_(s64) = G_IMPLICIT_DEF292    ; CHECK-NEXT: $x0 = COPY %extract(s64)293    ; CHECK-NEXT: RET_ReallyLR implicit $x0294    %vec:_(<2 x s64>) = G_IMPLICIT_DEF295    %idx:_(s64) = G_CONSTANT i64 -2296    %extract:_(s64) = G_EXTRACT_VECTOR_ELT %vec(<2 x s64>), %idx(s64)297    $x0 = COPY %extract(s64)298    RET_ReallyLR implicit $x0299 300...301---302name:            extract_from_index_undef303alignment:       4304liveins:305  - { reg: '$x0' }306  - { reg: '$x1' }307frameInfo:308  maxAlignment:    1309body:             |310  bb.1:311    ; CHECK-LABEL: name: extract_from_index_undef312    ; CHECK: %extract:_(s64) = G_IMPLICIT_DEF313    ; CHECK-NEXT: $x0 = COPY %extract(s64)314    ; CHECK-NEXT: RET_ReallyLR implicit $x0315    %vec:_(<2 x s64>) = COPY $q0316    %idx:_(s64) = G_IMPLICIT_DEF317    %extract:_(s64) = G_EXTRACT_VECTOR_ELT %vec(<2 x s64>), %idx(s64)318    $x0 = COPY %extract(s64)319    RET_ReallyLR implicit $x0320 321...322---323name:            extract_from_index_too_large324alignment:       4325liveins:326  - { reg: '$x0' }327  - { reg: '$x1' }328frameInfo:329  maxAlignment:    1330body:             |331  bb.1:332    liveins: $x0, $x1333    ; CHECK-LABEL: name: extract_from_index_too_large334    ; CHECK: liveins: $x0, $x1335    ; CHECK-NEXT: {{  $}}336    ; CHECK-NEXT: %extract:_(s64) = G_IMPLICIT_DEF337    ; CHECK-NEXT: $x0 = COPY %extract(s64)338    ; CHECK-NEXT: RET_ReallyLR implicit $x0339    %vec:_(<2 x s64>) = COPY $q0340    %idx:_(s64) = G_CONSTANT i64 3000341    %extract:_(s64) = G_EXTRACT_VECTOR_ELT %vec(<2 x s64>), %idx(s64)342    $x0 = COPY %extract(s64)343    RET_ReallyLR implicit $x0344 345...346---347name:            extract_with_freeze348alignment:       4349liveins:350  - { reg: '$x0' }351  - { reg: '$x1' }352frameInfo:353  maxAlignment:    1354body:             |355  bb.1:356    liveins: $x0, $x1357    ; CHECK-LABEL: name: extract_with_freeze358    ; CHECK: liveins: $x0, $x1359    ; CHECK-NEXT: {{  $}}360    ; CHECK-NEXT: %vec:_(<2 x s64>) = COPY $q0361    ; CHECK-NEXT: %idx:_(s64) = COPY $x1362    ; CHECK-NEXT: %fvec:_(<2 x s64>) = G_FREEZE %vec363    ; CHECK-NEXT: %extract:_(s64) = G_EXTRACT_VECTOR_ELT %fvec(<2 x s64>), %idx(s64)364    ; CHECK-NEXT: $x0 = COPY %extract(s64)365    ; CHECK-NEXT: RET_ReallyLR implicit $x0366    %vec:_(<2 x s64>) = COPY $q0367    %idx:_(s64) = COPY $x1368    %fvec:_(<2 x s64>) = G_FREEZE %vec369    %extract:_(s64) = G_EXTRACT_VECTOR_ELT %fvec(<2 x s64>), %idx(s64)370    $x0 = COPY %extract(s64)371    RET_ReallyLR implicit $x0372 373...374---375name:            extract_from_insert_symmetry376alignment:       4377liveins:378  - { reg: '$x0' }379  - { reg: '$x1' }380frameInfo:381  maxAlignment:    1382body:             |383  bb.1:384    liveins: $x0, $x1385    ; CHECK-LABEL: name: extract_from_insert_symmetry386    ; CHECK: liveins: $x0, $x1387    ; CHECK-NEXT: {{  $}}388    ; CHECK-NEXT: %element:_(s64) = COPY $x1389    ; CHECK-NEXT: $x0 = COPY %element(s64)390    ; CHECK-NEXT: RET_ReallyLR implicit $x0391    %vec:_(<2 x s64>) = COPY $q0392    %idx:_(s64) = COPY $x1393    %element:_(s64) = COPY $x1394    %invec:_(<2 x s64>) = G_INSERT_VECTOR_ELT %vec(<2 x s64>), %element(s64), %idx(s64)395    %extract:_(s64) = G_EXTRACT_VECTOR_ELT %invec(<2 x s64>), %idx(s64)396    $x0 = COPY %extract(s64)397    RET_ReallyLR implicit $x0398 399...400---401name:            extract_from_insert_with_different_consts402alignment:       4403liveins:404  - { reg: '$x0' }405  - { reg: '$x1' }406frameInfo:407  maxAlignment:    1408body:             |409  bb.1:410    liveins: $x0, $x1411    ; CHECK-LABEL: name: extract_from_insert_with_different_consts412    ; CHECK: liveins: $x0, $x1413    ; CHECK-NEXT: {{  $}}414    ; CHECK-NEXT: %vec:_(<2 x s64>) = COPY $q0415    ; CHECK-NEXT: %idx2:_(s64) = G_CONSTANT i64 1416    ; CHECK-NEXT: %extract:_(s64) = G_EXTRACT_VECTOR_ELT %vec(<2 x s64>), %idx2(s64)417    ; CHECK-NEXT: $x0 = COPY %extract(s64)418    ; CHECK-NEXT: RET_ReallyLR implicit $x0419    %vec:_(<2 x s64>) = COPY $q0420    %idx:_(s64) = G_CONSTANT i64 0421    %idx2:_(s64) = G_CONSTANT i64 1422    %element:_(s64) = COPY $x1423    %invec:_(<2 x s64>) = G_INSERT_VECTOR_ELT %vec(<2 x s64>), %element(s64), %idx(s64)424    %extract:_(s64) = G_EXTRACT_VECTOR_ELT %invec(<2 x s64>), %idx2(s64)425    $x0 = COPY %extract(s64)426    RET_ReallyLR implicit $x0427 428...429---430name:            extract_from_build_vector_non_const431alignment:       4432liveins:433  - { reg: '$x0' }434  - { reg: '$x1' }435frameInfo:436  maxAlignment:    1437body:             |438  bb.1:439    liveins: $x0, $x1440    ; CHECK-LABEL: name: extract_from_build_vector_non_const441    ; CHECK: liveins: $x0, $x1442    ; CHECK-NEXT: {{  $}}443    ; CHECK-NEXT: %idx:_(s64) = COPY $x0444    ; CHECK-NEXT: %arg1:_(s64) = COPY $x0445    ; CHECK-NEXT: %arg2:_(s64) = COPY $x1446    ; CHECK-NEXT: %bv:_(<2 x s64>) = G_BUILD_VECTOR %arg1(s64), %arg2(s64)447    ; CHECK-NEXT: %extract:_(s64) = G_EXTRACT_VECTOR_ELT %bv(<2 x s64>), %idx(s64)448    ; CHECK-NEXT: $x0 = COPY %extract(s64)449    ; CHECK-NEXT: RET_ReallyLR implicit $x0450    %vec:_(<2 x s64>) = COPY $q0451    %idx:_(s64) = COPY $x0452    %arg1:_(s64) = COPY $x0453    %arg2:_(s64) = COPY $x1454    %bv:_(<2 x s64>) = G_BUILD_VECTOR %arg1(s64), %arg2(s64)455    %extract:_(s64) = G_EXTRACT_VECTOR_ELT %bv(<2 x s64>), %idx(s64)456    $x0 = COPY %extract(s64)457    RET_ReallyLR implicit $x0458 459...460---461name:            extract_from_build_vector_const462alignment:       4463liveins:464  - { reg: '$x0' }465  - { reg: '$x1' }466frameInfo:467  maxAlignment:    1468body:             |469  bb.1:470    liveins: $x0, $x1471    ; CHECK-LABEL: name: extract_from_build_vector_const472    ; CHECK: liveins: $x0, $x1473    ; CHECK-NEXT: {{  $}}474    ; CHECK-NEXT: %arg1:_(s64) = COPY $x0475    ; CHECK-NEXT: $x0 = COPY %arg1(s64)476    ; CHECK-NEXT: RET_ReallyLR implicit $x0477    %vec:_(<2 x s64>) = COPY $q0478    %idx:_(s64) = G_CONSTANT i64 0479    %arg1:_(s64) = COPY $x0480    %arg2:_(s64) = COPY $x1481    %bv:_(<2 x s64>) = G_BUILD_VECTOR %arg1(s64), %arg2(s64)482    %extract:_(s64) = G_EXTRACT_VECTOR_ELT %bv(<2 x s64>), %idx(s64)483    $x0 = COPY %extract(s64)484    RET_ReallyLR implicit $x0485 486...487---488name:            extract_from_build_vector_trunc_const2489alignment:       4490liveins:491  - { reg: '$x0' }492  - { reg: '$x1' }493frameInfo:494  maxAlignment:    1495body:             |496  bb.1:497    liveins: $x0, $x1498    ; CHECK-LABEL: name: extract_from_build_vector_trunc_const2499    ; CHECK: liveins: $x0, $x1500    ; CHECK-NEXT: {{  $}}501    ; CHECK-NEXT: %arg1:_(s64) = COPY $x0502    ; CHECK-NEXT: %extract:_(s32) = G_TRUNC %arg1(s64)503    ; CHECK-NEXT: $w0 = COPY %extract(s32)504    ; CHECK-NEXT: RET_ReallyLR implicit $x0505    %vec:_(<2 x s64>) = COPY $q0506    %arg1:_(s64) = COPY $x0507    %arg2:_(s64) = COPY $x1508    %arg3:_(s64) = COPY $x0509    %arg4:_(s64) = COPY $x1510    %idx:_(s64) = G_CONSTANT i64 0511    %bv:_(<4 x s32>) = G_BUILD_VECTOR_TRUNC %arg1(s64), %arg2(s64), %arg3(s64), %arg4(s64)512    %extract:_(s32) = G_EXTRACT_VECTOR_ELT %bv(<4 x s32>), %idx(s64)513    $w0 = COPY %extract(s32)514    RET_ReallyLR implicit $x0515...516---517name:            extract_from_build_vector_trunc2518alignment:       4519liveins:520  - { reg: '$x0' }521  - { reg: '$x1' }522frameInfo:523  maxAlignment:    1524body:             |525  bb.1:526    liveins: $x0, $x1527    ; CHECK-LABEL: name: extract_from_build_vector_trunc2528    ; CHECK: liveins: $x0, $x1529    ; CHECK-NEXT: {{  $}}530    ; CHECK-NEXT: %arg1:_(s64) = COPY $x0531    ; CHECK-NEXT: %arg2:_(s64) = COPY $x1532    ; CHECK-NEXT: %idx:_(s64) = COPY $x0533    ; CHECK-NEXT: %bv:_(<2 x s32>) = G_BUILD_VECTOR_TRUNC %arg1(s64), %arg2(s64)534    ; CHECK-NEXT: %extract:_(s32) = G_EXTRACT_VECTOR_ELT %bv(<2 x s32>), %idx(s64)535    ; CHECK-NEXT: $w0 = COPY %extract(s32)536    ; CHECK-NEXT: RET_ReallyLR implicit $x0537    %arg1:_(s64) = COPY $x0538    %arg2:_(s64) = COPY $x1539    %idx:_(s64) = COPY $x0540    %bv:_(<2 x s32>) = G_BUILD_VECTOR_TRUNC %arg1(s64), %arg2(s64)541    %extract:_(s32) = G_EXTRACT_VECTOR_ELT %bv(<2 x s32>), %idx(s64)542    $w0 = COPY %extract(s32)543    RET_ReallyLR implicit $x0544...545---546name:            extract_from_build_vector_trunc_const3547alignment:       4548liveins:549  - { reg: '$x0' }550  - { reg: '$x1' }551frameInfo:552  maxAlignment:    1553body:             |554  bb.1:555    liveins: $x0, $x1556    ; CHECK-LABEL: name: extract_from_build_vector_trunc_const3557    ; CHECK: liveins: $x0, $x1558    ; CHECK-NEXT: {{  $}}559    ; CHECK-NEXT: %arg1:_(s128) = COPY $q0560    ; CHECK-NEXT: %extract:_(s64) = G_TRUNC %arg1(s128)561    ; CHECK-NEXT: $x0 = COPY %extract(s64)562    ; CHECK-NEXT: RET_ReallyLR implicit $x0563    %arg1:_(s128) = COPY $q0564    %arg2:_(s128) = COPY $q1565    %idx:_(s64) = G_CONSTANT i64 0566    %bv:_(<2 x s64>) = G_BUILD_VECTOR_TRUNC %arg1(s128), %arg2(s128)567    %extract:_(s64) = G_EXTRACT_VECTOR_ELT %bv(<2 x s64>), %idx(s64)568    $x0 = COPY %extract(s64)569    RET_ReallyLR implicit $x0570...571---572name:            extract_from_build_vector_shuffle_vector_undef573body:             |574  bb.1:575    liveins: $x0, $x1576    ; CHECK-LABEL: name: extract_from_build_vector_shuffle_vector_undef577    ; CHECK: liveins: $x0, $x1578    ; CHECK-NEXT: {{  $}}579    ; CHECK-NEXT: %extract:_(s32) = G_IMPLICIT_DEF580    ; CHECK-NEXT: $w0 = COPY %extract(s32)581    ; CHECK-NEXT: RET_ReallyLR implicit $x0582    %arg1:_(<4 x s32>) = COPY $q0583    %arg2:_(<4 x s32>) = COPY $q1584    %idx:_(s64) = G_CONSTANT i64 0585    %sv:_(<4 x s32>) = G_SHUFFLE_VECTOR %arg1(<4 x s32>), %arg2(<4 x s32>), shufflemask(-1, 0, 0, 0)586    %extract:_(s32) = G_EXTRACT_VECTOR_ELT %sv(<4 x s32>), %idx(s64)587    $w0 = COPY %extract(s32)588    RET_ReallyLR implicit $x0589...590---591name:            extract_from_build_vector_shuffle_vector_opaque592body:             |593  bb.1:594    liveins: $x0, $x1595    ; CHECK-LABEL: name: extract_from_build_vector_shuffle_vector_opaque596    ; CHECK: liveins: $x0, $x1597    ; CHECK-NEXT: {{  $}}598    ; CHECK-NEXT: %arg1:_(<4 x s32>) = COPY $q0599    ; CHECK-NEXT: %idx:_(s64) = COPY $x1600    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<4 x s32>) = G_IMPLICIT_DEF601    ; CHECK-NEXT: %sv:_(<4 x s32>) = G_SHUFFLE_VECTOR %arg1(<4 x s32>), [[DEF]], shufflemask(undef, 0, 0, 0)602    ; CHECK-NEXT: %extract:_(s32) = G_EXTRACT_VECTOR_ELT %sv(<4 x s32>), %idx(s64)603    ; CHECK-NEXT: $w0 = COPY %extract(s32)604    ; CHECK-NEXT: RET_ReallyLR implicit $x0605    %arg1:_(<4 x s32>) = COPY $q0606    %arg2:_(<4 x s32>) = COPY $q1607    %idx:_(s64) = COPY $x1608    %sv:_(<4 x s32>) = G_SHUFFLE_VECTOR %arg1(<4 x s32>), %arg2(<4 x s32>), shufflemask(-1, 0, 0, 0)609    %extract:_(s32) = G_EXTRACT_VECTOR_ELT %sv(<4 x s32>), %idx(s64)610    $w0 = COPY %extract(s32)611    RET_ReallyLR implicit $x0612...613---614name:            extract_from_build_vector_shuffle_vector_const615body:             |616  bb.1:617    liveins: $x0, $x1618    ; CHECK-LABEL: name: extract_from_build_vector_shuffle_vector_const619    ; CHECK: liveins: $x0, $x1620    ; CHECK-NEXT: {{  $}}621    ; CHECK-NEXT: %arg1:_(<4 x s32>) = COPY $q0622    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 3623    ; CHECK-NEXT: %extract:_(s32) = G_EXTRACT_VECTOR_ELT %arg1(<4 x s32>), [[C]](s64)624    ; CHECK-NEXT: $w0 = COPY %extract(s32)625    ; CHECK-NEXT: RET_ReallyLR implicit $x0626    %arg1:_(<4 x s32>) = COPY $q0627    %arg2:_(<4 x s32>) = COPY $q1628    %idx:_(s64) = G_CONSTANT i64 0629    %sv:_(<4 x s32>) = G_SHUFFLE_VECTOR %arg1(<4 x s32>), %arg2(<4 x s32>), shufflemask(3, 0, 0, 0)630    %extract:_(s32) = G_EXTRACT_VECTOR_ELT %sv(<4 x s32>), %idx(s64)631    $w0 = COPY %extract(s32)632    RET_ReallyLR implicit $x0633...634---635name:            extract_from_build_vector_const_huge636alignment:       4637liveins:638  - { reg: '$x0' }639  - { reg: '$x1' }640frameInfo:641  maxAlignment:    1642body:             |643  bb.1:644    liveins: $x0, $x1645    ; CHECK-LABEL: name: extract_from_build_vector_const_huge646    ; CHECK: liveins: $x0, $x1647    ; CHECK-NEXT: {{  $}}648    ; CHECK-NEXT: %arg1:_(s64) = COPY $x0649    ; CHECK-NEXT: $x0 = COPY %arg1(s64)650    ; CHECK-NEXT: RET_ReallyLR implicit $x0651    %vec:_(<2 x s64>) = COPY $q0652    %idx:_(s64) = G_CONSTANT i64 0653    %arg1:_(s64) = COPY $x0654    %arg2:_(s64) = COPY $x1655    %bv:_(<18 x s64>) = G_BUILD_VECTOR %arg1(s64), %arg2(s64), %arg1(s64), %arg2(s64), %arg1(s64), %arg2(s64), %arg1(s64), %arg2(s64), %arg1(s64), %arg2(s64), %arg1(s64), %arg2(s64), %arg1(s64), %arg2(s64), %arg1(s64), %arg2(s64), %arg1(s64), %arg2(s64)656    %extract:_(s64) = G_EXTRACT_VECTOR_ELT %bv(<18 x s64>), %idx(s64)657    $x0 = COPY %extract(s64)658    RET_ReallyLR implicit $x0659 660...661---662