brintos

brintos / llvm-project-archived public Read only

0
0
Text · 25.1 KiB · 59adc21 Raw
718 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 %s -o - | FileCheck %s3 4---5name: test_anyext_s32_to_s646body: |7  bb.0:8    liveins: $vgpr09 10    ; CHECK-LABEL: name: test_anyext_s32_to_s6411    ; CHECK: liveins: $vgpr012    ; CHECK-NEXT: {{  $}}13    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr014    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s32)15    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[ANYEXT]](s64)16    %0:_(s32) = COPY $vgpr017    %1:_(s64) = G_ANYEXT %018    $vgpr0_vgpr1 = COPY %119...20 21---22name: test_anyext_s16_to_s6423body: |24  bb.0:25    liveins: $vgpr026 27    ; CHECK-LABEL: name: test_anyext_s16_to_s6428    ; CHECK: liveins: $vgpr029    ; CHECK-NEXT: {{  $}}30    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr031    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s32)32    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[ANYEXT]](s64)33    %0:_(s32) = COPY $vgpr034    %1:_(s16) = G_TRUNC %035    %2:_(s64) = G_ANYEXT %136    $vgpr0_vgpr1 = COPY %237...38 39---40name: test_anyext_s16_to_s3241body: |42  bb.0:43    liveins: $vgpr044 45    ; CHECK-LABEL: name: test_anyext_s16_to_s3246    ; CHECK: liveins: $vgpr047    ; CHECK-NEXT: {{  $}}48    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr049    ; CHECK-NEXT: $vgpr0 = COPY [[COPY]](s32)50    %0:_(s32) = COPY $vgpr051    %1:_(s16) = G_TRUNC %052    %2:_(s32) = G_ANYEXT %153    $vgpr0 = COPY %254...55 56---57name: test_anyext_s24_to_s3258body: |59  bb.0:60    liveins: $vgpr061 62    ; CHECK-LABEL: name: test_anyext_s24_to_s3263    ; CHECK: liveins: $vgpr064    ; CHECK-NEXT: {{  $}}65    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr066    ; CHECK-NEXT: $vgpr0 = COPY [[COPY]](s32)67    %0:_(s32) = COPY $vgpr068    %1:_(s24) = G_TRUNC %069    %2:_(s32) = G_ANYEXT %170    $vgpr0 = COPY %271...72 73---74name: test_anyext_s1_to_s3275body: |76  bb.0:77 78    ; CHECK-LABEL: name: test_anyext_s1_to_s3279    ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 080    ; CHECK-NEXT: $vgpr0 = COPY [[C]](s32)81    %0:_(s1) = G_CONSTANT i1 082    %1:_(s32) = G_ANYEXT %083    $vgpr0 = COPY %184...85 86---87name: test_anyext_s1_to_s6488body: |89  bb.0:90 91    ; CHECK-LABEL: name: test_anyext_s1_to_s6492    ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 093    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[C]](s64)94    %0:_(s1) = G_CONSTANT i1 095    %1:_(s64) = G_ANYEXT %096    $vgpr0_vgpr1 = COPY %197...98 99---100name: test_anyext_v2s16_to_v2s32101body: |102  bb.0:103    liveins: $vgpr0104 105    ; CHECK-LABEL: name: test_anyext_v2s16_to_v2s32106    ; CHECK: liveins: $vgpr0107    ; CHECK-NEXT: {{  $}}108    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0109    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)110    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16111    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)112    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[BITCAST]](s32), [[LSHR]](s32)113    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)114    %0:_(<2 x s16>) = COPY $vgpr0115    %1:_(<2 x s32>) = G_ANYEXT %0116    $vgpr0_vgpr1 = COPY %1117...118 119---120name: test_anyext_v3s16_to_v3s32121body: |122  bb.0:123    liveins: $vgpr0_vgpr1124 125    ; CHECK-LABEL: name: test_anyext_v3s16_to_v3s32126    ; CHECK: liveins: $vgpr0_vgpr1127    ; CHECK-NEXT: {{  $}}128    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1129    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)130    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)131    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16132    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)133    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>)134    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[BITCAST]](s32), [[LSHR]](s32), [[BITCAST1]](s32)135    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)136    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1137    %1:_(<3 x s16>) = G_EXTRACT %0, 0138    %2:_(<3 x s32>) = G_ANYEXT %1139    $vgpr0_vgpr1_vgpr2 = COPY %2140...141 142---143name: test_anyext_v4s16_to_v4s32144body: |145  bb.0:146    liveins: $vgpr0147 148    ; CHECK-LABEL: name: test_anyext_v4s16_to_v4s32149    ; CHECK: liveins: $vgpr0150    ; CHECK-NEXT: {{  $}}151    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(<4 x s32>) = G_IMPLICIT_DEF152    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[DEF]](<4 x s32>)153    %0:_(<4 x s16>) = G_IMPLICIT_DEF154    %1:_(<4 x s32>) = G_ANYEXT %0155    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1156...157 158---159name: test_anyext_v2s32_to_v2s64160body: |161  bb.0:162    liveins: $vgpr0_vgpr1163 164    ; CHECK-LABEL: name: test_anyext_v2s32_to_v2s64165    ; CHECK: liveins: $vgpr0_vgpr1166    ; CHECK-NEXT: {{  $}}167    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1168    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)169    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[UV]](s32)170    ; CHECK-NEXT: [[ANYEXT1:%[0-9]+]]:_(s64) = G_ANYEXT [[UV1]](s32)171    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[ANYEXT]](s64), [[ANYEXT1]](s64)172    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)173    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1174    %1:_(<2 x s64>) = G_ANYEXT %0175    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1176...177 178---179name: test_anyext_v3s32_to_v3s64180body: |181  bb.0:182    liveins: $vgpr0_vgpr1_vgpr2183 184    ; CHECK-LABEL: name: test_anyext_v3s32_to_v3s64185    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2186    ; CHECK-NEXT: {{  $}}187    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2188    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)189    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[UV]](s32)190    ; CHECK-NEXT: [[ANYEXT1:%[0-9]+]]:_(s64) = G_ANYEXT [[UV1]](s32)191    ; CHECK-NEXT: [[ANYEXT2:%[0-9]+]]:_(s64) = G_ANYEXT [[UV2]](s32)192    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[ANYEXT]](s64), [[ANYEXT1]](s64), [[ANYEXT2]](s64)193    ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<3 x s64>)194    %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2195    %1:_(<3 x s64>) = G_ANYEXT %0196    S_NOP 0, implicit %1197 198...199 200---201name: test_anyext_v4s32_to_v4s64202body: |203  bb.0:204    liveins: $vgpr0_vgpr1_vgpr2_vgpr3205 206    ; CHECK-LABEL: name: test_anyext_v4s32_to_v4s64207    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3208    ; CHECK-NEXT: {{  $}}209    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3210    ; 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>)211    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[UV]](s32)212    ; CHECK-NEXT: [[ANYEXT1:%[0-9]+]]:_(s64) = G_ANYEXT [[UV1]](s32)213    ; CHECK-NEXT: [[ANYEXT2:%[0-9]+]]:_(s64) = G_ANYEXT [[UV2]](s32)214    ; CHECK-NEXT: [[ANYEXT3:%[0-9]+]]:_(s64) = G_ANYEXT [[UV3]](s32)215    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[ANYEXT]](s64), [[ANYEXT1]](s64), [[ANYEXT2]](s64), [[ANYEXT3]](s64)216    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[BUILD_VECTOR]](<4 x s64>)217    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3218    %1:_(<4 x s64>) = G_ANYEXT %0219    $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %1220...221 222---223name: test_anyext_s8_to_s16224body: |225  bb.0:226    liveins: $vgpr0227 228    ; CHECK-LABEL: name: test_anyext_s8_to_s16229    ; CHECK: liveins: $vgpr0230    ; CHECK-NEXT: {{  $}}231    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0232    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)233    ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s16)234    %0:_(s32) = COPY $vgpr0235    %1:_(s8) = G_TRUNC %0236    %2:_(s16) = G_ANYEXT %1237    S_ENDPGM 0, implicit %2238...239 240---241name: test_anyext_s8_to_s24242body: |243  bb.0:244    liveins: $vgpr0245 246    ; CHECK-LABEL: name: test_anyext_s8_to_s24247    ; CHECK: liveins: $vgpr0248    ; CHECK-NEXT: {{  $}}249    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0250    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s24) = G_TRUNC [[COPY]](s32)251    ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s24)252    %0:_(s32) = COPY $vgpr0253    %1:_(s8) = G_TRUNC %0254    %2:_(s24) = G_ANYEXT %1255    S_ENDPGM 0, implicit %2256...257 258---259name: test_anyext_s7_to_s32260body: |261  bb.0:262    liveins: $vgpr0263 264    ; CHECK-LABEL: name: test_anyext_s7_to_s32265    ; CHECK: liveins: $vgpr0266    ; CHECK-NEXT: {{  $}}267    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0268    ; CHECK-NEXT: S_ENDPGM 0, implicit [[COPY]](s32)269    %0:_(s32) = COPY $vgpr0270    %1:_(s7) = G_TRUNC %0271    %2:_(s32) = G_ANYEXT %1272    S_ENDPGM 0, implicit %2273...274 275---276name: test_anyext_s8_to_s32277body: |278  bb.0:279    liveins: $vgpr0280 281    ; CHECK-LABEL: name: test_anyext_s8_to_s32282    ; CHECK: liveins: $vgpr0283    ; CHECK-NEXT: {{  $}}284    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0285    ; CHECK-NEXT: S_ENDPGM 0, implicit [[COPY]](s32)286    %0:_(s32) = COPY $vgpr0287    %1:_(s8) = G_TRUNC %0288    %2:_(s32) = G_ANYEXT %1289    S_ENDPGM 0, implicit %2290...291 292---293name: test_anyext_s32_to_s96294body: |295  bb.0:296    liveins: $vgpr0297 298    ; CHECK-LABEL: name: test_anyext_s32_to_s96299    ; CHECK: liveins: $vgpr0300    ; CHECK-NEXT: {{  $}}301    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0302    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF303    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[DEF]](s32)304    ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF305    ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s192) = G_MERGE_VALUES [[MV]](s64), [[DEF1]](s64), [[DEF1]](s64)306    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s96) = G_TRUNC [[MV1]](s192)307    ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s96)308    %0:_(s32) = COPY $vgpr0309    %1:_(s96) = G_ANYEXT %0310    S_ENDPGM 0, implicit %1311...312 313---314name: test_anyext_s32_to_s128315body: |316  bb.0:317    liveins: $vgpr0318 319    ; CHECK-LABEL: name: test_anyext_s32_to_s128320    ; CHECK: liveins: $vgpr0321    ; CHECK-NEXT: {{  $}}322    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0323    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF324    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[DEF]](s32)325    ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF326    ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[MV]](s64), [[DEF1]](s64)327    ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV1]](s128)328    %0:_(s32) = COPY $vgpr0329    %1:_(s128) = G_ANYEXT %0330    S_ENDPGM 0, implicit %1331...332 333---334name: test_anyext_s32_to_s160335body: |336  bb.0:337    liveins: $vgpr0338 339    ; CHECK-LABEL: name: test_anyext_s32_to_s160340    ; CHECK: liveins: $vgpr0341    ; CHECK-NEXT: {{  $}}342    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0343    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF344    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[DEF]](s32)345    ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF346    ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s320) = G_MERGE_VALUES [[MV]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64)347    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s160) = G_TRUNC [[MV1]](s320)348    ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s160)349    %0:_(s32) = COPY $vgpr0350    %1:_(s160) = G_ANYEXT %0351    S_ENDPGM 0, implicit %1352...353 354---355name: test_anyext_s32_to_s192356body: |357  bb.0:358    liveins: $vgpr0359 360    ; CHECK-LABEL: name: test_anyext_s32_to_s192361    ; CHECK: liveins: $vgpr0362    ; CHECK-NEXT: {{  $}}363    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0364    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF365    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[DEF]](s32)366    ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF367    ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s192) = G_MERGE_VALUES [[MV]](s64), [[DEF1]](s64), [[DEF1]](s64)368    ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV1]](s192)369    %0:_(s32) = COPY $vgpr0370    %1:_(s192) = G_ANYEXT %0371    S_ENDPGM 0, implicit %1372...373 374---375name: test_anyext_s32_to_s224376body: |377  bb.0:378    liveins: $vgpr0379 380    ; CHECK-LABEL: name: test_anyext_s32_to_s224381    ; CHECK: liveins: $vgpr0382    ; CHECK-NEXT: {{  $}}383    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0384    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF385    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[DEF]](s32)386    ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF387    ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s448) = G_MERGE_VALUES [[MV]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64)388    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s224) = G_TRUNC [[MV1]](s448)389    ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s224)390    %0:_(s32) = COPY $vgpr0391    %1:_(s224) = G_ANYEXT %0392    S_ENDPGM 0, implicit %1393...394 395---396name: test_anyext_s32_to_s256397body: |398  bb.0:399    liveins: $vgpr0400 401    ; CHECK-LABEL: name: test_anyext_s32_to_s256402    ; CHECK: liveins: $vgpr0403    ; CHECK-NEXT: {{  $}}404    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0405    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF406    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[DEF]](s32)407    ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF408    ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s256) = G_MERGE_VALUES [[MV]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64)409    ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV1]](s256)410    %0:_(s32) = COPY $vgpr0411    %1:_(s256) = G_ANYEXT %0412    S_ENDPGM 0, implicit %1413...414 415---416name: test_anyext_s32_to_s512417body: |418  bb.0:419    liveins: $vgpr0420 421    ; CHECK-LABEL: name: test_anyext_s32_to_s512422    ; CHECK: liveins: $vgpr0423    ; CHECK-NEXT: {{  $}}424    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0425    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF426    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[DEF]](s32)427    ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF428    ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s512) = G_MERGE_VALUES [[MV]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64)429    ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV1]](s512)430    %0:_(s32) = COPY $vgpr0431    %1:_(s512) = G_ANYEXT %0432    S_ENDPGM 0, implicit %1433...434 435---436name: test_anyext_s32_to_s992437body: |438  bb.0:439    liveins: $vgpr0440 441    ; CHECK-LABEL: name: test_anyext_s32_to_s992442    ; CHECK: liveins: $vgpr0443    ; CHECK-NEXT: {{  $}}444    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0445    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF446    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[DEF]](s32)447    ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF448    ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s448) = G_MERGE_VALUES [[MV]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64)449    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s224) = G_TRUNC [[MV1]](s448)450    ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s224)451    %0:_(s32) = COPY $vgpr0452    %1:_(s224) = G_ANYEXT %0453    S_ENDPGM 0, implicit %1454...455 456---457name: test_anyext_s32_to_s1024458body: |459  bb.0:460    liveins: $vgpr0461 462    ; CHECK-LABEL: name: test_anyext_s32_to_s1024463    ; CHECK: liveins: $vgpr0464    ; CHECK-NEXT: {{  $}}465    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0466    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF467    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[DEF]](s32)468    ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF469    ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s1024) = G_MERGE_VALUES [[MV]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64)470    ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV1]](s1024)471    %0:_(s32) = COPY $vgpr0472    %1:_(s1024) = G_ANYEXT %0473    S_ENDPGM 0, implicit %1474...475 476---477name: test_anyext_s64_to_s128478body: |479  bb.0:480    liveins: $vgpr0_vgpr1481 482    ; CHECK-LABEL: name: test_anyext_s64_to_s128483    ; CHECK: liveins: $vgpr0_vgpr1484    ; CHECK-NEXT: {{  $}}485    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1486    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF487    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY]](s64), [[DEF]](s64)488    ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV]](s128)489    %0:_(s64) = COPY $vgpr0_vgpr1490    %1:_(s128) = G_ANYEXT %0491    S_ENDPGM 0, implicit %1492...493 494---495name: test_anyext_s64_to_s192496body: |497  bb.0:498    liveins: $vgpr0_vgpr1499 500    ; CHECK-LABEL: name: test_anyext_s64_to_s192501    ; CHECK: liveins: $vgpr0_vgpr1502    ; CHECK-NEXT: {{  $}}503    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1504    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF505    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s192) = G_MERGE_VALUES [[COPY]](s64), [[DEF]](s64), [[DEF]](s64)506    ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV]](s192)507    %0:_(s64) = COPY $vgpr0_vgpr1508    %1:_(s192) = G_ANYEXT %0509    S_ENDPGM 0, implicit %1510...511 512---513name: test_anyext_s64_to_s256514body: |515  bb.0:516    liveins: $vgpr0_vgpr1517 518    ; CHECK-LABEL: name: test_anyext_s64_to_s256519    ; CHECK: liveins: $vgpr0_vgpr1520    ; CHECK-NEXT: {{  $}}521    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1522    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF523    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s256) = G_MERGE_VALUES [[COPY]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64)524    ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV]](s256)525    %0:_(s64) = COPY $vgpr0_vgpr1526    %1:_(s256) = G_ANYEXT %0527    S_ENDPGM 0, implicit %1528...529 530---531name: test_anyext_s64_to_s512532body: |533  bb.0:534    liveins: $vgpr0_vgpr1535 536    ; CHECK-LABEL: name: test_anyext_s64_to_s512537    ; CHECK: liveins: $vgpr0_vgpr1538    ; CHECK-NEXT: {{  $}}539    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1540    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF541    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s512) = G_MERGE_VALUES [[COPY]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64)542    ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV]](s512)543    %0:_(s64) = COPY $vgpr0_vgpr1544    %1:_(s512) = G_ANYEXT %0545    S_ENDPGM 0, implicit %1546...547 548---549name: test_anyext_s64_to_s1024550body: |551  bb.0:552    liveins: $vgpr0_vgpr1553 554    ; CHECK-LABEL: name: test_anyext_s64_to_s1024555    ; CHECK: liveins: $vgpr0_vgpr1556    ; CHECK-NEXT: {{  $}}557    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1558    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF559    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s1024) = G_MERGE_VALUES [[COPY]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64)560    ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV]](s1024)561    %0:_(s64) = COPY $vgpr0_vgpr1562    %1:_(s1024) = G_ANYEXT %0563    S_ENDPGM 0, implicit %1564...565 566---567name: test_anyext_s96_to_s128568body: |569  bb.0:570    liveins: $vgpr0_vgpr1_vgpr2571 572    ; CHECK-LABEL: name: test_anyext_s96_to_s128573    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2574    ; CHECK-NEXT: {{  $}}575    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2576    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s96)577    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF578    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV]](s32), [[UV1]](s32)579    ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UV2]](s32), [[DEF]](s32)580    ; CHECK-NEXT: [[MV2:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[MV]](s64), [[MV1]](s64)581    ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV2]](s128)582    %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2583    %1:_(s128) = G_ANYEXT %0584    S_ENDPGM 0, implicit %1585...586 587---588name: test_anyext_s128_to_s256589body: |590  bb.0:591    liveins: $vgpr0_vgpr1_vgpr2_vgpr3592 593    ; CHECK-LABEL: name: test_anyext_s128_to_s256594    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3595    ; CHECK-NEXT: {{  $}}596    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3597    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](s128)598    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF599    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s256) = G_MERGE_VALUES [[UV]](s64), [[UV1]](s64), [[DEF]](s64), [[DEF]](s64)600    ; CHECK-NEXT: S_ENDPGM 0, implicit [[MV]](s256)601    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3602    %1:_(s256) = G_ANYEXT %0603    S_ENDPGM 0, implicit %1604...605 606---607name: test_anyext_s32_to_s88608body: |609  bb.0:610    liveins: $vgpr0611 612    ; CHECK-LABEL: name: test_anyext_s32_to_s88613    ; CHECK: liveins: $vgpr0614    ; CHECK-NEXT: {{  $}}615    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0616    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 8617    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)618    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16619    ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C1]](s32)620    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 24621    ; CHECK-NEXT: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C2]](s32)622    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF623    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)624    ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s16) = G_CONSTANT i16 255625    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C3]]626    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)627    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C3]]628    ; CHECK-NEXT: [[C4:%[0-9]+]]:_(s16) = G_CONSTANT i16 8629    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL [[AND1]], [[C4]](s16)630    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[SHL]]631    ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR1]](s32)632    ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s16) = G_AND [[TRUNC2]], [[C3]]633    ; CHECK-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR2]](s32)634    ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s16) = G_SHL [[TRUNC3]], [[C4]](s16)635    ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s16) = G_OR [[AND2]], [[SHL1]]636    ; CHECK-NEXT: [[TRUNC4:%[0-9]+]]:_(s16) = G_TRUNC [[DEF]](s32)637    ; CHECK-NEXT: [[AND3:%[0-9]+]]:_(s16) = G_AND [[TRUNC4]], [[C3]]638    ; CHECK-NEXT: [[SHL2:%[0-9]+]]:_(s16) = G_SHL [[AND3]], [[C4]](s16)639    ; CHECK-NEXT: [[OR2:%[0-9]+]]:_(s16) = G_OR [[AND3]], [[SHL2]]640    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s16) = COPY [[OR2]](s16)641    ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[OR]](s16)642    ; CHECK-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[OR1]](s16)643    ; CHECK-NEXT: [[SHL3:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C1]](s32)644    ; CHECK-NEXT: [[OR3:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL3]]645    ; CHECK-NEXT: [[ZEXT2:%[0-9]+]]:_(s32) = G_ZEXT [[OR2]](s16)646    ; CHECK-NEXT: [[ZEXT3:%[0-9]+]]:_(s32) = G_ZEXT [[COPY1]](s16)647    ; CHECK-NEXT: [[SHL4:%[0-9]+]]:_(s32) = G_SHL [[ZEXT3]], [[C1]](s32)648    ; CHECK-NEXT: [[OR4:%[0-9]+]]:_(s32) = G_OR [[ZEXT2]], [[SHL4]]649    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[OR3]](s32), [[OR4]](s32)650    ; CHECK-NEXT: [[DEF1:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF651    ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s704) = G_MERGE_VALUES [[MV]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64), [[DEF1]](s64)652    ; CHECK-NEXT: [[TRUNC5:%[0-9]+]]:_(s88) = G_TRUNC [[MV1]](s704)653    ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC5]](s88)654    %0:_(s32) = COPY $vgpr0655    %1:_(s88) = G_ANYEXT %0656    S_ENDPGM 0, implicit %1657...658 659# The instruction count blows up for this and takes too long to660# generate checks. This fails on a G_MERGE_VALUES to s4160661#662# ---663# name: test_anyext_s32_to_s65664# body: |665#   bb.0:666#     liveins: $vgpr0667 668#     %0:_(s32) = COPY $vgpr0669#     %1:_(s65) = G_ANYEXT %0670#     S_ENDPGM 0, implicit %1671# ...672 673---674name: test_anyext_s2_to_s112675body: |676  bb.0:677    liveins: $vgpr0678 679    ; CHECK-LABEL: name: test_anyext_s2_to_s112680    ; CHECK: liveins: $vgpr0681    ; CHECK-NEXT: {{  $}}682    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0683    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16684    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)685    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535686    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]687    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C]](s32)688    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]689    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 0690    ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[C2]], [[C]](s32)691    ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[C2]], [[SHL1]]692    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[OR]](s32), [[OR1]](s32)693    ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF694    ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s448) = G_MERGE_VALUES [[MV]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64), [[DEF]](s64)695    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s112) = G_TRUNC [[MV1]](s448)696    ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s112)697    %0:_(s32) = COPY $vgpr0698    %1:_(s2) = G_TRUNC %0699    %2:_(s112) = G_ANYEXT %1700    S_ENDPGM 0, implicit %2701...702 703---704name: test_anyext_s112_to_s128705body: |706  bb.0:707    liveins: $vgpr0_vgpr1_vgpr2_vgpr3708    ; CHECK-LABEL: name: test_anyext_s112_to_s128709    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3710    ; CHECK-NEXT: {{  $}}711    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3712    ; CHECK-NEXT: S_ENDPGM 0, implicit [[COPY]](s128)713    %0:_(s128) = COPY $vgpr0_vgpr1_vgpr2_vgpr3714    %1:_(s112) = G_TRUNC %0715    %2:_(s128) = G_ANYEXT %1716    S_ENDPGM 0, implicit %2717...718