1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -march=amdgcn -mcpu=fiji -O0 -run-pass=legalizer -o - %s | FileCheck -check-prefix=VI %s 3# RUN: llc -march=amdgcn -mcpu=gfx900 -O0 -run-pass=legalizer -o - %s | FileCheck -check-prefix=GFX9 %s 4# RUN: llc -march=amdgcn -mcpu=tahiti -O0 -run-pass=legalizer -global-isel-abort=0 -o - %s | FileCheck -check-prefix=SI %s 5# RUN: llc -march=amdgcn -mcpu=gfx1010 -O0 -run-pass=legalizer -o - %s | FileCheck -check-prefix=GFX9 %s 6 7--- 8name: test_addrspacecast_p0_to_p1 9machineFunctionInfo: 10 argumentInfo: 11 queuePtr: { reg: '$sgpr4_sgpr5' } 12 13body: | 14 bb.0: 15 liveins: $vgpr0_vgpr1 16 17 ; VI-LABEL: name: test_addrspacecast_p0_to_p1 18 ; VI: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 19 ; VI: [[BITCAST:%[0-9]+]]:_(p1) = G_BITCAST [[COPY]](p0) 20 ; VI: $vgpr0_vgpr1 = COPY [[BITCAST]](p1) 21 ; GFX9-LABEL: name: test_addrspacecast_p0_to_p1 22 ; GFX9: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 23 ; GFX9: [[BITCAST:%[0-9]+]]:_(p1) = G_BITCAST [[COPY]](p0) 24 ; GFX9: $vgpr0_vgpr1 = COPY [[BITCAST]](p1) 25 ; SI-LABEL: name: test_addrspacecast_p0_to_p1 26 ; SI: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 27 ; SI: [[BITCAST:%[0-9]+]]:_(p1) = G_BITCAST [[COPY]](p0) 28 ; SI: $vgpr0_vgpr1 = COPY [[BITCAST]](p1) 29 %0:_(p0) = COPY $vgpr0_vgpr1 30 %1:_(p1) = G_ADDRSPACE_CAST %0 31 $vgpr0_vgpr1 = COPY %1 32... 33 34--- 35name: test_addrspacecast_p1_to_p0 36machineFunctionInfo: 37 argumentInfo: 38 queuePtr: { reg: '$sgpr4_sgpr5' } 39 40body: | 41 bb.0: 42 liveins: $vgpr0_vgpr1 43 44 ; VI-LABEL: name: test_addrspacecast_p1_to_p0 45 ; VI: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 46 ; VI: [[BITCAST:%[0-9]+]]:_(p0) = G_BITCAST [[COPY]](p1) 47 ; VI: $vgpr0_vgpr1 = COPY [[BITCAST]](p0) 48 ; GFX9-LABEL: name: test_addrspacecast_p1_to_p0 49 ; GFX9: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 50 ; GFX9: [[BITCAST:%[0-9]+]]:_(p0) = G_BITCAST [[COPY]](p1) 51 ; GFX9: $vgpr0_vgpr1 = COPY [[BITCAST]](p0) 52 ; SI-LABEL: name: test_addrspacecast_p1_to_p0 53 ; SI: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1 54 ; SI: [[BITCAST:%[0-9]+]]:_(p0) = G_BITCAST [[COPY]](p1) 55 ; SI: $vgpr0_vgpr1 = COPY [[BITCAST]](p0) 56 %0:_(p1) = COPY $vgpr0_vgpr1 57 %1:_(p0) = G_ADDRSPACE_CAST %0 58 $vgpr0_vgpr1 = COPY %1 59... 60 61--- 62name: test_addrspacecast_p0_to_p4 63machineFunctionInfo: 64 argumentInfo: 65 queuePtr: { reg: '$sgpr4_sgpr5' } 66body: | 67 bb.0: 68 liveins: $vgpr0_vgpr1 69 70 ; VI-LABEL: name: test_addrspacecast_p0_to_p4 71 ; VI: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 72 ; VI: [[BITCAST:%[0-9]+]]:_(p4) = G_BITCAST [[COPY]](p0) 73 ; VI: $vgpr0_vgpr1 = COPY [[BITCAST]](p4) 74 ; GFX9-LABEL: name: test_addrspacecast_p0_to_p4 75 ; GFX9: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 76 ; GFX9: [[BITCAST:%[0-9]+]]:_(p4) = G_BITCAST [[COPY]](p0) 77 ; GFX9: $vgpr0_vgpr1 = COPY [[BITCAST]](p4) 78 ; SI-LABEL: name: test_addrspacecast_p0_to_p4 79 ; SI: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 80 ; SI: [[BITCAST:%[0-9]+]]:_(p4) = G_BITCAST [[COPY]](p0) 81 ; SI: $vgpr0_vgpr1 = COPY [[BITCAST]](p4) 82 %0:_(p0) = COPY $vgpr0_vgpr1 83 %1:_(p4) = G_ADDRSPACE_CAST %0 84 $vgpr0_vgpr1 = COPY %1 85... 86 87--- 88name: test_addrspacecast_p4_to_p0 89machineFunctionInfo: 90 argumentInfo: 91 queuePtr: { reg: '$sgpr4_sgpr5' } 92body: | 93 bb.0: 94 liveins: $vgpr0_vgpr1 95 96 ; VI-LABEL: name: test_addrspacecast_p4_to_p0 97 ; VI: [[COPY:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr1 98 ; VI: [[BITCAST:%[0-9]+]]:_(p0) = G_BITCAST [[COPY]](p4) 99 ; VI: $vgpr0_vgpr1 = COPY [[BITCAST]](p0) 100 ; GFX9-LABEL: name: test_addrspacecast_p4_to_p0 101 ; GFX9: [[COPY:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr1 102 ; GFX9: [[BITCAST:%[0-9]+]]:_(p0) = G_BITCAST [[COPY]](p4) 103 ; GFX9: $vgpr0_vgpr1 = COPY [[BITCAST]](p0) 104 ; SI-LABEL: name: test_addrspacecast_p4_to_p0 105 ; SI: [[COPY:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr1 106 ; SI: [[BITCAST:%[0-9]+]]:_(p0) = G_BITCAST [[COPY]](p4) 107 ; SI: $vgpr0_vgpr1 = COPY [[BITCAST]](p0) 108 %0:_(p4) = COPY $vgpr0_vgpr1 109 %1:_(p0) = G_ADDRSPACE_CAST %0 110 $vgpr0_vgpr1 = COPY %1 111... 112 113--- 114name: test_addrspacecast_p0_to_p999 115machineFunctionInfo: 116 argumentInfo: 117 queuePtr: { reg: '$sgpr4_sgpr5' } 118body: | 119 bb.0: 120 liveins: $vgpr0_vgpr1 121 122 ; VI-LABEL: name: test_addrspacecast_p0_to_p999 123 ; VI: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 124 ; VI: [[BITCAST:%[0-9]+]]:_(p999) = G_BITCAST [[COPY]](p0) 125 ; VI: $vgpr0_vgpr1 = COPY [[BITCAST]](p999) 126 ; GFX9-LABEL: name: test_addrspacecast_p0_to_p999 127 ; GFX9: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 128 ; GFX9: [[BITCAST:%[0-9]+]]:_(p999) = G_BITCAST [[COPY]](p0) 129 ; GFX9: $vgpr0_vgpr1 = COPY [[BITCAST]](p999) 130 ; SI-LABEL: name: test_addrspacecast_p0_to_p999 131 ; SI: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 132 ; SI: [[BITCAST:%[0-9]+]]:_(p999) = G_BITCAST [[COPY]](p0) 133 ; SI: $vgpr0_vgpr1 = COPY [[BITCAST]](p999) 134 %0:_(p0) = COPY $vgpr0_vgpr1 135 %1:_(p999) = G_ADDRSPACE_CAST %0 136 $vgpr0_vgpr1 = COPY %1 137... 138 139--- 140name: test_addrspacecast_p999_to_p0 141machineFunctionInfo: 142 argumentInfo: 143 queuePtr: { reg: '$sgpr4_sgpr5' } 144body: | 145 bb.0: 146 liveins: $vgpr0_vgpr1 147 148 ; VI-LABEL: name: test_addrspacecast_p999_to_p0 149 ; VI: [[COPY:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1 150 ; VI: [[BITCAST:%[0-9]+]]:_(p0) = G_BITCAST [[COPY]](p999) 151 ; VI: $vgpr0_vgpr1 = COPY [[BITCAST]](p0) 152 ; GFX9-LABEL: name: test_addrspacecast_p999_to_p0 153 ; GFX9: [[COPY:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1 154 ; GFX9: [[BITCAST:%[0-9]+]]:_(p0) = G_BITCAST [[COPY]](p999) 155 ; GFX9: $vgpr0_vgpr1 = COPY [[BITCAST]](p0) 156 ; SI-LABEL: name: test_addrspacecast_p999_to_p0 157 ; SI: [[COPY:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1 158 ; SI: [[BITCAST:%[0-9]+]]:_(p0) = G_BITCAST [[COPY]](p999) 159 ; SI: $vgpr0_vgpr1 = COPY [[BITCAST]](p0) 160 %0:_(p999) = COPY $vgpr0_vgpr1 161 %1:_(p0) = G_ADDRSPACE_CAST %0 162 $vgpr0_vgpr1 = COPY %1 163... 164 165--- 166name: test_addrspacecast_p5_to_p0 167machineFunctionInfo: 168 argumentInfo: 169 queuePtr: { reg: '$sgpr4_sgpr5' } 170body: | 171 bb.0: 172 liveins: $vgpr0 173 174 ; VI-LABEL: name: test_addrspacecast_p5_to_p0 175 ; VI: [[COPY:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr4_sgpr5 176 ; VI: [[COPY1:%[0-9]+]]:_(p5) = COPY $vgpr0 177 ; VI: [[C:%[0-9]+]]:_(p5) = G_CONSTANT i32 -1 178 ; VI: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 179 ; VI: [[COPY2:%[0-9]+]]:_(p4) = COPY [[COPY]](p4) 180 ; VI: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 68 181 ; VI: [[PTR_ADD:%[0-9]+]]:_(p4) = G_PTR_ADD [[COPY2]], [[C2]](s64) 182 ; VI: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p4) :: (dereferenceable invariant load (s32), addrspace 4) 183 ; VI: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY1]](p5), [[C]] 184 ; VI: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY1]](p5) 185 ; VI: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[PTRTOINT]](s32), [[LOAD]](s32) 186 ; VI: [[SELECT:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[MV]], [[C1]] 187 ; VI: $vgpr0_vgpr1 = COPY [[SELECT]](p0) 188 ; GFX9-LABEL: name: test_addrspacecast_p5_to_p0 189 ; GFX9: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0 190 ; GFX9: [[C:%[0-9]+]]:_(p5) = G_CONSTANT i32 -1 191 ; GFX9: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 192 ; GFX9: [[S_GETREG_B32_:%[0-9]+]]:sreg_32(s32) = S_GETREG_B32 30735 193 ; GFX9: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 194 ; GFX9: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[S_GETREG_B32_]], [[C2]](s32) 195 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p5), [[C]] 196 ; GFX9: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY]](p5) 197 ; GFX9: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[PTRTOINT]](s32), [[SHL]](s32) 198 ; GFX9: [[SELECT:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[MV]], [[C1]] 199 ; GFX9: $vgpr0_vgpr1 = COPY [[SELECT]](p0) 200 ; SI-LABEL: name: test_addrspacecast_p5_to_p0 201 ; SI: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0 202 ; SI: [[ADDRSPACE_CAST:%[0-9]+]]:_(p0) = G_ADDRSPACE_CAST [[COPY]](p5) 203 ; SI: $vgpr0_vgpr1 = COPY [[ADDRSPACE_CAST]](p0) 204 %0:_(p5) = COPY $vgpr0 205 %1:_(p0) = G_ADDRSPACE_CAST %0 206 $vgpr0_vgpr1 = COPY %1 207... 208 209--- 210name: test_addrspacecast_p0_to_p5 211machineFunctionInfo: 212 argumentInfo: 213 queuePtr: { reg: '$sgpr4_sgpr5' } 214body: | 215 bb.0: 216 liveins: $vgpr0_vgpr1 217 218 ; VI-LABEL: name: test_addrspacecast_p0_to_p5 219 ; VI: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 220 ; VI: [[C:%[0-9]+]]:_(p5) = G_CONSTANT i32 -1 221 ; VI: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 222 ; VI: [[EXTRACT:%[0-9]+]]:_(p5) = G_EXTRACT [[COPY]](p0), 0 223 ; VI: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p0), [[C1]] 224 ; VI: [[SELECT:%[0-9]+]]:_(p5) = G_SELECT [[ICMP]](s1), [[EXTRACT]], [[C]] 225 ; VI: $vgpr0 = COPY [[SELECT]](p5) 226 ; GFX9-LABEL: name: test_addrspacecast_p0_to_p5 227 ; GFX9: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 228 ; GFX9: [[C:%[0-9]+]]:_(p5) = G_CONSTANT i32 -1 229 ; GFX9: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 230 ; GFX9: [[EXTRACT:%[0-9]+]]:_(p5) = G_EXTRACT [[COPY]](p0), 0 231 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p0), [[C1]] 232 ; GFX9: [[SELECT:%[0-9]+]]:_(p5) = G_SELECT [[ICMP]](s1), [[EXTRACT]], [[C]] 233 ; GFX9: $vgpr0 = COPY [[SELECT]](p5) 234 ; SI-LABEL: name: test_addrspacecast_p0_to_p5 235 ; SI: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 236 ; SI: [[C:%[0-9]+]]:_(p5) = G_CONSTANT i32 -1 237 ; SI: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 238 ; SI: [[EXTRACT:%[0-9]+]]:_(p5) = G_EXTRACT [[COPY]](p0), 0 239 ; SI: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p0), [[C1]] 240 ; SI: [[SELECT:%[0-9]+]]:_(p5) = G_SELECT [[ICMP]](s1), [[EXTRACT]], [[C]] 241 ; SI: $vgpr0 = COPY [[SELECT]](p5) 242 %0:_(p0) = COPY $vgpr0_vgpr1 243 %1:_(p5) = G_ADDRSPACE_CAST %0 244 $vgpr0 = COPY %1 245... 246 247--- 248name: test_addrspacecast_p3_to_p0 249machineFunctionInfo: 250 argumentInfo: 251 queuePtr: { reg: '$sgpr4_sgpr5' } 252 253body: | 254 bb.0: 255 liveins: $vgpr0 256 257 ; VI-LABEL: name: test_addrspacecast_p3_to_p0 258 ; VI: [[COPY:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr4_sgpr5 259 ; VI: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr0 260 ; VI: [[C:%[0-9]+]]:_(p3) = G_CONSTANT i32 -1 261 ; VI: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 262 ; VI: [[COPY2:%[0-9]+]]:_(p4) = COPY [[COPY]](p4) 263 ; VI: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 64 264 ; VI: [[PTR_ADD:%[0-9]+]]:_(p4) = G_PTR_ADD [[COPY2]], [[C2]](s64) 265 ; VI: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p4) :: (dereferenceable invariant load (s32), align 64, addrspace 4) 266 ; VI: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY1]](p3), [[C]] 267 ; VI: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY1]](p3) 268 ; VI: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[PTRTOINT]](s32), [[LOAD]](s32) 269 ; VI: [[SELECT:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[MV]], [[C1]] 270 ; VI: $vgpr0_vgpr1 = COPY [[SELECT]](p0) 271 ; GFX9-LABEL: name: test_addrspacecast_p3_to_p0 272 ; GFX9: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0 273 ; GFX9: [[C:%[0-9]+]]:_(p3) = G_CONSTANT i32 -1 274 ; GFX9: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 275 ; GFX9: [[S_GETREG_B32_:%[0-9]+]]:sreg_32(s32) = S_GETREG_B32 31759 276 ; GFX9: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 277 ; GFX9: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[S_GETREG_B32_]], [[C2]](s32) 278 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p3), [[C]] 279 ; GFX9: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY]](p3) 280 ; GFX9: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[PTRTOINT]](s32), [[SHL]](s32) 281 ; GFX9: [[SELECT:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[MV]], [[C1]] 282 ; GFX9: $vgpr0_vgpr1 = COPY [[SELECT]](p0) 283 ; SI-LABEL: name: test_addrspacecast_p3_to_p0 284 ; SI: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0 285 ; SI: [[ADDRSPACE_CAST:%[0-9]+]]:_(p0) = G_ADDRSPACE_CAST [[COPY]](p3) 286 ; SI: $vgpr0_vgpr1 = COPY [[ADDRSPACE_CAST]](p0) 287 %0:_(p3) = COPY $vgpr0 288 %1:_(p0) = G_ADDRSPACE_CAST %0 289 $vgpr0_vgpr1 = COPY %1 290... 291 292--- 293name: test_addrspacecast_p0_to_p3 294machineFunctionInfo: 295 argumentInfo: 296 queuePtr: { reg: '$sgpr4_sgpr5' } 297body: | 298 bb.0: 299 liveins: $vgpr0_vgpr1 300 301 ; VI-LABEL: name: test_addrspacecast_p0_to_p3 302 ; VI: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 303 ; VI: [[C:%[0-9]+]]:_(p3) = G_CONSTANT i32 -1 304 ; VI: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 305 ; VI: [[EXTRACT:%[0-9]+]]:_(p3) = G_EXTRACT [[COPY]](p0), 0 306 ; VI: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p0), [[C1]] 307 ; VI: [[SELECT:%[0-9]+]]:_(p3) = G_SELECT [[ICMP]](s1), [[EXTRACT]], [[C]] 308 ; VI: $vgpr0 = COPY [[SELECT]](p3) 309 ; GFX9-LABEL: name: test_addrspacecast_p0_to_p3 310 ; GFX9: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 311 ; GFX9: [[C:%[0-9]+]]:_(p3) = G_CONSTANT i32 -1 312 ; GFX9: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 313 ; GFX9: [[EXTRACT:%[0-9]+]]:_(p3) = G_EXTRACT [[COPY]](p0), 0 314 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p0), [[C1]] 315 ; GFX9: [[SELECT:%[0-9]+]]:_(p3) = G_SELECT [[ICMP]](s1), [[EXTRACT]], [[C]] 316 ; GFX9: $vgpr0 = COPY [[SELECT]](p3) 317 ; SI-LABEL: name: test_addrspacecast_p0_to_p3 318 ; SI: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 319 ; SI: [[C:%[0-9]+]]:_(p3) = G_CONSTANT i32 -1 320 ; SI: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 321 ; SI: [[EXTRACT:%[0-9]+]]:_(p3) = G_EXTRACT [[COPY]](p0), 0 322 ; SI: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p0), [[C1]] 323 ; SI: [[SELECT:%[0-9]+]]:_(p3) = G_SELECT [[ICMP]](s1), [[EXTRACT]], [[C]] 324 ; SI: $vgpr0 = COPY [[SELECT]](p3) 325 %0:_(p0) = COPY $vgpr0_vgpr1 326 %1:_(p3) = G_ADDRSPACE_CAST %0 327 $vgpr0 = COPY %1 328... 329 330--- 331name: test_addrspacecast_v2p0_to_v2p1 332machineFunctionInfo: 333 argumentInfo: 334 queuePtr: { reg: '$sgpr4_sgpr5' } 335body: | 336 bb.0: 337 liveins: $vgpr0_vgpr1_vgpr2_vgpr3 338 339 ; VI-LABEL: name: test_addrspacecast_v2p0_to_v2p1 340 ; VI: [[COPY:%[0-9]+]]:_(<2 x p0>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 341 ; VI: [[UV:%[0-9]+]]:_(p0), [[UV1:%[0-9]+]]:_(p0) = G_UNMERGE_VALUES [[COPY]](<2 x p0>) 342 ; VI: [[BITCAST:%[0-9]+]]:_(p1) = G_BITCAST [[UV]](p0) 343 ; VI: [[BITCAST1:%[0-9]+]]:_(p1) = G_BITCAST [[UV1]](p0) 344 ; VI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p1>) = G_BUILD_VECTOR [[BITCAST]](p1), [[BITCAST1]](p1) 345 ; VI: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x p1>) 346 ; GFX9-LABEL: name: test_addrspacecast_v2p0_to_v2p1 347 ; GFX9: [[COPY:%[0-9]+]]:_(<2 x p0>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 348 ; GFX9: [[UV:%[0-9]+]]:_(p0), [[UV1:%[0-9]+]]:_(p0) = G_UNMERGE_VALUES [[COPY]](<2 x p0>) 349 ; GFX9: [[BITCAST:%[0-9]+]]:_(p1) = G_BITCAST [[UV]](p0) 350 ; GFX9: [[BITCAST1:%[0-9]+]]:_(p1) = G_BITCAST [[UV1]](p0) 351 ; GFX9: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p1>) = G_BUILD_VECTOR [[BITCAST]](p1), [[BITCAST1]](p1) 352 ; GFX9: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x p1>) 353 ; SI-LABEL: name: test_addrspacecast_v2p0_to_v2p1 354 ; SI: [[COPY:%[0-9]+]]:_(<2 x p0>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 355 ; SI: [[UV:%[0-9]+]]:_(p0), [[UV1:%[0-9]+]]:_(p0) = G_UNMERGE_VALUES [[COPY]](<2 x p0>) 356 ; SI: [[BITCAST:%[0-9]+]]:_(p1) = G_BITCAST [[UV]](p0) 357 ; SI: [[BITCAST1:%[0-9]+]]:_(p1) = G_BITCAST [[UV1]](p0) 358 ; SI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p1>) = G_BUILD_VECTOR [[BITCAST]](p1), [[BITCAST1]](p1) 359 ; SI: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x p1>) 360 %0:_(<2 x p0>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 361 %1:_(<2 x p1>) = G_ADDRSPACE_CAST %0 362 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1 363... 364 365--- 366name: test_addrspacecast_v2p1_to_v2p0 367machineFunctionInfo: 368 argumentInfo: 369 queuePtr: { reg: '$sgpr4_sgpr5' } 370body: | 371 bb.0: 372 liveins: $vgpr0_vgpr1_vgpr2_vgpr3 373 374 ; VI-LABEL: name: test_addrspacecast_v2p1_to_v2p0 375 ; VI: [[COPY:%[0-9]+]]:_(<2 x p1>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 376 ; VI: [[UV:%[0-9]+]]:_(p1), [[UV1:%[0-9]+]]:_(p1) = G_UNMERGE_VALUES [[COPY]](<2 x p1>) 377 ; VI: [[BITCAST:%[0-9]+]]:_(p0) = G_BITCAST [[UV]](p1) 378 ; VI: [[BITCAST1:%[0-9]+]]:_(p0) = G_BITCAST [[UV1]](p1) 379 ; VI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p0>) = G_BUILD_VECTOR [[BITCAST]](p0), [[BITCAST1]](p0) 380 ; VI: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x p0>) 381 ; GFX9-LABEL: name: test_addrspacecast_v2p1_to_v2p0 382 ; GFX9: [[COPY:%[0-9]+]]:_(<2 x p1>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 383 ; GFX9: [[UV:%[0-9]+]]:_(p1), [[UV1:%[0-9]+]]:_(p1) = G_UNMERGE_VALUES [[COPY]](<2 x p1>) 384 ; GFX9: [[BITCAST:%[0-9]+]]:_(p0) = G_BITCAST [[UV]](p1) 385 ; GFX9: [[BITCAST1:%[0-9]+]]:_(p0) = G_BITCAST [[UV1]](p1) 386 ; GFX9: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p0>) = G_BUILD_VECTOR [[BITCAST]](p0), [[BITCAST1]](p0) 387 ; GFX9: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x p0>) 388 ; SI-LABEL: name: test_addrspacecast_v2p1_to_v2p0 389 ; SI: [[COPY:%[0-9]+]]:_(<2 x p1>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 390 ; SI: [[UV:%[0-9]+]]:_(p1), [[UV1:%[0-9]+]]:_(p1) = G_UNMERGE_VALUES [[COPY]](<2 x p1>) 391 ; SI: [[BITCAST:%[0-9]+]]:_(p0) = G_BITCAST [[UV]](p1) 392 ; SI: [[BITCAST1:%[0-9]+]]:_(p0) = G_BITCAST [[UV1]](p1) 393 ; SI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p0>) = G_BUILD_VECTOR [[BITCAST]](p0), [[BITCAST1]](p0) 394 ; SI: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x p0>) 395 %0:_(<2 x p1>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 396 %1:_(<2 x p0>) = G_ADDRSPACE_CAST %0 397 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1 398... 399 400--- 401name: test_addrspacecast_v2p0_to_v2p3 402machineFunctionInfo: 403 argumentInfo: 404 queuePtr: { reg: '$sgpr4_sgpr5' } 405body: | 406 bb.0: 407 liveins: $vgpr0_vgpr1_vgpr2_vgpr3 408 409 ; VI-LABEL: name: test_addrspacecast_v2p0_to_v2p3 410 ; VI: [[COPY:%[0-9]+]]:_(<2 x p0>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 411 ; VI: [[UV:%[0-9]+]]:_(p0), [[UV1:%[0-9]+]]:_(p0) = G_UNMERGE_VALUES [[COPY]](<2 x p0>) 412 ; VI: [[C:%[0-9]+]]:_(p3) = G_CONSTANT i32 -1 413 ; VI: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 414 ; VI: [[EXTRACT:%[0-9]+]]:_(p3) = G_EXTRACT [[UV]](p0), 0 415 ; VI: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](p0), [[C1]] 416 ; VI: [[SELECT:%[0-9]+]]:_(p3) = G_SELECT [[ICMP]](s1), [[EXTRACT]], [[C]] 417 ; VI: [[EXTRACT1:%[0-9]+]]:_(p3) = G_EXTRACT [[UV1]](p0), 0 418 ; VI: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](p0), [[C1]] 419 ; VI: [[SELECT1:%[0-9]+]]:_(p3) = G_SELECT [[ICMP1]](s1), [[EXTRACT1]], [[C]] 420 ; VI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p3>) = G_BUILD_VECTOR [[SELECT]](p3), [[SELECT1]](p3) 421 ; VI: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x p3>) 422 ; GFX9-LABEL: name: test_addrspacecast_v2p0_to_v2p3 423 ; GFX9: [[COPY:%[0-9]+]]:_(<2 x p0>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 424 ; GFX9: [[UV:%[0-9]+]]:_(p0), [[UV1:%[0-9]+]]:_(p0) = G_UNMERGE_VALUES [[COPY]](<2 x p0>) 425 ; GFX9: [[C:%[0-9]+]]:_(p3) = G_CONSTANT i32 -1 426 ; GFX9: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 427 ; GFX9: [[EXTRACT:%[0-9]+]]:_(p3) = G_EXTRACT [[UV]](p0), 0 428 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](p0), [[C1]] 429 ; GFX9: [[SELECT:%[0-9]+]]:_(p3) = G_SELECT [[ICMP]](s1), [[EXTRACT]], [[C]] 430 ; GFX9: [[EXTRACT1:%[0-9]+]]:_(p3) = G_EXTRACT [[UV1]](p0), 0 431 ; GFX9: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](p0), [[C1]] 432 ; GFX9: [[SELECT1:%[0-9]+]]:_(p3) = G_SELECT [[ICMP1]](s1), [[EXTRACT1]], [[C]] 433 ; GFX9: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p3>) = G_BUILD_VECTOR [[SELECT]](p3), [[SELECT1]](p3) 434 ; GFX9: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x p3>) 435 ; SI-LABEL: name: test_addrspacecast_v2p0_to_v2p3 436 ; SI: [[COPY:%[0-9]+]]:_(<2 x p0>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 437 ; SI: [[UV:%[0-9]+]]:_(p0), [[UV1:%[0-9]+]]:_(p0) = G_UNMERGE_VALUES [[COPY]](<2 x p0>) 438 ; SI: [[C:%[0-9]+]]:_(p3) = G_CONSTANT i32 -1 439 ; SI: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 440 ; SI: [[EXTRACT:%[0-9]+]]:_(p3) = G_EXTRACT [[UV]](p0), 0 441 ; SI: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](p0), [[C1]] 442 ; SI: [[SELECT:%[0-9]+]]:_(p3) = G_SELECT [[ICMP]](s1), [[EXTRACT]], [[C]] 443 ; SI: [[EXTRACT1:%[0-9]+]]:_(p3) = G_EXTRACT [[UV1]](p0), 0 444 ; SI: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](p0), [[C1]] 445 ; SI: [[SELECT1:%[0-9]+]]:_(p3) = G_SELECT [[ICMP1]](s1), [[EXTRACT1]], [[C]] 446 ; SI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p3>) = G_BUILD_VECTOR [[SELECT]](p3), [[SELECT1]](p3) 447 ; SI: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x p3>) 448 %0:_(<2 x p0>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 449 %1:_(<2 x p3>) = G_ADDRSPACE_CAST %0 450 $vgpr0_vgpr1 = COPY %1 451... 452 453--- 454name: test_addrspacecast_v2p3_to_v2p0 455machineFunctionInfo: 456 argumentInfo: 457 queuePtr: { reg: '$sgpr4_sgpr5' } 458body: | 459 bb.0: 460 liveins: $vgpr0_vgpr1 461 462 ; VI-LABEL: name: test_addrspacecast_v2p3_to_v2p0 463 ; VI: [[COPY:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr4_sgpr5 464 ; VI: [[COPY1:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr0_vgpr1 465 ; VI: [[UV:%[0-9]+]]:_(p3), [[UV1:%[0-9]+]]:_(p3) = G_UNMERGE_VALUES [[COPY1]](<2 x p3>) 466 ; VI: [[C:%[0-9]+]]:_(p3) = G_CONSTANT i32 -1 467 ; VI: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 468 ; VI: [[COPY2:%[0-9]+]]:_(p4) = COPY [[COPY]](p4) 469 ; VI: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 64 470 ; VI: [[PTR_ADD:%[0-9]+]]:_(p4) = G_PTR_ADD [[COPY2]], [[C2]](s64) 471 ; VI: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p4) :: (dereferenceable invariant load (s32), align 64, addrspace 4) 472 ; VI: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](p3), [[C]] 473 ; VI: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[UV]](p3) 474 ; VI: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[PTRTOINT]](s32), [[LOAD]](s32) 475 ; VI: [[SELECT:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[MV]], [[C1]] 476 ; VI: [[COPY3:%[0-9]+]]:_(p4) = COPY [[COPY]](p4) 477 ; VI: [[PTR_ADD1:%[0-9]+]]:_(p4) = G_PTR_ADD [[COPY3]], [[C2]](s64) 478 ; VI: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p4) :: (dereferenceable invariant load (s32), align 64, addrspace 4) 479 ; VI: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](p3), [[C]] 480 ; VI: [[PTRTOINT1:%[0-9]+]]:_(s32) = G_PTRTOINT [[UV1]](p3) 481 ; VI: [[MV1:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[PTRTOINT1]](s32), [[LOAD1]](s32) 482 ; VI: [[SELECT1:%[0-9]+]]:_(p0) = G_SELECT [[ICMP1]](s1), [[MV1]], [[C1]] 483 ; VI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p0>) = G_BUILD_VECTOR [[SELECT]](p0), [[SELECT1]](p0) 484 ; VI: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x p0>) 485 ; GFX9-LABEL: name: test_addrspacecast_v2p3_to_v2p0 486 ; GFX9: [[COPY:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr0_vgpr1 487 ; GFX9: [[UV:%[0-9]+]]:_(p3), [[UV1:%[0-9]+]]:_(p3) = G_UNMERGE_VALUES [[COPY]](<2 x p3>) 488 ; GFX9: [[C:%[0-9]+]]:_(p3) = G_CONSTANT i32 -1 489 ; GFX9: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0 490 ; GFX9: [[S_GETREG_B32_:%[0-9]+]]:sreg_32(s32) = S_GETREG_B32 31759 491 ; GFX9: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 492 ; GFX9: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[S_GETREG_B32_]], [[C2]](s32) 493 ; GFX9: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](p3), [[C]] 494 ; GFX9: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[UV]](p3) 495 ; GFX9: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[PTRTOINT]](s32), [[SHL]](s32) 496 ; GFX9: [[SELECT:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[MV]], [[C1]] 497 ; GFX9: [[S_GETREG_B32_1:%[0-9]+]]:sreg_32(s32) = S_GETREG_B32 31759 498 ; GFX9: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[S_GETREG_B32_1]], [[C2]](s32) 499 ; GFX9: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](p3), [[C]] 500 ; GFX9: [[PTRTOINT1:%[0-9]+]]:_(s32) = G_PTRTOINT [[UV1]](p3) 501 ; GFX9: [[MV1:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[PTRTOINT1]](s32), [[SHL1]](s32) 502 ; GFX9: [[SELECT1:%[0-9]+]]:_(p0) = G_SELECT [[ICMP1]](s1), [[MV1]], [[C1]] 503 ; GFX9: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p0>) = G_BUILD_VECTOR [[SELECT]](p0), [[SELECT1]](p0) 504 ; GFX9: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x p0>) 505 ; SI-LABEL: name: test_addrspacecast_v2p3_to_v2p0 506 ; SI: [[COPY:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr0_vgpr1 507 ; SI: [[UV:%[0-9]+]]:_(p3), [[UV1:%[0-9]+]]:_(p3) = G_UNMERGE_VALUES [[COPY]](<2 x p3>) 508 ; SI: [[ADDRSPACE_CAST:%[0-9]+]]:_(p0) = G_ADDRSPACE_CAST [[UV]](p3) 509 ; SI: [[ADDRSPACE_CAST1:%[0-9]+]]:_(p0) = G_ADDRSPACE_CAST [[UV1]](p3) 510 ; SI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p0>) = G_BUILD_VECTOR [[ADDRSPACE_CAST]](p0), [[ADDRSPACE_CAST1]](p0) 511 ; SI: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x p0>) 512 %0:_(<2 x p3>) = COPY $vgpr0_vgpr1 513 %1:_(<2 x p0>) = G_ADDRSPACE_CAST %0 514 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1 515... 516 517--- 518name: test_addrspacecast_p4_to_p6 519body: | 520 bb.0: 521 liveins: $vgpr0_vgpr1 522 523 ; VI-LABEL: name: test_addrspacecast_p4_to_p6 524 ; VI: [[COPY:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr1 525 ; VI: [[EXTRACT:%[0-9]+]]:_(p6) = G_EXTRACT [[COPY]](p4), 0 526 ; VI: $vgpr0 = COPY [[EXTRACT]](p6) 527 ; GFX9-LABEL: name: test_addrspacecast_p4_to_p6 528 ; GFX9: [[COPY:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr1 529 ; GFX9: [[EXTRACT:%[0-9]+]]:_(p6) = G_EXTRACT [[COPY]](p4), 0 530 ; GFX9: $vgpr0 = COPY [[EXTRACT]](p6) 531 ; SI-LABEL: name: test_addrspacecast_p4_to_p6 532 ; SI: [[COPY:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr1 533 ; SI: [[EXTRACT:%[0-9]+]]:_(p6) = G_EXTRACT [[COPY]](p4), 0 534 ; SI: $vgpr0 = COPY [[EXTRACT]](p6) 535 %0:_(p4) = COPY $vgpr0_vgpr1 536 %1:_(p6) = G_ADDRSPACE_CAST %0 537 $vgpr0 = COPY %1 538... 539 540--- 541name: test_addrspacecast_p6_to_p4_0 542body: | 543 bb.0: 544 liveins: $vgpr0 545 546 ; VI-LABEL: name: test_addrspacecast_p6_to_p4_0 547 ; VI: [[COPY:%[0-9]+]]:_(p6) = COPY $vgpr0 548 ; VI: [[C:%[0-9]+]]:_(p6) = G_CONSTANT i32 0 549 ; VI: [[MV:%[0-9]+]]:_(p4) = G_MERGE_VALUES [[COPY]](p6), [[C]](p6) 550 ; VI: $vgpr0_vgpr1 = COPY [[MV]](p4) 551 ; GFX9-LABEL: name: test_addrspacecast_p6_to_p4_0 552 ; GFX9: [[COPY:%[0-9]+]]:_(p6) = COPY $vgpr0 553 ; GFX9: [[C:%[0-9]+]]:_(p6) = G_CONSTANT i32 0 554 ; GFX9: [[MV:%[0-9]+]]:_(p4) = G_MERGE_VALUES [[COPY]](p6), [[C]](p6) 555 ; GFX9: $vgpr0_vgpr1 = COPY [[MV]](p4) 556 ; SI-LABEL: name: test_addrspacecast_p6_to_p4_0 557 ; SI: [[COPY:%[0-9]+]]:_(p6) = COPY $vgpr0 558 ; SI: [[C:%[0-9]+]]:_(p6) = G_CONSTANT i32 0 559 ; SI: [[MV:%[0-9]+]]:_(p4) = G_MERGE_VALUES [[COPY]](p6), [[C]](p6) 560 ; SI: $vgpr0_vgpr1 = COPY [[MV]](p4) 561 %0:_(p6) = COPY $vgpr0 562 %1:_(p4) = G_ADDRSPACE_CAST %0 563 $vgpr0_vgpr1 = COPY %1 564... 565 566--- 567name: test_addrspacecast_p6_to_p4_0xdeadbeef 568machineFunctionInfo: 569 highBitsOf32BitAddress: 0xdeadbeef 570body: | 571 bb.0: 572 liveins: $vgpr0 573 574 ; VI-LABEL: name: test_addrspacecast_p6_to_p4_0xdeadbeef 575 ; VI: [[COPY:%[0-9]+]]:_(p6) = COPY $vgpr0 576 ; VI: [[C:%[0-9]+]]:_(p6) = G_CONSTANT i32 -559038737 577 ; VI: [[MV:%[0-9]+]]:_(p4) = G_MERGE_VALUES [[COPY]](p6), [[C]](p6) 578 ; VI: $vgpr0_vgpr1 = COPY [[MV]](p4) 579 ; GFX9-LABEL: name: test_addrspacecast_p6_to_p4_0xdeadbeef 580 ; GFX9: [[COPY:%[0-9]+]]:_(p6) = COPY $vgpr0 581 ; GFX9: [[C:%[0-9]+]]:_(p6) = G_CONSTANT i32 -559038737 582 ; GFX9: [[MV:%[0-9]+]]:_(p4) = G_MERGE_VALUES [[COPY]](p6), [[C]](p6) 583 ; GFX9: $vgpr0_vgpr1 = COPY [[MV]](p4) 584 ; SI-LABEL: name: test_addrspacecast_p6_to_p4_0xdeadbeef 585 ; SI: [[COPY:%[0-9]+]]:_(p6) = COPY $vgpr0 586 ; SI: [[C:%[0-9]+]]:_(p6) = G_CONSTANT i32 -559038737 587 ; SI: [[MV:%[0-9]+]]:_(p4) = G_MERGE_VALUES [[COPY]](p6), [[C]](p6) 588 ; SI: $vgpr0_vgpr1 = COPY [[MV]](p4) 589 %0:_(p6) = COPY $vgpr0 590 %1:_(p4) = G_ADDRSPACE_CAST %0 591 $vgpr0_vgpr1 = COPY %1 592... 593 594--- 595name: test_addrspacecast_p0_to_p6 596body: | 597 bb.0: 598 liveins: $vgpr0_vgpr1 599 600 ; VI-LABEL: name: test_addrspacecast_p0_to_p6 601 ; VI: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 602 ; VI: [[EXTRACT:%[0-9]+]]:_(p6) = G_EXTRACT [[COPY]](p0), 0 603 ; VI: $vgpr0 = COPY [[EXTRACT]](p6) 604 ; GFX9-LABEL: name: test_addrspacecast_p0_to_p6 605 ; GFX9: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 606 ; GFX9: [[EXTRACT:%[0-9]+]]:_(p6) = G_EXTRACT [[COPY]](p0), 0 607 ; GFX9: $vgpr0 = COPY [[EXTRACT]](p6) 608 ; SI-LABEL: name: test_addrspacecast_p0_to_p6 609 ; SI: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 610 ; SI: [[EXTRACT:%[0-9]+]]:_(p6) = G_EXTRACT [[COPY]](p0), 0 611 ; SI: $vgpr0 = COPY [[EXTRACT]](p6) 612 %0:_(p0) = COPY $vgpr0_vgpr1 613 %1:_(p6) = G_ADDRSPACE_CAST %0 614 $vgpr0 = COPY %1 615... 616 617--- 618name: test_addrspacecast_p6_to_p0 619body: | 620 bb.0: 621 liveins: $vgpr0 622 623 ; VI-LABEL: name: test_addrspacecast_p6_to_p0 624 ; VI: [[COPY:%[0-9]+]]:_(p6) = COPY $vgpr0 625 ; VI: [[C:%[0-9]+]]:_(p6) = G_CONSTANT i32 0 626 ; VI: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[COPY]](p6), [[C]](p6) 627 ; VI: $vgpr0_vgpr1 = COPY [[MV]](p0) 628 ; GFX9-LABEL: name: test_addrspacecast_p6_to_p0 629 ; GFX9: [[COPY:%[0-9]+]]:_(p6) = COPY $vgpr0 630 ; GFX9: [[C:%[0-9]+]]:_(p6) = G_CONSTANT i32 0 631 ; GFX9: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[COPY]](p6), [[C]](p6) 632 ; GFX9: $vgpr0_vgpr1 = COPY [[MV]](p0) 633 ; SI-LABEL: name: test_addrspacecast_p6_to_p0 634 ; SI: [[COPY:%[0-9]+]]:_(p6) = COPY $vgpr0 635 ; SI: [[C:%[0-9]+]]:_(p6) = G_CONSTANT i32 0 636 ; SI: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[COPY]](p6), [[C]](p6) 637 ; SI: $vgpr0_vgpr1 = COPY [[MV]](p0) 638 %0:_(p6) = COPY $vgpr0 639 %1:_(p0) = G_ADDRSPACE_CAST %0 640 $vgpr0_vgpr1 = COPY %1 641... 642