brintos

brintos / llvm-project-archived public Read only

0
0
Text · 37.4 KiB · 2eab791 Raw
830 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=SI %s3# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=legalizer %s -o - | FileCheck -check-prefix=VI %s4 5---6name: test_fptoui_s32_s327body: |8  bb.0:9    liveins: $vgpr010 11    ; SI-LABEL: name: test_fptoui_s32_s3212    ; SI: liveins: $vgpr013    ; SI-NEXT: {{  $}}14    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr015    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s32)16    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)17    ; VI-LABEL: name: test_fptoui_s32_s3218    ; VI: liveins: $vgpr019    ; VI-NEXT: {{  $}}20    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr021    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s32)22    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)23    %0:_(s32) = COPY $vgpr024    %1:_(s32) = G_FPTOUI %025    $vgpr0 = COPY %126...27 28---29name: test_fptoui_s32_s6430body: |31  bb.0:32    liveins: $vgpr0_vgpr133 34    ; SI-LABEL: name: test_fptoui_s32_s6435    ; SI: liveins: $vgpr0_vgpr136    ; SI-NEXT: {{  $}}37    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr138    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s64)39    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)40    ; VI-LABEL: name: test_fptoui_s32_s6441    ; VI: liveins: $vgpr0_vgpr142    ; VI-NEXT: {{  $}}43    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr144    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s64)45    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)46    %0:_(s64) = COPY $vgpr0_vgpr147    %1:_(s32) = G_FPTOUI %048    $vgpr0 = COPY %149...50 51---52name: test_fptoui_v2s32_to_v2s3253body: |54  bb.0:55    liveins: $vgpr0_vgpr156 57    ; SI-LABEL: name: test_fptoui_v2s32_to_v2s3258    ; SI: liveins: $vgpr0_vgpr159    ; SI-NEXT: {{  $}}60    ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr161    ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)62    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[UV]](s32)63    ; SI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[UV1]](s32)64    ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FPTOUI]](s32), [[FPTOUI1]](s32)65    ; SI-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)66    ; VI-LABEL: name: test_fptoui_v2s32_to_v2s3267    ; VI: liveins: $vgpr0_vgpr168    ; VI-NEXT: {{  $}}69    ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr170    ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)71    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[UV]](s32)72    ; VI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[UV1]](s32)73    ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FPTOUI]](s32), [[FPTOUI1]](s32)74    ; VI-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)75    %0:_(<2 x s32>) = COPY $vgpr0_vgpr176    %1:_(<2 x s32>) = G_FPTOUI %077    $vgpr0_vgpr1 = COPY %178...79 80---81name: test_fptoui_v2s64_to_v2s3282body: |83  bb.0:84    liveins: $vgpr0_vgpr1_vgpr2_vgpr385 86    ; SI-LABEL: name: test_fptoui_v2s64_to_v2s3287    ; SI: liveins: $vgpr0_vgpr1_vgpr2_vgpr388    ; SI-NEXT: {{  $}}89    ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr390    ; SI-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)91    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[UV]](s64)92    ; SI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[UV1]](s64)93    ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FPTOUI]](s32), [[FPTOUI1]](s32)94    ; SI-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)95    ; VI-LABEL: name: test_fptoui_v2s64_to_v2s3296    ; VI: liveins: $vgpr0_vgpr1_vgpr2_vgpr397    ; VI-NEXT: {{  $}}98    ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr399    ; VI-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)100    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[UV]](s64)101    ; VI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[UV1]](s64)102    ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FPTOUI]](s32), [[FPTOUI1]](s32)103    ; VI-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)104    %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3105    %1:_(<2 x s32>) = G_FPTOUI %0106    $vgpr0_vgpr1 = COPY %1107...108 109---110name: test_fptoui_s16_to_s16111body: |112  bb.0:113    liveins: $vgpr0114 115    ; SI-LABEL: name: test_fptoui_s16_to_s16116    ; SI: liveins: $vgpr0117    ; SI-NEXT: {{  $}}118    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0119    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)120    ; SI-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC]](s16)121    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FPEXT]](s32)122    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)123    ; VI-LABEL: name: test_fptoui_s16_to_s16124    ; VI: liveins: $vgpr0125    ; VI-NEXT: {{  $}}126    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0127    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)128    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s16) = G_FPTOUI [[TRUNC]](s16)129    ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FPTOUI]](s16)130    ; VI-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)131    %0:_(s32) = COPY $vgpr0132    %1:_(s16) = G_TRUNC %0133    %2:_(s16) = G_FPTOUI %1134    %3:_(s32) = G_ANYEXT %2135    $vgpr0 = COPY %3136...137 138---139name: test_fptoui_s32_to_s16140body: |141  bb.0:142    liveins: $vgpr0143 144    ; SI-LABEL: name: test_fptoui_s32_to_s16145    ; SI: liveins: $vgpr0146    ; SI-NEXT: {{  $}}147    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0148    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s32)149    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)150    ; VI-LABEL: name: test_fptoui_s32_to_s16151    ; VI: liveins: $vgpr0152    ; VI-NEXT: {{  $}}153    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0154    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s32)155    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)156    %0:_(s32) = COPY $vgpr0157    %1:_(s16) = G_FPTOUI %0158    %2:_(s32) = G_ANYEXT %1159    $vgpr0 = COPY %2160...161 162---163name: test_fptoui_s64_to_s16164body: |165  bb.0:166    liveins: $vgpr0_vgpr1167 168    ; SI-LABEL: name: test_fptoui_s64_to_s16169    ; SI: liveins: $vgpr0_vgpr1170    ; SI-NEXT: {{  $}}171    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1172    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s64)173    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)174    ; VI-LABEL: name: test_fptoui_s64_to_s16175    ; VI: liveins: $vgpr0_vgpr1176    ; VI-NEXT: {{  $}}177    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1178    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s64)179    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)180    %0:_(s64) = COPY $vgpr0_vgpr1181    %1:_(s16) = G_FPTOUI %0182    %2:_(s32) = G_ANYEXT %1183    $vgpr0 = COPY %2184...185 186---187name: test_fptoui_s64_s64188body: |189  bb.0:190    liveins: $vgpr0_vgpr1191 192    ; SI-LABEL: name: test_fptoui_s64_s64193    ; SI: liveins: $vgpr0_vgpr1194    ; SI-NEXT: {{  $}}195    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1196    ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)197    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 20198    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 11199    ; SI-NEXT: [[INT:%[0-9]+]]:_(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.ubfe), [[UV1]](s32), [[C]](s32), [[C1]](s32)200    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1023201    ; SI-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[INT]], [[C2]]202    ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648203    ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C3]]204    ; SI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 4503599627370495205    ; SI-NEXT: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 0206    ; SI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[C5]](s32), [[AND]](s32)207    ; SI-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[C4]], [[SUB]](s32)208    ; SI-NEXT: [[C6:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1209    ; SI-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[ASHR]], [[C6]]210    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[XOR]]211    ; SI-NEXT: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 51212    ; SI-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(slt), [[SUB]](s32), [[C5]]213    ; SI-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(sgt), [[SUB]](s32), [[C7]]214    ; SI-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[MV]], [[AND1]]215    ; SI-NEXT: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[ICMP1]](s1), [[COPY]], [[SELECT]]216    ; SI-NEXT: [[C8:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x3DF0000000000000217    ; SI-NEXT: [[C9:%[0-9]+]]:_(s64) = G_FCONSTANT double 0xC1F0000000000000218    ; SI-NEXT: [[FMUL:%[0-9]+]]:_(s64) = G_FMUL [[SELECT1]], [[C8]]219    ; SI-NEXT: [[INT1:%[0-9]+]]:_(s64) = G_INTRINSIC intrinsic(@llvm.amdgcn.fract), [[FMUL]](s64)220    ; SI-NEXT: [[C10:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x3FEFFFFFFFFFFFFF221    ; SI-NEXT: [[FMINNUM_IEEE:%[0-9]+]]:_(s64) = G_FMINNUM_IEEE [[INT1]], [[C10]]222    ; SI-NEXT: [[FCMP:%[0-9]+]]:_(s1) = G_FCMP floatpred(ord), [[FMUL]](s64), [[FMUL]]223    ; SI-NEXT: [[SELECT2:%[0-9]+]]:_(s64) = G_SELECT [[FCMP]](s1), [[FMUL]], [[FMINNUM_IEEE]]224    ; SI-NEXT: [[FNEG:%[0-9]+]]:_(s64) = G_FNEG [[SELECT2]]225    ; SI-NEXT: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[FMUL]], [[FNEG]]226    ; SI-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[FADD]], [[C9]], [[SELECT1]]227    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FADD]](s64)228    ; SI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s64)229    ; SI-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)230    ; SI-NEXT: $vgpr0_vgpr1 = COPY [[MV1]](s64)231    ; VI-LABEL: name: test_fptoui_s64_s64232    ; VI: liveins: $vgpr0_vgpr1233    ; VI-NEXT: {{  $}}234    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1235    ; VI-NEXT: [[INTRINSIC_TRUNC:%[0-9]+]]:_(s64) = G_INTRINSIC_TRUNC [[COPY]]236    ; VI-NEXT: [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x3DF0000000000000237    ; VI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_FCONSTANT double 0xC1F0000000000000238    ; VI-NEXT: [[FMUL:%[0-9]+]]:_(s64) = G_FMUL [[INTRINSIC_TRUNC]], [[C]]239    ; VI-NEXT: [[FFLOOR:%[0-9]+]]:_(s64) = G_FFLOOR [[FMUL]]240    ; VI-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[FFLOOR]], [[C1]], [[INTRINSIC_TRUNC]]241    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR]](s64)242    ; VI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s64)243    ; VI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)244    ; VI-NEXT: $vgpr0_vgpr1 = COPY [[MV]](s64)245    %0:_(s64) = COPY $vgpr0_vgpr1246    %1:_(s64) = G_FPTOUI %0247    $vgpr0_vgpr1 = COPY %1248...249 250---251name: test_fptoui_s64_s64_flags252body: |253  bb.0:254    liveins: $vgpr0_vgpr1255 256    ; SI-LABEL: name: test_fptoui_s64_s64_flags257    ; SI: liveins: $vgpr0_vgpr1258    ; SI-NEXT: {{  $}}259    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1260    ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)261    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 20262    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 11263    ; SI-NEXT: [[INT:%[0-9]+]]:_(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.ubfe), [[UV1]](s32), [[C]](s32), [[C1]](s32)264    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1023265    ; SI-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[INT]], [[C2]]266    ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648267    ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV1]], [[C3]]268    ; SI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 4503599627370495269    ; SI-NEXT: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 0270    ; SI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[C5]](s32), [[AND]](s32)271    ; SI-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[C4]], [[SUB]](s32)272    ; SI-NEXT: [[C6:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1273    ; SI-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[ASHR]], [[C6]]274    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[XOR]]275    ; SI-NEXT: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 51276    ; SI-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(slt), [[SUB]](s32), [[C5]]277    ; SI-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(sgt), [[SUB]](s32), [[C7]]278    ; SI-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[MV]], [[AND1]]279    ; SI-NEXT: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[ICMP1]](s1), [[COPY]], [[SELECT]]280    ; SI-NEXT: [[C8:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x3DF0000000000000281    ; SI-NEXT: [[C9:%[0-9]+]]:_(s64) = G_FCONSTANT double 0xC1F0000000000000282    ; SI-NEXT: [[FMUL:%[0-9]+]]:_(s64) = nnan G_FMUL [[SELECT1]], [[C8]]283    ; SI-NEXT: [[INT1:%[0-9]+]]:_(s64) = nnan G_INTRINSIC intrinsic(@llvm.amdgcn.fract), [[FMUL]](s64)284    ; SI-NEXT: [[C10:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x3FEFFFFFFFFFFFFF285    ; SI-NEXT: [[FMINNUM_IEEE:%[0-9]+]]:_(s64) = nnan G_FMINNUM_IEEE [[INT1]], [[C10]]286    ; SI-NEXT: [[FNEG:%[0-9]+]]:_(s64) = nnan G_FNEG [[FMINNUM_IEEE]]287    ; SI-NEXT: [[FADD:%[0-9]+]]:_(s64) = nnan G_FADD [[FMUL]], [[FNEG]]288    ; SI-NEXT: [[FMA:%[0-9]+]]:_(s64) = nnan G_FMA [[FADD]], [[C9]], [[SELECT1]]289    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FADD]](s64)290    ; SI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s64)291    ; SI-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)292    ; SI-NEXT: $vgpr0_vgpr1 = COPY [[MV1]](s64)293    ; VI-LABEL: name: test_fptoui_s64_s64_flags294    ; VI: liveins: $vgpr0_vgpr1295    ; VI-NEXT: {{  $}}296    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1297    ; VI-NEXT: [[INTRINSIC_TRUNC:%[0-9]+]]:_(s64) = nnan G_INTRINSIC_TRUNC [[COPY]]298    ; VI-NEXT: [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x3DF0000000000000299    ; VI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_FCONSTANT double 0xC1F0000000000000300    ; VI-NEXT: [[FMUL:%[0-9]+]]:_(s64) = nnan G_FMUL [[INTRINSIC_TRUNC]], [[C]]301    ; VI-NEXT: [[FFLOOR:%[0-9]+]]:_(s64) = nnan G_FFLOOR [[FMUL]]302    ; VI-NEXT: [[FMA:%[0-9]+]]:_(s64) = nnan G_FMA [[FFLOOR]], [[C1]], [[INTRINSIC_TRUNC]]303    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR]](s64)304    ; VI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s64)305    ; VI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)306    ; VI-NEXT: $vgpr0_vgpr1 = COPY [[MV]](s64)307    %0:_(s64) = COPY $vgpr0_vgpr1308    %1:_(s64) = nnan G_FPTOUI %0309    $vgpr0_vgpr1 = COPY %1310...311 312---313name: test_fptoui_v2s64_to_v2s64314body: |315  bb.0:316    liveins: $vgpr0_vgpr1_vgpr2_vgpr3317 318    ; SI-LABEL: name: test_fptoui_v2s64_to_v2s64319    ; SI: liveins: $vgpr0_vgpr1_vgpr2_vgpr3320    ; SI-NEXT: {{  $}}321    ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3322    ; SI-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)323    ; SI-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[UV]](s64)324    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 20325    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 11326    ; SI-NEXT: [[INT:%[0-9]+]]:_(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.ubfe), [[UV3]](s32), [[C]](s32), [[C1]](s32)327    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1023328    ; SI-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[INT]], [[C2]]329    ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648330    ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[UV3]], [[C3]]331    ; SI-NEXT: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 4503599627370495332    ; SI-NEXT: [[C5:%[0-9]+]]:_(s32) = G_CONSTANT i32 0333    ; SI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[C5]](s32), [[AND]](s32)334    ; SI-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[C4]], [[SUB]](s32)335    ; SI-NEXT: [[C6:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1336    ; SI-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[ASHR]], [[C6]]337    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[UV]], [[XOR]]338    ; SI-NEXT: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 51339    ; SI-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(slt), [[SUB]](s32), [[C5]]340    ; SI-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(sgt), [[SUB]](s32), [[C7]]341    ; SI-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s1), [[MV]], [[AND1]]342    ; SI-NEXT: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[ICMP1]](s1), [[UV]], [[SELECT]]343    ; SI-NEXT: [[C8:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x3DF0000000000000344    ; SI-NEXT: [[C9:%[0-9]+]]:_(s64) = G_FCONSTANT double 0xC1F0000000000000345    ; SI-NEXT: [[FMUL:%[0-9]+]]:_(s64) = G_FMUL [[SELECT1]], [[C8]]346    ; SI-NEXT: [[INT1:%[0-9]+]]:_(s64) = G_INTRINSIC intrinsic(@llvm.amdgcn.fract), [[FMUL]](s64)347    ; SI-NEXT: [[C10:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x3FEFFFFFFFFFFFFF348    ; SI-NEXT: [[FMINNUM_IEEE:%[0-9]+]]:_(s64) = G_FMINNUM_IEEE [[INT1]], [[C10]]349    ; SI-NEXT: [[FCMP:%[0-9]+]]:_(s1) = G_FCMP floatpred(ord), [[FMUL]](s64), [[FMUL]]350    ; SI-NEXT: [[SELECT2:%[0-9]+]]:_(s64) = G_SELECT [[FCMP]](s1), [[FMUL]], [[FMINNUM_IEEE]]351    ; SI-NEXT: [[FNEG:%[0-9]+]]:_(s64) = G_FNEG [[SELECT2]]352    ; SI-NEXT: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[FMUL]], [[FNEG]]353    ; SI-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[FADD]], [[C9]], [[SELECT1]]354    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FADD]](s64)355    ; SI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s64)356    ; SI-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)357    ; SI-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[UV1]](s64)358    ; SI-NEXT: [[INT2:%[0-9]+]]:_(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.ubfe), [[UV5]](s32), [[C]](s32), [[C1]](s32)359    ; SI-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[INT2]], [[C2]]360    ; SI-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[UV5]], [[C3]]361    ; SI-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[C5]](s32), [[AND2]](s32)362    ; SI-NEXT: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR [[C4]], [[SUB1]](s32)363    ; SI-NEXT: [[XOR1:%[0-9]+]]:_(s64) = G_XOR [[ASHR1]], [[C6]]364    ; SI-NEXT: [[AND3:%[0-9]+]]:_(s64) = G_AND [[UV1]], [[XOR1]]365    ; SI-NEXT: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(slt), [[SUB1]](s32), [[C5]]366    ; SI-NEXT: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(sgt), [[SUB1]](s32), [[C7]]367    ; SI-NEXT: [[SELECT3:%[0-9]+]]:_(s64) = G_SELECT [[ICMP2]](s1), [[MV2]], [[AND3]]368    ; SI-NEXT: [[SELECT4:%[0-9]+]]:_(s64) = G_SELECT [[ICMP3]](s1), [[UV1]], [[SELECT3]]369    ; SI-NEXT: [[FMUL1:%[0-9]+]]:_(s64) = G_FMUL [[SELECT4]], [[C8]]370    ; SI-NEXT: [[INT3:%[0-9]+]]:_(s64) = G_INTRINSIC intrinsic(@llvm.amdgcn.fract), [[FMUL1]](s64)371    ; SI-NEXT: [[FMINNUM_IEEE1:%[0-9]+]]:_(s64) = G_FMINNUM_IEEE [[INT3]], [[C10]]372    ; SI-NEXT: [[FCMP1:%[0-9]+]]:_(s1) = G_FCMP floatpred(ord), [[FMUL1]](s64), [[FMUL1]]373    ; SI-NEXT: [[SELECT5:%[0-9]+]]:_(s64) = G_SELECT [[FCMP1]](s1), [[FMUL1]], [[FMINNUM_IEEE1]]374    ; SI-NEXT: [[FNEG1:%[0-9]+]]:_(s64) = G_FNEG [[SELECT5]]375    ; SI-NEXT: [[FADD1:%[0-9]+]]:_(s64) = G_FADD [[FMUL1]], [[FNEG1]]376    ; SI-NEXT: [[FMA1:%[0-9]+]]:_(s64) = G_FMA [[FADD1]], [[C9]], [[SELECT4]]377    ; SI-NEXT: [[FPTOUI2:%[0-9]+]]:_(s32) = G_FPTOUI [[FADD1]](s64)378    ; SI-NEXT: [[FPTOUI3:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA1]](s64)379    ; SI-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI3]](s32), [[FPTOUI2]](s32)380    ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV1]](s64), [[MV3]](s64)381    ; SI-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)382    ; VI-LABEL: name: test_fptoui_v2s64_to_v2s64383    ; VI: liveins: $vgpr0_vgpr1_vgpr2_vgpr3384    ; VI-NEXT: {{  $}}385    ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3386    ; VI-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)387    ; VI-NEXT: [[INTRINSIC_TRUNC:%[0-9]+]]:_(s64) = G_INTRINSIC_TRUNC [[UV]]388    ; VI-NEXT: [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double 0x3DF0000000000000389    ; VI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_FCONSTANT double 0xC1F0000000000000390    ; VI-NEXT: [[FMUL:%[0-9]+]]:_(s64) = G_FMUL [[INTRINSIC_TRUNC]], [[C]]391    ; VI-NEXT: [[FFLOOR:%[0-9]+]]:_(s64) = G_FFLOOR [[FMUL]]392    ; VI-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[FFLOOR]], [[C1]], [[INTRINSIC_TRUNC]]393    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR]](s64)394    ; VI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s64)395    ; VI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)396    ; VI-NEXT: [[INTRINSIC_TRUNC1:%[0-9]+]]:_(s64) = G_INTRINSIC_TRUNC [[UV1]]397    ; VI-NEXT: [[FMUL1:%[0-9]+]]:_(s64) = G_FMUL [[INTRINSIC_TRUNC1]], [[C]]398    ; VI-NEXT: [[FFLOOR1:%[0-9]+]]:_(s64) = G_FFLOOR [[FMUL1]]399    ; VI-NEXT: [[FMA1:%[0-9]+]]:_(s64) = G_FMA [[FFLOOR1]], [[C1]], [[INTRINSIC_TRUNC1]]400    ; VI-NEXT: [[FPTOUI2:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR1]](s64)401    ; VI-NEXT: [[FPTOUI3:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA1]](s64)402    ; VI-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI3]](s32), [[FPTOUI2]](s32)403    ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64)404    ; VI-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)405    %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3406    %1:_(<2 x s64>) = G_FPTOUI %0407    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1408...409 410---411name: test_fptoui_s32_to_s64412body: |413  bb.0:414    liveins: $vgpr0415 416    ; SI-LABEL: name: test_fptoui_s32_to_s64417    ; SI: liveins: $vgpr0418    ; SI-NEXT: {{  $}}419    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0420    ; SI-NEXT: [[INTRINSIC_TRUNC:%[0-9]+]]:_(s32) = G_INTRINSIC_TRUNC [[COPY]]421    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x3DF0000000000000422    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_FCONSTANT float 0xC1F0000000000000423    ; SI-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[INTRINSIC_TRUNC]], [[C]]424    ; SI-NEXT: [[FFLOOR:%[0-9]+]]:_(s32) = G_FFLOOR [[FMUL]]425    ; SI-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[FFLOOR]], [[C1]], [[INTRINSIC_TRUNC]]426    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR]](s32)427    ; SI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s32)428    ; SI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)429    ; SI-NEXT: $vgpr0_vgpr1 = COPY [[MV]](s64)430    ; VI-LABEL: name: test_fptoui_s32_to_s64431    ; VI: liveins: $vgpr0432    ; VI-NEXT: {{  $}}433    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0434    ; VI-NEXT: [[INTRINSIC_TRUNC:%[0-9]+]]:_(s32) = G_INTRINSIC_TRUNC [[COPY]]435    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x3DF0000000000000436    ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_FCONSTANT float 0xC1F0000000000000437    ; VI-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[INTRINSIC_TRUNC]], [[C]]438    ; VI-NEXT: [[FFLOOR:%[0-9]+]]:_(s32) = G_FFLOOR [[FMUL]]439    ; VI-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[FFLOOR]], [[C1]], [[INTRINSIC_TRUNC]]440    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR]](s32)441    ; VI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s32)442    ; VI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)443    ; VI-NEXT: $vgpr0_vgpr1 = COPY [[MV]](s64)444    %0:_(s32) = COPY $vgpr0445    %1:_(s64) = G_FPTOUI %0446    $vgpr0_vgpr1 = COPY %1447...448 449---450name: test_fptoui_v2s32_to_v2s64451body: |452  bb.0:453    liveins: $vgpr0_vgpr1454 455    ; SI-LABEL: name: test_fptoui_v2s32_to_v2s64456    ; SI: liveins: $vgpr0_vgpr1457    ; SI-NEXT: {{  $}}458    ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1459    ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)460    ; SI-NEXT: [[INTRINSIC_TRUNC:%[0-9]+]]:_(s32) = G_INTRINSIC_TRUNC [[UV]]461    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x3DF0000000000000462    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_FCONSTANT float 0xC1F0000000000000463    ; SI-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[INTRINSIC_TRUNC]], [[C]]464    ; SI-NEXT: [[FFLOOR:%[0-9]+]]:_(s32) = G_FFLOOR [[FMUL]]465    ; SI-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[FFLOOR]], [[C1]], [[INTRINSIC_TRUNC]]466    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR]](s32)467    ; SI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s32)468    ; SI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)469    ; SI-NEXT: [[INTRINSIC_TRUNC1:%[0-9]+]]:_(s32) = G_INTRINSIC_TRUNC [[UV1]]470    ; SI-NEXT: [[FMUL1:%[0-9]+]]:_(s32) = G_FMUL [[INTRINSIC_TRUNC1]], [[C]]471    ; SI-NEXT: [[FFLOOR1:%[0-9]+]]:_(s32) = G_FFLOOR [[FMUL1]]472    ; SI-NEXT: [[FMA1:%[0-9]+]]:_(s32) = G_FMA [[FFLOOR1]], [[C1]], [[INTRINSIC_TRUNC1]]473    ; SI-NEXT: [[FPTOUI2:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR1]](s32)474    ; SI-NEXT: [[FPTOUI3:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA1]](s32)475    ; SI-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI3]](s32), [[FPTOUI2]](s32)476    ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64)477    ; SI-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)478    ; VI-LABEL: name: test_fptoui_v2s32_to_v2s64479    ; VI: liveins: $vgpr0_vgpr1480    ; VI-NEXT: {{  $}}481    ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1482    ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)483    ; VI-NEXT: [[INTRINSIC_TRUNC:%[0-9]+]]:_(s32) = G_INTRINSIC_TRUNC [[UV]]484    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x3DF0000000000000485    ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_FCONSTANT float 0xC1F0000000000000486    ; VI-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[INTRINSIC_TRUNC]], [[C]]487    ; VI-NEXT: [[FFLOOR:%[0-9]+]]:_(s32) = G_FFLOOR [[FMUL]]488    ; VI-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[FFLOOR]], [[C1]], [[INTRINSIC_TRUNC]]489    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR]](s32)490    ; VI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s32)491    ; VI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)492    ; VI-NEXT: [[INTRINSIC_TRUNC1:%[0-9]+]]:_(s32) = G_INTRINSIC_TRUNC [[UV1]]493    ; VI-NEXT: [[FMUL1:%[0-9]+]]:_(s32) = G_FMUL [[INTRINSIC_TRUNC1]], [[C]]494    ; VI-NEXT: [[FFLOOR1:%[0-9]+]]:_(s32) = G_FFLOOR [[FMUL1]]495    ; VI-NEXT: [[FMA1:%[0-9]+]]:_(s32) = G_FMA [[FFLOOR1]], [[C1]], [[INTRINSIC_TRUNC1]]496    ; VI-NEXT: [[FPTOUI2:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR1]](s32)497    ; VI-NEXT: [[FPTOUI3:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA1]](s32)498    ; VI-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI3]](s32), [[FPTOUI2]](s32)499    ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64)500    ; VI-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)501    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1502    %1:_(<2 x s64>) = G_FPTOUI %0503    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1504...505 506---507name: test_fptoui_s16_to_s64508body: |509  bb.0:510    liveins: $vgpr0511 512    ; SI-LABEL: name: test_fptoui_s16_to_s64513    ; SI: liveins: $vgpr0514    ; SI-NEXT: {{  $}}515    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0516    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)517    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC]](s16)518    ; SI-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[FPTOUI]](s32)519    ; SI-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)520    ; VI-LABEL: name: test_fptoui_s16_to_s64521    ; VI: liveins: $vgpr0522    ; VI-NEXT: {{  $}}523    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0524    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)525    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC]](s16)526    ; VI-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[FPTOUI]](s32)527    ; VI-NEXT: $vgpr0_vgpr1 = COPY [[ZEXT]](s64)528    %0:_(s32) = COPY $vgpr0529    %1:_(s16) = G_TRUNC %0530    %2:_(s64) = G_FPTOUI %1531    $vgpr0_vgpr1 = COPY %2532...533 534---535name: test_fptoui_v2s16_to_v2s64536body: |537  bb.0:538    liveins: $vgpr0539 540    ; SI-LABEL: name: test_fptoui_v2s16_to_v2s64541    ; SI: liveins: $vgpr0542    ; SI-NEXT: {{  $}}543    ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0544    ; SI-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)545    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST]](s32)546    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16547    ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)548    ; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)549    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC]](s16)550    ; SI-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[FPTOUI]](s32)551    ; SI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC1]](s16)552    ; SI-NEXT: [[ZEXT1:%[0-9]+]]:_(s64) = G_ZEXT [[FPTOUI1]](s32)553    ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[ZEXT]](s64), [[ZEXT1]](s64)554    ; SI-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)555    ; VI-LABEL: name: test_fptoui_v2s16_to_v2s64556    ; VI: liveins: $vgpr0557    ; VI-NEXT: {{  $}}558    ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0559    ; VI-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)560    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST]](s32)561    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16562    ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)563    ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)564    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC]](s16)565    ; VI-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[FPTOUI]](s32)566    ; VI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC1]](s16)567    ; VI-NEXT: [[ZEXT1:%[0-9]+]]:_(s64) = G_ZEXT [[FPTOUI1]](s32)568    ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[ZEXT]](s64), [[ZEXT1]](s64)569    ; VI-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)570    %0:_(<2 x s16>) = COPY $vgpr0571    %1:_(<2 x s64>) = G_FPTOUI %0572    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1573...574 575---576name: test_fptoui_s16_to_s1577body: |578  bb.0:579    liveins: $vgpr0580    ; SI-LABEL: name: test_fptoui_s16_to_s1581    ; SI: liveins: $vgpr0582    ; SI-NEXT: {{  $}}583    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0584    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)585    ; SI-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC]](s16)586    ; SI-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[FPEXT]](s32)587    ; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s1) = G_TRUNC [[FPTOSI]](s32)588    ; SI-NEXT: S_ENDPGM 0, implicit [[TRUNC1]](s1)589    ; VI-LABEL: name: test_fptoui_s16_to_s1590    ; VI: liveins: $vgpr0591    ; VI-NEXT: {{  $}}592    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0593    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)594    ; VI-NEXT: [[FPTOSI:%[0-9]+]]:_(s32) = G_FPTOSI [[TRUNC]](s16)595    ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s1) = G_TRUNC [[FPTOSI]](s32)596    ; VI-NEXT: S_ENDPGM 0, implicit [[TRUNC1]](s1)597    %0:_(s32) = COPY $vgpr0598    %1:_(s16) = G_TRUNC %0599    %2:_(s1)  = G_FPTOSI %1600    S_ENDPGM 0, implicit %2601...602 603---604name: test_fptoui_s16_to_s15605body: |606  bb.0:607    liveins: $vgpr0608 609    ; SI-LABEL: name: test_fptoui_s16_to_s15610    ; SI: liveins: $vgpr0611    ; SI-NEXT: {{  $}}612    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0613    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)614    ; SI-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC]](s16)615    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FPEXT]](s32)616    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)617    ; VI-LABEL: name: test_fptoui_s16_to_s15618    ; VI: liveins: $vgpr0619    ; VI-NEXT: {{  $}}620    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0621    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)622    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC]](s16)623    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)624    %0:_(s32) = COPY $vgpr0625    %1:_(s16) = G_TRUNC %0626    %2:_(s15) = G_FPTOUI %1627    %3:_(s32) = G_ANYEXT %2628    $vgpr0 = COPY %3629...630 631---632name: test_fptoui_s16_to_s17633body: |634  bb.0:635    liveins: $vgpr0636 637    ; SI-LABEL: name: test_fptoui_s16_to_s17638    ; SI: liveins: $vgpr0639    ; SI-NEXT: {{  $}}640    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0641    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)642    ; SI-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC]](s16)643    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FPEXT]](s32)644    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)645    ; VI-LABEL: name: test_fptoui_s16_to_s17646    ; VI: liveins: $vgpr0647    ; VI-NEXT: {{  $}}648    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0649    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)650    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC]](s16)651    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)652    %0:_(s32) = COPY $vgpr0653    %1:_(s16) = G_TRUNC %0654    %2:_(s17) = G_FPTOUI %1655    %3:_(s32) = G_ANYEXT %2656    $vgpr0 = COPY %3657...658 659---660name: test_fptoui_s32_to_s33661body: |662  bb.0:663    liveins: $vgpr0664 665    ; SI-LABEL: name: test_fptoui_s32_to_s33666    ; SI: liveins: $vgpr0667    ; SI-NEXT: {{  $}}668    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0669    ; SI-NEXT: [[INTRINSIC_TRUNC:%[0-9]+]]:_(s32) = G_INTRINSIC_TRUNC [[COPY]]670    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x3DF0000000000000671    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_FCONSTANT float 0xC1F0000000000000672    ; SI-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[INTRINSIC_TRUNC]], [[C]]673    ; SI-NEXT: [[FFLOOR:%[0-9]+]]:_(s32) = G_FFLOOR [[FMUL]]674    ; SI-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[FFLOOR]], [[C1]], [[INTRINSIC_TRUNC]]675    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR]](s32)676    ; SI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s32)677    ; SI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)678    ; SI-NEXT: $vgpr0_vgpr1 = COPY [[MV]](s64)679    ; VI-LABEL: name: test_fptoui_s32_to_s33680    ; VI: liveins: $vgpr0681    ; VI-NEXT: {{  $}}682    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0683    ; VI-NEXT: [[INTRINSIC_TRUNC:%[0-9]+]]:_(s32) = G_INTRINSIC_TRUNC [[COPY]]684    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 0x3DF0000000000000685    ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_FCONSTANT float 0xC1F0000000000000686    ; VI-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[INTRINSIC_TRUNC]], [[C]]687    ; VI-NEXT: [[FFLOOR:%[0-9]+]]:_(s32) = G_FFLOOR [[FMUL]]688    ; VI-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[FFLOOR]], [[C1]], [[INTRINSIC_TRUNC]]689    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FFLOOR]](s32)690    ; VI-NEXT: [[FPTOUI1:%[0-9]+]]:_(s32) = G_FPTOUI [[FMA]](s32)691    ; VI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[FPTOUI1]](s32), [[FPTOUI]](s32)692    ; VI-NEXT: $vgpr0_vgpr1 = COPY [[MV]](s64)693    %0:_(s32) = COPY $vgpr0694    %1:_(s33) = G_FPTOUI %0695    %2:_(s64) = G_ANYEXT %1696    $vgpr0_vgpr1 = COPY %2697...698 699---700name: test_fptoui_s16_to_s7701body: |702  bb.0:703    liveins: $vgpr0704 705    ; SI-LABEL: name: test_fptoui_s16_to_s7706    ; SI: liveins: $vgpr0707    ; SI-NEXT: {{  $}}708    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0709    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)710    ; SI-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC]](s16)711    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FPEXT]](s32)712    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)713    ; VI-LABEL: name: test_fptoui_s16_to_s7714    ; VI: liveins: $vgpr0715    ; VI-NEXT: {{  $}}716    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0717    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)718    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC]](s16)719    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)720    %0:_(s32) = COPY $vgpr0721    %1:_(s16) = G_TRUNC %0722    %2:_(s7) = G_FPTOUI %1723    %3:_(s32) = G_ANYEXT %2724    $vgpr0 = COPY %3725...726 727---728name: test_fptoui_s16_to_s8729body: |730  bb.0:731    liveins: $vgpr0732 733    ; SI-LABEL: name: test_fptoui_s16_to_s8734    ; SI: liveins: $vgpr0735    ; SI-NEXT: {{  $}}736    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0737    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)738    ; SI-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC]](s16)739    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FPEXT]](s32)740    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)741    ; VI-LABEL: name: test_fptoui_s16_to_s8742    ; VI: liveins: $vgpr0743    ; VI-NEXT: {{  $}}744    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0745    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)746    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC]](s16)747    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)748    %0:_(s32) = COPY $vgpr0749    %1:_(s16) = G_TRUNC %0750    %2:_(s8) = G_FPTOUI %1751    %3:_(s32) = G_ANYEXT %2752    $vgpr0 = COPY %3753...754 755---756name: test_fptoui_s16_to_s9757body: |758  bb.0:759    liveins: $vgpr0760 761    ; SI-LABEL: name: test_fptoui_s16_to_s9762    ; SI: liveins: $vgpr0763    ; SI-NEXT: {{  $}}764    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0765    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)766    ; SI-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC]](s16)767    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[FPEXT]](s32)768    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)769    ; VI-LABEL: name: test_fptoui_s16_to_s9770    ; VI: liveins: $vgpr0771    ; VI-NEXT: {{  $}}772    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0773    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)774    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[TRUNC]](s16)775    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)776    %0:_(s32) = COPY $vgpr0777    %1:_(s16) = G_TRUNC %0778    %2:_(s9) = G_FPTOUI %1779    %3:_(s32) = G_ANYEXT %2780    $vgpr0 = COPY %3781...782 783---784name: test_fptoui_s32_to_s15785body: |786  bb.0:787    liveins: $vgpr0788 789    ; SI-LABEL: name: test_fptoui_s32_to_s15790    ; SI: liveins: $vgpr0791    ; SI-NEXT: {{  $}}792    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0793    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s32)794    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)795    ; VI-LABEL: name: test_fptoui_s32_to_s15796    ; VI: liveins: $vgpr0797    ; VI-NEXT: {{  $}}798    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0799    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s32)800    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)801    %0:_(s32) = COPY $vgpr0802    %1:_(s15) = G_FPTOUI %0803    %2:_(s32) = G_ANYEXT %1804    $vgpr0 = COPY %2805...806 807---808name: test_fptoui_s32_to_s17809body: |810  bb.0:811    liveins: $vgpr0812 813    ; SI-LABEL: name: test_fptoui_s32_to_s17814    ; SI: liveins: $vgpr0815    ; SI-NEXT: {{  $}}816    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0817    ; SI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s32)818    ; SI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)819    ; VI-LABEL: name: test_fptoui_s32_to_s17820    ; VI: liveins: $vgpr0821    ; VI-NEXT: {{  $}}822    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0823    ; VI-NEXT: [[FPTOUI:%[0-9]+]]:_(s32) = G_FPTOUI [[COPY]](s32)824    ; VI-NEXT: $vgpr0 = COPY [[FPTOUI]](s32)825    %0:_(s32) = COPY $vgpr0826    %1:_(s17) = G_FPTOUI %0827    %2:_(s32) = G_ANYEXT %1828    $vgpr0 = COPY %2829...830