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