mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
9b6d8d16dd
This should not be treated as a different version of private_segment_buffer. These are distinct things with different uses and register classes, and requires the function argument info to have more context about the function's type and environment. Also add missing test coverage for the intrinsic, and emit an error for HSA. This also encovers that the intrinsic is broken unless there happen to be stack objects. llvm-svn: 306264
25 lines
1.0 KiB
LLVM
25 lines
1.0 KiB
LLVM
; RUN: not llc -mtriple=amdgcn-amd-amdhsa < %s 2>&1 | FileCheck -check-prefix=ERROR %s
|
|
|
|
; ERROR: in function test_kernel{{.*}}: non-hsa intrinsic with hsa target
|
|
define amdgpu_kernel void @test_kernel(i32 addrspace(1)* %out) #1 {
|
|
%implicit_buffer_ptr = call i8 addrspace(2)* @llvm.amdgcn.implicit.buffer.ptr()
|
|
%header_ptr = bitcast i8 addrspace(2)* %implicit_buffer_ptr to i32 addrspace(2)*
|
|
%value = load i32, i32 addrspace(2)* %header_ptr
|
|
store i32 %value, i32 addrspace(1)* %out
|
|
ret void
|
|
}
|
|
|
|
; ERROR: in function test_func{{.*}}: non-hsa intrinsic with hsa target
|
|
define void @test_func(i32 addrspace(1)* %out) #1 {
|
|
%implicit_buffer_ptr = call i8 addrspace(2)* @llvm.amdgcn.implicit.buffer.ptr()
|
|
%header_ptr = bitcast i8 addrspace(2)* %implicit_buffer_ptr to i32 addrspace(2)*
|
|
%value = load i32, i32 addrspace(2)* %header_ptr
|
|
store i32 %value, i32 addrspace(1)* %out
|
|
ret void
|
|
}
|
|
|
|
declare i8 addrspace(2)* @llvm.amdgcn.implicit.buffer.ptr() #0
|
|
|
|
attributes #0 = { nounwind readnone speculatable }
|
|
attributes #1 = { nounwind }
|