This was using the ugly tablegenerated register enum names, which are really hideous for register tuples on AMDGPU. Use the prettier names which are recognized by the asm parser.
53 lines
2.1 KiB
LLVM
53 lines
2.1 KiB
LLVM
; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -verify-machineinstrs -o /dev/null 2>&1 %s | FileCheck -check-prefix=ERR %s
|
|
|
|
; ERR: warning: inline asm clobber list contains reserved registers: v42
|
|
; ERR: note: Reserved registers on the clobber list may not be preserved across the asm statement, and clobbering them may lead to undefined behaviour.
|
|
define amdgpu_kernel void @clobber_occupancy_limited_vgpr() #0 {
|
|
entry:
|
|
call void asm sideeffect "; clobber $0", "~{v42}"()
|
|
ret void
|
|
}
|
|
|
|
; ERR: warning: inline asm clobber list contains reserved registers: v[42:43]
|
|
; ERR: note: Reserved registers on the clobber list may not be preserved across the asm statement, and clobbering them may lead to undefined behaviour.
|
|
define amdgpu_kernel void @clobber_occupancy_limited_vgpr64() #0 {
|
|
entry:
|
|
call void asm sideeffect "; clobber $0", "~{v[42:43]}"()
|
|
ret void
|
|
}
|
|
|
|
; ERR: warning: inline asm clobber list contains reserved registers: m0
|
|
; ERR: note: Reserved registers on the clobber list may not be preserved across the asm statement, and clobbering them may lead to undefined behaviour.
|
|
define amdgpu_kernel void @clobber_m0() {
|
|
entry:
|
|
call void asm sideeffect "; clobber $0", "~{m0}"()
|
|
ret void
|
|
}
|
|
|
|
; ERR: warning: inline asm clobber list contains reserved registers: exec
|
|
; ERR: note: Reserved registers on the clobber list may not be preserved across the asm statement, and clobbering them may lead to undefined behaviour.
|
|
define amdgpu_kernel void @clobber_exec() {
|
|
entry:
|
|
call void asm sideeffect "; clobber $0", "~{exec}"()
|
|
ret void
|
|
}
|
|
|
|
; ERR: warning: inline asm clobber list contains reserved registers: exec_lo
|
|
; ERR: note: Reserved registers on the clobber list may not be preserved across the asm statement, and clobbering them may lead to undefined behaviour.
|
|
define amdgpu_kernel void @clobber_exec_lo() {
|
|
entry:
|
|
call void asm sideeffect "; clobber $0", "~{exec_lo}"()
|
|
ret void
|
|
}
|
|
|
|
; FIXME: This should warn too
|
|
; ERR-NOT: warning
|
|
define amdgpu_kernel void @def_exec(i64 addrspace(1)* %ptr) {
|
|
entry:
|
|
%exec = call i64 asm sideeffect "; def $0", "={exec}"()
|
|
store i64 %exec, i64 addrspace(1)* %ptr
|
|
ret void
|
|
}
|
|
|
|
attributes #0 = { "amdgpu-waves-per-eu"="10,10" }
|