brintos

brintos / llvm-project-archived public Read only

0
0
Text · 20.8 KiB · 4471980 Raw
528 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=fiji -O0 -run-pass=legalizer --amdhsa-code-object-version=4 -o - %s  | FileCheck -check-prefixes=GCN,SIVI %s3# RUN: llc -mtriple=amdgcn -mcpu=tahiti -O0 -run-pass=legalizer --amdhsa-code-object-version=4 -o - %s  | FileCheck -check-prefixes=GCN,SIVI %s4# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -O0 -run-pass=legalizer --amdhsa-code-object-version=4 -o - %s  | FileCheck -check-prefixes=GCN,GFX9 %s5# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -O0 -run-pass=legalizer --amdhsa-code-object-version=4 -o - %s  | FileCheck -check-prefixes=GCN,GFX9 %s6# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -O0 -run-pass=legalizer --amdhsa-code-object-version=4 -o - %s  | FileCheck -check-prefixes=GCN,GFX9 %s7 8---9name: test_addrspacecast_p0_to_p110machineFunctionInfo:11  argumentInfo:12    queuePtr: { reg: '$sgpr4_sgpr5' }13 14body: |15  bb.0:16    liveins: $vgpr0_vgpr117 18    ; GCN-LABEL: name: test_addrspacecast_p0_to_p119    ; GCN: liveins: $vgpr0_vgpr120    ; GCN-NEXT: {{  $}}21    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr122    ; GCN-NEXT: [[BITCAST:%[0-9]+]]:_(p1) = G_BITCAST [[COPY]](p0)23    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[BITCAST]](p1)24    %0:_(p0) = COPY $vgpr0_vgpr125    %1:_(p1) = G_ADDRSPACE_CAST %026    $vgpr0_vgpr1 = COPY %127...28 29---30name: test_addrspacecast_p1_to_p031machineFunctionInfo:32  argumentInfo:33    queuePtr: { reg: '$sgpr4_sgpr5' }34 35body: |36  bb.0:37    liveins: $vgpr0_vgpr138 39    ; GCN-LABEL: name: test_addrspacecast_p1_to_p040    ; GCN: liveins: $vgpr0_vgpr141    ; GCN-NEXT: {{  $}}42    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr143    ; GCN-NEXT: [[BITCAST:%[0-9]+]]:_(p0) = G_BITCAST [[COPY]](p1)44    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[BITCAST]](p0)45    %0:_(p1) = COPY $vgpr0_vgpr146    %1:_(p0) = G_ADDRSPACE_CAST %047    $vgpr0_vgpr1 = COPY %148...49 50---51name: test_addrspacecast_p0_to_p452machineFunctionInfo:53  argumentInfo:54    queuePtr: { reg: '$sgpr4_sgpr5' }55body: |56  bb.0:57    liveins: $vgpr0_vgpr158 59    ; GCN-LABEL: name: test_addrspacecast_p0_to_p460    ; GCN: liveins: $vgpr0_vgpr161    ; GCN-NEXT: {{  $}}62    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr163    ; GCN-NEXT: [[BITCAST:%[0-9]+]]:_(p4) = G_BITCAST [[COPY]](p0)64    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[BITCAST]](p4)65    %0:_(p0) = COPY $vgpr0_vgpr166    %1:_(p4) = G_ADDRSPACE_CAST %067    $vgpr0_vgpr1 = COPY %168...69 70---71name: test_addrspacecast_p4_to_p072machineFunctionInfo:73  argumentInfo:74    queuePtr: { reg: '$sgpr4_sgpr5' }75body: |76  bb.0:77    liveins: $vgpr0_vgpr178 79    ; GCN-LABEL: name: test_addrspacecast_p4_to_p080    ; GCN: liveins: $vgpr0_vgpr181    ; GCN-NEXT: {{  $}}82    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr183    ; GCN-NEXT: [[BITCAST:%[0-9]+]]:_(p0) = G_BITCAST [[COPY]](p4)84    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[BITCAST]](p0)85    %0:_(p4) = COPY $vgpr0_vgpr186    %1:_(p0) = G_ADDRSPACE_CAST %087    $vgpr0_vgpr1 = COPY %188...89 90---91name: test_addrspacecast_p0_to_p99992machineFunctionInfo:93  argumentInfo:94    queuePtr: { reg: '$sgpr4_sgpr5' }95body: |96  bb.0:97    liveins: $vgpr0_vgpr198 99    ; GCN-LABEL: name: test_addrspacecast_p0_to_p999100    ; GCN: liveins: $vgpr0_vgpr1101    ; GCN-NEXT: {{  $}}102    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1103    ; GCN-NEXT: [[BITCAST:%[0-9]+]]:_(p999) = G_BITCAST [[COPY]](p0)104    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[BITCAST]](p999)105    %0:_(p0) = COPY $vgpr0_vgpr1106    %1:_(p999) = G_ADDRSPACE_CAST %0107    $vgpr0_vgpr1 = COPY %1108...109 110---111name: test_addrspacecast_p999_to_p0112machineFunctionInfo:113  argumentInfo:114    queuePtr: { reg: '$sgpr4_sgpr5' }115body: |116  bb.0:117    liveins: $vgpr0_vgpr1118 119    ; GCN-LABEL: name: test_addrspacecast_p999_to_p0120    ; GCN: liveins: $vgpr0_vgpr1121    ; GCN-NEXT: {{  $}}122    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p999) = COPY $vgpr0_vgpr1123    ; GCN-NEXT: [[BITCAST:%[0-9]+]]:_(p0) = G_BITCAST [[COPY]](p999)124    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[BITCAST]](p0)125    %0:_(p999) = COPY $vgpr0_vgpr1126    %1:_(p0) = G_ADDRSPACE_CAST %0127    $vgpr0_vgpr1 = COPY %1128...129 130---131name: test_addrspacecast_p5_to_p0132machineFunctionInfo:133  argumentInfo:134    queuePtr: { reg: '$sgpr4_sgpr5' }135body: |136  bb.0:137    liveins: $vgpr0138 139    ; SIVI-LABEL: name: test_addrspacecast_p5_to_p0140    ; SIVI: liveins: $vgpr0, $sgpr4_sgpr5141    ; SIVI-NEXT: {{  $}}142    ; SIVI-NEXT: [[COPY:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr4_sgpr5143    ; SIVI-NEXT: [[COPY1:%[0-9]+]]:_(p5) = COPY $vgpr0144    ; SIVI-NEXT: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY1]](p5)145    ; SIVI-NEXT: [[COPY2:%[0-9]+]]:_(p4) = COPY [[COPY]](p4)146    ; SIVI-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 68147    ; SIVI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p4) = nuw inbounds G_PTR_ADD [[COPY2]], [[C]](s64)148    ; SIVI-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p4) :: (dereferenceable invariant load (s32), addrspace 4)149    ; SIVI-NEXT: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[PTRTOINT]](s32), [[LOAD]](s32)150    ; SIVI-NEXT: [[C1:%[0-9]+]]:_(p5) = G_CONSTANT i32 -1151    ; SIVI-NEXT: [[C2:%[0-9]+]]:_(p0) = G_CONSTANT i64 0152    ; SIVI-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY1]](p5), [[C1]]153    ; SIVI-NEXT: [[SELECT:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[MV]], [[C2]]154    ; SIVI-NEXT: $vgpr0_vgpr1 = COPY [[SELECT]](p0)155    ;156    ; GFX9-LABEL: name: test_addrspacecast_p5_to_p0157    ; GFX9: liveins: $vgpr0158    ; GFX9-NEXT: {{  $}}159    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0160    ; GFX9-NEXT: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY]](p5)161    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sreg_64(s64) = COPY $src_private_base162    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](s64)163    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[PTRTOINT]](s32), [[UV1]](s32)164    ; GFX9-NEXT: [[C:%[0-9]+]]:_(p5) = G_CONSTANT i32 -1165    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0166    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p5), [[C]]167    ; GFX9-NEXT: [[SELECT:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[MV]], [[C1]]168    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[SELECT]](p0)169    %0:_(p5) = COPY $vgpr0170    %1:_(p0) = G_ADDRSPACE_CAST %0171    $vgpr0_vgpr1 = COPY %1172...173 174---175name: test_addrspacecast_p0_to_p5176machineFunctionInfo:177  argumentInfo:178    queuePtr: { reg: '$sgpr4_sgpr5' }179body: |180  bb.0:181    liveins: $vgpr0_vgpr1182 183    ; GCN-LABEL: name: test_addrspacecast_p0_to_p5184    ; GCN: liveins: $vgpr0_vgpr1185    ; GCN-NEXT: {{  $}}186    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1187    ; GCN-NEXT: [[C:%[0-9]+]]:_(p5) = G_CONSTANT i32 -1188    ; GCN-NEXT: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0189    ; GCN-NEXT: [[EXTRACT:%[0-9]+]]:_(p5) = G_EXTRACT [[COPY]](p0), 0190    ; GCN-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p0), [[C1]]191    ; GCN-NEXT: [[SELECT:%[0-9]+]]:_(p5) = G_SELECT [[ICMP]](s1), [[EXTRACT]], [[C]]192    ; GCN-NEXT: $vgpr0 = COPY [[SELECT]](p5)193    %0:_(p0) = COPY $vgpr0_vgpr1194    %1:_(p5) = G_ADDRSPACE_CAST %0195    $vgpr0 = COPY %1196...197 198---199name: test_addrspacecast_p3_to_p0200machineFunctionInfo:201  argumentInfo:202    queuePtr: { reg: '$sgpr4_sgpr5' }203 204body: |205  bb.0:206    liveins: $vgpr0207 208    ; SIVI-LABEL: name: test_addrspacecast_p3_to_p0209    ; SIVI: liveins: $vgpr0, $sgpr4_sgpr5210    ; SIVI-NEXT: {{  $}}211    ; SIVI-NEXT: [[COPY:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr4_sgpr5212    ; SIVI-NEXT: [[COPY1:%[0-9]+]]:_(p3) = COPY $vgpr0213    ; SIVI-NEXT: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY1]](p3)214    ; SIVI-NEXT: [[COPY2:%[0-9]+]]:_(p4) = COPY [[COPY]](p4)215    ; SIVI-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 64216    ; SIVI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p4) = nuw inbounds G_PTR_ADD [[COPY2]], [[C]](s64)217    ; SIVI-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p4) :: (dereferenceable invariant load (s32), align 64, addrspace 4)218    ; SIVI-NEXT: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[PTRTOINT]](s32), [[LOAD]](s32)219    ; SIVI-NEXT: [[C1:%[0-9]+]]:_(p3) = G_CONSTANT i32 -1220    ; SIVI-NEXT: [[C2:%[0-9]+]]:_(p0) = G_CONSTANT i64 0221    ; SIVI-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY1]](p3), [[C1]]222    ; SIVI-NEXT: [[SELECT:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[MV]], [[C2]]223    ; SIVI-NEXT: $vgpr0_vgpr1 = COPY [[SELECT]](p0)224    ;225    ; GFX9-LABEL: name: test_addrspacecast_p3_to_p0226    ; GFX9: liveins: $vgpr0227    ; GFX9-NEXT: {{  $}}228    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(p3) = COPY $vgpr0229    ; GFX9-NEXT: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY]](p3)230    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sreg_64(s64) = COPY $src_shared_base231    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](s64)232    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[PTRTOINT]](s32), [[UV1]](s32)233    ; GFX9-NEXT: [[C:%[0-9]+]]:_(p3) = G_CONSTANT i32 -1234    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0235    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p3), [[C]]236    ; GFX9-NEXT: [[SELECT:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[MV]], [[C1]]237    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[SELECT]](p0)238    %0:_(p3) = COPY $vgpr0239    %1:_(p0) = G_ADDRSPACE_CAST %0240    $vgpr0_vgpr1 = COPY %1241...242 243---244name: test_addrspacecast_p0_to_p3245machineFunctionInfo:246  argumentInfo:247    queuePtr: { reg: '$sgpr4_sgpr5' }248body: |249  bb.0:250    liveins: $vgpr0_vgpr1251 252    ; GCN-LABEL: name: test_addrspacecast_p0_to_p3253    ; GCN: liveins: $vgpr0_vgpr1254    ; GCN-NEXT: {{  $}}255    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1256    ; GCN-NEXT: [[C:%[0-9]+]]:_(p3) = G_CONSTANT i32 -1257    ; GCN-NEXT: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0258    ; GCN-NEXT: [[EXTRACT:%[0-9]+]]:_(p3) = G_EXTRACT [[COPY]](p0), 0259    ; GCN-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[COPY]](p0), [[C1]]260    ; GCN-NEXT: [[SELECT:%[0-9]+]]:_(p3) = G_SELECT [[ICMP]](s1), [[EXTRACT]], [[C]]261    ; GCN-NEXT: $vgpr0 = COPY [[SELECT]](p3)262    %0:_(p0) = COPY $vgpr0_vgpr1263    %1:_(p3) = G_ADDRSPACE_CAST %0264    $vgpr0 = COPY %1265...266 267---268name: test_addrspacecast_v2p0_to_v2p1269machineFunctionInfo:270  argumentInfo:271    queuePtr: { reg: '$sgpr4_sgpr5' }272body: |273  bb.0:274    liveins: $vgpr0_vgpr1_vgpr2_vgpr3275 276    ; GCN-LABEL: name: test_addrspacecast_v2p0_to_v2p1277    ; GCN: liveins: $vgpr0_vgpr1_vgpr2_vgpr3278    ; GCN-NEXT: {{  $}}279    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(<2 x p0>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3280    ; GCN-NEXT: [[UV:%[0-9]+]]:_(p0), [[UV1:%[0-9]+]]:_(p0) = G_UNMERGE_VALUES [[COPY]](<2 x p0>)281    ; GCN-NEXT: [[BITCAST:%[0-9]+]]:_(p1) = G_BITCAST [[UV]](p0)282    ; GCN-NEXT: [[BITCAST1:%[0-9]+]]:_(p1) = G_BITCAST [[UV1]](p0)283    ; GCN-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p1>) = G_BUILD_VECTOR [[BITCAST]](p1), [[BITCAST1]](p1)284    ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x p1>)285    %0:_(<2 x p0>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3286    %1:_(<2 x p1>) = G_ADDRSPACE_CAST %0287    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1288...289 290---291name: test_addrspacecast_v2p1_to_v2p0292machineFunctionInfo:293  argumentInfo:294    queuePtr: { reg: '$sgpr4_sgpr5' }295body: |296  bb.0:297    liveins: $vgpr0_vgpr1_vgpr2_vgpr3298 299    ; GCN-LABEL: name: test_addrspacecast_v2p1_to_v2p0300    ; GCN: liveins: $vgpr0_vgpr1_vgpr2_vgpr3301    ; GCN-NEXT: {{  $}}302    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(<2 x p1>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3303    ; GCN-NEXT: [[UV:%[0-9]+]]:_(p1), [[UV1:%[0-9]+]]:_(p1) = G_UNMERGE_VALUES [[COPY]](<2 x p1>)304    ; GCN-NEXT: [[BITCAST:%[0-9]+]]:_(p0) = G_BITCAST [[UV]](p1)305    ; GCN-NEXT: [[BITCAST1:%[0-9]+]]:_(p0) = G_BITCAST [[UV1]](p1)306    ; GCN-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p0>) = G_BUILD_VECTOR [[BITCAST]](p0), [[BITCAST1]](p0)307    ; GCN-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x p0>)308    %0:_(<2 x p1>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3309    %1:_(<2 x p0>) = G_ADDRSPACE_CAST %0310    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1311...312 313---314name: test_addrspacecast_v2p0_to_v2p3315machineFunctionInfo:316  argumentInfo:317    queuePtr: { reg: '$sgpr4_sgpr5' }318body: |319  bb.0:320    liveins: $vgpr0_vgpr1_vgpr2_vgpr3321 322    ; GCN-LABEL: name: test_addrspacecast_v2p0_to_v2p3323    ; GCN: liveins: $vgpr0_vgpr1_vgpr2_vgpr3324    ; GCN-NEXT: {{  $}}325    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(<2 x p0>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3326    ; GCN-NEXT: [[UV:%[0-9]+]]:_(p0), [[UV1:%[0-9]+]]:_(p0) = G_UNMERGE_VALUES [[COPY]](<2 x p0>)327    ; GCN-NEXT: [[C:%[0-9]+]]:_(p3) = G_CONSTANT i32 -1328    ; GCN-NEXT: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0329    ; GCN-NEXT: [[EXTRACT:%[0-9]+]]:_(p3) = G_EXTRACT [[UV]](p0), 0330    ; GCN-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](p0), [[C1]]331    ; GCN-NEXT: [[SELECT:%[0-9]+]]:_(p3) = G_SELECT [[ICMP]](s1), [[EXTRACT]], [[C]]332    ; GCN-NEXT: [[EXTRACT1:%[0-9]+]]:_(p3) = G_EXTRACT [[UV1]](p0), 0333    ; GCN-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](p0), [[C1]]334    ; GCN-NEXT: [[SELECT1:%[0-9]+]]:_(p3) = G_SELECT [[ICMP1]](s1), [[EXTRACT1]], [[C]]335    ; GCN-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p3>) = G_BUILD_VECTOR [[SELECT]](p3), [[SELECT1]](p3)336    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x p3>)337    %0:_(<2 x p0>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3338    %1:_(<2 x p3>) = G_ADDRSPACE_CAST %0339    $vgpr0_vgpr1 = COPY %1340...341 342---343name: test_addrspacecast_v2p3_to_v2p0344machineFunctionInfo:345  argumentInfo:346    queuePtr: { reg: '$sgpr4_sgpr5' }347body: |348  bb.0:349    liveins: $vgpr0_vgpr1350 351    ; SIVI-LABEL: name: test_addrspacecast_v2p3_to_v2p0352    ; SIVI: liveins: $vgpr0_vgpr1, $sgpr4_sgpr5353    ; SIVI-NEXT: {{  $}}354    ; SIVI-NEXT: [[COPY:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr4_sgpr5355    ; SIVI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr0_vgpr1356    ; SIVI-NEXT: [[UV:%[0-9]+]]:_(p3), [[UV1:%[0-9]+]]:_(p3) = G_UNMERGE_VALUES [[COPY1]](<2 x p3>)357    ; SIVI-NEXT: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[UV]](p3)358    ; SIVI-NEXT: [[COPY2:%[0-9]+]]:_(p4) = COPY [[COPY]](p4)359    ; SIVI-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 64360    ; SIVI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p4) = nuw inbounds G_PTR_ADD [[COPY2]], [[C]](s64)361    ; SIVI-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p4) :: (dereferenceable invariant load (s32), align 64, addrspace 4)362    ; SIVI-NEXT: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[PTRTOINT]](s32), [[LOAD]](s32)363    ; SIVI-NEXT: [[C1:%[0-9]+]]:_(p3) = G_CONSTANT i32 -1364    ; SIVI-NEXT: [[C2:%[0-9]+]]:_(p0) = G_CONSTANT i64 0365    ; SIVI-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](p3), [[C1]]366    ; SIVI-NEXT: [[SELECT:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[MV]], [[C2]]367    ; SIVI-NEXT: [[PTRTOINT1:%[0-9]+]]:_(s32) = G_PTRTOINT [[UV1]](p3)368    ; SIVI-NEXT: [[COPY3:%[0-9]+]]:_(p4) = COPY [[COPY]](p4)369    ; SIVI-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p4) = nuw inbounds G_PTR_ADD [[COPY3]], [[C]](s64)370    ; SIVI-NEXT: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD1]](p4) :: (dereferenceable invariant load (s32), align 64, addrspace 4)371    ; SIVI-NEXT: [[MV1:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[PTRTOINT1]](s32), [[LOAD1]](s32)372    ; SIVI-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](p3), [[C1]]373    ; SIVI-NEXT: [[SELECT1:%[0-9]+]]:_(p0) = G_SELECT [[ICMP1]](s1), [[MV1]], [[C2]]374    ; SIVI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p0>) = G_BUILD_VECTOR [[SELECT]](p0), [[SELECT1]](p0)375    ; SIVI-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x p0>)376    ;377    ; GFX9-LABEL: name: test_addrspacecast_v2p3_to_v2p0378    ; GFX9: liveins: $vgpr0_vgpr1379    ; GFX9-NEXT: {{  $}}380    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x p3>) = COPY $vgpr0_vgpr1381    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(p3), [[UV1:%[0-9]+]]:_(p3) = G_UNMERGE_VALUES [[COPY]](<2 x p3>)382    ; GFX9-NEXT: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[UV]](p3)383    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:sreg_64(s64) = COPY $src_shared_base384    ; GFX9-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](s64)385    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[PTRTOINT]](s32), [[UV3]](s32)386    ; GFX9-NEXT: [[C:%[0-9]+]]:_(p3) = G_CONSTANT i32 -1387    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(p0) = G_CONSTANT i64 0388    ; GFX9-NEXT: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV]](p3), [[C]]389    ; GFX9-NEXT: [[SELECT:%[0-9]+]]:_(p0) = G_SELECT [[ICMP]](s1), [[MV]], [[C1]]390    ; GFX9-NEXT: [[PTRTOINT1:%[0-9]+]]:_(s32) = G_PTRTOINT [[UV1]](p3)391    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:sreg_64(s64) = COPY $src_shared_base392    ; GFX9-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY2]](s64)393    ; GFX9-NEXT: [[MV1:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[PTRTOINT1]](s32), [[UV5]](s32)394    ; GFX9-NEXT: [[ICMP1:%[0-9]+]]:_(s1) = G_ICMP intpred(ne), [[UV1]](p3), [[C]]395    ; GFX9-NEXT: [[SELECT1:%[0-9]+]]:_(p0) = G_SELECT [[ICMP1]](s1), [[MV1]], [[C1]]396    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x p0>) = G_BUILD_VECTOR [[SELECT]](p0), [[SELECT1]](p0)397    ; GFX9-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x p0>)398    %0:_(<2 x p3>) = COPY $vgpr0_vgpr1399    %1:_(<2 x p0>) = G_ADDRSPACE_CAST %0400    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1401...402 403---404name: test_addrspacecast_p4_to_p6405body: |406  bb.0:407    liveins: $vgpr0_vgpr1408 409    ; GCN-LABEL: name: test_addrspacecast_p4_to_p6410    ; GCN: liveins: $vgpr0_vgpr1411    ; GCN-NEXT: {{  $}}412    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p4) = COPY $vgpr0_vgpr1413    ; GCN-NEXT: [[EXTRACT:%[0-9]+]]:_(p6) = G_EXTRACT [[COPY]](p4), 0414    ; GCN-NEXT: $vgpr0 = COPY [[EXTRACT]](p6)415    %0:_(p4) = COPY $vgpr0_vgpr1416    %1:_(p6) = G_ADDRSPACE_CAST %0417    $vgpr0 = COPY %1418...419 420---421name: test_addrspacecast_p6_to_p4_0422body: |423  bb.0:424    liveins: $vgpr0425 426    ; GCN-LABEL: name: test_addrspacecast_p6_to_p4_0427    ; GCN: liveins: $vgpr0428    ; GCN-NEXT: {{  $}}429    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p6) = COPY $vgpr0430    ; GCN-NEXT: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY]](p6)431    ; GCN-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0432    ; GCN-NEXT: [[MV:%[0-9]+]]:_(p4) = G_MERGE_VALUES [[PTRTOINT]](s32), [[C]](s32)433    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[MV]](p4)434    %0:_(p6) = COPY $vgpr0435    %1:_(p4) = G_ADDRSPACE_CAST %0436    $vgpr0_vgpr1 = COPY %1437...438 439---440name: test_addrspacecast_p6_to_p4_0xdeadbeef441machineFunctionInfo:442  highBitsOf32BitAddress: 0xdeadbeef443body: |444  bb.0:445    liveins: $vgpr0446 447    ; GCN-LABEL: name: test_addrspacecast_p6_to_p4_0xdeadbeef448    ; GCN: liveins: $vgpr0449    ; GCN-NEXT: {{  $}}450    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p6) = COPY $vgpr0451    ; GCN-NEXT: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY]](p6)452    ; GCN-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -559038737453    ; GCN-NEXT: [[MV:%[0-9]+]]:_(p4) = G_MERGE_VALUES [[PTRTOINT]](s32), [[C]](s32)454    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[MV]](p4)455    %0:_(p6) = COPY $vgpr0456    %1:_(p4) = G_ADDRSPACE_CAST %0457    $vgpr0_vgpr1 = COPY %1458...459 460---461name: test_addrspacecast_p0_to_p6462body: |463  bb.0:464    liveins: $vgpr0_vgpr1465 466    ; GCN-LABEL: name: test_addrspacecast_p0_to_p6467    ; GCN: liveins: $vgpr0_vgpr1468    ; GCN-NEXT: {{  $}}469    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1470    ; GCN-NEXT: [[EXTRACT:%[0-9]+]]:_(p6) = G_EXTRACT [[COPY]](p0), 0471    ; GCN-NEXT: $vgpr0 = COPY [[EXTRACT]](p6)472    %0:_(p0) = COPY $vgpr0_vgpr1473    %1:_(p6) = G_ADDRSPACE_CAST %0474    $vgpr0 = COPY %1475...476 477---478name: test_addrspacecast_p6_to_p0479body: |480  bb.0:481    liveins: $vgpr0482 483    ; GCN-LABEL: name: test_addrspacecast_p6_to_p0484    ; GCN: liveins: $vgpr0485    ; GCN-NEXT: {{  $}}486    ; GCN-NEXT: [[COPY:%[0-9]+]]:_(p6) = COPY $vgpr0487    ; GCN-NEXT: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[COPY]](p6)488    ; GCN-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0489    ; GCN-NEXT: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[PTRTOINT]](s32), [[C]](s32)490    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[MV]](p0)491    %0:_(p6) = COPY $vgpr0492    %1:_(p0) = G_ADDRSPACE_CAST %0493    $vgpr0_vgpr1 = COPY %1494...495---496name: test_addrspacecast_p5_fi_to_p0497machineFunctionInfo:498  argumentInfo:499    queuePtr: { reg: '$sgpr4_sgpr5' }500stack:501  - { id: 0, size: 4, alignment: 4 }502body: |503  bb.0:504    ; SIVI-LABEL: name: test_addrspacecast_p5_fi_to_p0505    ; SIVI: liveins: $sgpr4_sgpr5506    ; SIVI-NEXT: {{  $}}507    ; SIVI-NEXT: [[COPY:%[0-9]+]]:sgpr_64(p4) = COPY $sgpr4_sgpr5508    ; SIVI-NEXT: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %stack.0509    ; SIVI-NEXT: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[FRAME_INDEX]](p5)510    ; SIVI-NEXT: [[COPY1:%[0-9]+]]:_(p4) = COPY [[COPY]](p4)511    ; SIVI-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 68512    ; SIVI-NEXT: [[PTR_ADD:%[0-9]+]]:_(p4) = nuw inbounds G_PTR_ADD [[COPY1]], [[C]](s64)513    ; SIVI-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p4) :: (dereferenceable invariant load (s32), addrspace 4)514    ; SIVI-NEXT: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[PTRTOINT]](s32), [[LOAD]](s32)515    ; SIVI-NEXT: $vgpr0_vgpr1 = COPY [[MV]](p0)516    ;517    ; GFX9-LABEL: name: test_addrspacecast_p5_fi_to_p0518    ; GFX9: [[FRAME_INDEX:%[0-9]+]]:_(p5) = G_FRAME_INDEX %stack.0519    ; GFX9-NEXT: [[PTRTOINT:%[0-9]+]]:_(s32) = G_PTRTOINT [[FRAME_INDEX]](p5)520    ; GFX9-NEXT: [[COPY:%[0-9]+]]:sreg_64(s64) = COPY $src_private_base521    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)522    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(p0) = G_MERGE_VALUES [[PTRTOINT]](s32), [[UV1]](s32)523    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[MV]](p0)524    %0:_(p5) = G_FRAME_INDEX %stack.0525    %1:_(p0) = G_ADDRSPACE_CAST %0526    $vgpr0_vgpr1 = COPY %1527...528