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