Files
clang-p2996/llvm/test/CodeGen/AMDGPU/inline-asm-reserved-regs.ll
Matt Arsenault a96dbb9035 CodeGen: Use asm register names in warning message
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.
2022-02-02 14:20:12 -05:00

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" }