brintos

brintos / llvm-project-archived public Read only

0
0
Text · 30.6 KiB · 4cbdea6 Raw
670 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=legalizer %s -o - | FileCheck -check-prefix=GFX6 %s3# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=legalizer %s -o - | FileCheck -check-prefix=GFX8 %s4 5---6name: test_sitofp_s32_to_s327body: |8  bb.0:9    liveins: $vgpr010 11    ; GFX6-LABEL: name: test_sitofp_s32_to_s3212    ; GFX6: liveins: $vgpr013    ; GFX6-NEXT: {{  $}}14    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr015    ; GFX6-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[COPY]](s32)16    ; GFX6-NEXT: $vgpr0 = COPY [[SITOFP]](s32)17    ; GFX8-LABEL: name: test_sitofp_s32_to_s3218    ; GFX8: liveins: $vgpr019    ; GFX8-NEXT: {{  $}}20    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr021    ; GFX8-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[COPY]](s32)22    ; GFX8-NEXT: $vgpr0 = COPY [[SITOFP]](s32)23    %0:_(s32) = COPY $vgpr024    %1:_(s32) = G_SITOFP %025    $vgpr0 = COPY %126...27 28---29name: test_sitofp_s32_to_s6430body: |31  bb.0:32    liveins: $vgpr033 34    ; GFX6-LABEL: name: test_sitofp_s32_to_s6435    ; GFX6: liveins: $vgpr036    ; GFX6-NEXT: {{  $}}37    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr038    ; GFX6-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[COPY]](s32)39    ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[SITOFP]](s64)40    ; GFX8-LABEL: name: test_sitofp_s32_to_s6441    ; GFX8: liveins: $vgpr042    ; GFX8-NEXT: {{  $}}43    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr044    ; GFX8-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[COPY]](s32)45    ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[SITOFP]](s64)46    %0:_(s32) = COPY $vgpr047    %1:_(s64) = G_SITOFP %048    $vgpr0_vgpr1 = COPY %149...50 51---52name: test_sitofp_v2s32_to_v2s3253body: |54  bb.0:55    liveins: $vgpr0_vgpr156 57    ; GFX6-LABEL: name: test_sitofp_v2s32_to_v2s3258    ; GFX6: liveins: $vgpr0_vgpr159    ; GFX6-NEXT: {{  $}}60    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr161    ; GFX6-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)62    ; GFX6-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[UV]](s32)63    ; GFX6-NEXT: [[SITOFP1:%[0-9]+]]:_(s32) = G_SITOFP [[UV1]](s32)64    ; GFX6-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SITOFP]](s32), [[SITOFP1]](s32)65    ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)66    ; GFX8-LABEL: name: test_sitofp_v2s32_to_v2s3267    ; GFX8: liveins: $vgpr0_vgpr168    ; GFX8-NEXT: {{  $}}69    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr170    ; GFX8-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)71    ; GFX8-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[UV]](s32)72    ; GFX8-NEXT: [[SITOFP1:%[0-9]+]]:_(s32) = G_SITOFP [[UV1]](s32)73    ; GFX8-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SITOFP]](s32), [[SITOFP1]](s32)74    ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)75    %0:_(<2 x s32>) = COPY $vgpr0_vgpr176    %1:_(<2 x s32>) = G_SITOFP %077    $vgpr0_vgpr1 = COPY %178...79 80---81name: test_sitofp_v2s32_to_v2s6482body: |83  bb.0:84    liveins: $vgpr0_vgpr185 86    ; GFX6-LABEL: name: test_sitofp_v2s32_to_v2s6487    ; GFX6: liveins: $vgpr0_vgpr188    ; GFX6-NEXT: {{  $}}89    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr190    ; GFX6-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)91    ; GFX6-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[UV]](s32)92    ; GFX6-NEXT: [[SITOFP1:%[0-9]+]]:_(s64) = G_SITOFP [[UV1]](s32)93    ; GFX6-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[SITOFP]](s64), [[SITOFP1]](s64)94    ; GFX6-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)95    ; GFX8-LABEL: name: test_sitofp_v2s32_to_v2s6496    ; GFX8: liveins: $vgpr0_vgpr197    ; GFX8-NEXT: {{  $}}98    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr199    ; GFX8-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)100    ; GFX8-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[UV]](s32)101    ; GFX8-NEXT: [[SITOFP1:%[0-9]+]]:_(s64) = G_SITOFP [[UV1]](s32)102    ; GFX8-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[SITOFP]](s64), [[SITOFP1]](s64)103    ; GFX8-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)104    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1105    %1:_(<2 x s64>) = G_SITOFP %0106    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1107...108 109---110name: test_sitofp_s64_to_s32111body: |112  bb.0:113    liveins: $vgpr0_vgpr1114 115    ; GFX6-LABEL: name: test_sitofp_s64_to_s32116    ; GFX6: liveins: $vgpr0_vgpr1117    ; GFX6-NEXT: {{  $}}118    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1119    ; GFX6-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)120    ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32121    ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1122    ; GFX6-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 31123    ; GFX6-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[UV]], [[UV1]]124    ; GFX6-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[XOR]], [[C2]](s32)125    ; GFX6-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[C]], [[ASHR]]126    ; GFX6-NEXT: [[INT:%[0-9]+]]:_(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.sffbh), [[UV1]](s32)127    ; GFX6-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[INT]], [[C1]]128    ; GFX6-NEXT: [[UMIN:%[0-9]+]]:_(s32) = G_UMIN [[SUB]], [[ADD]]129    ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[UMIN]](s32)130    ; GFX6-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SHL]](s64)131    ; GFX6-NEXT: [[UMIN1:%[0-9]+]]:_(s32) = G_UMIN [[C1]], [[UV2]]132    ; GFX6-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[UV3]], [[UMIN1]]133    ; GFX6-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[OR]](s32)134    ; GFX6-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[C]], [[UMIN]]135    ; GFX6-NEXT: [[FLDEXP:%[0-9]+]]:_(s32) = G_FLDEXP [[SITOFP]], [[SUB1]](s32)136    ; GFX6-NEXT: $vgpr0 = COPY [[FLDEXP]](s32)137    ; GFX8-LABEL: name: test_sitofp_s64_to_s32138    ; GFX8: liveins: $vgpr0_vgpr1139    ; GFX8-NEXT: {{  $}}140    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1141    ; GFX8-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)142    ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32143    ; GFX8-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1144    ; GFX8-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 31145    ; GFX8-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[UV]], [[UV1]]146    ; GFX8-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[XOR]], [[C2]](s32)147    ; GFX8-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[C]], [[ASHR]]148    ; GFX8-NEXT: [[INT:%[0-9]+]]:_(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.sffbh), [[UV1]](s32)149    ; GFX8-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[INT]], [[C1]]150    ; GFX8-NEXT: [[UMIN:%[0-9]+]]:_(s32) = G_UMIN [[SUB]], [[ADD]]151    ; GFX8-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[UMIN]](s32)152    ; GFX8-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SHL]](s64)153    ; GFX8-NEXT: [[UMIN1:%[0-9]+]]:_(s32) = G_UMIN [[C1]], [[UV2]]154    ; GFX8-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[UV3]], [[UMIN1]]155    ; GFX8-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[OR]](s32)156    ; GFX8-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[C]], [[UMIN]]157    ; GFX8-NEXT: [[FLDEXP:%[0-9]+]]:_(s32) = G_FLDEXP [[SITOFP]], [[SUB1]](s32)158    ; GFX8-NEXT: $vgpr0 = COPY [[FLDEXP]](s32)159    %0:_(s64) = COPY $vgpr0_vgpr1160    %1:_(s32) = G_SITOFP %0161    $vgpr0 = COPY %1162...163 164---165name: test_sitofp_s64_to_s64166body: |167  bb.0:168    liveins: $vgpr0_vgpr1169 170    ; GFX6-LABEL: name: test_sitofp_s64_to_s64171    ; GFX6: liveins: $vgpr0_vgpr1172    ; GFX6-NEXT: {{  $}}173    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1174    ; GFX6-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)175    ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32176    ; GFX6-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[UV1]](s32)177    ; GFX6-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[UV]](s32)178    ; GFX6-NEXT: [[FLDEXP:%[0-9]+]]:_(s64) = G_FLDEXP [[SITOFP]], [[C]](s32)179    ; GFX6-NEXT: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[FLDEXP]], [[UITOFP]]180    ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[FADD]](s64)181    ; GFX8-LABEL: name: test_sitofp_s64_to_s64182    ; GFX8: liveins: $vgpr0_vgpr1183    ; GFX8-NEXT: {{  $}}184    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1185    ; GFX8-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)186    ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32187    ; GFX8-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[UV1]](s32)188    ; GFX8-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[UV]](s32)189    ; GFX8-NEXT: [[FLDEXP:%[0-9]+]]:_(s64) = G_FLDEXP [[SITOFP]], [[C]](s32)190    ; GFX8-NEXT: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[FLDEXP]], [[UITOFP]]191    ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[FADD]](s64)192    %0:_(s64) = COPY $vgpr0_vgpr1193    %1:_(s64) = G_SITOFP %0194    $vgpr0_vgpr1 = COPY %1195...196 197---198name: test_sitofp_s16_to_s16199body: |200  bb.0:201    liveins: $vgpr0202 203    ; GFX6-LABEL: name: test_sitofp_s16_to_s16204    ; GFX6: liveins: $vgpr0205    ; GFX6-NEXT: {{  $}}206    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0207    ; GFX6-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 16208    ; GFX6-NEXT: [[SITOFP:%[0-9]+]]:_(s16) = G_SITOFP [[SEXT_INREG]](s32)209    ; GFX6-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SITOFP]](s16)210    ; GFX6-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)211    ; GFX8-LABEL: name: test_sitofp_s16_to_s16212    ; GFX8: liveins: $vgpr0213    ; GFX8-NEXT: {{  $}}214    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0215    ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)216    ; GFX8-NEXT: [[SITOFP:%[0-9]+]]:_(s16) = G_SITOFP [[TRUNC]](s16)217    ; GFX8-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SITOFP]](s16)218    ; GFX8-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)219    %0:_(s32) = COPY $vgpr0220    %1:_(s16) = G_TRUNC %0221    %2:_(s16) = G_SITOFP %1222    %3:_(s32) = G_ANYEXT %2223    $vgpr0 = COPY %3224...225 226---227name: test_sitofp_s16_to_s32228body: |229  bb.0:230    liveins: $vgpr0231 232    ; GFX6-LABEL: name: test_sitofp_s16_to_s32233    ; GFX6: liveins: $vgpr0234    ; GFX6-NEXT: {{  $}}235    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0236    ; GFX6-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 16237    ; GFX6-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[SEXT_INREG]](s32)238    ; GFX6-NEXT: $vgpr0 = COPY [[SITOFP]](s32)239    ; GFX8-LABEL: name: test_sitofp_s16_to_s32240    ; GFX8: liveins: $vgpr0241    ; GFX8-NEXT: {{  $}}242    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0243    ; GFX8-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 16244    ; GFX8-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[SEXT_INREG]](s32)245    ; GFX8-NEXT: $vgpr0 = COPY [[SITOFP]](s32)246    %0:_(s32) = COPY $vgpr0247    %1:_(s16) = G_TRUNC %0248    %2:_(s32) = G_SITOFP %1249    $vgpr0 = COPY %2250...251 252---253name: test_sitofp_s16_to_s64254body: |255  bb.0:256    liveins: $vgpr0257 258    ; GFX6-LABEL: name: test_sitofp_s16_to_s64259    ; GFX6: liveins: $vgpr0260    ; GFX6-NEXT: {{  $}}261    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0262    ; GFX6-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 16263    ; GFX6-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[SEXT_INREG]](s32)264    ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[SITOFP]](s64)265    ; GFX8-LABEL: name: test_sitofp_s16_to_s64266    ; GFX8: liveins: $vgpr0267    ; GFX8-NEXT: {{  $}}268    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0269    ; GFX8-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 16270    ; GFX8-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[SEXT_INREG]](s32)271    ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[SITOFP]](s64)272    %0:_(s32) = COPY $vgpr0273    %1:_(s16) = G_TRUNC %0274    %2:_(s64) = G_SITOFP %1275    $vgpr0_vgpr1 = COPY %2276...277 278---279name: test_sitofp_s8_to_s16280body: |281  bb.0:282    liveins: $vgpr0283 284    ; GFX6-LABEL: name: test_sitofp_s8_to_s16285    ; GFX6: liveins: $vgpr0286    ; GFX6-NEXT: {{  $}}287    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0288    ; GFX6-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 8289    ; GFX6-NEXT: [[SITOFP:%[0-9]+]]:_(s16) = G_SITOFP [[SEXT_INREG]](s32)290    ; GFX6-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SITOFP]](s16)291    ; GFX6-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)292    ; GFX8-LABEL: name: test_sitofp_s8_to_s16293    ; GFX8: liveins: $vgpr0294    ; GFX8-NEXT: {{  $}}295    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0296    ; GFX8-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 8297    ; GFX8-NEXT: [[SITOFP:%[0-9]+]]:_(s16) = G_SITOFP [[SEXT_INREG]](s32)298    ; GFX8-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SITOFP]](s16)299    ; GFX8-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)300    %0:_(s32) = COPY $vgpr0301    %1:_(s8) = G_TRUNC %0302    %2:_(s16) = G_SITOFP %1303    %3:_(s32) = G_ANYEXT %2304    $vgpr0 = COPY %3305...306 307---308name: test_sitofp_s8_to_s32309body: |310  bb.0:311    liveins: $vgpr0312 313    ; GFX6-LABEL: name: test_sitofp_s8_to_s32314    ; GFX6: liveins: $vgpr0315    ; GFX6-NEXT: {{  $}}316    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0317    ; GFX6-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 8318    ; GFX6-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[SEXT_INREG]](s32)319    ; GFX6-NEXT: $vgpr0 = COPY [[SITOFP]](s32)320    ; GFX8-LABEL: name: test_sitofp_s8_to_s32321    ; GFX8: liveins: $vgpr0322    ; GFX8-NEXT: {{  $}}323    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0324    ; GFX8-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 8325    ; GFX8-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[SEXT_INREG]](s32)326    ; GFX8-NEXT: $vgpr0 = COPY [[SITOFP]](s32)327    %0:_(s32) = COPY $vgpr0328    %1:_(s8) = G_TRUNC %0329    %2:_(s32) = G_SITOFP %1330    $vgpr0 = COPY %2331...332 333---334name: test_sitofp_s8_to_s64335body: |336  bb.0:337    liveins: $vgpr0338 339    ; GFX6-LABEL: name: test_sitofp_s8_to_s64340    ; GFX6: liveins: $vgpr0341    ; GFX6-NEXT: {{  $}}342    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0343    ; GFX6-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 8344    ; GFX6-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[SEXT_INREG]](s32)345    ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[SITOFP]](s64)346    ; GFX8-LABEL: name: test_sitofp_s8_to_s64347    ; GFX8: liveins: $vgpr0348    ; GFX8-NEXT: {{  $}}349    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0350    ; GFX8-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 8351    ; GFX8-NEXT: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[SEXT_INREG]](s32)352    ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[SITOFP]](s64)353    %0:_(s32) = COPY $vgpr0354    %1:_(s8) = G_TRUNC %0355    %2:_(s64) = G_SITOFP %1356    $vgpr0_vgpr1 = COPY %2357...358 359---360name: test_sitofp_s1_to_s16361body: |362  bb.0:363    liveins: $vgpr0364 365    ; GFX6-LABEL: name: test_sitofp_s1_to_s16366    ; GFX6: liveins: $vgpr0367    ; GFX6-NEXT: {{  $}}368    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0369    ; GFX6-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)370    ; GFX6-NEXT: [[C:%[0-9]+]]:_(s16) = G_FCONSTANT half 0xHBC00371    ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s16) = G_FCONSTANT half 0xH0000372    ; GFX6-NEXT: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[TRUNC]](s1), [[C]], [[C1]]373    ; GFX6-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16)374    ; GFX6-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)375    ; GFX8-LABEL: name: test_sitofp_s1_to_s16376    ; GFX8: liveins: $vgpr0377    ; GFX8-NEXT: {{  $}}378    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0379    ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)380    ; GFX8-NEXT: [[C:%[0-9]+]]:_(s16) = G_FCONSTANT half 0xHBC00381    ; GFX8-NEXT: [[C1:%[0-9]+]]:_(s16) = G_FCONSTANT half 0xH0000382    ; GFX8-NEXT: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[TRUNC]](s1), [[C]], [[C1]]383    ; GFX8-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16)384    ; GFX8-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)385    %0:_(s32) = COPY $vgpr0386    %1:_(s1) = G_TRUNC %0387    %2:_(s16) = G_SITOFP %1388    %3:_(s32) = G_ANYEXT %2389    $vgpr0 = COPY %3390...391 392---393name: test_sitofp_s1_to_s32394body: |395  bb.0:396    liveins: $vgpr0397 398    ; GFX6-LABEL: name: test_sitofp_s1_to_s32399    ; GFX6: liveins: $vgpr0400    ; GFX6-NEXT: {{  $}}401    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0402    ; GFX6-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)403    ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float -1.000000e+00404    ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s32) = G_FCONSTANT float 0.000000e+00405    ; GFX6-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[TRUNC]](s1), [[C]], [[C1]]406    ; GFX6-NEXT: $vgpr0 = COPY [[SELECT]](s32)407    ; GFX8-LABEL: name: test_sitofp_s1_to_s32408    ; GFX8: liveins: $vgpr0409    ; GFX8-NEXT: {{  $}}410    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0411    ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)412    ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float -1.000000e+00413    ; GFX8-NEXT: [[C1:%[0-9]+]]:_(s32) = G_FCONSTANT float 0.000000e+00414    ; GFX8-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[TRUNC]](s1), [[C]], [[C1]]415    ; GFX8-NEXT: $vgpr0 = COPY [[SELECT]](s32)416    %0:_(s32) = COPY $vgpr0417    %1:_(s1) = G_TRUNC %0418    %2:_(s32) = G_SITOFP %1419    $vgpr0 = COPY %2420...421 422---423name: test_sitofp_s1_to_s64424body: |425  bb.0:426    liveins: $vgpr0427 428    ; GFX6-LABEL: name: test_sitofp_s1_to_s64429    ; GFX6: liveins: $vgpr0430    ; GFX6-NEXT: {{  $}}431    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0432    ; GFX6-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)433    ; GFX6-NEXT: [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double -1.000000e+00434    ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s64) = G_FCONSTANT double 0.000000e+00435    ; GFX6-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[TRUNC]](s1), [[C]], [[C1]]436    ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[SELECT]](s64)437    ; GFX8-LABEL: name: test_sitofp_s1_to_s64438    ; GFX8: liveins: $vgpr0439    ; GFX8-NEXT: {{  $}}440    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0441    ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)442    ; GFX8-NEXT: [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double -1.000000e+00443    ; GFX8-NEXT: [[C1:%[0-9]+]]:_(s64) = G_FCONSTANT double 0.000000e+00444    ; GFX8-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[TRUNC]](s1), [[C]], [[C1]]445    ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[SELECT]](s64)446    %0:_(s32) = COPY $vgpr0447    %1:_(s1) = G_TRUNC %0448    %2:_(s64) = G_SITOFP %1449    $vgpr0_vgpr1 = COPY %2450...451 452---453name: test_sitofp_s33_to_s32454body: |455  bb.0:456    liveins: $vgpr0_vgpr1457 458    ; GFX6-LABEL: name: test_sitofp_s33_to_s32459    ; GFX6: liveins: $vgpr0_vgpr1460    ; GFX6-NEXT: {{  $}}461    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1462    ; GFX6-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 33463    ; GFX6-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SEXT_INREG]](s64)464    ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32465    ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1466    ; GFX6-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 31467    ; GFX6-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[UV]], [[UV1]]468    ; GFX6-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[XOR]], [[C2]](s32)469    ; GFX6-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[C]], [[ASHR]]470    ; GFX6-NEXT: [[INT:%[0-9]+]]:_(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.sffbh), [[UV1]](s32)471    ; GFX6-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[INT]], [[C1]]472    ; GFX6-NEXT: [[UMIN:%[0-9]+]]:_(s32) = G_UMIN [[SUB]], [[ADD]]473    ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[SEXT_INREG]], [[UMIN]](s32)474    ; GFX6-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SHL]](s64)475    ; GFX6-NEXT: [[UMIN1:%[0-9]+]]:_(s32) = G_UMIN [[C1]], [[UV2]]476    ; GFX6-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[UV3]], [[UMIN1]]477    ; GFX6-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[OR]](s32)478    ; GFX6-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[C]], [[UMIN]]479    ; GFX6-NEXT: [[FLDEXP:%[0-9]+]]:_(s32) = G_FLDEXP [[SITOFP]], [[SUB1]](s32)480    ; GFX6-NEXT: $vgpr0 = COPY [[FLDEXP]](s32)481    ; GFX8-LABEL: name: test_sitofp_s33_to_s32482    ; GFX8: liveins: $vgpr0_vgpr1483    ; GFX8-NEXT: {{  $}}484    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1485    ; GFX8-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 33486    ; GFX8-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SEXT_INREG]](s64)487    ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32488    ; GFX8-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1489    ; GFX8-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 31490    ; GFX8-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[UV]], [[UV1]]491    ; GFX8-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[XOR]], [[C2]](s32)492    ; GFX8-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[C]], [[ASHR]]493    ; GFX8-NEXT: [[INT:%[0-9]+]]:_(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.sffbh), [[UV1]](s32)494    ; GFX8-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[INT]], [[C1]]495    ; GFX8-NEXT: [[UMIN:%[0-9]+]]:_(s32) = G_UMIN [[SUB]], [[ADD]]496    ; GFX8-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[SEXT_INREG]], [[UMIN]](s32)497    ; GFX8-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SHL]](s64)498    ; GFX8-NEXT: [[UMIN1:%[0-9]+]]:_(s32) = G_UMIN [[C1]], [[UV2]]499    ; GFX8-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[UV3]], [[UMIN1]]500    ; GFX8-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[OR]](s32)501    ; GFX8-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[C]], [[UMIN]]502    ; GFX8-NEXT: [[FLDEXP:%[0-9]+]]:_(s32) = G_FLDEXP [[SITOFP]], [[SUB1]](s32)503    ; GFX8-NEXT: $vgpr0 = COPY [[FLDEXP]](s32)504    %0:_(s64) = COPY $vgpr0_vgpr1505    %1:_(s33) = G_TRUNC %0506    %2:_(s32) = G_SITOFP %1507    $vgpr0 = COPY %2508...509 510---511name: test_sitofp_s64_to_s16512body: |513  bb.0:514    liveins: $vgpr0_vgpr1515 516    ; GFX6-LABEL: name: test_sitofp_s64_to_s16517    ; GFX6: liveins: $vgpr0_vgpr1518    ; GFX6-NEXT: {{  $}}519    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1520    ; GFX6-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)521    ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32522    ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1523    ; GFX6-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 31524    ; GFX6-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[UV]], [[UV1]]525    ; GFX6-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[XOR]], [[C2]](s32)526    ; GFX6-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[C]], [[ASHR]]527    ; GFX6-NEXT: [[INT:%[0-9]+]]:_(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.sffbh), [[UV1]](s32)528    ; GFX6-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[INT]], [[C1]]529    ; GFX6-NEXT: [[UMIN:%[0-9]+]]:_(s32) = G_UMIN [[SUB]], [[ADD]]530    ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[UMIN]](s32)531    ; GFX6-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SHL]](s64)532    ; GFX6-NEXT: [[UMIN1:%[0-9]+]]:_(s32) = G_UMIN [[C1]], [[UV2]]533    ; GFX6-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[UV3]], [[UMIN1]]534    ; GFX6-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[OR]](s32)535    ; GFX6-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[C]], [[UMIN]]536    ; GFX6-NEXT: [[FLDEXP:%[0-9]+]]:_(s32) = G_FLDEXP [[SITOFP]], [[SUB1]](s32)537    ; GFX6-NEXT: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[FLDEXP]](s32)538    ; GFX6-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FPTRUNC]](s16)539    ; GFX6-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)540    ; GFX8-LABEL: name: test_sitofp_s64_to_s16541    ; GFX8: liveins: $vgpr0_vgpr1542    ; GFX8-NEXT: {{  $}}543    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1544    ; GFX8-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)545    ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32546    ; GFX8-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1547    ; GFX8-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 31548    ; GFX8-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[UV]], [[UV1]]549    ; GFX8-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[XOR]], [[C2]](s32)550    ; GFX8-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[C]], [[ASHR]]551    ; GFX8-NEXT: [[INT:%[0-9]+]]:_(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.sffbh), [[UV1]](s32)552    ; GFX8-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[INT]], [[C1]]553    ; GFX8-NEXT: [[UMIN:%[0-9]+]]:_(s32) = G_UMIN [[SUB]], [[ADD]]554    ; GFX8-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[UMIN]](s32)555    ; GFX8-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SHL]](s64)556    ; GFX8-NEXT: [[UMIN1:%[0-9]+]]:_(s32) = G_UMIN [[C1]], [[UV2]]557    ; GFX8-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[UV3]], [[UMIN1]]558    ; GFX8-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[OR]](s32)559    ; GFX8-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[C]], [[UMIN]]560    ; GFX8-NEXT: [[FLDEXP:%[0-9]+]]:_(s32) = G_FLDEXP [[SITOFP]], [[SUB1]](s32)561    ; GFX8-NEXT: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[FLDEXP]](s32)562    ; GFX8-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FPTRUNC]](s16)563    ; GFX8-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)564    %0:_(s64) = COPY $vgpr0_vgpr1565    %1:_(s16) = G_SITOFP %0566    %2:_(s32) = G_ANYEXT %1567    $vgpr0 = COPY %2568...569 570---571name: test_sitofp_v2s64_to_v2s16572body: |573  bb.0:574    liveins: $vgpr0_vgpr1_vgpr2_vgpr3575 576    ; GFX6-LABEL: name: test_sitofp_v2s64_to_v2s16577    ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3578    ; GFX6-NEXT: {{  $}}579    ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3580    ; GFX6-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)581    ; GFX6-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[UV]](s64)582    ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32583    ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1584    ; GFX6-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 31585    ; GFX6-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[UV2]], [[UV3]]586    ; GFX6-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[XOR]], [[C2]](s32)587    ; GFX6-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[C]], [[ASHR]]588    ; GFX6-NEXT: [[INT:%[0-9]+]]:_(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.sffbh), [[UV3]](s32)589    ; GFX6-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[INT]], [[C1]]590    ; GFX6-NEXT: [[UMIN:%[0-9]+]]:_(s32) = G_UMIN [[SUB]], [[ADD]]591    ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[UV]], [[UMIN]](s32)592    ; GFX6-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SHL]](s64)593    ; GFX6-NEXT: [[UMIN1:%[0-9]+]]:_(s32) = G_UMIN [[C1]], [[UV4]]594    ; GFX6-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[UV5]], [[UMIN1]]595    ; GFX6-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[OR]](s32)596    ; GFX6-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[C]], [[UMIN]]597    ; GFX6-NEXT: [[FLDEXP:%[0-9]+]]:_(s32) = G_FLDEXP [[SITOFP]], [[SUB1]](s32)598    ; GFX6-NEXT: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[FLDEXP]](s32)599    ; GFX6-NEXT: [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[UV1]](s64)600    ; GFX6-NEXT: [[XOR1:%[0-9]+]]:_(s32) = G_XOR [[UV6]], [[UV7]]601    ; GFX6-NEXT: [[ASHR1:%[0-9]+]]:_(s32) = G_ASHR [[XOR1]], [[C2]](s32)602    ; GFX6-NEXT: [[ADD1:%[0-9]+]]:_(s32) = G_ADD [[C]], [[ASHR1]]603    ; GFX6-NEXT: [[INT1:%[0-9]+]]:_(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.sffbh), [[UV7]](s32)604    ; GFX6-NEXT: [[SUB2:%[0-9]+]]:_(s32) = G_SUB [[INT1]], [[C1]]605    ; GFX6-NEXT: [[UMIN2:%[0-9]+]]:_(s32) = G_UMIN [[SUB2]], [[ADD1]]606    ; GFX6-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[UV1]], [[UMIN2]](s32)607    ; GFX6-NEXT: [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SHL1]](s64)608    ; GFX6-NEXT: [[UMIN3:%[0-9]+]]:_(s32) = G_UMIN [[C1]], [[UV8]]609    ; GFX6-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[UV9]], [[UMIN3]]610    ; GFX6-NEXT: [[SITOFP1:%[0-9]+]]:_(s32) = G_SITOFP [[OR1]](s32)611    ; GFX6-NEXT: [[SUB3:%[0-9]+]]:_(s32) = G_SUB [[C]], [[UMIN2]]612    ; GFX6-NEXT: [[FLDEXP1:%[0-9]+]]:_(s32) = G_FLDEXP [[SITOFP1]], [[SUB3]](s32)613    ; GFX6-NEXT: [[FPTRUNC1:%[0-9]+]]:_(s16) = G_FPTRUNC [[FLDEXP1]](s32)614    ; GFX6-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[FPTRUNC]](s16)615    ; GFX6-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[FPTRUNC1]](s16)616    ; GFX6-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 16617    ; GFX6-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C3]](s32)618    ; GFX6-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL2]]619    ; GFX6-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR2]](s32)620    ; GFX6-NEXT: $vgpr0 = COPY [[BITCAST]](<2 x s16>)621    ; GFX8-LABEL: name: test_sitofp_v2s64_to_v2s16622    ; GFX8: liveins: $vgpr0_vgpr1_vgpr2_vgpr3623    ; GFX8-NEXT: {{  $}}624    ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3625    ; GFX8-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)626    ; GFX8-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[UV]](s64)627    ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32628    ; GFX8-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1629    ; GFX8-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 31630    ; GFX8-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[UV2]], [[UV3]]631    ; GFX8-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[XOR]], [[C2]](s32)632    ; GFX8-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[C]], [[ASHR]]633    ; GFX8-NEXT: [[INT:%[0-9]+]]:_(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.sffbh), [[UV3]](s32)634    ; GFX8-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[INT]], [[C1]]635    ; GFX8-NEXT: [[UMIN:%[0-9]+]]:_(s32) = G_UMIN [[SUB]], [[ADD]]636    ; GFX8-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[UV]], [[UMIN]](s32)637    ; GFX8-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SHL]](s64)638    ; GFX8-NEXT: [[UMIN1:%[0-9]+]]:_(s32) = G_UMIN [[C1]], [[UV4]]639    ; GFX8-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[UV5]], [[UMIN1]]640    ; GFX8-NEXT: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[OR]](s32)641    ; GFX8-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[C]], [[UMIN]]642    ; GFX8-NEXT: [[FLDEXP:%[0-9]+]]:_(s32) = G_FLDEXP [[SITOFP]], [[SUB1]](s32)643    ; GFX8-NEXT: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[FLDEXP]](s32)644    ; GFX8-NEXT: [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[UV1]](s64)645    ; GFX8-NEXT: [[XOR1:%[0-9]+]]:_(s32) = G_XOR [[UV6]], [[UV7]]646    ; GFX8-NEXT: [[ASHR1:%[0-9]+]]:_(s32) = G_ASHR [[XOR1]], [[C2]](s32)647    ; GFX8-NEXT: [[ADD1:%[0-9]+]]:_(s32) = G_ADD [[C]], [[ASHR1]]648    ; GFX8-NEXT: [[INT1:%[0-9]+]]:_(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.sffbh), [[UV7]](s32)649    ; GFX8-NEXT: [[SUB2:%[0-9]+]]:_(s32) = G_SUB [[INT1]], [[C1]]650    ; GFX8-NEXT: [[UMIN2:%[0-9]+]]:_(s32) = G_UMIN [[SUB2]], [[ADD1]]651    ; GFX8-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[UV1]], [[UMIN2]](s32)652    ; GFX8-NEXT: [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SHL1]](s64)653    ; GFX8-NEXT: [[UMIN3:%[0-9]+]]:_(s32) = G_UMIN [[C1]], [[UV8]]654    ; GFX8-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[UV9]], [[UMIN3]]655    ; GFX8-NEXT: [[SITOFP1:%[0-9]+]]:_(s32) = G_SITOFP [[OR1]](s32)656    ; GFX8-NEXT: [[SUB3:%[0-9]+]]:_(s32) = G_SUB [[C]], [[UMIN2]]657    ; GFX8-NEXT: [[FLDEXP1:%[0-9]+]]:_(s32) = G_FLDEXP [[SITOFP1]], [[SUB3]](s32)658    ; GFX8-NEXT: [[FPTRUNC1:%[0-9]+]]:_(s16) = G_FPTRUNC [[FLDEXP1]](s32)659    ; GFX8-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[FPTRUNC]](s16)660    ; GFX8-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[FPTRUNC1]](s16)661    ; GFX8-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 16662    ; GFX8-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C3]](s32)663    ; GFX8-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL2]]664    ; GFX8-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR2]](s32)665    ; GFX8-NEXT: $vgpr0 = COPY [[BITCAST]](<2 x s16>)666    %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3667    %1:_(<2 x s16>) = G_SITOFP %0668    $vgpr0 = COPY %1669...670