brintos

brintos / llvm-project-archived public Read only

0
0
Text · 35.9 KiB · d981769 Raw
1167 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=legalizer -global-isel-abort=0 %s -o - | FileCheck %s3 4---5name: test_extract_s32_s64_offset06body: |7  bb.0:8    liveins: $vgpr0_vgpr19 10    ; CHECK-LABEL: name: test_extract_s32_s64_offset011    ; CHECK: liveins: $vgpr0_vgpr112    ; CHECK-NEXT: {{  $}}13    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr114    ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s64), 015    ; CHECK-NEXT: $vgpr0 = COPY [[EXTRACT]](s32)16    %0:_(s64) = COPY $vgpr0_vgpr117    %1:_(s32) = G_EXTRACT %0, 018    $vgpr0 = COPY %119...20---21name: test_extract_s32_s64_offset3222body: |23  bb.0:24    liveins: $vgpr0_vgpr125 26    ; CHECK-LABEL: name: test_extract_s32_s64_offset3227    ; CHECK: liveins: $vgpr0_vgpr128    ; CHECK-NEXT: {{  $}}29    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr130    ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s64), 3231    ; CHECK-NEXT: $vgpr0 = COPY [[EXTRACT]](s32)32    %0:_(s64) = COPY $vgpr0_vgpr133    %1:_(s32) = G_EXTRACT %0, 3234     $vgpr0 = COPY %135...36 37---38name: test_extract_s8_s15_offset039body: |40  bb.0:41    liveins: $vgpr0_vgpr142 43    ; CHECK-LABEL: name: test_extract_s8_s15_offset044    ; CHECK: liveins: $vgpr0_vgpr145    ; CHECK-NEXT: {{  $}}46    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr147    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)48    ; CHECK-NEXT: $vgpr0 = COPY [[TRUNC]](s32)49    %0:_(s64) = COPY $vgpr0_vgpr150    %1:_(s31) = G_TRUNC %051    %2:_(s8) = G_EXTRACT %1, 052    %3:_(s32) = G_ANYEXT %253    $vgpr0 = COPY %354...55 56---57name: test_extract_s16_s31_offset058body: |59  bb.0:60    liveins: $vgpr0_vgpr161 62    ; CHECK-LABEL: name: test_extract_s16_s31_offset063    ; CHECK: liveins: $vgpr0_vgpr164    ; CHECK-NEXT: {{  $}}65    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr166    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)67    ; CHECK-NEXT: $vgpr0 = COPY [[TRUNC]](s32)68    %0:_(s64) = COPY $vgpr0_vgpr169    %1:_(s31) = G_TRUNC %070    %2:_(s16) = G_EXTRACT %1, 071    %3:_(s32) = G_ANYEXT %272    $vgpr0 = COPY %373...74 75---76name: test_extract_s32_s48_offset077body: |78  bb.0:79    liveins: $vgpr0_vgpr180 81    ; CHECK-LABEL: name: test_extract_s32_s48_offset082    ; CHECK: liveins: $vgpr0_vgpr183    ; CHECK-NEXT: {{  $}}84    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr185    ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s64), 086    ; CHECK-NEXT: $vgpr0 = COPY [[EXTRACT]](s32)87    %0:_(s64) = COPY $vgpr0_vgpr188    %1:_(s48) = G_TRUNC %089    %2:_(s32) = G_EXTRACT %1, 090    $vgpr0 = COPY %291...92 93---94name: test_extract_s32_s96_offset095body: |96  bb.0:97    liveins: $vgpr0_vgpr1_vgpr298 99    ; CHECK-LABEL: name: test_extract_s32_s96_offset0100    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2101    ; CHECK-NEXT: {{  $}}102    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2103    ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s96), 0104    ; CHECK-NEXT: $vgpr0 = COPY [[EXTRACT]](s32)105    %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2106    %1:_(s32) = G_EXTRACT %0, 0107    $vgpr0 = COPY %1108...109---110name: test_extract_s32_s96_offset32111body: |112  bb.0:113    liveins: $vgpr0_vgpr1_vgpr2114 115    ; CHECK-LABEL: name: test_extract_s32_s96_offset32116    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2117    ; CHECK-NEXT: {{  $}}118    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2119    ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s96), 32120    ; CHECK-NEXT: $vgpr0 = COPY [[EXTRACT]](s32)121    %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2122    %1:_(s32) = G_EXTRACT %0, 32123    $vgpr0 = COPY %1124...125---126name: test_extract_s32_s96_offset64127body: |128  bb.0:129    liveins: $vgpr0_vgpr1_vgpr2130 131    ; CHECK-LABEL: name: test_extract_s32_s96_offset64132    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2133    ; CHECK-NEXT: {{  $}}134    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2135    ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s96), 64136    ; CHECK-NEXT: $vgpr0 = COPY [[EXTRACT]](s32)137    %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2138    %1:_(s32) = G_EXTRACT %0, 64139    $vgpr0 = COPY %1140...141---142name: test_extract_s32_s128_offset0143body: |144  bb.0:145    liveins: $vgpr0_vgpr1_vgpr2_vgpr3146 147    ; CHECK-LABEL: name: test_extract_s32_s128_offset0148    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3149    ; CHECK-NEXT: {{  $}}150    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3151    ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s128), 0152    ; CHECK-NEXT: $vgpr0 = COPY [[EXTRACT]](s32)153    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3154    %1:_(s32) = G_EXTRACT %0, 0155    $vgpr0 = COPY %1156...157---158name: test_extract_s32_s128_offset32159body: |160  bb.0:161    liveins: $vgpr0_vgpr1_vgpr2_vgpr3162 163    ; CHECK-LABEL: name: test_extract_s32_s128_offset32164    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3165    ; CHECK-NEXT: {{  $}}166    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3167    ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s128), 32168    ; CHECK-NEXT: $vgpr0 = COPY [[EXTRACT]](s32)169    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3170    %1:_(s32) = G_EXTRACT %0, 32171    $vgpr0 = COPY %1172...173---174name: test_extract_s32_s128_offset64175body: |176  bb.0:177    liveins: $vgpr0_vgpr1_vgpr2_vgpr3178 179    ; CHECK-LABEL: name: test_extract_s32_s128_offset64180    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3181    ; CHECK-NEXT: {{  $}}182    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3183    ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s128), 64184    ; CHECK-NEXT: $vgpr0 = COPY [[EXTRACT]](s32)185    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3186    %1:_(s32) = G_EXTRACT %0, 64187    $vgpr0 = COPY %1188...189---190name: test_extract_s32_s128_offset96191body: |192  bb.0:193    liveins: $vgpr0_vgpr1_vgpr2_vgpr3194 195    ; CHECK-LABEL: name: test_extract_s32_s128_offset96196    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3197    ; CHECK-NEXT: {{  $}}198    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3199    ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s128), 96200    ; CHECK-NEXT: $vgpr0 = COPY [[EXTRACT]](s32)201    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3202    %1:_(s32) = G_EXTRACT %0, 96203    $vgpr0 = COPY %1204...205 206---207name: test_extract_s32_v2s32_offset0208body: |209  bb.0:210    liveins: $vgpr0_vgpr1211 212    ; CHECK-LABEL: name: test_extract_s32_v2s32_offset0213    ; CHECK: liveins: $vgpr0_vgpr1214    ; CHECK-NEXT: {{  $}}215    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1216    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)217    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV]](s32)218    ; CHECK-NEXT: $vgpr0 = COPY [[COPY1]](s32)219    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1220    %1:_(s32) = G_EXTRACT %0, 0221    $vgpr0 = COPY %1222...223---224name: test_extract_s32_v2s32_offset32225body: |226  bb.0:227    liveins: $vgpr0_vgpr1228 229    ; CHECK-LABEL: name: test_extract_s32_v2s32_offset32230    ; CHECK: liveins: $vgpr0_vgpr1231    ; CHECK-NEXT: {{  $}}232    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1233    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)234    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV1]](s32)235    ; CHECK-NEXT: $vgpr0 = COPY [[COPY1]](s32)236    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1237    %1:_(s32) = G_EXTRACT %0, 32238     $vgpr0 = COPY %1239...240---241name: test_extract_s32_v3s32_offset0242body: |243  bb.0:244    liveins: $vgpr0_vgpr1_vgpr2245 246    ; CHECK-LABEL: name: test_extract_s32_v3s32_offset0247    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2248    ; CHECK-NEXT: {{  $}}249    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2250    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)251    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV]](s32)252    ; CHECK-NEXT: $vgpr0 = COPY [[COPY1]](s32)253    %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2254    %1:_(s32) = G_EXTRACT %0, 0255    $vgpr0 = COPY %1256...257---258name: test_extract_s32_v3s32_offset32259body: |260  bb.0:261    liveins: $vgpr0_vgpr1_vgpr2262 263    ; CHECK-LABEL: name: test_extract_s32_v3s32_offset32264    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2265    ; CHECK-NEXT: {{  $}}266    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2267    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)268    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV1]](s32)269    ; CHECK-NEXT: $vgpr0 = COPY [[COPY1]](s32)270    %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2271    %1:_(s32) = G_EXTRACT %0, 32272    $vgpr0 = COPY %1273...274---275name: test_extract_s32_v3s32_offset64276body: |277  bb.0:278    liveins: $vgpr0_vgpr1_vgpr2279 280    ; CHECK-LABEL: name: test_extract_s32_v3s32_offset64281    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2282    ; CHECK-NEXT: {{  $}}283    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2284    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)285    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV2]](s32)286    ; CHECK-NEXT: $vgpr0 = COPY [[COPY1]](s32)287    %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2288    %1:_(s32) = G_EXTRACT %0, 64289    $vgpr0 = COPY %1290...291---292name: test_extract_s32_v4s32_offset0293body: |294  bb.0:295    liveins: $vgpr0_vgpr1_vgpr2_vgpr3296 297    ; CHECK-LABEL: name: test_extract_s32_v4s32_offset0298    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3299    ; CHECK-NEXT: {{  $}}300    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3301    ; 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>)302    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[UV]](s32)303    ; CHECK-NEXT: $vgpr0 = COPY [[COPY1]](s32)304    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3305    %1:_(s32) = G_EXTRACT %0, 0306    $vgpr0 = COPY %1307...308---309name: test_extract_s32_v4s32_offset32310body: |311  bb.0:312    liveins: $vgpr0_vgpr1_vgpr2_vgpr3313 314    ; CHECK-LABEL: name: test_extract_s32_v4s32_offset32315    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3316    ; CHECK-NEXT: {{  $}}317    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3318    ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s128), 32319    ; CHECK-NEXT: $vgpr0 = COPY [[EXTRACT]](s32)320    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3321    %1:_(s32) = G_EXTRACT %0, 32322    $vgpr0 = COPY %1323...324---325name: test_extract_s32_v4s32_offset64326body: |327  bb.0:328    liveins: $vgpr0_vgpr1_vgpr2_vgpr3329 330    ; CHECK-LABEL: name: test_extract_s32_v4s32_offset64331    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3332    ; CHECK-NEXT: {{  $}}333    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3334    ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s128), 64335    ; CHECK-NEXT: $vgpr0 = COPY [[EXTRACT]](s32)336    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3337    %1:_(s32) = G_EXTRACT %0, 64338    $vgpr0 = COPY %1339...340---341name: test_extract_s32_v4s32_offset96342body: |343  bb.0:344    liveins: $vgpr0_vgpr1_vgpr2_vgpr3345 346    ; CHECK-LABEL: name: test_extract_s32_v4s32_offset96347    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3348    ; CHECK-NEXT: {{  $}}349    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3350    ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s128), 96351    ; CHECK-NEXT: $vgpr0 = COPY [[EXTRACT]](s32)352    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3353    %1:_(s32) = G_EXTRACT %0, 96354    $vgpr0 = COPY %1355...356---357name: test_extract_v2s32_v4s32_offset0358body: |359  bb.0:360    liveins: $vgpr0_vgpr1_vgpr2_vgpr3361 362    ; CHECK-LABEL: name: test_extract_v2s32_v4s32_offset0363    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3364    ; CHECK-NEXT: {{  $}}365    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3366    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s32>), [[UV1:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)367    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[UV]](<2 x s32>)368    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3369    %1:_(<2 x s32>) = G_EXTRACT %0, 0370    $vgpr0_vgpr1 = COPY %1371...372 373---374name: test_extract_v2s32_v4s32_offset32375body: |376  bb.0:377    liveins: $vgpr0_vgpr1_vgpr2_vgpr3378 379    ; CHECK-LABEL: name: test_extract_v2s32_v4s32_offset32380    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3381    ; CHECK-NEXT: {{  $}}382    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3383    ; 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>)384    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[UV1]](s32), [[UV2]](s32)385    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)386    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3387    %1:_(<2 x s32>) = G_EXTRACT %0, 32388    $vgpr0_vgpr1 = COPY %1389...390 391---392name: test_extract_v2s32_v4s32_offset64393body: |394  bb.0:395    liveins: $vgpr0_vgpr1_vgpr2_vgpr3396 397    ; CHECK-LABEL: name: test_extract_v2s32_v4s32_offset64398    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3399    ; CHECK-NEXT: {{  $}}400    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3401    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s32>), [[UV1:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)402    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[UV1]](<2 x s32>)403    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3404    %1:_(<2 x s32>) = G_EXTRACT %0, 64405    $vgpr0_vgpr1 = COPY %1406...407---408name: test_extract_s64_v4s32_offset0409body: |410  bb.0:411    liveins: $vgpr0_vgpr1_vgpr2_vgpr3412 413    ; CHECK-LABEL: name: test_extract_s64_v4s32_offset0414    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3415    ; CHECK-NEXT: {{  $}}416    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3417    ; 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>)418    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV]](s32), [[UV1]](s32)419    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[MV]](s64)420    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3421    %1:_(s64) = G_EXTRACT %0, 0422    $vgpr0_vgpr1 = COPY %1423...424 425---426name: test_extract_s64_v4s32_offset32427body: |428  bb.0:429    liveins: $vgpr0_vgpr1_vgpr2_vgpr3430 431    ; CHECK-LABEL: name: test_extract_s64_v4s32_offset32432    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3433    ; CHECK-NEXT: {{  $}}434    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3435    ; 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>)436    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV1]](s32), [[UV2]](s32)437    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[MV]](s64)438    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3439    %1:_(s64) = G_EXTRACT %0, 32440    $vgpr0_vgpr1 = COPY %1441...442 443---444name: test_extract_s64_v4s32_offset64445body: |446  bb.0:447    liveins: $vgpr0_vgpr1_vgpr2_vgpr3448 449    ; CHECK-LABEL: name: test_extract_s64_v4s32_offset64450    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3451    ; CHECK-NEXT: {{  $}}452    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3453    ; 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>)454    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV2]](s32), [[UV3]](s32)455    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[MV]](s64)456    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3457    %1:_(s64) = G_EXTRACT %0, 64458    $vgpr0_vgpr1 = COPY %1459...460---461name: test_extract_p0_v4s32_offset0462body: |463  bb.0:464    liveins: $vgpr0_vgpr1_vgpr2_vgpr3465 466    ; CHECK-LABEL: name: test_extract_p0_v4s32_offset0467    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3468    ; CHECK-NEXT: {{  $}}469    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3470    ; 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>)471    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[UV]](s32), [[UV1]](s32)472    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[MV]](p0)473    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3474    %1:_(p0) = G_EXTRACT %0, 0475    $vgpr0_vgpr1 = COPY %1476...477 478---479name: test_extract_p0_v4s32_offset32480body: |481  bb.0:482    liveins: $vgpr0_vgpr1_vgpr2_vgpr3483 484    ; CHECK-LABEL: name: test_extract_p0_v4s32_offset32485    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3486    ; CHECK-NEXT: {{  $}}487    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3488    ; 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>)489    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[UV1]](s32), [[UV2]](s32)490    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[MV]](p0)491    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3492    %1:_(p0) = G_EXTRACT %0, 32493    $vgpr0_vgpr1 = COPY %1494...495 496---497name: test_extract_p0_v4s32_offset64498body: |499  bb.0:500    liveins: $vgpr0_vgpr1_vgpr2_vgpr3501 502    ; CHECK-LABEL: name: test_extract_p0_v4s32_offset64503    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3504    ; CHECK-NEXT: {{  $}}505    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3506    ; 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>)507    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[UV2]](s32), [[UV3]](s32)508    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[MV]](p0)509    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3510    %1:_(p0) = G_EXTRACT %0, 64511    $vgpr0_vgpr1 = COPY %1512...513 514---515name: extract_s8_v4s8_offset0516body: |517  bb.0:518    ; CHECK-LABEL: name: extract_s8_v4s8_offset0519    ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF520    ; CHECK-NEXT: $vgpr0 = COPY [[DEF]](s32)521    %0:_(<4 x s8>) = G_IMPLICIT_DEF522    %1:_(s8) = G_EXTRACT %0, 0523    %2:_(s32) = G_ANYEXT %1524    $vgpr0 = COPY %2525...526 527---528name: extract_s8_v4s8_offset8529body: |530  bb.0:531    ; CHECK-LABEL: name: extract_s8_v4s8_offset8532    ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF533    ; CHECK-NEXT: $vgpr0 = COPY [[DEF]](s32)534    %0:_(<4 x s8>) = G_IMPLICIT_DEF535    %1:_(s8) = G_EXTRACT %0, 8536    %2:_(s32) = G_ANYEXT %1537    $vgpr0 = COPY %2538...539 540---541name: extract_s8_v4s8_offset16542body: |543  bb.0:544    ; CHECK-LABEL: name: extract_s8_v4s8_offset16545    ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF546    ; CHECK-NEXT: $vgpr0 = COPY [[DEF]](s32)547    %0:_(<4 x s8>) = G_IMPLICIT_DEF548    %1:_(s8) = G_EXTRACT %0, 16549    %2:_(s32) = G_ANYEXT %1550    $vgpr0 = COPY %2551...552 553---554name: extract_s8_v4s8_offset24555body: |556  bb.0:557    ; CHECK-LABEL: name: extract_s8_v4s8_offset24558    ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF559    ; CHECK-NEXT: $vgpr0 = COPY [[DEF]](s32)560    %0:_(<4 x s8>) = G_IMPLICIT_DEF561    %1:_(s8) = G_EXTRACT %0, 24562    %2:_(s32) = G_ANYEXT %1563    $vgpr0 = COPY %2564...565 566# FIXME: Leaves behind dead G_TRUNC567---568name: extract_s8_v3s8_offset16569body: |570  bb.0:571    ; CHECK-LABEL: name: extract_s8_v3s8_offset16572    ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF573    ; CHECK-NEXT: $vgpr0 = COPY [[DEF]](s32)574    %0:_(<3 x s8>) = G_IMPLICIT_DEF575    %1:_(s8) = G_EXTRACT %0, 16576    %2:_(s32) = G_ANYEXT %1577    $vgpr0 = COPY %2578...579 580---581name: extract_s8_v5s1_offset4582body: |583  bb.0:584    ; CHECK-LABEL: name: extract_s8_v5s1_offset4585    ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF586    ; CHECK-NEXT: $vgpr0 = COPY [[DEF]](s32)587    %0:_(<5 x s1>) = G_IMPLICIT_DEF588    %1:_(s1) = G_EXTRACT %0, 4589    %2:_(s32) = G_ANYEXT %1590    $vgpr0 = COPY %2591...592 593---594name: extract_v2s16_v4s16_offset32595body: |596  bb.0:597    ; CHECK-LABEL: name: extract_v2s16_v4s16_offset32598    ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF599    ; CHECK-NEXT: $vgpr0 = COPY [[DEF]](<2 x s16>)600    %0:_(<4 x s16>) = G_IMPLICIT_DEF601    %1:_(<2 x s16>) = G_EXTRACT %0, 32602    $vgpr0 = COPY %1603...604 605---606name: extract_v2s16_v6s16_offset32607body: |608  bb.0:609    ; CHECK-LABEL: name: extract_v2s16_v6s16_offset32610    ; CHECK: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF611    ; CHECK-NEXT: $vgpr0 = COPY [[DEF]](<2 x s16>)612    %0:_(<6 x s16>) = G_IMPLICIT_DEF613    %1:_(<2 x s16>) = G_EXTRACT %0, 32614    $vgpr0 = COPY %1615...616 617---618name: test_extract_s8_s16_offset0619body: |620  bb.0:621    liveins: $vgpr0622    ; CHECK-LABEL: name: test_extract_s8_s16_offset0623    ; CHECK: liveins: $vgpr0624    ; CHECK-NEXT: {{  $}}625    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0626    ; CHECK-NEXT: $vgpr0 = COPY [[COPY]](s32)627    %0:_(s32) = COPY $vgpr0628    %1:_(s16) = G_TRUNC %0629    %2:_(s8) = G_EXTRACT %1, 0630    %3:_(s32) = G_ANYEXT %2631    $vgpr0 = COPY %3632...633 634---635name: test_extract_s8_s16_offset1636body: |637  bb.0:638    liveins: $vgpr0639    ; CHECK-LABEL: name: test_extract_s8_s16_offset1640    ; CHECK: liveins: $vgpr0641    ; CHECK-NEXT: {{  $}}642    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0643    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)644    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 1645    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s16) = G_LSHR [[TRUNC]], [[C]](s16)646    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR]](s16)647    ; CHECK-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)648    %0:_(s32) = COPY $vgpr0649    %1:_(s16) = G_TRUNC %0650    %2:_(s8) = G_EXTRACT %1, 1651    %3:_(s32) = G_ANYEXT %2652    $vgpr0 = COPY %3653...654 655---656name: test_extract_s8_s16_offset8657body: |658  bb.0:659    liveins: $vgpr0660    ; CHECK-LABEL: name: test_extract_s8_s16_offset8661    ; CHECK: liveins: $vgpr0662    ; CHECK-NEXT: {{  $}}663    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0664    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)665    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 8666    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s16) = G_LSHR [[TRUNC]], [[C]](s16)667    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR]](s16)668    ; CHECK-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)669    %0:_(s32) = COPY $vgpr0670    %1:_(s16) = G_TRUNC %0671    %2:_(s8) = G_EXTRACT %1, 8672    %3:_(s32) = G_ANYEXT %2673    $vgpr0 = COPY %3674...675 676---677name: test_extract_s8_s32_offset0678body: |679  bb.0:680    liveins: $vgpr0681    ; CHECK-LABEL: name: test_extract_s8_s32_offset0682    ; CHECK: liveins: $vgpr0683    ; CHECK-NEXT: {{  $}}684    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0685    ; CHECK-NEXT: $vgpr0 = COPY [[COPY]](s32)686    %0:_(s32) = COPY $vgpr0687    %1:_(s8) = G_EXTRACT %0, 0688    %2:_(s32) = G_ANYEXT %1689    $vgpr0 = COPY %2690...691 692---693name: test_extract_s8_s32_offset1694body: |695  bb.0:696    liveins: $vgpr0697    ; CHECK-LABEL: name: test_extract_s8_s32_offset1698    ; CHECK: liveins: $vgpr0699    ; CHECK-NEXT: {{  $}}700    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0701    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1702    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)703    ; CHECK-NEXT: $vgpr0 = COPY [[LSHR]](s32)704    %0:_(s32) = COPY $vgpr0705    %1:_(s8) = G_EXTRACT %0, 1706    %2:_(s32) = G_ANYEXT %1707    $vgpr0 = COPY %2708...709 710---711name: test_extract_s8_s32_offset8712body: |713  bb.0:714    liveins: $vgpr0715    ; CHECK-LABEL: name: test_extract_s8_s32_offset8716    ; CHECK: liveins: $vgpr0717    ; CHECK-NEXT: {{  $}}718    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0719    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 8720    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)721    ; CHECK-NEXT: $vgpr0 = COPY [[LSHR]](s32)722    %0:_(s32) = COPY $vgpr0723    %1:_(s8) = G_EXTRACT %0, 8724    %2:_(s32) = G_ANYEXT %1725    $vgpr0 = COPY %2726...727 728---729name: test_extract_s8_s32_offset16730body: |731  bb.0:732    liveins: $vgpr0733    ; CHECK-LABEL: name: test_extract_s8_s32_offset16734    ; CHECK: liveins: $vgpr0735    ; CHECK-NEXT: {{  $}}736    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0737    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16738    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)739    ; CHECK-NEXT: $vgpr0 = COPY [[LSHR]](s32)740    %0:_(s32) = COPY $vgpr0741    %1:_(s8) = G_EXTRACT %0, 16742    %2:_(s32) = G_ANYEXT %1743    $vgpr0 = COPY %2744...745 746---747name: test_extract_s8_s32_offset24748body: |749  bb.0:750    liveins: $vgpr0751    ; CHECK-LABEL: name: test_extract_s8_s32_offset24752    ; CHECK: liveins: $vgpr0753    ; CHECK-NEXT: {{  $}}754    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0755    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16756    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)757    ; CHECK-NEXT: $vgpr0 = COPY [[LSHR]](s32)758    %0:_(s32) = COPY $vgpr0759    %1:_(s8) = G_EXTRACT %0, 16760    %2:_(s32) = G_ANYEXT %1761    $vgpr0 = COPY %2762...763 764---765name: test_extract_s8_p3_offset0766body: |767  bb.0:768    liveins: $vgpr0769    ; CHECK-LABEL: name: test_extract_s8_p3_offset0770    ; CHECK: liveins: $vgpr0771    ; CHECK-NEXT: {{  $}}772    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0773    ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY]](p3)774    ; CHECK-NEXT: $vgpr0 = COPY [[PTRTOINT]](s32)775    %0:_(p3) = COPY $vgpr0776    %1:_(s8) = G_EXTRACT %0, 0777    %2:_(s32) = G_ANYEXT %1778    $vgpr0 = COPY %2779...780 781---782name: test_extract_s8_p3_offset8783body: |784  bb.0:785    liveins: $vgpr0786    ; CHECK-LABEL: name: test_extract_s8_p3_offset8787    ; CHECK: liveins: $vgpr0788    ; CHECK-NEXT: {{  $}}789    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0790    ; CHECK-NEXT: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY]](p3)791    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 8792    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[PTRTOINT]], [[C]](s32)793    ; CHECK-NEXT: $vgpr0 = COPY [[LSHR]](s32)794    %0:_(p3) = COPY $vgpr0795    %1:_(s8) = G_EXTRACT %0, 8796    %2:_(s32) = G_ANYEXT %1797    $vgpr0 = COPY %2798...799 800---801name: test_extract_s1_s8_offset0802body: |803  bb.0:804    liveins: $vgpr0805    ; CHECK-LABEL: name: test_extract_s1_s8_offset0806    ; CHECK: liveins: $vgpr0807    ; CHECK-NEXT: {{  $}}808    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0809    ; CHECK-NEXT: $vgpr0 = COPY [[COPY]](s32)810    %0:_(s32) = COPY $vgpr0811    %1:_(s8) = G_TRUNC %0812    %2:_(s1) = G_EXTRACT %1, 0813    %3:_(s32) = G_ANYEXT %2814    $vgpr0 = COPY %3815...816 817---818name: test_extract_s1_s8_offset2819body: |820  bb.0:821    liveins: $vgpr0822    ; CHECK-LABEL: name: test_extract_s1_s8_offset2823    ; CHECK: liveins: $vgpr0824    ; CHECK-NEXT: {{  $}}825    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0826    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)827    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 2828    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s16) = G_LSHR [[TRUNC]], [[C]](s16)829    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[LSHR]](s16)830    ; CHECK-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)831    %0:_(s32) = COPY $vgpr0832    %1:_(s8) = G_TRUNC %0833    %2:_(s1) = G_EXTRACT %1, 2834    %3:_(s32) = G_ANYEXT %2835    $vgpr0 = COPY %3836...837 838---839name: test_extract_s8_s64_offset2840body: |841  bb.0:842    liveins: $vgpr0_vgpr1843    ; CHECK-LABEL: name: test_extract_s8_s64_offset2844    ; CHECK: liveins: $vgpr0_vgpr1845    ; CHECK-NEXT: {{  $}}846    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1847    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2848    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY]], [[C]](s32)849    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64)850    ; CHECK-NEXT: $vgpr0 = COPY [[TRUNC]](s32)851    %0:_(s64) = COPY $vgpr0_vgpr1852    %1:_(s8) = G_EXTRACT %0, 2853    %2:_(s32) = G_ANYEXT %1854    $vgpr0 = COPY %2855...856 857---858name: extract_s16_v3s16_offset0859body: |860  bb.0:861 862    ; CHECK-LABEL: name: extract_s16_v3s16_offset0863    ; CHECK: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF864    ; CHECK-NEXT: $vgpr0 = COPY [[DEF]](s32)865    %0:_(<3 x s16>) = G_IMPLICIT_DEF866    %1:_(s16) = G_EXTRACT %0, 0867    %2:_(s32) = G_ANYEXT %1868    $vgpr0 = COPY %2869...870 871---872name: test_extract_s8_s64_offset16873body: |874  bb.0:875    liveins: $vgpr0_vgpr1876    ; CHECK-LABEL: name: test_extract_s8_s64_offset16877    ; CHECK: liveins: $vgpr0_vgpr1878    ; CHECK-NEXT: {{  $}}879    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1880    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16881    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY]], [[C]](s32)882    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64)883    ; CHECK-NEXT: $vgpr0 = COPY [[TRUNC]](s32)884    %0:_(s64) = COPY $vgpr0_vgpr1885    %1:_(s8) = G_EXTRACT %0, 16886    %2:_(s32) = G_ANYEXT %1887    $vgpr0 = COPY %2888...889 890---891name: test_extract_s16_s64_offset16892body: |893  bb.0:894    liveins: $vgpr0_vgpr1895    ; CHECK-LABEL: name: test_extract_s16_s64_offset16896    ; CHECK: liveins: $vgpr0_vgpr1897    ; CHECK-NEXT: {{  $}}898    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1899    ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s16) = G_EXTRACT [[COPY]](s64), 16900    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[EXTRACT]](s16)901    ; CHECK-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)902    %0:_(s64) = COPY $vgpr0_vgpr1903    %1:_(s16) = G_EXTRACT %0, 16904    %2:_(s32) = G_ANYEXT %1905    $vgpr0 = COPY %2906...907 908---909name: test_extract_s16_s64_offset32910body: |911  bb.0:912    liveins: $vgpr0_vgpr1913    ; CHECK-LABEL: name: test_extract_s16_s64_offset32914    ; CHECK: liveins: $vgpr0_vgpr1915    ; CHECK-NEXT: {{  $}}916    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1917    ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s16) = G_EXTRACT [[COPY]](s64), 32918    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[EXTRACT]](s16)919    ; CHECK-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)920    %0:_(s64) = COPY $vgpr0_vgpr1921    %1:_(s16) = G_EXTRACT %0, 32922    %2:_(s32) = G_ANYEXT %1923    $vgpr0 = COPY %2924...925 926---927name: test_extract_s16_s64_offset48928body: |929  bb.0:930    liveins: $vgpr0_vgpr1931    ; CHECK-LABEL: name: test_extract_s16_s64_offset48932    ; CHECK: liveins: $vgpr0_vgpr1933    ; CHECK-NEXT: {{  $}}934    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1935    ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s16) = G_EXTRACT [[COPY]](s64), 48936    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[EXTRACT]](s16)937    ; CHECK-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)938    %0:_(s64) = COPY $vgpr0_vgpr1939    %1:_(s16) = G_EXTRACT %0, 48940    %2:_(s32) = G_ANYEXT %1941    $vgpr0 = COPY %2942...943 944---945name: extract_v2s16_v3s16_offset0946body: |947  bb.0:948 949    ; CHECK-LABEL: name: extract_v2s16_v3s16_offset0950    ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0951    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16952    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[C]], [[C1]](s32)953    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[C]], [[SHL]]954    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)955    ; CHECK-NEXT: $vgpr0 = COPY [[BITCAST]](<2 x s16>)956    %0:_(<3 x s16>) = G_IMPLICIT_DEF957    %1:_(<2 x s16>) = G_EXTRACT %0, 0958    $vgpr0 = COPY %1959...960 961---962name: extract_v2s16_v5s16_offset0963body: |964  bb.0:965 966    ; CHECK-LABEL: name: extract_v2s16_v5s16_offset0967    ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0968    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16969    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[C]], [[C1]](s32)970    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[C]], [[SHL]]971    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)972    ; CHECK-NEXT: $vgpr0 = COPY [[BITCAST]](<2 x s16>)973    %0:_(<5 x s16>) = G_IMPLICIT_DEF974    %1:_(<2 x s16>) = G_EXTRACT %0, 0975    $vgpr0 = COPY %1976...977 978---979name: extract_s16_v2s16_offset0980body: |981  bb.0:982    liveins: $vgpr0983 984    ; CHECK-LABEL: name: extract_s16_v2s16_offset0985    ; CHECK: liveins: $vgpr0986    ; CHECK-NEXT: {{  $}}987    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0988    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)989    ; CHECK-NEXT: $vgpr0 = COPY [[BITCAST]](s32)990    %0:_(<2 x s16>) = COPY $vgpr0991    %1:_(s16) = G_EXTRACT %0, 0992    %2:_(s32) = G_ANYEXT %1993    $vgpr0 = COPY %2994...995 996---997name: extract_s16_v2s16_offset1998body: |999  bb.0:1000    liveins: $vgpr01001 1002    ; CHECK-LABEL: name: extract_s16_v2s16_offset11003    ; CHECK: liveins: $vgpr01004    ; CHECK-NEXT: {{  $}}1005    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01006    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)1007    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 11008    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)1009    ; CHECK-NEXT: $vgpr0 = COPY [[LSHR]](s32)1010    %0:_(<2 x s16>) = COPY $vgpr01011    %1:_(s16) = G_EXTRACT %0, 11012    %2:_(s32) = G_ANYEXT %11013    $vgpr0 = COPY %21014...1015 1016---1017name: extract_s16_v2s16_offset81018body: |1019  bb.0:1020    liveins: $vgpr01021 1022    ; CHECK-LABEL: name: extract_s16_v2s16_offset81023    ; CHECK: liveins: $vgpr01024    ; CHECK-NEXT: {{  $}}1025    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01026    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)1027    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 81028    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)1029    ; CHECK-NEXT: $vgpr0 = COPY [[LSHR]](s32)1030    %0:_(<2 x s16>) = COPY $vgpr01031    %1:_(s16) = G_EXTRACT %0, 81032    %2:_(s32) = G_ANYEXT %11033    $vgpr0 = COPY %21034...1035 1036---1037name: extract_s16_v2s16_offset161038body: |1039  bb.0:1040    liveins: $vgpr01041 1042    ; CHECK-LABEL: name: extract_s16_v2s16_offset161043    ; CHECK: liveins: $vgpr01044    ; CHECK-NEXT: {{  $}}1045    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01046    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)1047    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161048    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)1049    ; CHECK-NEXT: $vgpr0 = COPY [[LSHR]](s32)1050    %0:_(<2 x s16>) = COPY $vgpr01051    %1:_(s16) = G_EXTRACT %0, 161052    %2:_(s32) = G_ANYEXT %11053    $vgpr0 = COPY %21054...1055 1056---1057name: extract_s16_s32_offset01058body: |1059  bb.0:1060    liveins: $vgpr01061 1062    ; CHECK-LABEL: name: extract_s16_s32_offset01063    ; CHECK: liveins: $vgpr01064    ; CHECK-NEXT: {{  $}}1065    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01066    ; CHECK-NEXT: $vgpr0 = COPY [[COPY]](s32)1067    %0:_(s32) = COPY $vgpr01068    %1:_(s16) = G_EXTRACT %0, 01069    %2:_(s32) = G_ANYEXT %11070    $vgpr0 = COPY %21071...1072 1073---1074name: extract_s16_s32_offset11075body: |1076  bb.0:1077    liveins: $vgpr01078 1079    ; CHECK-LABEL: name: extract_s16_s32_offset11080    ; CHECK: liveins: $vgpr01081    ; CHECK-NEXT: {{  $}}1082    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01083    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 11084    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)1085    ; CHECK-NEXT: $vgpr0 = COPY [[LSHR]](s32)1086    %0:_(s32) = COPY $vgpr01087    %1:_(s16) = G_EXTRACT %0, 11088    %2:_(s32) = G_ANYEXT %11089    $vgpr0 = COPY %21090...1091 1092---1093name: extract_s16_s32_offset81094body: |1095  bb.0:1096    liveins: $vgpr01097 1098    ; CHECK-LABEL: name: extract_s16_s32_offset81099    ; CHECK: liveins: $vgpr01100    ; CHECK-NEXT: {{  $}}1101    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01102    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 81103    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)1104    ; CHECK-NEXT: $vgpr0 = COPY [[LSHR]](s32)1105    %0:_(s32) = COPY $vgpr01106    %1:_(s16) = G_EXTRACT %0, 81107    %2:_(s32) = G_ANYEXT %11108    $vgpr0 = COPY %21109...1110 1111---1112name: extract_s16_s32_offset161113body: |1114  bb.0:1115    liveins: $vgpr01116 1117    ; CHECK-LABEL: name: extract_s16_s32_offset161118    ; CHECK: liveins: $vgpr01119    ; CHECK-NEXT: {{  $}}1120    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01121    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 161122    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)1123    ; CHECK-NEXT: $vgpr0 = COPY [[LSHR]](s32)1124    %0:_(s32) = COPY $vgpr01125    %1:_(s16) = G_EXTRACT %0, 161126    %2:_(s32) = G_ANYEXT %11127    $vgpr0 = COPY %21128...1129 1130---1131name: extract_s16_p3_offset01132body: |1133  bb.0:1134    liveins: $vgpr01135 1136    ; CHECK-LABEL: name: extract_s16_p3_offset01137    ; CHECK: liveins: $vgpr01138    ; CHECK-NEXT: {{  $}}1139    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr01140    ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s16) = G_EXTRACT [[COPY]](p3), 01141    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[EXTRACT]](s16)1142    ; CHECK-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)1143    %0:_(p3) = COPY $vgpr01144    %1:_(s16) = G_EXTRACT %0, 01145    %2:_(s32) = G_ANYEXT %11146    $vgpr0 = COPY %21147...1148 1149---1150name: extract_s16_p3_offset11151body: |1152  bb.0:1153    liveins: $vgpr01154 1155    ; CHECK-LABEL: name: extract_s16_p3_offset11156    ; CHECK: liveins: $vgpr01157    ; CHECK-NEXT: {{  $}}1158    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr01159    ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s16) = G_EXTRACT [[COPY]](p3), 11160    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[EXTRACT]](s16)1161    ; CHECK-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)1162    %0:_(p3) = COPY $vgpr01163    %1:_(s16) = G_EXTRACT %0, 11164    %2:_(s32) = G_ANYEXT %11165    $vgpr0 = COPY %21166...1167