1; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -verify-machineinstrs -o /dev/null 2>&1 %s | FileCheck -check-prefix=ERR %s 2 3; ERR: warning: inline asm clobber list contains reserved registers: v42 4; ERR: note: Reserved registers on the clobber list may not be preserved across the asm statement, and clobbering them may lead to undefined behaviour. 5define amdgpu_kernel void @clobber_occupancy_limited_vgpr() #0 { 6entry: 7 call void asm sideeffect "; clobber $0", "~{v42}"() 8 ret void 9} 10 11; ERR: warning: inline asm clobber list contains reserved registers: v[42:43] 12; ERR: note: Reserved registers on the clobber list may not be preserved across the asm statement, and clobbering them may lead to undefined behaviour. 13define amdgpu_kernel void @clobber_occupancy_limited_vgpr64() #0 { 14entry: 15 call void asm sideeffect "; clobber $0", "~{v[42:43]}"() 16 ret void 17} 18 19; ERR: warning: inline asm clobber list contains reserved registers: m0 20; ERR: note: Reserved registers on the clobber list may not be preserved across the asm statement, and clobbering them may lead to undefined behaviour. 21define amdgpu_kernel void @clobber_m0() { 22entry: 23 call void asm sideeffect "; clobber $0", "~{m0}"() 24 ret void 25} 26 27; ERR: warning: inline asm clobber list contains reserved registers: exec 28; ERR: note: Reserved registers on the clobber list may not be preserved across the asm statement, and clobbering them may lead to undefined behaviour. 29define amdgpu_kernel void @clobber_exec() { 30entry: 31 call void asm sideeffect "; clobber $0", "~{exec}"() 32 ret void 33} 34 35; ERR: warning: inline asm clobber list contains reserved registers: exec_lo 36; ERR: note: Reserved registers on the clobber list may not be preserved across the asm statement, and clobbering them may lead to undefined behaviour. 37define amdgpu_kernel void @clobber_exec_lo() { 38entry: 39 call void asm sideeffect "; clobber $0", "~{exec_lo}"() 40 ret void 41} 42 43; FIXME: This should warn too 44; ERR-NOT: warning: inline asm clobber list contains reserved registers 45define amdgpu_kernel void @def_exec(ptr addrspace(1) %ptr) { 46entry: 47 %exec = call i64 asm sideeffect "; def $0", "={exec}"() 48 store i64 %exec, ptr addrspace(1) %ptr 49 ret void 50} 51 52attributes #0 = { "amdgpu-waves-per-eu"="10,10" } 53