brintos

brintos / llvm-project-archived public Read only

0
0
Text · 18.8 KiB · 2825508 Raw
443 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 -o - %s | FileCheck %s3 4---5name: test_trunc_s64_to_s326body: |7  bb.0:8    liveins: $vgpr0_vgpr19 10    ; CHECK-LABEL: name: test_trunc_s64_to_s3211    ; CHECK: liveins: $vgpr0_vgpr112    ; CHECK-NEXT: {{  $}}13    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr114    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)15    ; CHECK-NEXT: $vgpr0 = COPY [[TRUNC]](s32)16    %0:_(s64) = COPY $vgpr0_vgpr117    %1:_(s32) = G_TRUNC %018    $vgpr0 = COPY %119...20 21---22name: test_trunc_s64_to_s1623body: |24  bb.0:25    liveins: $vgpr0_vgpr126 27    ; CHECK-LABEL: name: test_trunc_s64_to_s1628    ; CHECK: liveins: $vgpr0_vgpr129    ; CHECK-NEXT: {{  $}}30    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr131    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s64)32    ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s16)33    %0:_(s64) = COPY $vgpr0_vgpr134    %1:_(s16) = G_TRUNC %035    S_ENDPGM 0, implicit %136...37 38---39name: test_trunc_v2s32_to_v2s1640body: |41  bb.0:42    liveins: $vgpr0_vgpr143 44    ; CHECK-LABEL: name: test_trunc_v2s32_to_v2s1645    ; CHECK: liveins: $vgpr0_vgpr146    ; CHECK-NEXT: {{  $}}47    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr148    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<2 x s16>) = G_TRUNC [[COPY]](<2 x s32>)49    ; CHECK-NEXT: $vgpr0 = COPY [[TRUNC]](<2 x s16>)50    %0:_(<2 x s32>) = COPY $vgpr0_vgpr151    %1:_(<2 x s16>) = G_TRUNC %052    $vgpr0 = COPY %153...54 55---56name: test_trunc_v3s32_to_v3s1657body: |58  bb.0:59    liveins: $vgpr0_vgpr1_vgpr260 61    ; CHECK-LABEL: name: test_trunc_v3s32_to_v3s1662    ; CHECK: liveins: $vgpr0_vgpr1_vgpr263    ; CHECK-NEXT: {{  $}}64    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr265    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)66    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[UV]](s32)67    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[UV1]](s32)68    ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[UV2]](s32)69    ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s16), implicit [[TRUNC1]](s16), implicit [[TRUNC2]](s16)70    %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr271    %1:_(<3 x s16>) = G_TRUNC %072    %2:_(s16), %3:_(s16), %4:_(s16) = G_UNMERGE_VALUES %173    S_ENDPGM 0, implicit %2, implicit %3, implicit %474...75 76---77name: test_trunc_v4s32_to_v4s1678body: |79  bb.0:80    liveins: $vgpr0_vgpr1_vgpr2_vgpr381 82    ; CHECK-LABEL: name: test_trunc_v4s32_to_v4s1683    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr384    ; CHECK-NEXT: {{  $}}85    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr386    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s32>), [[UV1:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)87    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<2 x s16>) = G_TRUNC [[UV]](<2 x s32>)88    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_TRUNC [[UV1]](<2 x s32>)89    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[TRUNC]](<2 x s16>), [[TRUNC1]](<2 x s16>)90    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)91    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr392    %1:_(<4 x s16>) = G_TRUNC %093    $vgpr0_vgpr1 = COPY %194...95 96---97name: test_trunc_v8s32_to_v8s1698body: |99  bb.0:100    liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7101 102    ; CHECK-LABEL: name: test_trunc_v8s32_to_v8s16103    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7104    ; CHECK-NEXT: {{  $}}105    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7106    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s32>), [[UV1:%[0-9]+]]:_(<2 x s32>), [[UV2:%[0-9]+]]:_(<2 x s32>), [[UV3:%[0-9]+]]:_(<2 x s32>) = G_UNMERGE_VALUES [[COPY]](<8 x s32>)107    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(<2 x s16>) = G_TRUNC [[UV]](<2 x s32>)108    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_TRUNC [[UV1]](<2 x s32>)109    ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_TRUNC [[UV2]](<2 x s32>)110    ; CHECK-NEXT: [[TRUNC3:%[0-9]+]]:_(<2 x s16>) = G_TRUNC [[UV3]](<2 x s32>)111    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<8 x s16>) = G_CONCAT_VECTORS [[TRUNC]](<2 x s16>), [[TRUNC1]](<2 x s16>), [[TRUNC2]](<2 x s16>), [[TRUNC3]](<2 x s16>)112    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[CONCAT_VECTORS]](<8 x s16>)113    %0:_(<8 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7114    %1:_(<8 x s16>) = G_TRUNC %0115    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1116...117 118---119name: test_trunc_v2s64_to_v2s16120body: |121  bb.0:122    liveins: $vgpr0_vgpr1_vgpr2_vgpr3123 124    ; CHECK-LABEL: name: test_trunc_v2s64_to_v2s16125    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3126    ; CHECK-NEXT: {{  $}}127    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3128    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)129    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[UV]](s64)130    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535131    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[TRUNC]], [[C]]132    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[UV1]](s64)133    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[TRUNC1]], [[C]]134    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16135    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)136    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]137    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)138    ; CHECK-NEXT: $vgpr0 = COPY [[BITCAST]](<2 x s16>)139    %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3140    %1:_(<2 x s16>) = G_TRUNC %0141    $vgpr0 = COPY %1142...143 144---145name: test_trunc_v4s64_to_v4s16146body: |147  bb.0:148    liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7149 150    ; CHECK-LABEL: name: test_trunc_v4s64_to_v4s16151    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7152    ; CHECK-NEXT: {{  $}}153    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7154    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64), [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<4 x s64>)155    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[UV]](s64)156    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535157    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[TRUNC]], [[C]]158    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[UV1]](s64)159    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[TRUNC1]], [[C]]160    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16161    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)162    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]163    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)164    ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s32) = G_TRUNC [[UV2]](s64)165    ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[TRUNC2]], [[C]]166    ; CHECK-NEXT: [[TRUNC3:%[0-9]+]]:_(s32) = G_TRUNC [[UV3]](s64)167    ; CHECK-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[TRUNC3]], [[C]]168    ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND3]], [[C1]](s32)169    ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[AND2]], [[SHL1]]170    ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32)171    ; CHECK-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BITCAST1]](<2 x s16>)172    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)173    %0:_(<4 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7174    %1:_(<4 x s16>) = G_TRUNC %0175    $vgpr0_vgpr1 = COPY %1176...177 178---179name: test_trunc_s64_to_s1180body: |181  bb.0:182    liveins: $vgpr0_vgpr1183 184    ; CHECK-LABEL: name: test_trunc_s64_to_s1185    ; CHECK: liveins: $vgpr0_vgpr1186    ; CHECK-NEXT: {{  $}}187    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1188    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s64)189    ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s1)190    %0:_(s64) = COPY $vgpr0_vgpr1191    %1:_(s1) = G_TRUNC %0192    S_ENDPGM 0, implicit %1193...194 195---196name: test_trunc_s32_to_s1197body: |198  bb.0:199    liveins: $vgpr0200 201    ; CHECK-LABEL: name: test_trunc_s32_to_s1202    ; CHECK: liveins: $vgpr0203    ; CHECK-NEXT: {{  $}}204    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0205    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)206    ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s1)207    %0:_(s32) = COPY $vgpr0208    %1:_(s1) = G_TRUNC %0209    S_ENDPGM 0, implicit %1210...211 212---213name: test_trunc_s16_to_s1214body: |215  bb.0:216    liveins: $vgpr0217 218    ; CHECK-LABEL: name: test_trunc_s16_to_s1219    ; CHECK: liveins: $vgpr0220    ; CHECK-NEXT: {{  $}}221    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0222    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)223    ; CHECK-NEXT: S_ENDPGM 0, implicit [[TRUNC]](s1)224    %0:_(s32) = COPY $vgpr0225    %1:_(s16) = G_TRUNC %0226    %2:_(s1) = G_TRUNC %1227    S_ENDPGM 0, implicit %2228...229 230---231name: test_trunc_v4s32_to_v4s1232body: |233  bb.0:234    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10_vgpr11235 236    ; CHECK-LABEL: name: test_trunc_v4s32_to_v4s1237    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8_vgpr9_vgpr10_vgpr11238    ; CHECK-NEXT: {{  $}}239    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3240    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7241    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr8_vgpr9_vgpr10_vgpr11242    ; 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>)243    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[UV]](s32)244    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s1) = G_TRUNC [[UV1]](s32)245    ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s1) = G_TRUNC [[UV2]](s32)246    ; CHECK-NEXT: [[TRUNC3:%[0-9]+]]:_(s1) = G_TRUNC [[UV3]](s32)247    ; CHECK-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<4 x s32>)248    ; CHECK-NEXT: [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32), [[UV11:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](<4 x s32>)249    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[TRUNC]](s1), [[UV4]], [[UV8]]250    ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[TRUNC1]](s1), [[UV5]], [[UV9]]251    ; CHECK-NEXT: [[SELECT2:%[0-9]+]]:_(s32) = G_SELECT [[TRUNC2]](s1), [[UV6]], [[UV10]]252    ; CHECK-NEXT: [[SELECT3:%[0-9]+]]:_(s32) = G_SELECT [[TRUNC3]](s1), [[UV7]], [[UV11]]253    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32), [[SELECT2]](s32), [[SELECT3]](s32)254    ; CHECK-NEXT: S_ENDPGM 0, implicit [[BUILD_VECTOR]](<4 x s32>)255    %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3256    %1:_(<4 x s32>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7257    %2:_(<4 x s32>) = COPY $vgpr8_vgpr9_vgpr10_vgpr11258    %3:_(<4 x s1>) = G_TRUNC %0259    %4:_(<4 x s32>) = G_SELECT %3, %1, %2260    S_ENDPGM 0, implicit %4261...262 263---264name: test_trunc_v2s64_to_v2s32265body: |266  bb.0:267    liveins: $vgpr0_vgpr1_vgpr2_vgpr3268 269    ; CHECK-LABEL: name: test_trunc_v2s64_to_v2s32270    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3271    ; CHECK-NEXT: {{  $}}272    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3273    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)274    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[UV]](s64)275    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[UV1]](s64)276    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[TRUNC]](s32), [[TRUNC1]](s32)277    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)278    %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3279    %1:_(<2 x s32>) = G_TRUNC %0280    $vgpr0_vgpr1 = COPY %1281...282 283---284name: test_trunc_v4s64_to_v4s32285body: |286  bb.0:287    liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7288 289    ; CHECK-LABEL: name: test_trunc_v4s64_to_v4s32290    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7291    ; CHECK-NEXT: {{  $}}292    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7293    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64), [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<4 x s64>)294    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[UV]](s64)295    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[UV1]](s64)296    ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s32) = G_TRUNC [[UV2]](s64)297    ; CHECK-NEXT: [[TRUNC3:%[0-9]+]]:_(s32) = G_TRUNC [[UV3]](s64)298    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[TRUNC]](s32), [[TRUNC1]](s32), [[TRUNC2]](s32), [[TRUNC3]](s32)299    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)300    %0:_(<4 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7301    %1:_(<4 x s32>) = G_TRUNC %0302    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1303...304 305---306name: test_trunc_v2s128_to_v2s64307body: |308  bb.0:309    liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7310 311    ; CHECK-LABEL: name: test_trunc_v2s128_to_v2s64312    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7313    ; CHECK-NEXT: {{  $}}314    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s128>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7315    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s128), [[UV1:%[0-9]+]]:_(s128) = G_UNMERGE_VALUES [[COPY]](<2 x s128>)316    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[UV]](s128)317    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[UV1]](s128)318    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[TRUNC]](s64), [[TRUNC1]](s64)319    ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)320    %0:_(<2 x s128>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7321    %1:_(<2 x s64>) = G_TRUNC %0322    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1323...324 325---326name: test_trunc_v2s128_to_v2s32327body: |328  bb.0:329    liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7330 331    ; CHECK-LABEL: name: test_trunc_v2s128_to_v2s32332    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7333    ; CHECK-NEXT: {{  $}}334    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s128>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7335    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s128), [[UV1:%[0-9]+]]:_(s128) = G_UNMERGE_VALUES [[COPY]](<2 x s128>)336    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[UV]](s128)337    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[UV1]](s128)338    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[TRUNC]](s32), [[TRUNC1]](s32)339    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)340    %0:_(<2 x s128>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7341    %1:_(<2 x s32>) = G_TRUNC %0342    $vgpr0_vgpr1 = COPY %1343...344 345---346name: test_trunc_v2s128_to_v2s16347body: |348  bb.0:349    liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7350 351    ; CHECK-LABEL: name: test_trunc_v2s128_to_v2s16352    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7353    ; CHECK-NEXT: {{  $}}354    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s128>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7355    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s128), [[UV1:%[0-9]+]]:_(s128) = G_UNMERGE_VALUES [[COPY]](<2 x s128>)356    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[UV]](s128)357    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535358    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[TRUNC]], [[C]]359    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[UV1]](s128)360    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[TRUNC1]], [[C]]361    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16362    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)363    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]364    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)365    ; CHECK-NEXT: $vgpr0 = COPY [[BITCAST]](<2 x s16>)366    %0:_(<2 x s128>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7367    %1:_(<2 x s16>) = G_TRUNC %0368    $vgpr0 = COPY %1369...370 371---372name: test_trunc_v2s96_to_v2s32373body: |374  bb.0:375    liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5376 377    ; CHECK-LABEL: name: test_trunc_v2s96_to_v2s32378    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5379    ; CHECK-NEXT: {{  $}}380    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2381    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr3_vgpr4_vgpr5382    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s96)383    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s96)384    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[TRUNC]](s32), [[TRUNC1]](s32)385    ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)386    %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2387    %1:_(s96) = COPY $vgpr3_vgpr4_vgpr5388    %2:_(<2 x s96>) = G_BUILD_VECTOR %0, %1389    %3:_(<2 x s32>) = G_TRUNC %2390    $vgpr0_vgpr1 = COPY %3391...392 393---394name: test_trunc_v2s96_to_v2s16395body: |396  bb.0:397    liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5398 399    ; CHECK-LABEL: name: test_trunc_v2s96_to_v2s16400    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5401    ; CHECK-NEXT: {{  $}}402    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2403    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr3_vgpr4_vgpr5404    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s96)405    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535406    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[TRUNC]], [[C]]407    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s96)408    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[TRUNC1]], [[C]]409    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16410    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)411    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL]]412    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)413    ; CHECK-NEXT: $vgpr0 = COPY [[BITCAST]](<2 x s16>)414    %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2415    %1:_(s96) = COPY $vgpr3_vgpr4_vgpr5416    %2:_(<2 x s96>) = G_BUILD_VECTOR %0, %1417    %3:_(<2 x s16>) = G_TRUNC %2418    $vgpr0 = COPY %3419...420 421---422name: test_trunc_v2s96_to_v2s8423body: |424  bb.0:425    liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5426 427    ; CHECK-LABEL: name: test_trunc_v2s96_to_v2s8428    ; CHECK: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5429    ; CHECK-NEXT: {{  $}}430    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s96) = COPY $vgpr0_vgpr1_vgpr2431    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s96) = COPY $vgpr3_vgpr4_vgpr5432    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s96)433    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s96)434    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[TRUNC]](s32), [[TRUNC1]](s32)435    ; CHECK-NEXT: S_ENDPGM 0, implicit [[BUILD_VECTOR]](<2 x s32>)436    %0:_(s96) = COPY $vgpr0_vgpr1_vgpr2437    %1:_(s96) = COPY $vgpr3_vgpr4_vgpr5438    %2:_(<2 x s96>) = G_BUILD_VECTOR %0, %1439    %3:_(<2 x s8>) = G_TRUNC %2440    %4:_(<2 x s32>) = G_ANYEXT %3441    S_ENDPGM 0, implicit %4442...443