1; RUN: not llc -march=amdgcn < %s 2>&1 | FileCheck -check-prefix=ERR %s 2; RUN: not llc -march=amdgcn < %s 2>&1 | FileCheck -check-prefix=GCN %s 3 4; ERR: error: <unknown>:0:0: in function illegal_vgpr_to_sgpr_copy_i32 void (): illegal SGPR to VGPR copy 5; GCN: ; illegal copy v1 to s9 6 7define amdgpu_kernel void @illegal_vgpr_to_sgpr_copy_i32() #0 { 8 %vgpr = call i32 asm sideeffect "; def $0", "=${v1}"() 9 call void asm sideeffect "; use $0", "${s9}"(i32 %vgpr) 10 ret void 11} 12 13; ERR: error: <unknown>:0:0: in function illegal_vgpr_to_sgpr_copy_v2i32 void (): illegal SGPR to VGPR copy 14; GCN: ; illegal copy v[0:1] to s[10:11] 15define amdgpu_kernel void @illegal_vgpr_to_sgpr_copy_v2i32() #0 { 16 %vgpr = call <2 x i32> asm sideeffect "; def $0", "=${v[0:1]}"() 17 call void asm sideeffect "; use $0", "${s[10:11]}"(<2 x i32> %vgpr) 18 ret void 19} 20 21; ERR: error: <unknown>:0:0: in function illegal_vgpr_to_sgpr_copy_v4i32 void (): illegal SGPR to VGPR copy 22; GCN: ; illegal copy v[0:3] to s[8:11] 23define amdgpu_kernel void @illegal_vgpr_to_sgpr_copy_v4i32() #0 { 24 %vgpr = call <4 x i32> asm sideeffect "; def $0", "=${v[0:3]}"() 25 call void asm sideeffect "; use $0", "${s[8:11]}"(<4 x i32> %vgpr) 26 ret void 27} 28 29; ERR: error: <unknown>:0:0: in function illegal_vgpr_to_sgpr_copy_v8i32 void (): illegal SGPR to VGPR copy 30; GCN: ; illegal copy v[0:7] to s[8:15] 31define amdgpu_kernel void @illegal_vgpr_to_sgpr_copy_v8i32() #0 { 32 %vgpr = call <8 x i32> asm sideeffect "; def $0", "=${v[0:7]}"() 33 call void asm sideeffect "; use $0", "${s[8:15]}"(<8 x i32> %vgpr) 34 ret void 35} 36 37; ERR: error: <unknown>:0:0: in function illegal_vgpr_to_sgpr_copy_v16i32 void (): illegal SGPR to VGPR copy 38; GCN: ; illegal copy v[0:15] to s[16:31] 39define amdgpu_kernel void @illegal_vgpr_to_sgpr_copy_v16i32() #0 { 40 %vgpr = call <16 x i32> asm sideeffect "; def $0", "=${v[0:15]}"() 41 call void asm sideeffect "; use $0", "${s[16:31]}"(<16 x i32> %vgpr) 42 ret void 43} 44 45; ERR: error: <unknown>:0:0: in function illegal_agpr_to_sgpr_copy_i32 void (): illegal SGPR to VGPR copy 46; GCN: v_accvgpr_read_b32 [[COPY1:v[0-9]+]], a1 47; GCN: ; illegal copy [[COPY1]] to s9 48define amdgpu_kernel void @illegal_agpr_to_sgpr_copy_i32() #1 { 49 %agpr = call i32 asm sideeffect "; def $0", "=${a1}"() 50 call void asm sideeffect "; use $0", "${s9}"(i32 %agpr) 51 ret void 52} 53 54; ERR: error: <unknown>:0:0: in function illegal_agpr_to_sgpr_copy_v2i32 void (): illegal SGPR to VGPR copy 55; GCN-DAG: v_accvgpr_read_b32 v[[COPY1L:[0-9]+]], a0 56; GCN-DAG: v_accvgpr_read_b32 v[[COPY1H:[0-9]+]], a1 57; GCN: ; illegal copy v{{\[}}[[COPY1L]]:[[COPY1H]]] to s[10:11] 58define amdgpu_kernel void @illegal_agpr_to_sgpr_copy_v2i32() #1 { 59 %vgpr = call <2 x i32> asm sideeffect "; def $0", "=${a[0:1]}"() 60 call void asm sideeffect "; use $0", "${s[10:11]}"(<2 x i32> %vgpr) 61 ret void 62} 63 64attributes #0 = { nounwind } 65attributes #1 = { nounwind "target-cpu"="gfx908" } 66