brintos

brintos / llvm-project-archived public Read only

0
0
Text · 73.8 KiB · 495740b Raw
1715 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -run-pass=legalizer -global-isel-abort=0 %s -o - | FileCheck %s3 4---5name: test_insert_s64_s32_offset06body: |7  bb.0:8    liveins: $vgpr0_vgpr1, $vgpr29 10    ; CHECK-LABEL: name: test_insert_s64_s32_offset011    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr212    ; CHECK-NEXT: {{  $}}13    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr114    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr215    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[COPY1]](s32), 016    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[INSERT]](s64)17    %0:_(s64) = COPY $vgpr0_vgpr118    %1:_(s32) = COPY $vgpr219    %2:_(s64) = G_INSERT %0, %1, 020    $vgpr0_vgpr1 = COPY %221...22---23name: test_insert_s64_s32_offset3224body: |25  bb.0:26    liveins: $vgpr0_vgpr1, $vgpr227 28    ; CHECK-LABEL: name: test_insert_s64_s32_offset3229    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr230    ; CHECK-NEXT: {{  $}}31    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr132    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr233    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[COPY1]](s32), 3234    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[INSERT]](s64)35    %0:_(s64) = COPY $vgpr0_vgpr136    %1:_(s32) = COPY $vgpr237    %2:_(s64) = G_INSERT %0, %1, 3238    $vgpr0_vgpr1 = COPY %239...40 41---42name: test_insert_s64_s32_offset1643body: |44  bb.0:45    liveins: $vgpr0_vgpr1, $vgpr246 47    ; CHECK-LABEL: name: test_insert_s64_s32_offset1648    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr249    ; CHECK-NEXT: {{  $}}50    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr151    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr252    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[COPY1]](s32), 1653    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[INSERT]](s64)54    %0:_(s64) = COPY $vgpr0_vgpr155    %1:_(s32) = COPY $vgpr256    %2:_(s64) = G_INSERT %0, %1, 1657    $vgpr0_vgpr1 = COPY %258...59 60---61name: test_insert_s96_s32_offset062body: |63  bb.0:64    liveins: $vgpr0_vgpr1_vgpr2, $vgpr365 66    ; CHECK-LABEL: name: test_insert_s96_s32_offset067    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2, $vgpr368    ; CHECK-NEXT: {{  $}}69    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr270    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr371    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s96) = G_INSERT [[COPY]], [[COPY1]](s32), 072    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](s96)73    %0:_(s96) = COPY $vgpr0_vgpr1_vgpr274    %1:_(s32) = COPY $vgpr375    %2:_(s96) = G_INSERT %0, %1, 076    $vgpr0_vgpr1_vgpr2 = COPY %277...78---79name: test_insert_s96_s32_offset3280body: |81  bb.0:82    liveins: $vgpr0_vgpr1_vgpr2, $vgpr383 84    ; CHECK-LABEL: name: test_insert_s96_s32_offset3285    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2, $vgpr386    ; CHECK-NEXT: {{  $}}87    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr288    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr389    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s96) = G_INSERT [[COPY]], [[COPY1]](s32), 3290    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](s96)91    %0:_(s96) = COPY $vgpr0_vgpr1_vgpr292    %1:_(s32) = COPY $vgpr393    %2:_(s96) = G_INSERT %0, %1, 3294    $vgpr0_vgpr1_vgpr2 = COPY %295...96---97name: test_insert_s96_s32_offset6498body: |99  bb.0:100    liveins: $vgpr0_vgpr1_vgpr2, $vgpr3101 102    ; CHECK-LABEL: name: test_insert_s96_s32_offset64103    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3104    ; CHECK-NEXT: {{  $}}105    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2106    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3107    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s96) = G_INSERT [[COPY]], [[COPY1]](s32), 64108    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[INSERT]](s96)109    %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2110    %1:_(s32) = COPY $vgpr3111    %2:_(s96) = G_INSERT %0, %1, 64112    $vgpr0_vgpr1_vgpr2 = COPY %2113...114---115name: test_insert_s128_s32_offset0116body: |117  bb.0:118    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4119 120    ; CHECK-LABEL: name: test_insert_s128_s32_offset0121    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4122    ; CHECK-NEXT: {{  $}}123    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3124    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4125    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s32), 0126    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)127    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3128    %1:_(s32) = COPY $vgpr4129    %2:_(s128) = G_INSERT %0, %1, 0130    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2131...132---133name: test_insert_s128_s32_offset32134body: |135  bb.0:136    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4137 138    ; CHECK-LABEL: name: test_insert_s128_s32_offset32139    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4140    ; CHECK-NEXT: {{  $}}141    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3142    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4143    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s32), 32144    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)145    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3146    %1:_(s32) = COPY $vgpr4147    %2:_(s128) = G_INSERT %0, %1, 32148    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2149...150---151name: test_insert_s128_s32_offset64152body: |153  bb.0:154    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4155 156    ; CHECK-LABEL: name: test_insert_s128_s32_offset64157    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4158    ; CHECK-NEXT: {{  $}}159    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3160    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4161    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s32), 64162    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)163    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3164    %1:_(s32) = COPY $vgpr4165    %2:_(s128) = G_INSERT %0, %1, 64166    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2167...168---169name: test_insert_s128_s32_offset96170body: |171  bb.0:172    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4173 174    ; CHECK-LABEL: name: test_insert_s128_s32_offset96175    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4176    ; CHECK-NEXT: {{  $}}177    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3178    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4179    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s32), 96180    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)181    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3182    %1:_(s32) = COPY $vgpr4183    %2:_(s128) = G_INSERT %0, %1, 96184    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2185...186---187name: test_insert_s128_s64_offset0188body: |189  bb.0:190    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5191 192    ; CHECK-LABEL: name: test_insert_s128_s64_offset0193    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5194    ; CHECK-NEXT: {{  $}}195    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3196    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5197    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s64), 0198    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)199    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3200    %1:_(s64) = COPY $vgpr4_vgpr5201    %2:_(s128) = G_INSERT %0, %1, 0202    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2203...204---205name: test_insert_s128_s64_offset32206body: |207  bb.0:208    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5209 210    ; CHECK-LABEL: name: test_insert_s128_s64_offset32211    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5212    ; CHECK-NEXT: {{  $}}213    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3214    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5215    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s64), 32216    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)217    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3218    %1:_(s64) = COPY $vgpr4_vgpr5219    %2:_(s128) = G_INSERT %0, %1, 32220    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2221...222---223name: test_insert_s128_s64_offset64224body: |225  bb.0:226    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5227 228    ; CHECK-LABEL: name: test_insert_s128_s64_offset64229    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5230    ; CHECK-NEXT: {{  $}}231    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3232    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5233    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s64), 64234    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)235    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3236    %1:_(s64) = COPY $vgpr4_vgpr5237    %2:_(s128) = G_INSERT %0, %1, 64238    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2239...240---241name: test_insert_s128_s96_offset0242body: |243  bb.0:244    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6245 246    ; CHECK-LABEL: name: test_insert_s128_s96_offset0247    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6248    ; CHECK-NEXT: {{  $}}249    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3250    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr4_vgpr5_vgpr6251    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s96), 0252    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)253    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3254    %1:_(s96) = COPY $vgpr4_vgpr5_vgpr6255    %2:_(s128) = G_INSERT %0, %1, 0256    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2257...258---259name: test_insert_s128_s96_offset32260body: |261  bb.0:262    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6263 264    ; CHECK-LABEL: name: test_insert_s128_s96_offset32265    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6266    ; CHECK-NEXT: {{  $}}267    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3268    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr4_vgpr5_vgpr6269    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](s96), 32270    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)271    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3272    %1:_(s96) = COPY $vgpr4_vgpr5_vgpr6273    %2:_(s128) = G_INSERT %0, %1, 32274    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2275...276---277name: test_insert_p0_s32_offset0278body: |279  bb.0:280    liveins: $vgpr0_vgpr1, $vgpr2281 282    ; CHECK-LABEL: name: test_insert_p0_s32_offset0283    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2284    ; CHECK-NEXT: {{  $}}285    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1286    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2287    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(p0) = G_INSERT [[COPY]], [[COPY1]](s32), 0288    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[INSERT]](p0)289    %0:_(p0) = COPY $vgpr0_vgpr1290    %1:_(s32) = COPY $vgpr2291    %2:_(p0) = G_INSERT %0, %1, 0292    $vgpr0_vgpr1 = COPY %2293...294---295name: test_insert_p0_s32_offset32296body: |297  bb.0:298    liveins: $vgpr0_vgpr1, $vgpr2299 300    ; CHECK-LABEL: name: test_insert_p0_s32_offset32301    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2302    ; CHECK-NEXT: {{  $}}303    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1304    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2305    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(p0) = G_INSERT [[COPY]], [[COPY1]](s32), 32306    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[INSERT]](p0)307    %0:_(p0) = COPY $vgpr0_vgpr1308    %1:_(s32) = COPY $vgpr2309    %2:_(p0) = G_INSERT %0, %1, 32310    $vgpr0_vgpr1 = COPY %2311...312---313name: test_insert_s128_p0_offset0314body: |315  bb.0:316    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5317 318    ; CHECK-LABEL: name: test_insert_s128_p0_offset0319    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5320    ; CHECK-NEXT: {{  $}}321    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3322    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5323    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](p0), 0324    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)325    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3326    %1:_(p0) = COPY $vgpr4_vgpr5327    %2:_(s128) = G_INSERT %0, %1, 0328    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2329...330---331name: test_insert_s128_p0_offset32332body: |333  bb.0:334    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5335 336    ; CHECK-LABEL: name: test_insert_s128_p0_offset32337    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5338    ; CHECK-NEXT: {{  $}}339    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3340    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5341    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](p0), 32342    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)343    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3344    %1:_(p0) = COPY $vgpr4_vgpr5345    %2:_(s128) = G_INSERT %0, %1, 32346    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2347...348---349name: test_insert_s128_p0_offset64350body: |351  bb.0:352    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5353 354    ; CHECK-LABEL: name: test_insert_s128_p0_offset64355    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5356    ; CHECK-NEXT: {{  $}}357    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3358    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5359    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[COPY1]](p0), 64360    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)361    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3362    %1:_(p0) = COPY $vgpr4_vgpr5363    %2:_(s128) = G_INSERT %0, %1, 64364    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2365...366 367---368name: test_insert_s128_s16_offset0369body: |370  bb.0:371    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4372 373    ; CHECK-LABEL: name: test_insert_s128_s16_offset0374    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4375    ; CHECK-NEXT: {{  $}}376    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3377    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4378    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)379    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[TRUNC]](s16), 0380    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)381    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3382    %1:_(s32) = COPY $vgpr4383    %2:_(s16) = G_TRUNC %1384    %3:_(s128) = G_INSERT %0, %2, 0385    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %3386...387 388---389name: test_insert_s128_s16_offset16390body: |391  bb.0:392    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4393 394    ; CHECK-LABEL: name: test_insert_s128_s16_offset16395    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4396    ; CHECK-NEXT: {{  $}}397    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3398    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4399    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)400    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[TRUNC]](s16), 16401    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)402    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3403    %1:_(s32) = COPY $vgpr4404    %2:_(s16) = G_TRUNC %1405    %3:_(s128) = G_INSERT %0, %2, 16406    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %3407...408 409---410name: test_insert_s128_s16_offset32411body: |412  bb.0:413    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4414 415    ; CHECK-LABEL: name: test_insert_s128_s16_offset32416    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4417    ; CHECK-NEXT: {{  $}}418    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3419    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4420    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)421    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[TRUNC]](s16), 32422    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)423    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3424    %1:_(s32) = COPY $vgpr4425    %2:_(s16) = G_TRUNC %1426    %3:_(s128) = G_INSERT %0, %2, 32427    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %3428...429 430---431name: test_insert_s128_s16_offset112432body: |433  bb.0:434    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4435 436    ; CHECK-LABEL: name: test_insert_s128_s16_offset112437    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4438    ; CHECK-NEXT: {{  $}}439    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3440    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4441    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)442    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s128) = G_INSERT [[COPY]], [[TRUNC]](s16), 112443    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](s128)444    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3445    %1:_(s32) = COPY $vgpr4446    %2:_(s16) = G_TRUNC %1447    %3:_(s128) = G_INSERT %0, %2, 112448    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %3449...450 451---452name: test_insert_v2s32_s32_offset0453body: |454  bb.0:455    liveins: $vgpr0_vgpr1, $vgpr2456 457    ; CHECK-LABEL: name: test_insert_v2s32_s32_offset0458    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2459    ; CHECK-NEXT: {{  $}}460    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1461    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2462    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)463    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[COPY1]](s32), [[UV1]](s32)464    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)465    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1466    %1:_(s32) = COPY $vgpr2467    %2:_(<2 x s32>) = G_INSERT %0, %1, 0468    $vgpr0_vgpr1 = COPY %2469...470---471name: test_insert_v2s32_s32_offset32472body: |473  bb.0:474    liveins: $vgpr0_vgpr1, $vgpr2475 476    ; CHECK-LABEL: name: test_insert_v2s32_s32_offset32477    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2478    ; CHECK-NEXT: {{  $}}479    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1480    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2481    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)482    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[COPY1]](s32)483    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)484    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1485    %1:_(s32) = COPY $vgpr2486    %2:_(<2 x s32>) = G_INSERT %0, %1, 32487    $vgpr0_vgpr1 = COPY %2488...489---490name: test_insert_v3s32_s32_offset0491body: |492  bb.0:493    liveins: $vgpr0_vgpr1_vgpr2, $vgpr3494 495    ; CHECK-LABEL: name: test_insert_v3s32_s32_offset0496    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3497    ; CHECK-NEXT: {{  $}}498    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2499    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3500    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)501    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY1]](s32), [[UV1]](s32), [[UV2]](s32)502    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)503    %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2504    %1:_(s32) = COPY $vgpr3505    %2:_(<3 x s32>) = G_INSERT %0, %1, 0506    $vgpr0_vgpr1_vgpr2 = COPY %2507...508---509name: test_insert_v3s32_s32_offset32510body: |511  bb.0:512    liveins: $vgpr0_vgpr1_vgpr2, $vgpr3513 514    ; CHECK-LABEL: name: test_insert_v3s32_s32_offset32515    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3516    ; CHECK-NEXT: {{  $}}517    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2518    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3519    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)520    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[COPY1]](s32), [[UV2]](s32)521    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)522    %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2523    %1:_(s32) = COPY $vgpr3524    %2:_(<3 x s32>) = G_INSERT %0, %1, 32525    $vgpr0_vgpr1_vgpr2 = COPY %2526...527---528name: test_insert_v3s32_s32_offset64529body: |530  bb.0:531    liveins: $vgpr0_vgpr1_vgpr2, $vgpr3532 533    ; CHECK-LABEL: name: test_insert_v3s32_s32_offset64534    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3535    ; CHECK-NEXT: {{  $}}536    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2537    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr3538    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)539    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV1]](s32), [[COPY1]](s32)540    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)541    %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2542    %1:_(s32) = COPY $vgpr3543    %2:_(<3 x s32>) = G_INSERT %0, %1, 64544    $vgpr0_vgpr1_vgpr2 = COPY %2545...546---547name: test_insert_v4s32_s32_offset0548body: |549  bb.0:550    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4551 552    ; CHECK-LABEL: name: test_insert_v4s32_s32_offset0553    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4554    ; CHECK-NEXT: {{  $}}555    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3556    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4557    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)558    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY1]](s32), [[UV1]](s32), [[UV2]](s32), [[UV3]](s32)559    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)560    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3561    %1:_(s32) = COPY $vgpr4562    %2:_(<4 x s32>) = G_INSERT %0, %1, 0563    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2564...565---566name: test_insert_v4s32_s32_offset32567body: |568  bb.0:569    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4570 571    ; CHECK-LABEL: name: test_insert_v4s32_s32_offset32572    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4573    ; CHECK-NEXT: {{  $}}574    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3575    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4576    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)577    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[COPY1]](s32), [[UV2]](s32), [[UV3]](s32)578    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)579    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3580    %1:_(s32) = COPY $vgpr4581    %2:_(<4 x s32>) = G_INSERT %0, %1, 32582    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2583...584---585name: test_insert_v4s32_s32_offset64586body: |587  bb.0:588    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4589 590    ; CHECK-LABEL: name: test_insert_v4s32_s32_offset64591    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4592    ; CHECK-NEXT: {{  $}}593    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3594    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4595    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)596    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV1]](s32), [[COPY1]](s32), [[UV3]](s32)597    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)598    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3599    %1:_(s32) = COPY $vgpr4600    %2:_(<4 x s32>) = G_INSERT %0, %1, 64601    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2602...603---604name: test_insert_v4s32_s32_offset96605body: |606  bb.0:607    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4608 609    ; CHECK-LABEL: name: test_insert_v4s32_s32_offset96610    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4611    ; CHECK-NEXT: {{  $}}612    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3613    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4614    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)615    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV1]](s32), [[UV2]](s32), [[COPY1]](s32)616    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)617    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3618    %1:_(s32) = COPY $vgpr4619    %2:_(<4 x s32>) = G_INSERT %0, %1, 96620    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2621...622---623name: test_insert_v4s32_s64_offset0624body: |625  bb.0:626    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5627 628    ; CHECK-LABEL: name: test_insert_v4s32_s64_offset0629    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5630    ; CHECK-NEXT: {{  $}}631    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3632    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5633    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)634    ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](s64)635    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV4]](s32), [[UV5]](s32), [[UV2]](s32), [[UV3]](s32)636    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)637    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3638    %1:_(s64) = COPY $vgpr4_vgpr5639    %2:_(<4 x s32>) = G_INSERT %0, %1, 0640    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2641...642---643name: test_insert_v4s32_s64_offset32644body: |645  bb.0:646    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5647 648    ; CHECK-LABEL: name: test_insert_v4s32_s64_offset32649    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5650    ; CHECK-NEXT: {{  $}}651    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3652    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5653    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)654    ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](s64)655    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV4]](s32), [[UV5]](s32), [[UV3]](s32)656    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)657    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3658    %1:_(s64) = COPY $vgpr4_vgpr5659    %2:_(<4 x s32>) = G_INSERT %0, %1, 32660    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2661...662---663name: test_insert_v4s32_s64_offset64664body: |665  bb.0:666    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5667 668    ; CHECK-LABEL: name: test_insert_v4s32_s64_offset64669    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5670    ; CHECK-NEXT: {{  $}}671    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3672    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr4_vgpr5673    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)674    ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](s64)675    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV1]](s32), [[UV4]](s32), [[UV5]](s32)676    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)677    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3678    %1:_(s64) = COPY $vgpr4_vgpr5679    %2:_(<4 x s32>) = G_INSERT %0, %1, 64680    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2681...682---683name: test_insert_v4s32_s96_offset0684body: |685  bb.0:686    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6687 688    ; CHECK-LABEL: name: test_insert_v4s32_s96_offset0689    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6690    ; CHECK-NEXT: {{  $}}691    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3692    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr4_vgpr5_vgpr6693    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)694    ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](s96)695    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV4]](s32), [[UV5]](s32), [[UV6]](s32), [[UV3]](s32)696    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)697    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3698    %1:_(s96) = COPY $vgpr4_vgpr5_vgpr6699    %2:_(<4 x s32>) = G_INSERT %0, %1, 0700    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2701...702---703name: test_insert_v4s32_s96_offset32704body: |705  bb.0:706    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6707 708    ; CHECK-LABEL: name: test_insert_v4s32_s96_offset32709    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6710    ; CHECK-NEXT: {{  $}}711    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3712    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr4_vgpr5_vgpr6713    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)714    ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](s96)715    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV4]](s32), [[UV5]](s32), [[UV6]](s32)716    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)717    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3718    %1:_(s96) = COPY $vgpr4_vgpr5_vgpr6719    %2:_(<4 x s32>) = G_INSERT %0, %1, 32720    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2721...722---723name: test_insert_v4s32_v2s32_offset0724body: |725  bb.0:726    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5727 728    ; CHECK-LABEL: name: test_insert_v4s32_v2s32_offset0729    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5730    ; CHECK-NEXT: {{  $}}731    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3732    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5733    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)734    ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)735    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV4]](s32), [[UV5]](s32), [[UV2]](s32), [[UV3]](s32)736    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)737    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3738    %1:_(<2 x s32>) = COPY $vgpr4_vgpr5739    %2:_(<4 x s32>) = G_INSERT %0, %1, 0740    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2741...742---743name: test_insert_v4s32_v2s32_offset32744body: |745  bb.0:746    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5747 748    ; CHECK-LABEL: name: test_insert_v4s32_v2s32_offset32749    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5750    ; CHECK-NEXT: {{  $}}751    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3752    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5753    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)754    ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)755    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV4]](s32), [[UV5]](s32), [[UV3]](s32)756    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)757    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3758    %1:_(<2 x s32>) = COPY $vgpr4_vgpr5759    %2:_(<4 x s32>) = G_INSERT %0, %1, 32760    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2761...762---763name: test_insert_v4s32_v2s32_offset64764body: |765  bb.0:766    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5767 768    ; CHECK-LABEL: name: test_insert_v4s32_v2s32_offset64769    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5770    ; CHECK-NEXT: {{  $}}771    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3772    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5773    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)774    ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)775    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV1]](s32), [[UV4]](s32), [[UV5]](s32)776    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)777    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3778    %1:_(<2 x s32>) = COPY $vgpr4_vgpr5779    %2:_(<4 x s32>) = G_INSERT %0, %1, 64780    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2781...782---783name: test_insert_v4s32_v3s32_offset0784body: |785  bb.0:786    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6787 788    ; CHECK-LABEL: name: test_insert_v4s32_v3s32_offset0789    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6790    ; CHECK-NEXT: {{  $}}791    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3792    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6793    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)794    ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>)795    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV4]](s32), [[UV5]](s32), [[UV6]](s32), [[UV3]](s32)796    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)797    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3798    %1:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6799    %2:_(<4 x s32>) = G_INSERT %0, %1, 0800    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2801...802---803name: test_insert_v4s32_v3s32_offset32804body: |805  bb.0:806    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6807 808    ; CHECK-LABEL: name: test_insert_v4s32_v3s32_offset32809    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6810    ; CHECK-NEXT: {{  $}}811    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3812    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6813    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)814    ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<3 x s32>)815    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[UV]](s32), [[UV4]](s32), [[UV5]](s32), [[UV6]](s32)816    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)817    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3818    %1:_(<3 x s32>) = COPY $vgpr4_vgpr5_vgpr6819    %2:_(<4 x s32>) = G_INSERT %0, %1, 32820    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2821...822---823name: test_insert_v4s32_p0_offset0824body: |825  bb.0:826    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5827 828    ; CHECK-LABEL: name: test_insert_v4s32_p0_offset0829    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5830    ; CHECK-NEXT: {{  $}}831    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3832    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5833    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](p0), 0834    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)835    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3836    %1:_(p0) = COPY $vgpr4_vgpr5837    %2:_(<4 x s32>) = G_INSERT %0, %1, 0838    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2839...840---841name: test_insert_v4s32_p0_offset32842body: |843  bb.0:844    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5845 846    ; CHECK-LABEL: name: test_insert_v4s32_p0_offset32847    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5848    ; CHECK-NEXT: {{  $}}849    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3850    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5851    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](p0), 32852    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)853    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3854    %1:_(p0) = COPY $vgpr4_vgpr5855    %2:_(<4 x s32>) = G_INSERT %0, %1, 32856    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2857...858---859name: test_insert_v4s32_p0_offset64860body: |861  bb.0:862    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5863 864    ; CHECK-LABEL: name: test_insert_v4s32_p0_offset64865    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5866    ; CHECK-NEXT: {{  $}}867    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3868    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(p0) = COPY $vgpr4_vgpr5869    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(<4 x s32>) = G_INSERT [[COPY]], [[COPY1]](p0), 64870    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[INSERT]](<4 x s32>)871    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3872    %1:_(p0) = COPY $vgpr4_vgpr5873    %2:_(<4 x s32>) = G_INSERT %0, %1, 64874    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2875...876 877---878name: test_insert_v2s16_s16_offset0879body: |880  bb.0:881    liveins: $vgpr0, $vgpr1882 883    ; CHECK-LABEL: name: test_insert_v2s16_s16_offset0884    ; CHECK: liveins: $vgpr0, $vgpr1885    ; CHECK-NEXT: {{  $}}886    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0887    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1888    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)889    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16890    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)891    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535892    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]893    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)894    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]895    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)896    ; CHECK-NEXT: $vgpr0 = COPY [[BITCAST1]](<2 x s16>)897    %0:_(<2 x s16>) = COPY $vgpr0898    %1:_(s32) = COPY $vgpr1899    %2:_(s16) = G_TRUNC %1900    %3:_(<2 x s16>) = G_INSERT %0, %2, 0901    $vgpr0 = COPY %3902...903 904---905name: test_insert_v2s16_s16_offset1906body: |907  bb.0:908    liveins: $vgpr0, $vgpr1909 910    ; CHECK-LABEL: name: test_insert_v2s16_s16_offset1911    ; CHECK: liveins: $vgpr0, $vgpr1912    ; CHECK-NEXT: {{  $}}913    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0914    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1915    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)916    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535917    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]918    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1919    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND]], [[C1]](s32)920    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 -131071921    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C2]]922    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[SHL]]923    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)924    ; CHECK-NEXT: $vgpr0 = COPY [[BITCAST1]](<2 x s16>)925    %0:_(<2 x s16>) = COPY $vgpr0926    %1:_(s32) = COPY $vgpr1927    %2:_(s16) = G_TRUNC %1928    %3:_(<2 x s16>) = G_INSERT %0, %2, 1929    $vgpr0 = COPY %3930...931---932name: test_insert_v2s16_s16_offset16933body: |934  bb.0:935    liveins: $vgpr0, $vgpr1936 937    ; CHECK-LABEL: name: test_insert_v2s16_s16_offset16938    ; CHECK: liveins: $vgpr0, $vgpr1939    ; CHECK-NEXT: {{  $}}940    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0941    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1942    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)943    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535944    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C]]945    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]946    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16947    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)948    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]949    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)950    ; CHECK-NEXT: $vgpr0 = COPY [[BITCAST1]](<2 x s16>)951    %0:_(<2 x s16>) = COPY $vgpr0952    %1:_(s32) = COPY $vgpr1953    %2:_(s16) = G_TRUNC %1954    %3:_(<2 x s16>) = G_INSERT %0, %2, 16955    $vgpr0 = COPY %3956...957---958name: test_insert_v3s16_s16_offset0959body: |960  bb.0:961    liveins: $vgpr0_vgpr1, $vgpr2962 963    ; CHECK-LABEL: name: test_insert_v3s16_s16_offset0964    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2965    ; CHECK-NEXT: {{  $}}966    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1967    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)968    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)969    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16970    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)971    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2972    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535973    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]974    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)975    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]976    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)977    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST1]](<2 x s16>), [[UV1]](<2 x s16>)978    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)979    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1980    %1:_(<3 x s16>) = G_EXTRACT %0, 0981    %2:_(s32) = COPY $vgpr2982    %3:_(s16) = G_TRUNC %2983    %4:_(<3 x s16>) = G_INSERT %1, %3, 0984    %5:_(<4 x s16>) = G_IMPLICIT_DEF985    %6:_(<4 x s16>) = G_INSERT %5, %4, 0986    $vgpr0_vgpr1 = COPY %6987...988---989name: test_insert_v3s16_s16_offset16990body: |991  bb.0:992    liveins: $vgpr0_vgpr1, $vgpr2993 994    ; CHECK-LABEL: name: test_insert_v3s16_s16_offset16995    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2996    ; CHECK-NEXT: {{  $}}997    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1998    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)999    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)1000    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21001    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351002    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C]]1003    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]1004    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 161005    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)1006    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1007    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1008    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST1]](<2 x s16>), [[UV1]](<2 x s16>)1009    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1010    %0:_(<4 x s16>) = COPY $vgpr0_vgpr11011    %1:_(<3 x s16>) = G_EXTRACT %0, 01012    %2:_(s32) = COPY $vgpr21013    %3:_(s16) = G_TRUNC %21014    %4:_(<3 x s16>) = G_INSERT %1, %3, 161015    %5:_(<4 x s16>) = G_IMPLICIT_DEF1016    %6:_(<4 x s16>) = G_INSERT %5, %4, 01017    $vgpr0_vgpr1 = COPY %61018...1019---1020name: test_insert_v3s16_s16_offset321021body: |1022  bb.0:1023    liveins: $vgpr0_vgpr1, $vgpr21024 1025    ; CHECK-LABEL: name: test_insert_v3s16_s16_offset321026    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21027    ; CHECK-NEXT: {{  $}}1028    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11029    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1030    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21031    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351032    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]1033    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 01034    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 161035    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[C1]], [[C2]](s32)1036    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1037    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1038    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[UV]](<2 x s16>), [[BITCAST]](<2 x s16>)1039    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1040    %0:_(<4 x s16>) = COPY $vgpr0_vgpr11041    %1:_(<3 x s16>) = G_EXTRACT %0, 01042    %2:_(s32) = COPY $vgpr21043    %3:_(s16) = G_TRUNC %21044    %4:_(<3 x s16>) = G_INSERT %1, %3, 321045    %5:_(<4 x s16>) = G_IMPLICIT_DEF1046    %6:_(<4 x s16>) = G_INSERT %5, %4, 01047    $vgpr0_vgpr1 = COPY %61048...1049---1050name: test_insert_v3s16_v2s16_offset01051body: |1052  bb.0:1053    liveins: $vgpr0_vgpr1, $vgpr21054 1055    ; CHECK-LABEL: name: test_insert_v3s16_v2s16_offset01056    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21057    ; CHECK-NEXT: {{  $}}1058    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11059    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1060    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21061    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY1]](<2 x s16>)1062    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161063    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)1064    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351065    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]1066    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1067    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1068    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1069    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST1]](<2 x s16>), [[UV1]](<2 x s16>)1070    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1071    %0:_(<4 x s16>) = COPY $vgpr0_vgpr11072    %1:_(<3 x s16>) = G_EXTRACT %0, 01073    %2:_(<2 x s16>) = COPY $vgpr21074    %4:_(<3 x s16>) = G_INSERT %1, %2, 01075    %5:_(<4 x s16>) = G_IMPLICIT_DEF1076    %6:_(<4 x s16>) = G_INSERT %5, %4, 01077    $vgpr0_vgpr1 = COPY %61078...1079---1080name: test_insert_v3s16_v2s16_offset161081body: |1082  bb.0:1083    liveins: $vgpr0_vgpr1, $vgpr21084 1085    ; CHECK-LABEL: name: test_insert_v3s16_v2s16_offset161086    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21087    ; CHECK-NEXT: {{  $}}1088    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11089    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1090    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)1091    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161092    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21093    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[COPY1]](<2 x s16>)1094    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32)1095    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351096    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]1097    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST1]], [[C1]]1098    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C]](s32)1099    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1100    ; CHECK-NEXT: [[BITCAST2:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1101    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 01102    ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[C2]], [[C]](s32)1103    ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[LSHR]], [[SHL1]]1104    ; CHECK-NEXT: [[BITCAST3:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32)1105    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST2]](<2 x s16>), [[BITCAST3]](<2 x s16>)1106    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1107    %0:_(<4 x s16>) = COPY $vgpr0_vgpr11108    %1:_(<3 x s16>) = G_EXTRACT %0, 01109    %2:_(<2 x s16>) = COPY $vgpr21110    %4:_(<3 x s16>) = G_INSERT %1, %2, 161111    %5:_(<4 x s16>) = G_IMPLICIT_DEF1112    %6:_(<4 x s16>) = G_INSERT %5, %4, 01113    $vgpr0_vgpr1 = COPY %61114...1115---1116name: test_insert_v3s16_s32_offset01117body: |1118  bb.0:1119    liveins: $vgpr0_vgpr1, $vgpr21120 1121    ; CHECK-LABEL: name: test_insert_v3s16_s32_offset01122    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21123    ; CHECK-NEXT: {{  $}}1124    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11125    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1126    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21127    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161128    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C]](s32)1129    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351130    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]1131    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1132    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1133    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1134    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[UV1]](<2 x s16>)1135    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1136    %0:_(<4 x s16>) = COPY $vgpr0_vgpr11137    %1:_(<3 x s16>) = G_EXTRACT %0, 01138    %2:_(s32) = COPY $vgpr21139    %4:_(<3 x s16>) = G_INSERT %1, %2, 01140    %5:_(<4 x s16>) = G_IMPLICIT_DEF1141    %6:_(<4 x s16>) = G_INSERT %5, %4, 01142    $vgpr0_vgpr1 = COPY %61143...1144---1145name: test_insert_v3s16_s32_offset161146body: |1147  bb.0:1148    liveins: $vgpr0_vgpr1, $vgpr21149 1150    ; CHECK-LABEL: name: test_insert_v3s16_s32_offset161151    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21152    ; CHECK-NEXT: {{  $}}1153    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11154    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1155    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)1156    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161157    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21158    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C]](s32)1159    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351160    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]1161    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]1162    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C]](s32)1163    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1164    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1165    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 01166    ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[C2]], [[C]](s32)1167    ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[LSHR]], [[SHL1]]1168    ; CHECK-NEXT: [[BITCAST2:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32)1169    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST1]](<2 x s16>), [[BITCAST2]](<2 x s16>)1170    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1171    %0:_(<4 x s16>) = COPY $vgpr0_vgpr11172    %1:_(<3 x s16>) = G_EXTRACT %0, 01173    %2:_(s32) = COPY $vgpr21174    %4:_(<3 x s16>) = G_INSERT %1, %2, 161175    %5:_(<4 x s16>) = G_IMPLICIT_DEF1176    %6:_(<4 x s16>) = G_INSERT %5, %4, 01177    $vgpr0_vgpr1 = COPY %61178...1179---1180name: test_insert_v4s16_s16_offset01181body: |1182  bb.0:1183    liveins: $vgpr0_vgpr1, $vgpr21184 1185    ; CHECK-LABEL: name: test_insert_v4s16_s16_offset01186    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21187    ; CHECK-NEXT: {{  $}}1188    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11189    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21190    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1191    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)1192    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161193    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)1194    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351195    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]1196    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1197    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1198    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1199    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST1]](<2 x s16>), [[UV1]](<2 x s16>)1200    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1201    %0:_(<4 x s16>) = COPY $vgpr0_vgpr11202    %1:_(s32) = COPY $vgpr21203    %2:_(s16) = G_TRUNC %11204    %3:_(<4 x s16>) = G_INSERT %0, %2, 01205    $vgpr0_vgpr1 = COPY %31206...1207---1208name: test_insert_v4s16_s16_offset161209body: |1210  bb.0:1211    liveins: $vgpr0_vgpr1, $vgpr21212 1213    ; CHECK-LABEL: name: test_insert_v4s16_s16_offset161214    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21215    ; CHECK-NEXT: {{  $}}1216    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11217    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21218    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1219    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)1220    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351221    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C]]1222    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]1223    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 161224    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)1225    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1226    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1227    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST1]](<2 x s16>), [[UV1]](<2 x s16>)1228    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1229    %0:_(<4 x s16>) = COPY $vgpr0_vgpr11230    %1:_(s32) = COPY $vgpr21231    %2:_(s16) = G_TRUNC %11232    %3:_(<4 x s16>) = G_INSERT %0, %2, 161233    $vgpr0_vgpr1 = COPY %31234...1235---1236name: test_insert_v4s16_s16_offset321237body: |1238  bb.0:1239    liveins: $vgpr0_vgpr1, $vgpr21240 1241    ; CHECK-LABEL: name: test_insert_v4s16_s16_offset321242    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21243    ; CHECK-NEXT: {{  $}}1244    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11245    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21246    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1247    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>)1248    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161249    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)1250    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351251    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]1252    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1253    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1254    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1255    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[UV]](<2 x s16>), [[BITCAST1]](<2 x s16>)1256    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1257    %0:_(<4 x s16>) = COPY $vgpr0_vgpr11258    %1:_(s32) = COPY $vgpr21259    %2:_(s16) = G_TRUNC %11260    %3:_(<4 x s16>) = G_INSERT %0, %2, 321261    $vgpr0_vgpr1 = COPY %31262...1263---1264name: test_insert_v4s16_s16_offset481265body: |1266  bb.0:1267    liveins: $vgpr0_vgpr1, $vgpr21268 1269    ; CHECK-LABEL: name: test_insert_v4s16_s16_offset481270    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21271    ; CHECK-NEXT: {{  $}}1272    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11273    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21274    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1275    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>)1276    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351277    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C]]1278    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]1279    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 161280    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)1281    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1282    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1283    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[UV]](<2 x s16>), [[BITCAST1]](<2 x s16>)1284    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1285    %0:_(<4 x s16>) = COPY $vgpr0_vgpr11286    %1:_(s32) = COPY $vgpr21287    %2:_(s16) = G_TRUNC %11288    %3:_(<4 x s16>) = G_INSERT %0, %2, 481289    $vgpr0_vgpr1 = COPY %31290...1291---1292name: test_insert_v4s16_v2s16_offset01293body: |1294  bb.0:1295    liveins: $vgpr0_vgpr1, $vgpr21296 1297    ; CHECK-LABEL: name: test_insert_v4s16_v2s16_offset01298    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21299    ; CHECK-NEXT: {{  $}}1300    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11301    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21302    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1303    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY1]](<2 x s16>)1304    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161305    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)1306    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351307    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]1308    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1309    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1310    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1311    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST1]](<2 x s16>), [[UV1]](<2 x s16>)1312    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1313    %0:_(<4 x s16>) = COPY $vgpr0_vgpr11314    %1:_(<2 x s16>) = COPY $vgpr21315    %2:_(<4 x s16>) = G_INSERT %0, %1, 01316    $vgpr0_vgpr1 = COPY %21317...1318---1319name: test_insert_v4s16_v2s16_offset161320body: |1321  bb.0:1322    liveins: $vgpr0_vgpr1, $vgpr21323 1324    ; CHECK-LABEL: name: test_insert_v4s16_v2s16_offset161325    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21326    ; CHECK-NEXT: {{  $}}1327    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11328    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21329    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1330    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)1331    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161332    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>)1333    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32)1334    ; CHECK-NEXT: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[COPY1]](<2 x s16>)1335    ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST2]], [[C]](s32)1336    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351337    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]1338    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST2]], [[C1]]1339    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C]](s32)1340    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1341    ; CHECK-NEXT: [[BITCAST3:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1342    ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1343    ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[LSHR1]], [[SHL1]]1344    ; CHECK-NEXT: [[BITCAST4:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32)1345    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST3]](<2 x s16>), [[BITCAST4]](<2 x s16>)1346    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1347    %0:_(<4 x s16>) = COPY $vgpr0_vgpr11348    %1:_(<2 x s16>) = COPY $vgpr21349    %2:_(<4 x s16>) = G_INSERT %0, %1, 161350    $vgpr0_vgpr1 = COPY %21351...1352---1353name: test_insert_v4s16_v2s16_offset321354body: |1355  bb.0:1356    liveins: $vgpr0_vgpr1, $vgpr21357 1358    ; CHECK-LABEL: name: test_insert_v4s16_v2s16_offset321359    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21360    ; CHECK-NEXT: {{  $}}1361    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11362    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21363    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1364    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY1]](<2 x s16>)1365    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161366    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)1367    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351368    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]1369    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1370    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1371    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1372    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[UV]](<2 x s16>), [[BITCAST1]](<2 x s16>)1373    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1374    %0:_(<4 x s16>) = COPY $vgpr0_vgpr11375    %1:_(<2 x s16>) = COPY $vgpr21376    %2:_(<4 x s16>) = G_INSERT %0, %1, 321377    $vgpr0_vgpr1 = COPY %21378...1379---1380name: test_insert_v4s16_v3s16_offset01381body: |1382  bb.0:1383    liveins: $vgpr0_vgpr1, $vgpr2_vgpr31384 1385    ; CHECK-LABEL: name: test_insert_v4s16_v3s16_offset01386    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr31387    ; CHECK-NEXT: {{  $}}1388    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11389    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr2_vgpr31390    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY1]](<4 x s16>)1391    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>)1392    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161393    ; CHECK-NEXT: [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1394    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV3]](<2 x s16>)1395    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32)1396    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351397    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]1398    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1399    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1400    ; CHECK-NEXT: [[BITCAST2:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1401    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[UV]](<2 x s16>), [[BITCAST2]](<2 x s16>)1402    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1403    %0:_(<4 x s16>) = COPY $vgpr0_vgpr11404    %1:_(<4 x s16>) = COPY $vgpr2_vgpr31405    %2:_(<3 x s16>) = G_EXTRACT %1, 01406    %3:_(<4 x s16>) = G_INSERT %0, %2, 01407    $vgpr0_vgpr1 = COPY %31408...1409---1410name: test_insert_v4s16_v3s16_offset161411body: |1412  bb.0:1413    liveins: $vgpr0_vgpr1, $vgpr2_vgpr31414 1415    ; CHECK-LABEL: name: test_insert_v4s16_v3s16_offset161416    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr31417    ; CHECK-NEXT: {{  $}}1418    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11419    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr2_vgpr31420    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY1]](<4 x s16>)1421    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)1422    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161423    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)1424    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>)1425    ; CHECK-NEXT: [[UV2:%[0-9]+]]:_(<2 x s16>), [[UV3:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1426    ; CHECK-NEXT: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[UV2]](<2 x s16>)1427    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351428    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST2]], [[C1]]1429    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]1430    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C]](s32)1431    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1432    ; CHECK-NEXT: [[BITCAST3:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1433    ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[BITCAST1]], [[C1]]1434    ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND2]], [[C]](s32)1435    ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[LSHR]], [[SHL1]]1436    ; CHECK-NEXT: [[BITCAST4:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32)1437    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST3]](<2 x s16>), [[BITCAST4]](<2 x s16>)1438    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1439    %0:_(<4 x s16>) = COPY $vgpr0_vgpr11440    %1:_(<4 x s16>) = COPY $vgpr2_vgpr31441    %2:_(<3 x s16>) = G_EXTRACT %1, 01442    %3:_(<4 x s16>) = G_INSERT %0, %2, 161443    $vgpr0_vgpr1 = COPY %31444...1445---1446name: test_insert_v4s16_s32_offset01447body: |1448  bb.0:1449    liveins: $vgpr0_vgpr1, $vgpr21450 1451    ; CHECK-LABEL: name: test_insert_v4s16_s32_offset01452    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21453    ; CHECK-NEXT: {{  $}}1454    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11455    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21456    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1457    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161458    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C]](s32)1459    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351460    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]1461    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1462    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1463    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1464    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[UV1]](<2 x s16>)1465    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1466    %0:_(<4 x s16>) = COPY $vgpr0_vgpr11467    %1:_(s32) = COPY $vgpr21468    %2:_(<4 x s16>) = G_INSERT %0, %1, 01469    $vgpr0_vgpr1 = COPY %21470...1471---1472name: test_insert_v4s16_s32_offset161473body: |1474  bb.0:1475    liveins: $vgpr0_vgpr1, $vgpr21476 1477    ; CHECK-LABEL: name: test_insert_v4s16_s32_offset161478    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21479    ; CHECK-NEXT: {{  $}}1480    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11481    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21482    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1483    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)1484    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161485    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>)1486    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32)1487    ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C]](s32)1488    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351489    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]1490    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]1491    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C]](s32)1492    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1493    ; CHECK-NEXT: [[BITCAST2:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1494    ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1495    ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[LSHR1]], [[SHL1]]1496    ; CHECK-NEXT: [[BITCAST3:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32)1497    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST2]](<2 x s16>), [[BITCAST3]](<2 x s16>)1498    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1499    %0:_(<4 x s16>) = COPY $vgpr0_vgpr11500    %1:_(s32) = COPY $vgpr21501    %2:_(<4 x s16>) = G_INSERT %0, %1, 161502    $vgpr0_vgpr1 = COPY %21503...1504---1505name: test_insert_v4s16_s32_offset321506body: |1507  bb.0:1508    liveins: $vgpr0_vgpr1, $vgpr21509 1510    ; CHECK-LABEL: name: test_insert_v4s16_s32_offset321511    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21512    ; CHECK-NEXT: {{  $}}1513    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr11514    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21515    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)1516    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161517    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C]](s32)1518    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351519    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]1520    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)1521    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1522    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)1523    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[UV]](<2 x s16>), [[BITCAST]](<2 x s16>)1524    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)1525    %0:_(<4 x s16>) = COPY $vgpr0_vgpr11526    %1:_(s32) = COPY $vgpr21527    %2:_(<4 x s16>) = G_INSERT %0, %1, 321528    $vgpr0_vgpr1 = COPY %21529...1530 1531---1532name: test_insert_s64_s16_offset01533body: |1534  bb.0:1535    liveins: $vgpr0_vgpr1, $vgpr21536 1537    ; CHECK-LABEL: name: test_insert_s64_s16_offset01538    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21539    ; CHECK-NEXT: {{  $}}1540    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr11541    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21542    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)1543    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[TRUNC]](s16), 01544    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[INSERT]](s64)1545    %0:_(s64) = COPY $vgpr0_vgpr11546    %1:_(s32) = COPY $vgpr21547    %2:_(s16) = G_TRUNC %11548    %3:_(s64) = G_INSERT %0, %2, 01549    $vgpr0_vgpr1 = COPY %31550...1551---1552name: test_insert_s64_s16_offset161553body: |1554  bb.0:1555    liveins: $vgpr0_vgpr1, $vgpr21556 1557    ; CHECK-LABEL: name: test_insert_s64_s16_offset161558    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21559    ; CHECK-NEXT: {{  $}}1560    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr11561    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21562    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)1563    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[TRUNC]](s16), 161564    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[INSERT]](s64)1565    %0:_(s64) = COPY $vgpr0_vgpr11566    %1:_(s32) = COPY $vgpr21567    %2:_(s16) = G_TRUNC %11568    %3:_(s64) = G_INSERT %0, %2, 161569    $vgpr0_vgpr1 = COPY %31570...1571---1572name: test_insert_s64_s16_offset321573body: |1574  bb.0:1575    liveins: $vgpr0_vgpr1, $vgpr21576 1577    ; CHECK-LABEL: name: test_insert_s64_s16_offset321578    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21579    ; CHECK-NEXT: {{  $}}1580    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr11581    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21582    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)1583    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[TRUNC]](s16), 321584    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[INSERT]](s64)1585    %0:_(s64) = COPY $vgpr0_vgpr11586    %1:_(s32) = COPY $vgpr21587    %2:_(s16) = G_TRUNC %11588    %3:_(s64) = G_INSERT %0, %2, 321589    $vgpr0_vgpr1 = COPY %31590...1591---1592name: test_insert_s64_s16_offset481593body: |1594  bb.0:1595    liveins: $vgpr0_vgpr1, $vgpr21596 1597    ; CHECK-LABEL: name: test_insert_s64_s16_offset481598    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr21599    ; CHECK-NEXT: {{  $}}1600    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr11601    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr21602    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)1603    ; CHECK-NEXT: [[INSERT:%[0-9]+]]:_(s64) = G_INSERT [[COPY]], [[TRUNC]](s16), 481604    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[INSERT]](s64)1605    %0:_(s64) = COPY $vgpr0_vgpr11606    %1:_(s32) = COPY $vgpr21607    %2:_(s16) = G_TRUNC %11608    %3:_(s64) = G_INSERT %0, %2, 481609    $vgpr0_vgpr1 = COPY %31610...1611---1612name: test_insert_s32_s16_offset01613body: |1614  bb.0:1615    liveins: $vgpr0, $vgpr11616 1617    ; CHECK-LABEL: name: test_insert_s32_s16_offset01618    ; CHECK: liveins: $vgpr0, $vgpr11619    ; CHECK-NEXT: {{  $}}1620    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01621    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11622    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351623    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]1624    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -655361625    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]1626    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[AND]]1627    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[OR]](s32)1628    ; CHECK-NEXT: $vgpr0 = COPY [[COPY2]](s32)1629    %0:_(s32) = COPY $vgpr01630    %1:_(s32) = COPY $vgpr11631    %2:_(s16) = G_TRUNC %11632    %3:_(s32) = G_INSERT %1, %2, 01633    $vgpr0 = COPY %31634...1635 1636---1637name: test_insert_s32_s16_offset11638body: |1639  bb.0:1640    liveins: $vgpr0, $vgpr11641 1642    ; CHECK-LABEL: name: test_insert_s32_s16_offset11643    ; CHECK: liveins: $vgpr0, $vgpr11644    ; CHECK-NEXT: {{  $}}1645    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01646    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11647    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351648    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]1649    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 11650    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND]], [[C1]](s32)1651    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1310711652    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C2]]1653    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[SHL]]1654    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[OR]](s32)1655    ; CHECK-NEXT: $vgpr0 = COPY [[COPY2]](s32)1656    %0:_(s32) = COPY $vgpr01657    %1:_(s32) = COPY $vgpr11658    %2:_(s16) = G_TRUNC %11659    %3:_(s32) = G_INSERT %1, %2, 11660    $vgpr0 = COPY %31661...1662 1663---1664name: test_insert_s32_s16_offset81665body: |1666  bb.0:1667    liveins: $vgpr0, $vgpr11668 1669    ; CHECK-LABEL: name: test_insert_s32_s16_offset81670    ; CHECK: liveins: $vgpr0, $vgpr11671    ; CHECK-NEXT: {{  $}}1672    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01673    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11674    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351675    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]1676    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 81677    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND]], [[C1]](s32)1678    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 -167769611679    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C2]]1680    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[SHL]]1681    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[OR]](s32)1682    ; CHECK-NEXT: $vgpr0 = COPY [[COPY2]](s32)1683    %0:_(s32) = COPY $vgpr01684    %1:_(s32) = COPY $vgpr11685    %2:_(s16) = G_TRUNC %11686    %3:_(s32) = G_INSERT %1, %2, 81687    $vgpr0 = COPY %31688...1689 1690---1691name: test_insert_s32_s16_offset161692body: |1693  bb.0:1694    liveins: $vgpr0, $vgpr11695 1696    ; CHECK-LABEL: name: test_insert_s32_s16_offset161697    ; CHECK: liveins: $vgpr0, $vgpr11698    ; CHECK-NEXT: {{  $}}1699    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01700    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11701    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 655351702    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]1703    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[AND]](s32)1704    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 161705    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY2]], [[C1]](s32)1706    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]1707    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[OR]](s32)1708    ; CHECK-NEXT: $vgpr0 = COPY [[COPY3]](s32)1709    %0:_(s32) = COPY $vgpr01710    %1:_(s32) = COPY $vgpr11711    %2:_(s16) = G_TRUNC %11712    %3:_(s32) = G_INSERT %1, %2, 161713    $vgpr0 = COPY %31714...1715