1; RUN: not llc -global-isel=0 -march=amdgcn -mcpu=bonaire -mattr=-promote-alloca < %s 2>&1 | FileCheck -check-prefix=ERROR %s
2; RUN: not llc -global-isel=1 -march=amdgcn -mcpu=bonaire -mattr=-promote-alloca < %s 2>&1 | FileCheck -check-prefix=ERROR %s
3
4; ERROR: error: <unknown>:0:0: in function use_group_to_global_addrspacecast void (i32 addrspace(3)*): invalid addrspacecast
5define amdgpu_kernel void @use_group_to_global_addrspacecast(i32 addrspace(3)* %ptr) {
6  %stof = addrspacecast i32 addrspace(3)* %ptr to i32 addrspace(1)*
7  store volatile i32 0, i32 addrspace(1)* %stof
8  ret void
9}
10
11; ERROR: error: <unknown>:0:0: in function use_local_to_constant32bit_addrspacecast void (i32 addrspace(3)*): invalid addrspacecast
12define amdgpu_kernel void @use_local_to_constant32bit_addrspacecast(i32 addrspace(3)* %ptr) {
13  %stof = addrspacecast i32 addrspace(3)* %ptr to i32 addrspace(6)*
14  %load = load volatile i32, i32 addrspace(6)* %stof
15  ret void
16}
17
18; ERROR: error: <unknown>:0:0: in function use_constant32bit_to_local_addrspacecast void (i32 addrspace(6)*): invalid addrspacecast
19define amdgpu_kernel void @use_constant32bit_to_local_addrspacecast(i32 addrspace(6)* %ptr) {
20  %cast = addrspacecast i32 addrspace(6)* %ptr to i32 addrspace(3)*
21  %load = load volatile i32, i32 addrspace(3)* %cast
22  ret void
23}
24
25; ERROR: error: <unknown>:0:0: in function use_local_to_42_addrspacecast void (i32 addrspace(3)*): invalid addrspacecast
26define amdgpu_kernel void @use_local_to_42_addrspacecast(i32 addrspace(3)* %ptr) {
27  %cast = addrspacecast i32 addrspace(3)* %ptr to i32 addrspace(42)*
28  store volatile i32 addrspace(42)* %cast, i32 addrspace(42)* addrspace(1)* null
29  ret void
30}
31
32; ERROR: error: <unknown>:0:0: in function use_42_to_local_addrspacecast void (i32 addrspace(42)*): invalid addrspacecast
33define amdgpu_kernel void @use_42_to_local_addrspacecast(i32 addrspace(42)* %ptr) {
34  %cast = addrspacecast i32 addrspace(42)* %ptr to i32 addrspace(3)*
35  %load = load volatile i32, i32 addrspace(3)* %cast
36  ret void
37}
38