606 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_uitofp_s32_to_s327body: |8 bb.0:9 liveins: $vgpr010 11 ; GFX6-LABEL: name: test_uitofp_s32_to_s3212 ; GFX6: liveins: $vgpr013 ; GFX6-NEXT: {{ $}}14 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr015 ; GFX6-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[COPY]](s32)16 ; GFX6-NEXT: $vgpr0 = COPY [[UITOFP]](s32)17 ; GFX8-LABEL: name: test_uitofp_s32_to_s3218 ; GFX8: liveins: $vgpr019 ; GFX8-NEXT: {{ $}}20 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr021 ; GFX8-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[COPY]](s32)22 ; GFX8-NEXT: $vgpr0 = COPY [[UITOFP]](s32)23 %0:_(s32) = COPY $vgpr024 %1:_(s32) = G_UITOFP %025 $vgpr0 = COPY %126...27 28---29name: test_uitofp_s32_to_s6430body: |31 bb.0:32 liveins: $vgpr033 34 ; GFX6-LABEL: name: test_uitofp_s32_to_s6435 ; GFX6: liveins: $vgpr036 ; GFX6-NEXT: {{ $}}37 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr038 ; GFX6-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[COPY]](s32)39 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[UITOFP]](s64)40 ; GFX8-LABEL: name: test_uitofp_s32_to_s6441 ; GFX8: liveins: $vgpr042 ; GFX8-NEXT: {{ $}}43 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr044 ; GFX8-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[COPY]](s32)45 ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[UITOFP]](s64)46 %0:_(s32) = COPY $vgpr047 %1:_(s64) = G_UITOFP %048 $vgpr0_vgpr1 = COPY %149...50 51---52name: test_uitofp_v2s32_to_v2s3253body: |54 bb.0:55 liveins: $vgpr0_vgpr156 57 ; GFX6-LABEL: name: test_uitofp_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: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[UV]](s32)63 ; GFX6-NEXT: [[UITOFP1:%[0-9]+]]:_(s32) = G_UITOFP [[UV1]](s32)64 ; GFX6-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[UITOFP]](s32), [[UITOFP1]](s32)65 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)66 ; GFX8-LABEL: name: test_uitofp_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: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[UV]](s32)72 ; GFX8-NEXT: [[UITOFP1:%[0-9]+]]:_(s32) = G_UITOFP [[UV1]](s32)73 ; GFX8-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[UITOFP]](s32), [[UITOFP1]](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_UITOFP %077 $vgpr0_vgpr1 = COPY %178...79 80---81name: test_uitofp_s64_to_s3282body: |83 bb.0:84 liveins: $vgpr0_vgpr185 86 ; GFX6-LABEL: name: test_uitofp_s64_to_s3287 ; GFX6: liveins: $vgpr0_vgpr188 ; GFX6-NEXT: {{ $}}89 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr190 ; GFX6-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)91 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 3292 ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 193 ; GFX6-NEXT: [[AMDGPU_FFBH_U32_:%[0-9]+]]:_(s32) = G_AMDGPU_FFBH_U32 [[UV1]](s32)94 ; GFX6-NEXT: [[UMIN:%[0-9]+]]:_(s32) = G_UMIN [[AMDGPU_FFBH_U32_]], [[C]]95 ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[UMIN]](s32)96 ; GFX6-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SHL]](s64)97 ; GFX6-NEXT: [[UMIN1:%[0-9]+]]:_(s32) = G_UMIN [[C1]], [[UV2]]98 ; GFX6-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[UV3]], [[UMIN1]]99 ; GFX6-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[OR]](s32)100 ; GFX6-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C]], [[UMIN]]101 ; GFX6-NEXT: [[FLDEXP:%[0-9]+]]:_(s32) = G_FLDEXP [[UITOFP]], [[SUB]](s32)102 ; GFX6-NEXT: $vgpr0 = COPY [[FLDEXP]](s32)103 ; GFX8-LABEL: name: test_uitofp_s64_to_s32104 ; GFX8: liveins: $vgpr0_vgpr1105 ; GFX8-NEXT: {{ $}}106 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1107 ; GFX8-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)108 ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32109 ; GFX8-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1110 ; GFX8-NEXT: [[AMDGPU_FFBH_U32_:%[0-9]+]]:_(s32) = G_AMDGPU_FFBH_U32 [[UV1]](s32)111 ; GFX8-NEXT: [[UMIN:%[0-9]+]]:_(s32) = G_UMIN [[AMDGPU_FFBH_U32_]], [[C]]112 ; GFX8-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[UMIN]](s32)113 ; GFX8-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SHL]](s64)114 ; GFX8-NEXT: [[UMIN1:%[0-9]+]]:_(s32) = G_UMIN [[C1]], [[UV2]]115 ; GFX8-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[UV3]], [[UMIN1]]116 ; GFX8-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[OR]](s32)117 ; GFX8-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C]], [[UMIN]]118 ; GFX8-NEXT: [[FLDEXP:%[0-9]+]]:_(s32) = G_FLDEXP [[UITOFP]], [[SUB]](s32)119 ; GFX8-NEXT: $vgpr0 = COPY [[FLDEXP]](s32)120 %0:_(s64) = COPY $vgpr0_vgpr1121 %1:_(s32) = G_UITOFP %0122 $vgpr0 = COPY %1123...124 125---126name: test_uitofp_s64_to_s64127body: |128 bb.0:129 liveins: $vgpr0_vgpr1130 131 ; GFX6-LABEL: name: test_uitofp_s64_to_s64132 ; GFX6: liveins: $vgpr0_vgpr1133 ; GFX6-NEXT: {{ $}}134 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1135 ; GFX6-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)136 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32137 ; GFX6-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[UV1]](s32)138 ; GFX6-NEXT: [[UITOFP1:%[0-9]+]]:_(s64) = G_UITOFP [[UV]](s32)139 ; GFX6-NEXT: [[FLDEXP:%[0-9]+]]:_(s64) = G_FLDEXP [[UITOFP]], [[C]](s32)140 ; GFX6-NEXT: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[FLDEXP]], [[UITOFP1]]141 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[FADD]](s64)142 ; GFX8-LABEL: name: test_uitofp_s64_to_s64143 ; GFX8: liveins: $vgpr0_vgpr1144 ; GFX8-NEXT: {{ $}}145 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1146 ; GFX8-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)147 ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32148 ; GFX8-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[UV1]](s32)149 ; GFX8-NEXT: [[UITOFP1:%[0-9]+]]:_(s64) = G_UITOFP [[UV]](s32)150 ; GFX8-NEXT: [[FLDEXP:%[0-9]+]]:_(s64) = G_FLDEXP [[UITOFP]], [[C]](s32)151 ; GFX8-NEXT: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[FLDEXP]], [[UITOFP1]]152 ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[FADD]](s64)153 %0:_(s64) = COPY $vgpr0_vgpr1154 %1:_(s64) = G_UITOFP %0155 $vgpr0_vgpr1 = COPY %1156...157 158---159name: test_uitofp_s16_to_s16160body: |161 bb.0:162 liveins: $vgpr0163 164 ; GFX6-LABEL: name: test_uitofp_s16_to_s16165 ; GFX6: liveins: $vgpr0166 ; GFX6-NEXT: {{ $}}167 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0168 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535169 ; GFX6-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]170 ; GFX6-NEXT: [[UITOFP:%[0-9]+]]:_(s16) = G_UITOFP [[AND]](s32)171 ; GFX6-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UITOFP]](s16)172 ; GFX6-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)173 ; GFX8-LABEL: name: test_uitofp_s16_to_s16174 ; GFX8: liveins: $vgpr0175 ; GFX8-NEXT: {{ $}}176 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0177 ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)178 ; GFX8-NEXT: [[UITOFP:%[0-9]+]]:_(s16) = G_UITOFP [[TRUNC]](s16)179 ; GFX8-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UITOFP]](s16)180 ; GFX8-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)181 %0:_(s32) = COPY $vgpr0182 %1:_(s16) = G_TRUNC %0183 %2:_(s16) = G_UITOFP %1184 %3:_(s32) = G_ANYEXT %2185 $vgpr0 = COPY %3186...187 188---189name: test_uitofp_s16_to_s32190body: |191 bb.0:192 liveins: $vgpr0193 194 ; GFX6-LABEL: name: test_uitofp_s16_to_s32195 ; GFX6: liveins: $vgpr0196 ; GFX6-NEXT: {{ $}}197 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0198 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535199 ; GFX6-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]200 ; GFX6-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s32)201 ; GFX6-NEXT: $vgpr0 = COPY [[UITOFP]](s32)202 ; GFX8-LABEL: name: test_uitofp_s16_to_s32203 ; GFX8: liveins: $vgpr0204 ; GFX8-NEXT: {{ $}}205 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0206 ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535207 ; GFX8-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]208 ; GFX8-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s32)209 ; GFX8-NEXT: $vgpr0 = COPY [[UITOFP]](s32)210 %0:_(s32) = COPY $vgpr0211 %1:_(s16) = G_TRUNC %0212 %2:_(s32) = G_UITOFP %1213 $vgpr0 = COPY %2214...215 216---217name: test_uitofp_s16_to_s64218body: |219 bb.0:220 liveins: $vgpr0221 222 ; GFX6-LABEL: name: test_uitofp_s16_to_s64223 ; GFX6: liveins: $vgpr0224 ; GFX6-NEXT: {{ $}}225 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0226 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535227 ; GFX6-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]228 ; GFX6-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s32)229 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[UITOFP]](s64)230 ; GFX8-LABEL: name: test_uitofp_s16_to_s64231 ; GFX8: liveins: $vgpr0232 ; GFX8-NEXT: {{ $}}233 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0234 ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535235 ; GFX8-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]236 ; GFX8-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s32)237 ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[UITOFP]](s64)238 %0:_(s32) = COPY $vgpr0239 %1:_(s16) = G_TRUNC %0240 %2:_(s64) = G_UITOFP %1241 $vgpr0_vgpr1 = COPY %2242...243 244---245name: test_uitofp_s8_to_s16246body: |247 bb.0:248 liveins: $vgpr0249 250 ; GFX6-LABEL: name: test_uitofp_s8_to_s16251 ; GFX6: liveins: $vgpr0252 ; GFX6-NEXT: {{ $}}253 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0254 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255255 ; GFX6-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]256 ; GFX6-NEXT: [[UITOFP:%[0-9]+]]:_(s16) = G_UITOFP [[AND]](s32)257 ; GFX6-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UITOFP]](s16)258 ; GFX6-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)259 ; GFX8-LABEL: name: test_uitofp_s8_to_s16260 ; GFX8: liveins: $vgpr0261 ; GFX8-NEXT: {{ $}}262 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0263 ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255264 ; GFX8-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]265 ; GFX8-NEXT: [[UITOFP:%[0-9]+]]:_(s16) = G_UITOFP [[AND]](s32)266 ; GFX8-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[UITOFP]](s16)267 ; GFX8-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)268 %0:_(s32) = COPY $vgpr0269 %1:_(s8) = G_TRUNC %0270 %2:_(s16) = G_UITOFP %1271 %3:_(s32) = G_ANYEXT %2272 $vgpr0 = COPY %3273...274 275---276name: test_uitofp_s8_to_s32277body: |278 bb.0:279 liveins: $vgpr0280 281 ; GFX6-LABEL: name: test_uitofp_s8_to_s32282 ; GFX6: liveins: $vgpr0283 ; GFX6-NEXT: {{ $}}284 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0285 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255286 ; GFX6-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]287 ; GFX6-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s32)288 ; GFX6-NEXT: $vgpr0 = COPY [[UITOFP]](s32)289 ; GFX8-LABEL: name: test_uitofp_s8_to_s32290 ; GFX8: liveins: $vgpr0291 ; GFX8-NEXT: {{ $}}292 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0293 ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255294 ; GFX8-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]295 ; GFX8-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[AND]](s32)296 ; GFX8-NEXT: $vgpr0 = COPY [[UITOFP]](s32)297 %0:_(s32) = COPY $vgpr0298 %1:_(s8) = G_TRUNC %0299 %2:_(s32) = G_UITOFP %1300 $vgpr0 = COPY %2301...302 303---304name: test_uitofp_s8_to_s64305body: |306 bb.0:307 liveins: $vgpr0308 309 ; GFX6-LABEL: name: test_uitofp_s8_to_s64310 ; GFX6: liveins: $vgpr0311 ; GFX6-NEXT: {{ $}}312 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0313 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255314 ; GFX6-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]315 ; GFX6-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s32)316 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[UITOFP]](s64)317 ; GFX8-LABEL: name: test_uitofp_s8_to_s64318 ; GFX8: liveins: $vgpr0319 ; GFX8-NEXT: {{ $}}320 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0321 ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255322 ; GFX8-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]323 ; GFX8-NEXT: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[AND]](s32)324 ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[UITOFP]](s64)325 %0:_(s32) = COPY $vgpr0326 %1:_(s8) = G_TRUNC %0327 %2:_(s64) = G_UITOFP %1328 $vgpr0_vgpr1 = COPY %2329...330 331---332name: test_uitofp_s1_to_s16333body: |334 bb.0:335 liveins: $vgpr0336 337 ; GFX6-LABEL: name: test_uitofp_s1_to_s16338 ; GFX6: liveins: $vgpr0339 ; GFX6-NEXT: {{ $}}340 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0341 ; GFX6-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)342 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s16) = G_FCONSTANT half 0xH3C00343 ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s16) = G_FCONSTANT half 0xH0000344 ; GFX6-NEXT: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[TRUNC]](s1), [[C]], [[C1]]345 ; GFX6-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16)346 ; GFX6-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)347 ; GFX8-LABEL: name: test_uitofp_s1_to_s16348 ; GFX8: liveins: $vgpr0349 ; GFX8-NEXT: {{ $}}350 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0351 ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)352 ; GFX8-NEXT: [[C:%[0-9]+]]:_(s16) = G_FCONSTANT half 0xH3C00353 ; GFX8-NEXT: [[C1:%[0-9]+]]:_(s16) = G_FCONSTANT half 0xH0000354 ; GFX8-NEXT: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[TRUNC]](s1), [[C]], [[C1]]355 ; GFX8-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16)356 ; GFX8-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)357 %0:_(s32) = COPY $vgpr0358 %1:_(s1) = G_TRUNC %0359 %2:_(s16) = G_UITOFP %1360 %3:_(s32) = G_ANYEXT %2361 $vgpr0 = COPY %3362...363 364---365name: test_uitofp_s1_to_s32366body: |367 bb.0:368 liveins: $vgpr0369 370 ; GFX6-LABEL: name: test_uitofp_s1_to_s32371 ; GFX6: liveins: $vgpr0372 ; GFX6-NEXT: {{ $}}373 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0374 ; GFX6-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)375 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 1.000000e+00376 ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s32) = G_FCONSTANT float 0.000000e+00377 ; GFX6-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[TRUNC]](s1), [[C]], [[C1]]378 ; GFX6-NEXT: $vgpr0 = COPY [[SELECT]](s32)379 ; GFX8-LABEL: name: test_uitofp_s1_to_s32380 ; GFX8: liveins: $vgpr0381 ; GFX8-NEXT: {{ $}}382 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0383 ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)384 ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float 1.000000e+00385 ; GFX8-NEXT: [[C1:%[0-9]+]]:_(s32) = G_FCONSTANT float 0.000000e+00386 ; GFX8-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[TRUNC]](s1), [[C]], [[C1]]387 ; GFX8-NEXT: $vgpr0 = COPY [[SELECT]](s32)388 %0:_(s32) = COPY $vgpr0389 %1:_(s1) = G_TRUNC %0390 %2:_(s32) = G_UITOFP %1391 $vgpr0 = COPY %2392...393 394---395name: test_uitofp_s1_to_s64396body: |397 bb.0:398 liveins: $vgpr0399 400 ; GFX6-LABEL: name: test_uitofp_s1_to_s64401 ; GFX6: liveins: $vgpr0402 ; GFX6-NEXT: {{ $}}403 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0404 ; GFX6-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)405 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double 1.000000e+00406 ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s64) = G_FCONSTANT double 0.000000e+00407 ; GFX6-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[TRUNC]](s1), [[C]], [[C1]]408 ; GFX6-NEXT: $vgpr0_vgpr1 = COPY [[SELECT]](s64)409 ; GFX8-LABEL: name: test_uitofp_s1_to_s64410 ; GFX8: liveins: $vgpr0411 ; GFX8-NEXT: {{ $}}412 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0413 ; GFX8-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32)414 ; GFX8-NEXT: [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double 1.000000e+00415 ; GFX8-NEXT: [[C1:%[0-9]+]]:_(s64) = G_FCONSTANT double 0.000000e+00416 ; GFX8-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[TRUNC]](s1), [[C]], [[C1]]417 ; GFX8-NEXT: $vgpr0_vgpr1 = COPY [[SELECT]](s64)418 %0:_(s32) = COPY $vgpr0419 %1:_(s1) = G_TRUNC %0420 %2:_(s64) = G_UITOFP %1421 $vgpr0_vgpr1 = COPY %2422...423 424---425name: test_uitofp_s33_to_s32426body: |427 bb.0:428 liveins: $vgpr0_vgpr1429 430 ; GFX6-LABEL: name: test_uitofp_s33_to_s32431 ; GFX6: liveins: $vgpr0_vgpr1432 ; GFX6-NEXT: {{ $}}433 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1434 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 8589934591435 ; GFX6-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]436 ; GFX6-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AND]](s64)437 ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 32438 ; GFX6-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1439 ; GFX6-NEXT: [[AMDGPU_FFBH_U32_:%[0-9]+]]:_(s32) = G_AMDGPU_FFBH_U32 [[UV1]](s32)440 ; GFX6-NEXT: [[UMIN:%[0-9]+]]:_(s32) = G_UMIN [[AMDGPU_FFBH_U32_]], [[C1]]441 ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[AND]], [[UMIN]](s32)442 ; GFX6-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SHL]](s64)443 ; GFX6-NEXT: [[UMIN1:%[0-9]+]]:_(s32) = G_UMIN [[C2]], [[UV2]]444 ; GFX6-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[UV3]], [[UMIN1]]445 ; GFX6-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[OR]](s32)446 ; GFX6-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C1]], [[UMIN]]447 ; GFX6-NEXT: [[FLDEXP:%[0-9]+]]:_(s32) = G_FLDEXP [[UITOFP]], [[SUB]](s32)448 ; GFX6-NEXT: $vgpr0 = COPY [[FLDEXP]](s32)449 ; GFX8-LABEL: name: test_uitofp_s33_to_s32450 ; GFX8: liveins: $vgpr0_vgpr1451 ; GFX8-NEXT: {{ $}}452 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1453 ; GFX8-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 8589934591454 ; GFX8-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C]]455 ; GFX8-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AND]](s64)456 ; GFX8-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 32457 ; GFX8-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1458 ; GFX8-NEXT: [[AMDGPU_FFBH_U32_:%[0-9]+]]:_(s32) = G_AMDGPU_FFBH_U32 [[UV1]](s32)459 ; GFX8-NEXT: [[UMIN:%[0-9]+]]:_(s32) = G_UMIN [[AMDGPU_FFBH_U32_]], [[C1]]460 ; GFX8-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[AND]], [[UMIN]](s32)461 ; GFX8-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SHL]](s64)462 ; GFX8-NEXT: [[UMIN1:%[0-9]+]]:_(s32) = G_UMIN [[C2]], [[UV2]]463 ; GFX8-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[UV3]], [[UMIN1]]464 ; GFX8-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[OR]](s32)465 ; GFX8-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C1]], [[UMIN]]466 ; GFX8-NEXT: [[FLDEXP:%[0-9]+]]:_(s32) = G_FLDEXP [[UITOFP]], [[SUB]](s32)467 ; GFX8-NEXT: $vgpr0 = COPY [[FLDEXP]](s32)468 %0:_(s64) = COPY $vgpr0_vgpr1469 %1:_(s33) = G_TRUNC %0470 %2:_(s32) = G_UITOFP %1471 $vgpr0 = COPY %2472...473 474---475name: test_uitofp_s64_to_s16476body: |477 bb.0:478 liveins: $vgpr0_vgpr1479 480 ; GFX6-LABEL: name: test_uitofp_s64_to_s16481 ; GFX6: liveins: $vgpr0_vgpr1482 ; GFX6-NEXT: {{ $}}483 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1484 ; GFX6-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)485 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32486 ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1487 ; GFX6-NEXT: [[AMDGPU_FFBH_U32_:%[0-9]+]]:_(s32) = G_AMDGPU_FFBH_U32 [[UV1]](s32)488 ; GFX6-NEXT: [[UMIN:%[0-9]+]]:_(s32) = G_UMIN [[AMDGPU_FFBH_U32_]], [[C]]489 ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[UMIN]](s32)490 ; GFX6-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SHL]](s64)491 ; GFX6-NEXT: [[UMIN1:%[0-9]+]]:_(s32) = G_UMIN [[C1]], [[UV2]]492 ; GFX6-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[UV3]], [[UMIN1]]493 ; GFX6-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[OR]](s32)494 ; GFX6-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C]], [[UMIN]]495 ; GFX6-NEXT: [[FLDEXP:%[0-9]+]]:_(s32) = G_FLDEXP [[UITOFP]], [[SUB]](s32)496 ; GFX6-NEXT: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[FLDEXP]](s32)497 ; GFX6-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FPTRUNC]](s16)498 ; GFX6-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)499 ; GFX8-LABEL: name: test_uitofp_s64_to_s16500 ; GFX8: liveins: $vgpr0_vgpr1501 ; GFX8-NEXT: {{ $}}502 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1503 ; GFX8-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)504 ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32505 ; GFX8-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1506 ; GFX8-NEXT: [[AMDGPU_FFBH_U32_:%[0-9]+]]:_(s32) = G_AMDGPU_FFBH_U32 [[UV1]](s32)507 ; GFX8-NEXT: [[UMIN:%[0-9]+]]:_(s32) = G_UMIN [[AMDGPU_FFBH_U32_]], [[C]]508 ; GFX8-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[UMIN]](s32)509 ; GFX8-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SHL]](s64)510 ; GFX8-NEXT: [[UMIN1:%[0-9]+]]:_(s32) = G_UMIN [[C1]], [[UV2]]511 ; GFX8-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[UV3]], [[UMIN1]]512 ; GFX8-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[OR]](s32)513 ; GFX8-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C]], [[UMIN]]514 ; GFX8-NEXT: [[FLDEXP:%[0-9]+]]:_(s32) = G_FLDEXP [[UITOFP]], [[SUB]](s32)515 ; GFX8-NEXT: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[FLDEXP]](s32)516 ; GFX8-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FPTRUNC]](s16)517 ; GFX8-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)518 %0:_(s64) = COPY $vgpr0_vgpr1519 %1:_(s16) = G_UITOFP %0520 %2:_(s32) = G_ANYEXT %1521 $vgpr0 = COPY %2522...523 524---525name: test_sitofp_v2s64_to_v2s16526body: |527 bb.0:528 liveins: $vgpr0_vgpr1_vgpr2_vgpr3529 530 ; GFX6-LABEL: name: test_sitofp_v2s64_to_v2s16531 ; GFX6: liveins: $vgpr0_vgpr1_vgpr2_vgpr3532 ; GFX6-NEXT: {{ $}}533 ; GFX6-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3534 ; GFX6-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)535 ; GFX6-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[UV]](s64)536 ; GFX6-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32537 ; GFX6-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1538 ; GFX6-NEXT: [[AMDGPU_FFBH_U32_:%[0-9]+]]:_(s32) = G_AMDGPU_FFBH_U32 [[UV3]](s32)539 ; GFX6-NEXT: [[UMIN:%[0-9]+]]:_(s32) = G_UMIN [[AMDGPU_FFBH_U32_]], [[C]]540 ; GFX6-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[UV]], [[UMIN]](s32)541 ; GFX6-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SHL]](s64)542 ; GFX6-NEXT: [[UMIN1:%[0-9]+]]:_(s32) = G_UMIN [[C1]], [[UV4]]543 ; GFX6-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[UV5]], [[UMIN1]]544 ; GFX6-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[OR]](s32)545 ; GFX6-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C]], [[UMIN]]546 ; GFX6-NEXT: [[FLDEXP:%[0-9]+]]:_(s32) = G_FLDEXP [[UITOFP]], [[SUB]](s32)547 ; GFX6-NEXT: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[FLDEXP]](s32)548 ; GFX6-NEXT: [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[UV1]](s64)549 ; GFX6-NEXT: [[AMDGPU_FFBH_U32_1:%[0-9]+]]:_(s32) = G_AMDGPU_FFBH_U32 [[UV7]](s32)550 ; GFX6-NEXT: [[UMIN2:%[0-9]+]]:_(s32) = G_UMIN [[AMDGPU_FFBH_U32_1]], [[C]]551 ; GFX6-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[UV1]], [[UMIN2]](s32)552 ; GFX6-NEXT: [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SHL1]](s64)553 ; GFX6-NEXT: [[UMIN3:%[0-9]+]]:_(s32) = G_UMIN [[C1]], [[UV8]]554 ; GFX6-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[UV9]], [[UMIN3]]555 ; GFX6-NEXT: [[UITOFP1:%[0-9]+]]:_(s32) = G_UITOFP [[OR1]](s32)556 ; GFX6-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[C]], [[UMIN2]]557 ; GFX6-NEXT: [[FLDEXP1:%[0-9]+]]:_(s32) = G_FLDEXP [[UITOFP1]], [[SUB1]](s32)558 ; GFX6-NEXT: [[FPTRUNC1:%[0-9]+]]:_(s16) = G_FPTRUNC [[FLDEXP1]](s32)559 ; GFX6-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[FPTRUNC]](s16)560 ; GFX6-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[FPTRUNC1]](s16)561 ; GFX6-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16562 ; GFX6-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C2]](s32)563 ; GFX6-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL2]]564 ; GFX6-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR2]](s32)565 ; GFX6-NEXT: $vgpr0 = COPY [[BITCAST]](<2 x s16>)566 ; GFX8-LABEL: name: test_sitofp_v2s64_to_v2s16567 ; GFX8: liveins: $vgpr0_vgpr1_vgpr2_vgpr3568 ; GFX8-NEXT: {{ $}}569 ; GFX8-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3570 ; GFX8-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)571 ; GFX8-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[UV]](s64)572 ; GFX8-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32573 ; GFX8-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 1574 ; GFX8-NEXT: [[AMDGPU_FFBH_U32_:%[0-9]+]]:_(s32) = G_AMDGPU_FFBH_U32 [[UV3]](s32)575 ; GFX8-NEXT: [[UMIN:%[0-9]+]]:_(s32) = G_UMIN [[AMDGPU_FFBH_U32_]], [[C]]576 ; GFX8-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[UV]], [[UMIN]](s32)577 ; GFX8-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SHL]](s64)578 ; GFX8-NEXT: [[UMIN1:%[0-9]+]]:_(s32) = G_UMIN [[C1]], [[UV4]]579 ; GFX8-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[UV5]], [[UMIN1]]580 ; GFX8-NEXT: [[UITOFP:%[0-9]+]]:_(s32) = G_UITOFP [[OR]](s32)581 ; GFX8-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C]], [[UMIN]]582 ; GFX8-NEXT: [[FLDEXP:%[0-9]+]]:_(s32) = G_FLDEXP [[UITOFP]], [[SUB]](s32)583 ; GFX8-NEXT: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[FLDEXP]](s32)584 ; GFX8-NEXT: [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[UV1]](s64)585 ; GFX8-NEXT: [[AMDGPU_FFBH_U32_1:%[0-9]+]]:_(s32) = G_AMDGPU_FFBH_U32 [[UV7]](s32)586 ; GFX8-NEXT: [[UMIN2:%[0-9]+]]:_(s32) = G_UMIN [[AMDGPU_FFBH_U32_1]], [[C]]587 ; GFX8-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[UV1]], [[UMIN2]](s32)588 ; GFX8-NEXT: [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SHL1]](s64)589 ; GFX8-NEXT: [[UMIN3:%[0-9]+]]:_(s32) = G_UMIN [[C1]], [[UV8]]590 ; GFX8-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[UV9]], [[UMIN3]]591 ; GFX8-NEXT: [[UITOFP1:%[0-9]+]]:_(s32) = G_UITOFP [[OR1]](s32)592 ; GFX8-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[C]], [[UMIN2]]593 ; GFX8-NEXT: [[FLDEXP1:%[0-9]+]]:_(s32) = G_FLDEXP [[UITOFP1]], [[SUB1]](s32)594 ; GFX8-NEXT: [[FPTRUNC1:%[0-9]+]]:_(s16) = G_FPTRUNC [[FLDEXP1]](s32)595 ; GFX8-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[FPTRUNC]](s16)596 ; GFX8-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[FPTRUNC1]](s16)597 ; GFX8-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16598 ; GFX8-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C2]](s32)599 ; GFX8-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL2]]600 ; GFX8-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR2]](s32)601 ; GFX8-NEXT: $vgpr0 = COPY [[BITCAST]](<2 x s16>)602 %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3603 %1:_(<2 x s16>) = G_UITOFP %0604 $vgpr0 = COPY %1605...606