blob: 7edb8533672e9ea30f6f4e19e00da56a28c32b05 [file] [log] [blame]
Matt Arsenault9166ce82017-07-28 15:52:08 +00001; RUN: llc -mtriple=amdgcn-amd-amdhsa -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,HSA,HSA-NOENV %s
2; RUN: llc -mtriple=amdgcn-amd-amdhsa-opencl -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,HSA,HSA-OPENCL %s
3; RUN: llc -mtriple=amdgcn-mesa-mesa3d -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN,MESA %s
4
5; GCN-LABEL: {{^}}kernel_implicitarg_ptr_empty:
6; GCN: enable_sgpr_kernarg_segment_ptr = 1
7
8; HSA-NOENV: kernarg_segment_byte_size = 0
9; HSA-OPENCL: kernarg_segment_byte_size = 32
10; MESA: kernarg_segment_byte_size = 16
11
12; HSA: s_load_dword s0, s[4:5], 0x0
13define amdgpu_kernel void @kernel_implicitarg_ptr_empty() #0 {
14 %implicitarg.ptr = call i8 addrspace(2)* @llvm.amdgcn.implicitarg.ptr()
15 %cast = bitcast i8 addrspace(2)* %implicitarg.ptr to i32 addrspace(2)*
16 %load = load volatile i32, i32 addrspace(2)* %cast
17 ret void
18}
19
20; GCN-LABEL: {{^}}kernel_implicitarg_ptr:
21; GCN: enable_sgpr_kernarg_segment_ptr = 1
22
23; HSA-NOENV: kernarg_segment_byte_size = 112
24; HSA-OPENCL: kernarg_segment_byte_size = 144
25; MESA: kernarg_segment_byte_size = 464
26
27; HSA: s_load_dword s0, s[4:5], 0x1c
28define amdgpu_kernel void @kernel_implicitarg_ptr([112 x i8]) #0 {
29 %implicitarg.ptr = call i8 addrspace(2)* @llvm.amdgcn.implicitarg.ptr()
30 %cast = bitcast i8 addrspace(2)* %implicitarg.ptr to i32 addrspace(2)*
31 %load = load volatile i32, i32 addrspace(2)* %cast
32 ret void
33}
34
35declare i8 addrspace(2)* @llvm.amdgcn.implicitarg.ptr() #2
36
37attributes #0 = { nounwind noinline }
38attributes #1 = { nounwind noinline }
39attributes #2 = { nounwind readnone speculatable }