brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.5 KiB · f11396e Raw
432 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=aarch64 -run-pass=aarch64-postlegalizer-lowering -verify-machineinstrs %s -o - | FileCheck %s3 4---5name:            splat_4xi326alignment:       47legalized:       true8tracksRegLiveness: true9body:             |10  bb.1.entry:11    liveins: $w012 13    ; CHECK-LABEL: name: splat_4xi3214    ; CHECK: liveins: $w015    ; CHECK-NEXT: {{  $}}16    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w017    ; CHECK-NEXT: [[DUP:%[0-9]+]]:_(<4 x s32>) = G_DUP [[COPY]](s32)18    ; CHECK-NEXT: $q0 = COPY [[DUP]](<4 x s32>)19    ; CHECK-NEXT: RET_ReallyLR implicit $q020    %0:_(s32) = COPY $w021    %2:_(<4 x s32>) = G_IMPLICIT_DEF22    %3:_(s64) = G_CONSTANT i64 023    %1:_(<4 x s32>) = G_INSERT_VECTOR_ELT %2, %0(s32), %3(s64)24    %4:_(<4 x s32>) = G_SHUFFLE_VECTOR %1(<4 x s32>), %2, shufflemask(0, 0, 0, 0)25    $q0 = COPY %4(<4 x s32>)26    RET_ReallyLR implicit $q027 28...29---30name:            splat_2xi6431alignment:       432legalized:       true33tracksRegLiveness: true34body:             |35  bb.1.entry:36    liveins: $x037 38    ; CHECK-LABEL: name: splat_2xi6439    ; CHECK: liveins: $x040    ; CHECK-NEXT: {{  $}}41    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x042    ; CHECK-NEXT: [[DUP:%[0-9]+]]:_(<2 x s64>) = G_DUP [[COPY]](s64)43    ; CHECK-NEXT: $q0 = COPY [[DUP]](<2 x s64>)44    ; CHECK-NEXT: RET_ReallyLR implicit $q045    %0:_(s64) = COPY $x046    %2:_(<2 x s64>) = G_IMPLICIT_DEF47    %3:_(s64) = G_CONSTANT i64 048    %1:_(<2 x s64>) = G_INSERT_VECTOR_ELT %2, %0(s64), %3(s64)49    %4:_(<2 x s64>) = G_SHUFFLE_VECTOR %1(<2 x s64>), %2, shufflemask(0, 0)50    $q0 = COPY %4(<2 x s64>)51    RET_ReallyLR implicit $q052 53...54---55name:            splat_2xi3256alignment:       457legalized:       true58tracksRegLiveness: true59body:             |60  bb.1.entry:61    liveins: $w062 63    ; CHECK-LABEL: name: splat_2xi3264    ; CHECK: liveins: $w065    ; CHECK-NEXT: {{  $}}66    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w067    ; CHECK-NEXT: [[DUP:%[0-9]+]]:_(<2 x s32>) = G_DUP [[COPY]](s32)68    ; CHECK-NEXT: $d0 = COPY [[DUP]](<2 x s32>)69    ; CHECK-NEXT: RET_ReallyLR implicit $d070    %0:_(s32) = COPY $w071    %2:_(<2 x s32>) = G_IMPLICIT_DEF72    %3:_(s64) = G_CONSTANT i64 073    %1:_(<2 x s32>) = G_INSERT_VECTOR_ELT %2, %0(s32), %3(s64)74    %4:_(<2 x s32>) = G_SHUFFLE_VECTOR %1(<2 x s32>), %2, shufflemask(0, 0)75    $d0 = COPY %4(<2 x s32>)76    RET_ReallyLR implicit $d077 78...79---80name:            splat_4xf3281alignment:       482legalized:       true83tracksRegLiveness: true84body:             |85  bb.1.entry:86    liveins: $s087 88    ; CHECK-LABEL: name: splat_4xf3289    ; CHECK: liveins: $s090    ; CHECK-NEXT: {{  $}}91    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s092    ; CHECK-NEXT: [[DUP:%[0-9]+]]:_(<4 x s32>) = G_DUP [[COPY]](s32)93    ; CHECK-NEXT: $q0 = COPY [[DUP]](<4 x s32>)94    ; CHECK-NEXT: RET_ReallyLR implicit $q095    %0:_(s32) = COPY $s096    %2:_(<4 x s32>) = G_IMPLICIT_DEF97    %3:_(s64) = G_CONSTANT i64 098    %1:_(<4 x s32>) = G_INSERT_VECTOR_ELT %2, %0(s32), %3(s64)99    %4:_(<4 x s32>) = G_SHUFFLE_VECTOR %1(<4 x s32>), %2, shufflemask(0, 0, 0, 0)100    $q0 = COPY %4(<4 x s32>)101    RET_ReallyLR implicit $q0102 103...104---105name:            splat_2xf64106alignment:       4107legalized:       true108tracksRegLiveness: true109body:             |110  bb.1.entry:111    liveins: $d0112 113    ; CHECK-LABEL: name: splat_2xf64114    ; CHECK: liveins: $d0115    ; CHECK-NEXT: {{  $}}116    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d0117    ; CHECK-NEXT: [[DUP:%[0-9]+]]:_(<2 x s64>) = G_DUP [[COPY]](s64)118    ; CHECK-NEXT: $q0 = COPY [[DUP]](<2 x s64>)119    ; CHECK-NEXT: RET_ReallyLR implicit $q0120    %0:_(s64) = COPY $d0121    %2:_(<2 x s64>) = G_IMPLICIT_DEF122    %3:_(s64) = G_CONSTANT i64 0123    %1:_(<2 x s64>) = G_INSERT_VECTOR_ELT %2, %0(s64), %3(s64)124    %4:_(<2 x s64>) = G_SHUFFLE_VECTOR %1(<2 x s64>), %2, shufflemask(0, 0)125    $q0 = COPY %4(<2 x s64>)126    RET_ReallyLR implicit $q0127 128...129---130name:            splat_2xf32131alignment:       4132legalized:       true133tracksRegLiveness: true134body:             |135  bb.1.entry:136    liveins: $s0137 138    ; CHECK-LABEL: name: splat_2xf32139    ; CHECK: liveins: $s0140    ; CHECK-NEXT: {{  $}}141    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0142    ; CHECK-NEXT: [[DUP:%[0-9]+]]:_(<2 x s32>) = G_DUP [[COPY]](s32)143    ; CHECK-NEXT: $d0 = COPY [[DUP]](<2 x s32>)144    ; CHECK-NEXT: RET_ReallyLR implicit $d0145    %0:_(s32) = COPY $s0146    %2:_(<2 x s32>) = G_IMPLICIT_DEF147    %3:_(s64) = G_CONSTANT i64 0148    %1:_(<2 x s32>) = G_INSERT_VECTOR_ELT %2, %0(s32), %3(s64)149    %4:_(<2 x s32>) = G_SHUFFLE_VECTOR %1(<2 x s32>), %2, shufflemask(0, 0)150    $d0 = COPY %4(<2 x s32>)151    RET_ReallyLR implicit $d0152 153...154---155name:            splat_2xf64_copies156alignment:       4157legalized:       true158tracksRegLiveness: true159body:             |160  bb.1.entry:161    liveins: $d0162 163    ; This test is exactly the same as splat_2xf64, except it adds two copies.164    ; These copies shouldn't get in the way of matching the dup pattern.165    ; CHECK-LABEL: name: splat_2xf64_copies166    ; CHECK: liveins: $d0167    ; CHECK-NEXT: {{  $}}168    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $d0169    ; CHECK-NEXT: [[DUP:%[0-9]+]]:_(<2 x s64>) = G_DUP [[COPY]](s64)170    ; CHECK-NEXT: $q0 = COPY [[DUP]](<2 x s64>)171    ; CHECK-NEXT: RET_ReallyLR implicit $q0172    %0:_(s64) = COPY $d0173    %2:_(<2 x s64>) = G_IMPLICIT_DEF174    %6:_(<2 x s64>) = COPY %2175    %3:_(s64) = G_CONSTANT i64 0176    %1:_(<2 x s64>) = G_INSERT_VECTOR_ELT %6, %0(s64), %3(s64)177    %7:_(<2 x s64>) = COPY %1178    %4:_(<2 x s64>) = G_SHUFFLE_VECTOR %7(<2 x s64>), %2, shufflemask(0, 0)179    $q0 = COPY %4(<2 x s64>)180    RET_ReallyLR implicit $q0181 182...183---184name:            not_all_zeros185alignment:       4186legalized:       true187tracksRegLiveness: true188body:             |189  bb.1.entry:190    liveins: $x0191    ; Make sure that we don't do the optimization when it's not all zeroes.192    ; CHECK-LABEL: name: not_all_zeros193    ; CHECK: liveins: $x0194    ; CHECK-NEXT: {{  $}}195    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0196    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<2 x s64>) = G_IMPLICIT_DEF197    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0198    ; CHECK-NEXT: [[IVEC:%[0-9]+]]:_(<2 x s64>) = G_INSERT_VECTOR_ELT [[DEF]], [[COPY]](s64), [[C]](s64)199    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY [[IVEC]](<2 x s64>)200    ; CHECK-NEXT: $q0 = COPY [[COPY1]](<2 x s64>)201    ; CHECK-NEXT: RET_ReallyLR implicit $q0202    %0:_(s64) = COPY $x0203    %2:_(<2 x s64>) = G_IMPLICIT_DEF204    %3:_(s64) = G_CONSTANT i64 0205    %1:_(<2 x s64>) = G_INSERT_VECTOR_ELT %2, %0(s64), %3(s64)206    %4:_(<2 x s64>) = G_SHUFFLE_VECTOR %1(<2 x s64>), %2, shufflemask(0, 1)207    $q0 = COPY %4(<2 x s64>)208    RET_ReallyLR implicit $q0209 210...211---212name:            all_undef213alignment:       4214legalized:       true215tracksRegLiveness: true216body:             |217  bb.1.entry:218    liveins: $x0219    ; If all the elements are undefined, we consider it a splat. In this case,220    ; we can choose 0 as our index.221    ; We should get a G_DUP here.222    ; CHECK-LABEL: name: all_undef223    ; CHECK: liveins: $x0224    ; CHECK-NEXT: {{  $}}225    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0226    ; CHECK-NEXT: [[DUP:%[0-9]+]]:_(<2 x s64>) = G_DUP [[COPY]](s64)227    ; CHECK-NEXT: $q0 = COPY [[DUP]](<2 x s64>)228    ; CHECK-NEXT: RET_ReallyLR implicit $q0229    %0:_(s64) = COPY $x0230    %2:_(<2 x s64>) = G_IMPLICIT_DEF231    %3:_(s64) = G_CONSTANT i64 0232    %1:_(<2 x s64>) = G_INSERT_VECTOR_ELT %2, %0(s64), %3(s64)233    %4:_(<2 x s64>) = G_SHUFFLE_VECTOR %1(<2 x s64>), %2, shufflemask(-1, -1)234    $q0 = COPY %4(<2 x s64>)235    RET_ReallyLR implicit $q0236 237...238---239name:            one_undef240alignment:       4241legalized:       true242tracksRegLiveness: true243body:             |244  bb.1.entry:245    liveins: $s0246    ; Make sure we can skip past undef values.247    ; We should get a G_DUP here.248    ; CHECK-LABEL: name: one_undef249    ; CHECK: liveins: $s0250    ; CHECK-NEXT: {{  $}}251    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0252    ; CHECK-NEXT: [[DUP:%[0-9]+]]:_(<4 x s32>) = G_DUP [[COPY]](s32)253    ; CHECK-NEXT: $q0 = COPY [[DUP]](<4 x s32>)254    ; CHECK-NEXT: RET_ReallyLR implicit $q0255    %0:_(s32) = COPY $s0256    %2:_(<4 x s32>) = G_IMPLICIT_DEF257    %3:_(s64) = G_CONSTANT i64 0258    %1:_(<4 x s32>) = G_INSERT_VECTOR_ELT %2, %0(s32), %3(s64)259    %4:_(<4 x s32>) = G_SHUFFLE_VECTOR %1(<4 x s32>), %2, shufflemask(0, -1, 0, 0)260    $q0 = COPY %4(<4 x s32>)261    RET_ReallyLR implicit $q0262 263...264---265name:            not_all_zeros_with_undefs266alignment:       4267legalized:       true268tracksRegLiveness: true269body:             |270  bb.1.entry:271    liveins: $s0272    ; CHECK-LABEL: name: not_all_zeros_with_undefs273    ; CHECK: liveins: $s0274    ; CHECK-NEXT: {{  $}}275    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0276    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<4 x s32>) = G_IMPLICIT_DEF277    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0278    ; CHECK-NEXT: [[IVEC:%[0-9]+]]:_(<4 x s32>) = G_INSERT_VECTOR_ELT [[DEF]], [[COPY]](s32), [[C]](s64)279    ; CHECK-NEXT: [[SHUF:%[0-9]+]]:_(<4 x s32>) = G_SHUFFLE_VECTOR [[IVEC]](<4 x s32>), [[DEF]], shufflemask(undef, 0, 0, 3)280    ; CHECK-NEXT: $q0 = COPY [[SHUF]](<4 x s32>)281    ; CHECK-NEXT: RET_ReallyLR implicit $q0282    %0:_(s32) = COPY $s0283    %2:_(<4 x s32>) = G_IMPLICIT_DEF284    %3:_(s64) = G_CONSTANT i64 0285    %1:_(<4 x s32>) = G_INSERT_VECTOR_ELT %2, %0(s32), %3(s64)286    %4:_(<4 x s32>) = G_SHUFFLE_VECTOR %1(<4 x s32>), %2, shufflemask(-1, 0, 0, 3)287    $q0 = COPY %4(<4 x s32>)288    RET_ReallyLR implicit $q0289 290...291---292name:            splat_4xi16293alignment:       4294legalized:       true295tracksRegLiveness: true296body:             |297  bb.1.entry:298    liveins: $h0299    ; CHECK-LABEL: name: splat_4xi16300    ; CHECK: liveins: $h0301    ; CHECK-NEXT: {{  $}}302    ; CHECK-NEXT: %copy:_(s16) = COPY $h0303    ; CHECK-NEXT: %splat:_(<4 x s16>) = G_DUP %copy(s16)304    ; CHECK-NEXT: $d0 = COPY %splat(<4 x s16>)305    ; CHECK-NEXT: RET_ReallyLR implicit $d0306    %copy:_(s16) = COPY $h0307    %undef:_(<4 x s16>) = G_IMPLICIT_DEF308    %cst:_(s64) = G_CONSTANT i64 0309    %ins:_(<4 x s16>) = G_INSERT_VECTOR_ELT %undef, %copy(s16), %cst(s64)310    %splat:_(<4 x s16>) = G_SHUFFLE_VECTOR %ins(<4 x s16>), %undef, shufflemask(0, 0, 0, 0)311    $d0 = COPY %splat(<4 x s16>)312    RET_ReallyLR implicit $d0313 314...315---316name:            splat_8xi8317alignment:       4318legalized:       true319tracksRegLiveness: true320body:             |321  bb.1.entry:322    liveins: $w0323    ; CHECK-LABEL: name: splat_8xi8324    ; CHECK: liveins: $w0325    ; CHECK-NEXT: {{  $}}326    ; CHECK-NEXT: %copy:_(s32) = COPY $w0327    ; CHECK-NEXT: %splat:_(<8 x s8>) = G_DUP %copy(s32)328    ; CHECK-NEXT: $d0 = COPY %splat(<8 x s8>)329    ; CHECK-NEXT: RET_ReallyLR implicit $d0330    %copy:_(s32) = COPY $w0331    %undef:_(<8 x s8>) = G_IMPLICIT_DEF332    %cst:_(s64) = G_CONSTANT i64 0333    %ins:_(<8 x s8>) = G_INSERT_VECTOR_ELT %undef, %copy(s32), %cst(s64)334    %splat:_(<8 x s8>) = G_SHUFFLE_VECTOR %ins(<8 x s8>), %undef, shufflemask(0, 0, 0, 0, 0, 0, 0, 0)335    $d0 = COPY %splat(<8 x s8>)336    RET_ReallyLR implicit $d0337 338...339---340name:            build_vector341alignment:       4342legalized:       true343tracksRegLiveness: true344body:             |345  bb.1.entry:346    liveins: $w0, $w1, $w2, $w3347    ; The G_SHUFFLE_VECTOR is fed by a G_BUILD_VECTOR, and the 0th input348    ; operand is not a constant. We should get a G_DUP.349    ; CHECK-LABEL: name: build_vector350    ; CHECK: liveins: $w0, $w1, $w2, $w3351    ; CHECK-NEXT: {{  $}}352    ; CHECK-NEXT: %lane:_(s32) = COPY $w0353    ; CHECK-NEXT: %b:_(s32) = COPY $w1354    ; CHECK-NEXT: %c:_(s32) = COPY $w2355    ; CHECK-NEXT: %d:_(s32) = COPY $w3356    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<4 x s32>) = G_IMPLICIT_DEF357    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0358    ; CHECK-NEXT: [[IVEC:%[0-9]+]]:_(<4 x s32>) = G_INSERT_VECTOR_ELT [[DEF]], %lane(s32), [[C]](s64)359    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1360    ; CHECK-NEXT: [[IVEC1:%[0-9]+]]:_(<4 x s32>) = G_INSERT_VECTOR_ELT [[IVEC]], %b(s32), [[C1]](s64)361    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2362    ; CHECK-NEXT: [[IVEC2:%[0-9]+]]:_(<4 x s32>) = G_INSERT_VECTOR_ELT [[IVEC1]], %c(s32), [[C2]](s64)363    ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 3364    ; CHECK-NEXT: [[IVEC3:%[0-9]+]]:_(<4 x s32>) = G_INSERT_VECTOR_ELT [[IVEC2]], %d(s32), [[C3]](s64)365    ; CHECK-NEXT: %buildvec:_(<4 x s32>) = COPY [[IVEC3]](<4 x s32>)366    ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 0367    ; CHECK-NEXT: %shuf:_(<4 x s32>) = G_DUPLANE32 %buildvec, [[C4]](s64)368    ; CHECK-NEXT: $q0 = COPY %shuf(<4 x s32>)369    ; CHECK-NEXT: RET_ReallyLR implicit $q0370    %lane:_(s32) = COPY $w0371    %b:_(s32) = COPY $w1372    %c:_(s32) = COPY $w2373    %d:_(s32) = COPY $w3374    %undef:_(<4 x s32>) = G_IMPLICIT_DEF375    %buildvec:_(<4 x s32>) = G_BUILD_VECTOR %lane, %b, %c, %d376    %shuf:_(<4 x s32>) = G_SHUFFLE_VECTOR %buildvec(<4 x s32>), %undef, shufflemask(0, 0, 0, 0)377    $q0 = COPY %shuf(<4 x s32>)378    RET_ReallyLR implicit $q0379 380...381---382name:            build_vector_rhs383alignment:       4384legalized:       true385tracksRegLiveness: true386body:             |387  bb.1.entry:388    liveins: $w0, $w1, $w2, $w3, $w4389    ; The G_SHUFFLE_VECTOR is fed by a G_BUILD_VECTOR, and the 0th input390    ; operand is not a constant. We should get a G_DUP.391    ; CHECK-LABEL: name: build_vector_rhs392    ; CHECK: liveins: $w0, $w1, $w2, $w3, $w4393    ; CHECK-NEXT: {{  $}}394    ; CHECK-NEXT: %lane_0:_(s32) = COPY $w0395    ; CHECK-NEXT: %lane_1:_(s32) = COPY $w1396    ; CHECK-NEXT: %b:_(s32) = COPY $w2397    ; CHECK-NEXT: %c:_(s32) = COPY $w3398    ; CHECK-NEXT: %d:_(s32) = COPY $w4399    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<4 x s32>) = G_IMPLICIT_DEF400    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0401    ; CHECK-NEXT: [[IVEC:%[0-9]+]]:_(<4 x s32>) = G_INSERT_VECTOR_ELT [[DEF]], %lane_0(s32), [[C]](s64)402    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1403    ; CHECK-NEXT: [[IVEC1:%[0-9]+]]:_(<4 x s32>) = G_INSERT_VECTOR_ELT [[IVEC]], %b(s32), [[C1]](s64)404    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 2405    ; CHECK-NEXT: [[IVEC2:%[0-9]+]]:_(<4 x s32>) = G_INSERT_VECTOR_ELT [[IVEC1]], %c(s32), [[C2]](s64)406    ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 3407    ; CHECK-NEXT: [[IVEC3:%[0-9]+]]:_(<4 x s32>) = G_INSERT_VECTOR_ELT [[IVEC2]], %d(s32), [[C3]](s64)408    ; CHECK-NEXT: %buildvec0:_(<4 x s32>) = COPY [[IVEC3]](<4 x s32>)409    ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(<4 x s32>) = G_IMPLICIT_DEF410    ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 0411    ; CHECK-NEXT: [[IVEC4:%[0-9]+]]:_(<4 x s32>) = G_INSERT_VECTOR_ELT [[DEF1]], %lane_1(s32), [[C4]](s64)412    ; CHECK-NEXT: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 1413    ; CHECK-NEXT: [[IVEC5:%[0-9]+]]:_(<4 x s32>) = G_INSERT_VECTOR_ELT [[IVEC4]], %b(s32), [[C5]](s64)414    ; CHECK-NEXT: [[C6:%[0-9]+]]:_(s64) = G_CONSTANT i64 2415    ; CHECK-NEXT: [[IVEC6:%[0-9]+]]:_(<4 x s32>) = G_INSERT_VECTOR_ELT [[IVEC5]], %c(s32), [[C6]](s64)416    ; CHECK-NEXT: [[C7:%[0-9]+]]:_(s64) = G_CONSTANT i64 3417    ; CHECK-NEXT: [[IVEC7:%[0-9]+]]:_(<4 x s32>) = G_INSERT_VECTOR_ELT [[IVEC6]], %d(s32), [[C7]](s64)418    ; CHECK-NEXT: %buildvec1:_(<4 x s32>) = COPY [[IVEC7]](<4 x s32>)419    ; CHECK-NEXT: %shuf:_(<4 x s32>) = G_SHUFFLE_VECTOR %buildvec0(<4 x s32>), %buildvec1, shufflemask(4, 4, 4, 4)420    ; CHECK-NEXT: $q0 = COPY %shuf(<4 x s32>)421    ; CHECK-NEXT: RET_ReallyLR implicit $q0422    %lane_0:_(s32) = COPY $w0423    %lane_1:_(s32) = COPY $w1424    %b:_(s32) = COPY $w2425    %c:_(s32) = COPY $w3426    %d:_(s32) = COPY $w4427    %buildvec0:_(<4 x s32>) = G_BUILD_VECTOR %lane_0(s32), %b(s32), %c(s32), %d(s32)428    %buildvec1:_(<4 x s32>) = G_BUILD_VECTOR %lane_1(s32), %b(s32), %c(s32), %d(s32)429    %shuf:_(<4 x s32>) = G_SHUFFLE_VECTOR %buildvec0(<4 x s32>), %buildvec1, shufflemask(4, 4, 4, 4)430    $q0 = COPY %shuf(<4 x s32>)431    RET_ReallyLR implicit $q0432