blob: 437ded24dd5604b796972bca74f2c10539e16614 [file] [edit]
; RUN: not llc -global-isel=0 -mtriple=amdgpu12.00-amd-amdhsa -filetype=null < %s 2>&1 | FileCheck --implicit-check-not=error %s
; RUN: not llc -global-isel=1 -mtriple=amdgpu12.00-amd-amdhsa -filetype=null < %s 2>&1 | FileCheck --implicit-check-not=error %s
; src_flat_scratch_base{,_lo,_hi} require globally-addressable-scratch (gfx1250+),
; so named-register access to them should be rejected on earlier subtargets.
declare i32 @llvm.read_register.i32(metadata) #0
declare i64 @llvm.read_register.i64(metadata) #0
declare void @llvm.write_register.i32(metadata, i32) #0
declare void @llvm.write_register.i64(metadata, i64) #0
; CHECK: error: <unknown>:0:0: invalid register "src_flat_scratch_base" for llvm.read_register
define amdgpu_kernel void @test_read_src_flat_scratch_base(ptr addrspace(1) %out) nounwind {
%v = call i64 @llvm.read_register.i64(metadata !0)
store i64 %v, ptr addrspace(1) %out
ret void
}
; CHECK: error: <unknown>:0:0: invalid register "src_flat_scratch_base_lo" for llvm.read_register
define amdgpu_kernel void @test_read_src_flat_scratch_base_lo(ptr addrspace(1) %out) nounwind {
%v = call i32 @llvm.read_register.i32(metadata !1)
store i32 %v, ptr addrspace(1) %out
ret void
}
; CHECK: error: <unknown>:0:0: invalid register "src_flat_scratch_base_hi" for llvm.read_register
define amdgpu_kernel void @test_read_src_flat_scratch_base_hi(ptr addrspace(1) %out) nounwind {
%v = call i32 @llvm.read_register.i32(metadata !2)
store i32 %v, ptr addrspace(1) %out
ret void
}
; CHECK: error: <unknown>:0:0: invalid register "src_flat_scratch_base" for llvm.write_register
define amdgpu_kernel void @test_write_src_flat_scratch_base(i64 %val) nounwind {
call void @llvm.write_register.i64(metadata !0, i64 %val)
ret void
}
; CHECK: error: <unknown>:0:0: invalid register "src_flat_scratch_base_lo" for llvm.write_register
define amdgpu_kernel void @test_write_src_flat_scratch_base_lo(i32 %val) nounwind {
call void @llvm.write_register.i32(metadata !1, i32 %val)
ret void
}
; CHECK: error: <unknown>:0:0: invalid register "src_flat_scratch_base_hi" for llvm.write_register
define amdgpu_kernel void @test_write_src_flat_scratch_base_hi(i32 %val) nounwind {
call void @llvm.write_register.i32(metadata !2, i32 %val)
ret void
}
!0 = !{!"src_flat_scratch_base"}
!1 = !{!"src_flat_scratch_base_lo"}
!2 = !{!"src_flat_scratch_base_hi"}