1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=legalizer %s -o - | FileCheck -check-prefix=GFX6 %s 3# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=legalizer %s -o - | FileCheck -check-prefix=GFX8 %s 4 5--- 6name: test_sitofp_s32_to_s32 7body: | 8 bb.0: 9 liveins: $vgpr0 10 11 ; GFX6-LABEL: name: test_sitofp_s32_to_s32 12 ; GFX6: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 13 ; GFX6: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[COPY]](s32) 14 ; GFX6: $vgpr0 = COPY [[SITOFP]](s32) 15 ; GFX8-LABEL: name: test_sitofp_s32_to_s32 16 ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 17 ; GFX8: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[COPY]](s32) 18 ; GFX8: $vgpr0 = COPY [[SITOFP]](s32) 19 %0:_(s32) = COPY $vgpr0 20 %1:_(s32) = G_SITOFP %0 21 $vgpr0 = COPY %1 22... 23 24--- 25name: test_sitofp_s32_to_s64 26body: | 27 bb.0: 28 liveins: $vgpr0 29 30 ; GFX6-LABEL: name: test_sitofp_s32_to_s64 31 ; GFX6: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 32 ; GFX6: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[COPY]](s32) 33 ; GFX6: $vgpr0_vgpr1 = COPY [[SITOFP]](s64) 34 ; GFX8-LABEL: name: test_sitofp_s32_to_s64 35 ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 36 ; GFX8: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[COPY]](s32) 37 ; GFX8: $vgpr0_vgpr1 = COPY [[SITOFP]](s64) 38 %0:_(s32) = COPY $vgpr0 39 %1:_(s64) = G_SITOFP %0 40 $vgpr0_vgpr1 = COPY %1 41... 42 43--- 44name: test_sitofp_v2s32_to_v2s32 45body: | 46 bb.0: 47 liveins: $vgpr0_vgpr1 48 49 ; GFX6-LABEL: name: test_sitofp_v2s32_to_v2s32 50 ; GFX6: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1 51 ; GFX6: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>) 52 ; GFX6: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[UV]](s32) 53 ; GFX6: [[SITOFP1:%[0-9]+]]:_(s32) = G_SITOFP [[UV1]](s32) 54 ; GFX6: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SITOFP]](s32), [[SITOFP1]](s32) 55 ; GFX6: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>) 56 ; GFX8-LABEL: name: test_sitofp_v2s32_to_v2s32 57 ; GFX8: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1 58 ; GFX8: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>) 59 ; GFX8: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[UV]](s32) 60 ; GFX8: [[SITOFP1:%[0-9]+]]:_(s32) = G_SITOFP [[UV1]](s32) 61 ; GFX8: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[SITOFP]](s32), [[SITOFP1]](s32) 62 ; GFX8: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>) 63 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1 64 %1:_(<2 x s32>) = G_SITOFP %0 65 $vgpr0_vgpr1 = COPY %1 66... 67 68--- 69name: test_sitofp_v2s32_to_v2s64 70body: | 71 bb.0: 72 liveins: $vgpr0_vgpr1 73 74 ; GFX6-LABEL: name: test_sitofp_v2s32_to_v2s64 75 ; GFX6: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1 76 ; GFX6: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>) 77 ; GFX6: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[UV]](s32) 78 ; GFX6: [[SITOFP1:%[0-9]+]]:_(s64) = G_SITOFP [[UV1]](s32) 79 ; GFX6: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[SITOFP]](s64), [[SITOFP1]](s64) 80 ; GFX6: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>) 81 ; GFX8-LABEL: name: test_sitofp_v2s32_to_v2s64 82 ; GFX8: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1 83 ; GFX8: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>) 84 ; GFX8: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[UV]](s32) 85 ; GFX8: [[SITOFP1:%[0-9]+]]:_(s64) = G_SITOFP [[UV1]](s32) 86 ; GFX8: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[SITOFP]](s64), [[SITOFP1]](s64) 87 ; GFX8: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>) 88 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1 89 %1:_(<2 x s64>) = G_SITOFP %0 90 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1 91... 92 93--- 94name: test_sitofp_s64_to_s32 95body: | 96 bb.0: 97 liveins: $vgpr0_vgpr1 98 99 ; GFX6-LABEL: name: test_sitofp_s64_to_s32 100 ; GFX6: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 101 ; GFX6: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 63 102 ; GFX6: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[COPY]], [[C]](s32) 103 ; GFX6: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64) 104 ; GFX6: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ASHR]](s64) 105 ; GFX6: [[UADDO:%[0-9]+]]:_(s32), [[UADDO1:%[0-9]+]]:_(s1) = G_UADDO [[UV]], [[UV2]] 106 ; GFX6: [[UADDE:%[0-9]+]]:_(s32), [[UADDE1:%[0-9]+]]:_(s1) = G_UADDE [[UV1]], [[UV3]], [[UADDO1]] 107 ; GFX6: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UADDO]](s32), [[UADDE]](s32) 108 ; GFX6: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[MV]], [[ASHR]] 109 ; GFX6: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 110 ; GFX6: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 111 ; GFX6: [[CTLZ_ZERO_UNDEF:%[0-9]+]]:_(s32) = G_CTLZ_ZERO_UNDEF [[XOR]](s64) 112 ; GFX6: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 190 113 ; GFX6: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C3]], [[CTLZ_ZERO_UNDEF]] 114 ; GFX6: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[XOR]](s64), [[C2]] 115 ; GFX6: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[SUB]], [[C1]] 116 ; GFX6: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 117 ; GFX6: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[XOR]], [[CTLZ_ZERO_UNDEF]](s32) 118 ; GFX6: [[AND:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C4]] 119 ; GFX6: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 1099511627775 120 ; GFX6: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C5]] 121 ; GFX6: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 40 122 ; GFX6: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[AND]], [[C6]](s32) 123 ; GFX6: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 23 124 ; GFX6: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[SELECT]], [[C7]](s32) 125 ; GFX6: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64) 126 ; GFX6: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL1]], [[TRUNC]] 127 ; GFX6: [[C8:%[0-9]+]]:_(s64) = G_CONSTANT i64 549755813888 128 ; GFX6: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ugt), [[AND1]](s64), [[C8]] 129 ; GFX6: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[AND1]](s64), [[C8]] 130 ; GFX6: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 131 ; GFX6: [[AND2:%[0-9]+]]:_(s32) = G_AND [[OR]], [[C9]] 132 ; GFX6: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP2]](s1), [[AND2]], [[C1]] 133 ; GFX6: [[SELECT2:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s1), [[C9]], [[SELECT1]] 134 ; GFX6: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[OR]], [[SELECT2]] 135 ; GFX6: [[FNEG:%[0-9]+]]:_(s32) = G_FNEG [[ADD]] 136 ; GFX6: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[ASHR]](s64), [[C2]] 137 ; GFX6: [[SELECT3:%[0-9]+]]:_(s32) = G_SELECT [[ICMP3]](s1), [[FNEG]], [[ADD]] 138 ; GFX6: $vgpr0 = COPY [[SELECT3]](s32) 139 ; GFX8-LABEL: name: test_sitofp_s64_to_s32 140 ; GFX8: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 141 ; GFX8: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 63 142 ; GFX8: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[COPY]], [[C]](s32) 143 ; GFX8: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64) 144 ; GFX8: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ASHR]](s64) 145 ; GFX8: [[UADDO:%[0-9]+]]:_(s32), [[UADDO1:%[0-9]+]]:_(s1) = G_UADDO [[UV]], [[UV2]] 146 ; GFX8: [[UADDE:%[0-9]+]]:_(s32), [[UADDE1:%[0-9]+]]:_(s1) = G_UADDE [[UV1]], [[UV3]], [[UADDO1]] 147 ; GFX8: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UADDO]](s32), [[UADDE]](s32) 148 ; GFX8: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[MV]], [[ASHR]] 149 ; GFX8: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 150 ; GFX8: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 151 ; GFX8: [[CTLZ_ZERO_UNDEF:%[0-9]+]]:_(s32) = G_CTLZ_ZERO_UNDEF [[XOR]](s64) 152 ; GFX8: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 190 153 ; GFX8: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C3]], [[CTLZ_ZERO_UNDEF]] 154 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[XOR]](s64), [[C2]] 155 ; GFX8: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[SUB]], [[C1]] 156 ; GFX8: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 157 ; GFX8: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[XOR]], [[CTLZ_ZERO_UNDEF]](s32) 158 ; GFX8: [[AND:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C4]] 159 ; GFX8: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 1099511627775 160 ; GFX8: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C5]] 161 ; GFX8: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 40 162 ; GFX8: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[AND]], [[C6]](s32) 163 ; GFX8: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 23 164 ; GFX8: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[SELECT]], [[C7]](s32) 165 ; GFX8: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64) 166 ; GFX8: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL1]], [[TRUNC]] 167 ; GFX8: [[C8:%[0-9]+]]:_(s64) = G_CONSTANT i64 549755813888 168 ; GFX8: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ugt), [[AND1]](s64), [[C8]] 169 ; GFX8: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[AND1]](s64), [[C8]] 170 ; GFX8: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 171 ; GFX8: [[AND2:%[0-9]+]]:_(s32) = G_AND [[OR]], [[C9]] 172 ; GFX8: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP2]](s1), [[AND2]], [[C1]] 173 ; GFX8: [[SELECT2:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s1), [[C9]], [[SELECT1]] 174 ; GFX8: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[OR]], [[SELECT2]] 175 ; GFX8: [[FNEG:%[0-9]+]]:_(s32) = G_FNEG [[ADD]] 176 ; GFX8: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[ASHR]](s64), [[C2]] 177 ; GFX8: [[SELECT3:%[0-9]+]]:_(s32) = G_SELECT [[ICMP3]](s1), [[FNEG]], [[ADD]] 178 ; GFX8: $vgpr0 = COPY [[SELECT3]](s32) 179 %0:_(s64) = COPY $vgpr0_vgpr1 180 %1:_(s32) = G_SITOFP %0 181 $vgpr0 = COPY %1 182... 183 184--- 185name: test_sitofp_s64_to_s64 186body: | 187 bb.0: 188 liveins: $vgpr0_vgpr1 189 190 ; GFX6-LABEL: name: test_sitofp_s64_to_s64 191 ; GFX6: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 192 ; GFX6: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64) 193 ; GFX6: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[UV1]](s32) 194 ; GFX6: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[UV]](s32) 195 ; GFX6: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32 196 ; GFX6: [[INT:%[0-9]+]]:_(s64) = G_INTRINSIC intrinsic(@llvm.amdgcn.ldexp), [[SITOFP]](s64), [[C]](s32) 197 ; GFX6: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[INT]], [[UITOFP]] 198 ; GFX6: $vgpr0_vgpr1 = COPY [[FADD]](s64) 199 ; GFX8-LABEL: name: test_sitofp_s64_to_s64 200 ; GFX8: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 201 ; GFX8: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64) 202 ; GFX8: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[UV1]](s32) 203 ; GFX8: [[UITOFP:%[0-9]+]]:_(s64) = G_UITOFP [[UV]](s32) 204 ; GFX8: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32 205 ; GFX8: [[INT:%[0-9]+]]:_(s64) = G_INTRINSIC intrinsic(@llvm.amdgcn.ldexp), [[SITOFP]](s64), [[C]](s32) 206 ; GFX8: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[INT]], [[UITOFP]] 207 ; GFX8: $vgpr0_vgpr1 = COPY [[FADD]](s64) 208 %0:_(s64) = COPY $vgpr0_vgpr1 209 %1:_(s64) = G_SITOFP %0 210 $vgpr0_vgpr1 = COPY %1 211... 212 213--- 214name: test_sitofp_s16_to_s16 215body: | 216 bb.0: 217 liveins: $vgpr0 218 219 ; GFX6-LABEL: name: test_sitofp_s16_to_s16 220 ; GFX6: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 221 ; GFX6: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32) 222 ; GFX6: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY1]], 16 223 ; GFX6: [[SITOFP:%[0-9]+]]:_(s16) = G_SITOFP [[SEXT_INREG]](s32) 224 ; GFX6: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SITOFP]](s16) 225 ; GFX6: $vgpr0 = COPY [[ANYEXT]](s32) 226 ; GFX8-LABEL: name: test_sitofp_s16_to_s16 227 ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 228 ; GFX8: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 229 ; GFX8: [[SITOFP:%[0-9]+]]:_(s16) = G_SITOFP [[TRUNC]](s16) 230 ; GFX8: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SITOFP]](s16) 231 ; GFX8: $vgpr0 = COPY [[ANYEXT]](s32) 232 %0:_(s32) = COPY $vgpr0 233 %1:_(s16) = G_TRUNC %0 234 %2:_(s16) = G_SITOFP %1 235 %3:_(s32) = G_ANYEXT %2 236 $vgpr0 = COPY %3 237... 238 239--- 240name: test_sitofp_s16_to_s32 241body: | 242 bb.0: 243 liveins: $vgpr0 244 245 ; GFX6-LABEL: name: test_sitofp_s16_to_s32 246 ; GFX6: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 247 ; GFX6: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32) 248 ; GFX6: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY1]], 16 249 ; GFX6: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[SEXT_INREG]](s32) 250 ; GFX6: $vgpr0 = COPY [[SITOFP]](s32) 251 ; GFX8-LABEL: name: test_sitofp_s16_to_s32 252 ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 253 ; GFX8: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32) 254 ; GFX8: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY1]], 16 255 ; GFX8: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[SEXT_INREG]](s32) 256 ; GFX8: $vgpr0 = COPY [[SITOFP]](s32) 257 %0:_(s32) = COPY $vgpr0 258 %1:_(s16) = G_TRUNC %0 259 %2:_(s32) = G_SITOFP %1 260 $vgpr0 = COPY %2 261... 262 263--- 264name: test_sitofp_s16_to_s64 265body: | 266 bb.0: 267 liveins: $vgpr0 268 269 ; GFX6-LABEL: name: test_sitofp_s16_to_s64 270 ; GFX6: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 271 ; GFX6: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32) 272 ; GFX6: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY1]], 16 273 ; GFX6: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[SEXT_INREG]](s32) 274 ; GFX6: $vgpr0_vgpr1 = COPY [[SITOFP]](s64) 275 ; GFX8-LABEL: name: test_sitofp_s16_to_s64 276 ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 277 ; GFX8: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32) 278 ; GFX8: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY1]], 16 279 ; GFX8: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[SEXT_INREG]](s32) 280 ; GFX8: $vgpr0_vgpr1 = COPY [[SITOFP]](s64) 281 %0:_(s32) = COPY $vgpr0 282 %1:_(s16) = G_TRUNC %0 283 %2:_(s64) = G_SITOFP %1 284 $vgpr0_vgpr1 = COPY %2 285... 286 287--- 288name: test_sitofp_s8_to_s16 289body: | 290 bb.0: 291 liveins: $vgpr0 292 293 ; GFX6-LABEL: name: test_sitofp_s8_to_s16 294 ; GFX6: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 295 ; GFX6: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32) 296 ; GFX6: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY1]], 8 297 ; GFX6: [[SITOFP:%[0-9]+]]:_(s16) = G_SITOFP [[SEXT_INREG]](s32) 298 ; GFX6: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SITOFP]](s16) 299 ; GFX6: $vgpr0 = COPY [[ANYEXT]](s32) 300 ; GFX8-LABEL: name: test_sitofp_s8_to_s16 301 ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 302 ; GFX8: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32) 303 ; GFX8: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY1]], 8 304 ; GFX8: [[SITOFP:%[0-9]+]]:_(s16) = G_SITOFP [[SEXT_INREG]](s32) 305 ; GFX8: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SITOFP]](s16) 306 ; GFX8: $vgpr0 = COPY [[ANYEXT]](s32) 307 %0:_(s32) = COPY $vgpr0 308 %1:_(s8) = G_TRUNC %0 309 %2:_(s16) = G_SITOFP %1 310 %3:_(s32) = G_ANYEXT %2 311 $vgpr0 = COPY %3 312... 313 314--- 315name: test_sitofp_s8_to_s32 316body: | 317 bb.0: 318 liveins: $vgpr0 319 320 ; GFX6-LABEL: name: test_sitofp_s8_to_s32 321 ; GFX6: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 322 ; GFX6: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32) 323 ; GFX6: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY1]], 8 324 ; GFX6: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[SEXT_INREG]](s32) 325 ; GFX6: $vgpr0 = COPY [[SITOFP]](s32) 326 ; GFX8-LABEL: name: test_sitofp_s8_to_s32 327 ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 328 ; GFX8: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32) 329 ; GFX8: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY1]], 8 330 ; GFX8: [[SITOFP:%[0-9]+]]:_(s32) = G_SITOFP [[SEXT_INREG]](s32) 331 ; GFX8: $vgpr0 = COPY [[SITOFP]](s32) 332 %0:_(s32) = COPY $vgpr0 333 %1:_(s8) = G_TRUNC %0 334 %2:_(s32) = G_SITOFP %1 335 $vgpr0 = COPY %2 336... 337 338--- 339name: test_sitofp_s8_to_s64 340body: | 341 bb.0: 342 liveins: $vgpr0 343 344 ; GFX6-LABEL: name: test_sitofp_s8_to_s64 345 ; GFX6: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 346 ; GFX6: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32) 347 ; GFX6: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY1]], 8 348 ; GFX6: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[SEXT_INREG]](s32) 349 ; GFX6: $vgpr0_vgpr1 = COPY [[SITOFP]](s64) 350 ; GFX8-LABEL: name: test_sitofp_s8_to_s64 351 ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 352 ; GFX8: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32) 353 ; GFX8: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY1]], 8 354 ; GFX8: [[SITOFP:%[0-9]+]]:_(s64) = G_SITOFP [[SEXT_INREG]](s32) 355 ; GFX8: $vgpr0_vgpr1 = COPY [[SITOFP]](s64) 356 %0:_(s32) = COPY $vgpr0 357 %1:_(s8) = G_TRUNC %0 358 %2:_(s64) = G_SITOFP %1 359 $vgpr0_vgpr1 = COPY %2 360... 361 362--- 363name: test_sitofp_s1_to_s16 364body: | 365 bb.0: 366 liveins: $vgpr0 367 368 ; GFX6-LABEL: name: test_sitofp_s1_to_s16 369 ; GFX6: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 370 ; GFX6: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32) 371 ; GFX6: [[C:%[0-9]+]]:_(s16) = G_FCONSTANT half 0xHBC00 372 ; GFX6: [[C1:%[0-9]+]]:_(s16) = G_FCONSTANT half 0xH0000 373 ; GFX6: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[TRUNC]](s1), [[C]], [[C1]] 374 ; GFX6: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16) 375 ; GFX6: $vgpr0 = COPY [[ANYEXT]](s32) 376 ; GFX8-LABEL: name: test_sitofp_s1_to_s16 377 ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 378 ; GFX8: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32) 379 ; GFX8: [[C:%[0-9]+]]:_(s16) = G_FCONSTANT half 0xHBC00 380 ; GFX8: [[C1:%[0-9]+]]:_(s16) = G_FCONSTANT half 0xH0000 381 ; GFX8: [[SELECT:%[0-9]+]]:_(s16) = G_SELECT [[TRUNC]](s1), [[C]], [[C1]] 382 ; GFX8: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[SELECT]](s16) 383 ; GFX8: $vgpr0 = COPY [[ANYEXT]](s32) 384 %0:_(s32) = COPY $vgpr0 385 %1:_(s1) = G_TRUNC %0 386 %2:_(s16) = G_SITOFP %1 387 %3:_(s32) = G_ANYEXT %2 388 $vgpr0 = COPY %3 389... 390 391--- 392name: test_sitofp_s1_to_s32 393body: | 394 bb.0: 395 liveins: $vgpr0 396 397 ; GFX6-LABEL: name: test_sitofp_s1_to_s32 398 ; GFX6: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 399 ; GFX6: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32) 400 ; GFX6: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float -1.000000e+00 401 ; GFX6: [[C1:%[0-9]+]]:_(s32) = G_FCONSTANT float 0.000000e+00 402 ; GFX6: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[TRUNC]](s1), [[C]], [[C1]] 403 ; GFX6: $vgpr0 = COPY [[SELECT]](s32) 404 ; GFX8-LABEL: name: test_sitofp_s1_to_s32 405 ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 406 ; GFX8: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32) 407 ; GFX8: [[C:%[0-9]+]]:_(s32) = G_FCONSTANT float -1.000000e+00 408 ; GFX8: [[C1:%[0-9]+]]:_(s32) = G_FCONSTANT float 0.000000e+00 409 ; GFX8: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[TRUNC]](s1), [[C]], [[C1]] 410 ; GFX8: $vgpr0 = COPY [[SELECT]](s32) 411 %0:_(s32) = COPY $vgpr0 412 %1:_(s1) = G_TRUNC %0 413 %2:_(s32) = G_SITOFP %1 414 $vgpr0 = COPY %2 415... 416 417--- 418name: test_sitofp_s1_to_s64 419body: | 420 bb.0: 421 liveins: $vgpr0 422 423 ; GFX6-LABEL: name: test_sitofp_s1_to_s64 424 ; GFX6: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 425 ; GFX6: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32) 426 ; GFX6: [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double -1.000000e+00 427 ; GFX6: [[C1:%[0-9]+]]:_(s64) = G_FCONSTANT double 0.000000e+00 428 ; GFX6: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[TRUNC]](s1), [[C]], [[C1]] 429 ; GFX6: $vgpr0_vgpr1 = COPY [[SELECT]](s64) 430 ; GFX8-LABEL: name: test_sitofp_s1_to_s64 431 ; GFX8: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 432 ; GFX8: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY]](s32) 433 ; GFX8: [[C:%[0-9]+]]:_(s64) = G_FCONSTANT double -1.000000e+00 434 ; GFX8: [[C1:%[0-9]+]]:_(s64) = G_FCONSTANT double 0.000000e+00 435 ; GFX8: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[TRUNC]](s1), [[C]], [[C1]] 436 ; GFX8: $vgpr0_vgpr1 = COPY [[SELECT]](s64) 437 %0:_(s32) = COPY $vgpr0 438 %1:_(s1) = G_TRUNC %0 439 %2:_(s64) = G_SITOFP %1 440 $vgpr0_vgpr1 = COPY %2 441... 442 443--- 444name: test_sitofp_s33_to_s32 445body: | 446 bb.0: 447 liveins: $vgpr0_vgpr1 448 449 ; GFX6-LABEL: name: test_sitofp_s33_to_s32 450 ; GFX6: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 451 ; GFX6: [[COPY1:%[0-9]+]]:_(s64) = COPY [[COPY]](s64) 452 ; GFX6: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY1]], 33 453 ; GFX6: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 63 454 ; GFX6: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SEXT_INREG]], [[C]](s32) 455 ; GFX6: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SEXT_INREG]](s64) 456 ; GFX6: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ASHR]](s64) 457 ; GFX6: [[UADDO:%[0-9]+]]:_(s32), [[UADDO1:%[0-9]+]]:_(s1) = G_UADDO [[UV]], [[UV2]] 458 ; GFX6: [[UADDE:%[0-9]+]]:_(s32), [[UADDE1:%[0-9]+]]:_(s1) = G_UADDE [[UV1]], [[UV3]], [[UADDO1]] 459 ; GFX6: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UADDO]](s32), [[UADDE]](s32) 460 ; GFX6: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[MV]], [[ASHR]] 461 ; GFX6: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 462 ; GFX6: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 463 ; GFX6: [[CTLZ_ZERO_UNDEF:%[0-9]+]]:_(s32) = G_CTLZ_ZERO_UNDEF [[XOR]](s64) 464 ; GFX6: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 190 465 ; GFX6: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C3]], [[CTLZ_ZERO_UNDEF]] 466 ; GFX6: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[XOR]](s64), [[C2]] 467 ; GFX6: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[SUB]], [[C1]] 468 ; GFX6: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 469 ; GFX6: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[XOR]], [[CTLZ_ZERO_UNDEF]](s32) 470 ; GFX6: [[AND:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C4]] 471 ; GFX6: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 1099511627775 472 ; GFX6: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C5]] 473 ; GFX6: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 40 474 ; GFX6: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[AND]], [[C6]](s32) 475 ; GFX6: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 23 476 ; GFX6: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[SELECT]], [[C7]](s32) 477 ; GFX6: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64) 478 ; GFX6: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL1]], [[TRUNC]] 479 ; GFX6: [[C8:%[0-9]+]]:_(s64) = G_CONSTANT i64 549755813888 480 ; GFX6: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ugt), [[AND1]](s64), [[C8]] 481 ; GFX6: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[AND1]](s64), [[C8]] 482 ; GFX6: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 483 ; GFX6: [[AND2:%[0-9]+]]:_(s32) = G_AND [[OR]], [[C9]] 484 ; GFX6: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP2]](s1), [[AND2]], [[C1]] 485 ; GFX6: [[SELECT2:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s1), [[C9]], [[SELECT1]] 486 ; GFX6: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[OR]], [[SELECT2]] 487 ; GFX6: [[FNEG:%[0-9]+]]:_(s32) = G_FNEG [[ADD]] 488 ; GFX6: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[ASHR]](s64), [[C2]] 489 ; GFX6: [[SELECT3:%[0-9]+]]:_(s32) = G_SELECT [[ICMP3]](s1), [[FNEG]], [[ADD]] 490 ; GFX6: $vgpr0 = COPY [[SELECT3]](s32) 491 ; GFX8-LABEL: name: test_sitofp_s33_to_s32 492 ; GFX8: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 493 ; GFX8: [[COPY1:%[0-9]+]]:_(s64) = COPY [[COPY]](s64) 494 ; GFX8: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY1]], 33 495 ; GFX8: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 63 496 ; GFX8: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SEXT_INREG]], [[C]](s32) 497 ; GFX8: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[SEXT_INREG]](s64) 498 ; GFX8: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ASHR]](s64) 499 ; GFX8: [[UADDO:%[0-9]+]]:_(s32), [[UADDO1:%[0-9]+]]:_(s1) = G_UADDO [[UV]], [[UV2]] 500 ; GFX8: [[UADDE:%[0-9]+]]:_(s32), [[UADDE1:%[0-9]+]]:_(s1) = G_UADDE [[UV1]], [[UV3]], [[UADDO1]] 501 ; GFX8: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UADDO]](s32), [[UADDE]](s32) 502 ; GFX8: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[MV]], [[ASHR]] 503 ; GFX8: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 504 ; GFX8: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 505 ; GFX8: [[CTLZ_ZERO_UNDEF:%[0-9]+]]:_(s32) = G_CTLZ_ZERO_UNDEF [[XOR]](s64) 506 ; GFX8: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 190 507 ; GFX8: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C3]], [[CTLZ_ZERO_UNDEF]] 508 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[XOR]](s64), [[C2]] 509 ; GFX8: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[SUB]], [[C1]] 510 ; GFX8: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 511 ; GFX8: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[XOR]], [[CTLZ_ZERO_UNDEF]](s32) 512 ; GFX8: [[AND:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C4]] 513 ; GFX8: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 1099511627775 514 ; GFX8: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C5]] 515 ; GFX8: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 40 516 ; GFX8: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[AND]], [[C6]](s32) 517 ; GFX8: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 23 518 ; GFX8: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[SELECT]], [[C7]](s32) 519 ; GFX8: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64) 520 ; GFX8: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL1]], [[TRUNC]] 521 ; GFX8: [[C8:%[0-9]+]]:_(s64) = G_CONSTANT i64 549755813888 522 ; GFX8: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ugt), [[AND1]](s64), [[C8]] 523 ; GFX8: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[AND1]](s64), [[C8]] 524 ; GFX8: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 525 ; GFX8: [[AND2:%[0-9]+]]:_(s32) = G_AND [[OR]], [[C9]] 526 ; GFX8: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP2]](s1), [[AND2]], [[C1]] 527 ; GFX8: [[SELECT2:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s1), [[C9]], [[SELECT1]] 528 ; GFX8: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[OR]], [[SELECT2]] 529 ; GFX8: [[FNEG:%[0-9]+]]:_(s32) = G_FNEG [[ADD]] 530 ; GFX8: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[ASHR]](s64), [[C2]] 531 ; GFX8: [[SELECT3:%[0-9]+]]:_(s32) = G_SELECT [[ICMP3]](s1), [[FNEG]], [[ADD]] 532 ; GFX8: $vgpr0 = COPY [[SELECT3]](s32) 533 %0:_(s64) = COPY $vgpr0_vgpr1 534 %1:_(s33) = G_TRUNC %0 535 %2:_(s32) = G_SITOFP %1 536 $vgpr0 = COPY %2 537... 538 539--- 540name: test_sitofp_s64_to_s16 541body: | 542 bb.0: 543 liveins: $vgpr0_vgpr1 544 545 ; GFX6-LABEL: name: test_sitofp_s64_to_s16 546 ; GFX6: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 547 ; GFX6: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 63 548 ; GFX6: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[COPY]], [[C]](s32) 549 ; GFX6: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64) 550 ; GFX6: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ASHR]](s64) 551 ; GFX6: [[UADDO:%[0-9]+]]:_(s32), [[UADDO1:%[0-9]+]]:_(s1) = G_UADDO [[UV]], [[UV2]] 552 ; GFX6: [[UADDE:%[0-9]+]]:_(s32), [[UADDE1:%[0-9]+]]:_(s1) = G_UADDE [[UV1]], [[UV3]], [[UADDO1]] 553 ; GFX6: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UADDO]](s32), [[UADDE]](s32) 554 ; GFX6: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[MV]], [[ASHR]] 555 ; GFX6: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 556 ; GFX6: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 557 ; GFX6: [[CTLZ_ZERO_UNDEF:%[0-9]+]]:_(s32) = G_CTLZ_ZERO_UNDEF [[XOR]](s64) 558 ; GFX6: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 190 559 ; GFX6: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C3]], [[CTLZ_ZERO_UNDEF]] 560 ; GFX6: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[XOR]](s64), [[C2]] 561 ; GFX6: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[SUB]], [[C1]] 562 ; GFX6: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 563 ; GFX6: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[XOR]], [[CTLZ_ZERO_UNDEF]](s32) 564 ; GFX6: [[AND:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C4]] 565 ; GFX6: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 1099511627775 566 ; GFX6: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C5]] 567 ; GFX6: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 40 568 ; GFX6: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[AND]], [[C6]](s32) 569 ; GFX6: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 23 570 ; GFX6: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[SELECT]], [[C7]](s32) 571 ; GFX6: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64) 572 ; GFX6: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL1]], [[TRUNC]] 573 ; GFX6: [[C8:%[0-9]+]]:_(s64) = G_CONSTANT i64 549755813888 574 ; GFX6: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ugt), [[AND1]](s64), [[C8]] 575 ; GFX6: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[AND1]](s64), [[C8]] 576 ; GFX6: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 577 ; GFX6: [[AND2:%[0-9]+]]:_(s32) = G_AND [[OR]], [[C9]] 578 ; GFX6: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP2]](s1), [[AND2]], [[C1]] 579 ; GFX6: [[SELECT2:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s1), [[C9]], [[SELECT1]] 580 ; GFX6: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[OR]], [[SELECT2]] 581 ; GFX6: [[FNEG:%[0-9]+]]:_(s32) = G_FNEG [[ADD]] 582 ; GFX6: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[ASHR]](s64), [[C2]] 583 ; GFX6: [[SELECT3:%[0-9]+]]:_(s32) = G_SELECT [[ICMP3]](s1), [[FNEG]], [[ADD]] 584 ; GFX6: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[SELECT3]](s32) 585 ; GFX6: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FPTRUNC]](s16) 586 ; GFX6: $vgpr0 = COPY [[ANYEXT]](s32) 587 ; GFX8-LABEL: name: test_sitofp_s64_to_s16 588 ; GFX8: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 589 ; GFX8: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 63 590 ; GFX8: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[COPY]], [[C]](s32) 591 ; GFX8: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64) 592 ; GFX8: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ASHR]](s64) 593 ; GFX8: [[UADDO:%[0-9]+]]:_(s32), [[UADDO1:%[0-9]+]]:_(s1) = G_UADDO [[UV]], [[UV2]] 594 ; GFX8: [[UADDE:%[0-9]+]]:_(s32), [[UADDE1:%[0-9]+]]:_(s1) = G_UADDE [[UV1]], [[UV3]], [[UADDO1]] 595 ; GFX8: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UADDO]](s32), [[UADDE]](s32) 596 ; GFX8: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[MV]], [[ASHR]] 597 ; GFX8: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 598 ; GFX8: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 599 ; GFX8: [[CTLZ_ZERO_UNDEF:%[0-9]+]]:_(s32) = G_CTLZ_ZERO_UNDEF [[XOR]](s64) 600 ; GFX8: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 190 601 ; GFX8: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C3]], [[CTLZ_ZERO_UNDEF]] 602 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[XOR]](s64), [[C2]] 603 ; GFX8: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[SUB]], [[C1]] 604 ; GFX8: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 605 ; GFX8: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[XOR]], [[CTLZ_ZERO_UNDEF]](s32) 606 ; GFX8: [[AND:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C4]] 607 ; GFX8: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 1099511627775 608 ; GFX8: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C5]] 609 ; GFX8: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 40 610 ; GFX8: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[AND]], [[C6]](s32) 611 ; GFX8: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 23 612 ; GFX8: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[SELECT]], [[C7]](s32) 613 ; GFX8: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64) 614 ; GFX8: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL1]], [[TRUNC]] 615 ; GFX8: [[C8:%[0-9]+]]:_(s64) = G_CONSTANT i64 549755813888 616 ; GFX8: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ugt), [[AND1]](s64), [[C8]] 617 ; GFX8: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[AND1]](s64), [[C8]] 618 ; GFX8: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 619 ; GFX8: [[AND2:%[0-9]+]]:_(s32) = G_AND [[OR]], [[C9]] 620 ; GFX8: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP2]](s1), [[AND2]], [[C1]] 621 ; GFX8: [[SELECT2:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s1), [[C9]], [[SELECT1]] 622 ; GFX8: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[OR]], [[SELECT2]] 623 ; GFX8: [[FNEG:%[0-9]+]]:_(s32) = G_FNEG [[ADD]] 624 ; GFX8: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[ASHR]](s64), [[C2]] 625 ; GFX8: [[SELECT3:%[0-9]+]]:_(s32) = G_SELECT [[ICMP3]](s1), [[FNEG]], [[ADD]] 626 ; GFX8: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[SELECT3]](s32) 627 ; GFX8: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FPTRUNC]](s16) 628 ; GFX8: $vgpr0 = COPY [[ANYEXT]](s32) 629 %0:_(s64) = COPY $vgpr0_vgpr1 630 %1:_(s16) = G_SITOFP %0 631 %2:_(s32) = G_ANYEXT %1 632 $vgpr0 = COPY %2 633... 634 635--- 636name: test_sitofp_v2s64_to_v2s16 637body: | 638 bb.0: 639 liveins: $vgpr0_vgpr1_vgpr2_vgpr3 640 641 ; GFX6-LABEL: name: test_sitofp_v2s64_to_v2s16 642 ; GFX6: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 643 ; GFX6: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>) 644 ; GFX6: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 63 645 ; GFX6: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[UV]], [[C]](s32) 646 ; GFX6: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[UV]](s64) 647 ; GFX6: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ASHR]](s64) 648 ; GFX6: [[UADDO:%[0-9]+]]:_(s32), [[UADDO1:%[0-9]+]]:_(s1) = G_UADDO [[UV2]], [[UV4]] 649 ; GFX6: [[UADDE:%[0-9]+]]:_(s32), [[UADDE1:%[0-9]+]]:_(s1) = G_UADDE [[UV3]], [[UV5]], [[UADDO1]] 650 ; GFX6: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UADDO]](s32), [[UADDE]](s32) 651 ; GFX6: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[MV]], [[ASHR]] 652 ; GFX6: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 653 ; GFX6: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 654 ; GFX6: [[CTLZ_ZERO_UNDEF:%[0-9]+]]:_(s32) = G_CTLZ_ZERO_UNDEF [[XOR]](s64) 655 ; GFX6: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 190 656 ; GFX6: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C3]], [[CTLZ_ZERO_UNDEF]] 657 ; GFX6: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[XOR]](s64), [[C2]] 658 ; GFX6: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[SUB]], [[C1]] 659 ; GFX6: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 660 ; GFX6: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[XOR]], [[CTLZ_ZERO_UNDEF]](s32) 661 ; GFX6: [[AND:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C4]] 662 ; GFX6: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 1099511627775 663 ; GFX6: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C5]] 664 ; GFX6: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 40 665 ; GFX6: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[AND]], [[C6]](s32) 666 ; GFX6: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 23 667 ; GFX6: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[SELECT]], [[C7]](s32) 668 ; GFX6: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64) 669 ; GFX6: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL1]], [[TRUNC]] 670 ; GFX6: [[C8:%[0-9]+]]:_(s64) = G_CONSTANT i64 549755813888 671 ; GFX6: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ugt), [[AND1]](s64), [[C8]] 672 ; GFX6: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[AND1]](s64), [[C8]] 673 ; GFX6: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 674 ; GFX6: [[AND2:%[0-9]+]]:_(s32) = G_AND [[OR]], [[C9]] 675 ; GFX6: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP2]](s1), [[AND2]], [[C1]] 676 ; GFX6: [[SELECT2:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s1), [[C9]], [[SELECT1]] 677 ; GFX6: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[OR]], [[SELECT2]] 678 ; GFX6: [[FNEG:%[0-9]+]]:_(s32) = G_FNEG [[ADD]] 679 ; GFX6: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[ASHR]](s64), [[C2]] 680 ; GFX6: [[SELECT3:%[0-9]+]]:_(s32) = G_SELECT [[ICMP3]](s1), [[FNEG]], [[ADD]] 681 ; GFX6: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[SELECT3]](s32) 682 ; GFX6: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR [[UV1]], [[C]](s32) 683 ; GFX6: [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[UV1]](s64) 684 ; GFX6: [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ASHR1]](s64) 685 ; GFX6: [[UADDO2:%[0-9]+]]:_(s32), [[UADDO3:%[0-9]+]]:_(s1) = G_UADDO [[UV6]], [[UV8]] 686 ; GFX6: [[UADDE2:%[0-9]+]]:_(s32), [[UADDE3:%[0-9]+]]:_(s1) = G_UADDE [[UV7]], [[UV9]], [[UADDO3]] 687 ; GFX6: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UADDO2]](s32), [[UADDE2]](s32) 688 ; GFX6: [[XOR1:%[0-9]+]]:_(s64) = G_XOR [[MV1]], [[ASHR1]] 689 ; GFX6: [[CTLZ_ZERO_UNDEF1:%[0-9]+]]:_(s32) = G_CTLZ_ZERO_UNDEF [[XOR1]](s64) 690 ; GFX6: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[C3]], [[CTLZ_ZERO_UNDEF1]] 691 ; GFX6: [[ICMP4:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[XOR1]](s64), [[C2]] 692 ; GFX6: [[SELECT4:%[0-9]+]]:_(s32) = G_SELECT [[ICMP4]](s1), [[SUB1]], [[C1]] 693 ; GFX6: [[SHL2:%[0-9]+]]:_(s64) = G_SHL [[XOR1]], [[CTLZ_ZERO_UNDEF1]](s32) 694 ; GFX6: [[AND3:%[0-9]+]]:_(s64) = G_AND [[SHL2]], [[C4]] 695 ; GFX6: [[AND4:%[0-9]+]]:_(s64) = G_AND [[AND3]], [[C5]] 696 ; GFX6: [[LSHR1:%[0-9]+]]:_(s64) = G_LSHR [[AND3]], [[C6]](s32) 697 ; GFX6: [[SHL3:%[0-9]+]]:_(s32) = G_SHL [[SELECT4]], [[C7]](s32) 698 ; GFX6: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR1]](s64) 699 ; GFX6: [[OR1:%[0-9]+]]:_(s32) = G_OR [[SHL3]], [[TRUNC1]] 700 ; GFX6: [[ICMP5:%[0-9]+]]:_(s1) = G_ICMP intpred(ugt), [[AND4]](s64), [[C8]] 701 ; GFX6: [[ICMP6:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[AND4]](s64), [[C8]] 702 ; GFX6: [[AND5:%[0-9]+]]:_(s32) = G_AND [[OR1]], [[C9]] 703 ; GFX6: [[SELECT5:%[0-9]+]]:_(s32) = G_SELECT [[ICMP6]](s1), [[AND5]], [[C1]] 704 ; GFX6: [[SELECT6:%[0-9]+]]:_(s32) = G_SELECT [[ICMP5]](s1), [[C9]], [[SELECT5]] 705 ; GFX6: [[ADD1:%[0-9]+]]:_(s32) = G_ADD [[OR1]], [[SELECT6]] 706 ; GFX6: [[FNEG1:%[0-9]+]]:_(s32) = G_FNEG [[ADD1]] 707 ; GFX6: [[ICMP7:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[ASHR1]](s64), [[C2]] 708 ; GFX6: [[SELECT7:%[0-9]+]]:_(s32) = G_SELECT [[ICMP7]](s1), [[FNEG1]], [[ADD1]] 709 ; GFX6: [[FPTRUNC1:%[0-9]+]]:_(s16) = G_FPTRUNC [[SELECT7]](s32) 710 ; GFX6: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[FPTRUNC]](s16) 711 ; GFX6: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[FPTRUNC1]](s16) 712 ; GFX6: [[C10:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 713 ; GFX6: [[SHL4:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C10]](s32) 714 ; GFX6: [[OR2:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL4]] 715 ; GFX6: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR2]](s32) 716 ; GFX6: $vgpr0 = COPY [[BITCAST]](<2 x s16>) 717 ; GFX8-LABEL: name: test_sitofp_v2s64_to_v2s16 718 ; GFX8: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 719 ; GFX8: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>) 720 ; GFX8: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 63 721 ; GFX8: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[UV]], [[C]](s32) 722 ; GFX8: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[UV]](s64) 723 ; GFX8: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ASHR]](s64) 724 ; GFX8: [[UADDO:%[0-9]+]]:_(s32), [[UADDO1:%[0-9]+]]:_(s1) = G_UADDO [[UV2]], [[UV4]] 725 ; GFX8: [[UADDE:%[0-9]+]]:_(s32), [[UADDE1:%[0-9]+]]:_(s1) = G_UADDE [[UV3]], [[UV5]], [[UADDO1]] 726 ; GFX8: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UADDO]](s32), [[UADDE]](s32) 727 ; GFX8: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[MV]], [[ASHR]] 728 ; GFX8: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0 729 ; GFX8: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 0 730 ; GFX8: [[CTLZ_ZERO_UNDEF:%[0-9]+]]:_(s32) = G_CTLZ_ZERO_UNDEF [[XOR]](s64) 731 ; GFX8: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 190 732 ; GFX8: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[C3]], [[CTLZ_ZERO_UNDEF]] 733 ; GFX8: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[XOR]](s64), [[C2]] 734 ; GFX8: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s1), [[SUB]], [[C1]] 735 ; GFX8: [[C4:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 736 ; GFX8: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[XOR]], [[CTLZ_ZERO_UNDEF]](s32) 737 ; GFX8: [[AND:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C4]] 738 ; GFX8: [[C5:%[0-9]+]]:_(s64) = G_CONSTANT i64 1099511627775 739 ; GFX8: [[AND1:%[0-9]+]]:_(s64) = G_AND [[AND]], [[C5]] 740 ; GFX8: [[C6:%[0-9]+]]:_(s32) = G_CONSTANT i32 40 741 ; GFX8: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[AND]], [[C6]](s32) 742 ; GFX8: [[C7:%[0-9]+]]:_(s32) = G_CONSTANT i32 23 743 ; GFX8: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[SELECT]], [[C7]](s32) 744 ; GFX8: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64) 745 ; GFX8: [[OR:%[0-9]+]]:_(s32) = G_OR [[SHL1]], [[TRUNC]] 746 ; GFX8: [[C8:%[0-9]+]]:_(s64) = G_CONSTANT i64 549755813888 747 ; GFX8: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ugt), [[AND1]](s64), [[C8]] 748 ; GFX8: [[ICMP2:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[AND1]](s64), [[C8]] 749 ; GFX8: [[C9:%[0-9]+]]:_(s32) = G_CONSTANT i32 1 750 ; GFX8: [[AND2:%[0-9]+]]:_(s32) = G_AND [[OR]], [[C9]] 751 ; GFX8: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP2]](s1), [[AND2]], [[C1]] 752 ; GFX8: [[SELECT2:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s1), [[C9]], [[SELECT1]] 753 ; GFX8: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[OR]], [[SELECT2]] 754 ; GFX8: [[FNEG:%[0-9]+]]:_(s32) = G_FNEG [[ADD]] 755 ; GFX8: [[ICMP3:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[ASHR]](s64), [[C2]] 756 ; GFX8: [[SELECT3:%[0-9]+]]:_(s32) = G_SELECT [[ICMP3]](s1), [[FNEG]], [[ADD]] 757 ; GFX8: [[FPTRUNC:%[0-9]+]]:_(s16) = G_FPTRUNC [[SELECT3]](s32) 758 ; GFX8: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR [[UV1]], [[C]](s32) 759 ; GFX8: [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[UV1]](s64) 760 ; GFX8: [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ASHR1]](s64) 761 ; GFX8: [[UADDO2:%[0-9]+]]:_(s32), [[UADDO3:%[0-9]+]]:_(s1) = G_UADDO [[UV6]], [[UV8]] 762 ; GFX8: [[UADDE2:%[0-9]+]]:_(s32), [[UADDE3:%[0-9]+]]:_(s1) = G_UADDE [[UV7]], [[UV9]], [[UADDO3]] 763 ; GFX8: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UADDO2]](s32), [[UADDE2]](s32) 764 ; GFX8: [[XOR1:%[0-9]+]]:_(s64) = G_XOR [[MV1]], [[ASHR1]] 765 ; GFX8: [[CTLZ_ZERO_UNDEF1:%[0-9]+]]:_(s32) = G_CTLZ_ZERO_UNDEF [[XOR1]](s64) 766 ; GFX8: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[C3]], [[CTLZ_ZERO_UNDEF1]] 767 ; GFX8: [[ICMP4:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[XOR1]](s64), [[C2]] 768 ; GFX8: [[SELECT4:%[0-9]+]]:_(s32) = G_SELECT [[ICMP4]](s1), [[SUB1]], [[C1]] 769 ; GFX8: [[SHL2:%[0-9]+]]:_(s64) = G_SHL [[XOR1]], [[CTLZ_ZERO_UNDEF1]](s32) 770 ; GFX8: [[AND3:%[0-9]+]]:_(s64) = G_AND [[SHL2]], [[C4]] 771 ; GFX8: [[AND4:%[0-9]+]]:_(s64) = G_AND [[AND3]], [[C5]] 772 ; GFX8: [[LSHR1:%[0-9]+]]:_(s64) = G_LSHR [[AND3]], [[C6]](s32) 773 ; GFX8: [[SHL3:%[0-9]+]]:_(s32) = G_SHL [[SELECT4]], [[C7]](s32) 774 ; GFX8: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR1]](s64) 775 ; GFX8: [[OR1:%[0-9]+]]:_(s32) = G_OR [[SHL3]], [[TRUNC1]] 776 ; GFX8: [[ICMP5:%[0-9]+]]:_(s1) = G_ICMP intpred(ugt), [[AND4]](s64), [[C8]] 777 ; GFX8: [[ICMP6:%[0-9]+]]:_(s1) = G_ICMP intpred(eq), [[AND4]](s64), [[C8]] 778 ; GFX8: [[AND5:%[0-9]+]]:_(s32) = G_AND [[OR1]], [[C9]] 779 ; GFX8: [[SELECT5:%[0-9]+]]:_(s32) = G_SELECT [[ICMP6]](s1), [[AND5]], [[C1]] 780 ; GFX8: [[SELECT6:%[0-9]+]]:_(s32) = G_SELECT [[ICMP5]](s1), [[C9]], [[SELECT5]] 781 ; GFX8: [[ADD1:%[0-9]+]]:_(s32) = G_ADD [[OR1]], [[SELECT6]] 782 ; GFX8: [[FNEG1:%[0-9]+]]:_(s32) = G_FNEG [[ADD1]] 783 ; GFX8: [[ICMP7:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[ASHR1]](s64), [[C2]] 784 ; GFX8: [[SELECT7:%[0-9]+]]:_(s32) = G_SELECT [[ICMP7]](s1), [[FNEG1]], [[ADD1]] 785 ; GFX8: [[FPTRUNC1:%[0-9]+]]:_(s16) = G_FPTRUNC [[SELECT7]](s32) 786 ; GFX8: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[FPTRUNC]](s16) 787 ; GFX8: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[FPTRUNC1]](s16) 788 ; GFX8: [[C10:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 789 ; GFX8: [[SHL4:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C10]](s32) 790 ; GFX8: [[OR2:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL4]] 791 ; GFX8: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR2]](s32) 792 ; GFX8: $vgpr0 = COPY [[BITCAST]](<2 x s16>) 793 %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 794 %1:_(<2 x s16>) = G_SITOFP %0 795 $vgpr0 = COPY %1 796... 797