blob: 8bcea3c32157f1f0a7f5ed6104392599a1115429 [file] [edit]
; RUN: not llc -global-isel=0 -mtriple=amdgpu6.00 -filetype=null < %s 2>&1 | FileCheck --implicit-check-not=error %s
; RUN: not llc -global-isel=1 -mtriple=amdgpu6.00 -filetype=null < %s 2>&1 | FileCheck --implicit-check-not=error %s
; flat_scratch{,_lo,_hi} require the flat address space, so named-register
; access to them should be rejected on earlier subtargets.
; CHECK: error: <unknown>:0:0: invalid register "flat_scratch" for llvm.read_register
define void @test_read_flat_scratch() {
%v = call i64 @llvm.read_register.i64(metadata !0)
call void asm sideeffect "; use $0", "s"(i64 %v)
ret void
}
; CHECK: error: <unknown>:0:0: invalid register "flat_scratch_lo" for llvm.read_register
define void @test_read_flat_scratch_lo() {
%v = call i32 @llvm.read_register.i32(metadata !1)
call void asm sideeffect "; use $0", "s"(i32 %v)
ret void
}
; CHECK: error: <unknown>:0:0: invalid register "flat_scratch_hi" for llvm.read_register
define void @test_read_flat_scratch_hi() {
%v = call i32 @llvm.read_register.i32(metadata !2)
call void asm sideeffect "; use $0", "s"(i32 %v)
ret void
}
; CHECK: error: <unknown>:0:0: invalid register "flat_scratch" for llvm.write_register
define void @test_write_flat_scratch(i64 inreg %val) {
call void @llvm.write_register.i64(metadata !0, i64 %val)
ret void
}
; CHECK: error: <unknown>:0:0: invalid register "flat_scratch_lo" for llvm.write_register
define void @test_write_flat_scratch_lo(i32 inreg %val) {
call void @llvm.write_register.i32(metadata !1, i32 %val)
ret void
}
; CHECK: error: <unknown>:0:0: invalid register "flat_scratch_hi" for llvm.write_register
define void @test_write_flat_scratch_hi(i32 inreg %val) {
call void @llvm.write_register.i32(metadata !2, i32 %val)
ret void
}
!0 = !{!"flat_scratch"}
!1 = !{!"flat_scratch_lo"}
!2 = !{!"flat_scratch_hi"}