Files
clang-p2996/llvm/test/CodeGen/AMDGPU/stack-size-overflow.ll
Matt Arsenault c62745e167 DiagnosticInfo: Report function location for resource limits
We have some odd redundancy where clang specially handles
the stack size case. If clang prints it, the source location is first
followed by "warning". The backend diagnostic, as printed by other tools
puts "warning" first.
2022-10-28 21:42:57 -07:00

48 lines
1.9 KiB
LLVM

; RUN: not llc -march=amdgcn < %s 2>&1 | FileCheck -check-prefix=ERROR %s
; RUN: not llc -march=amdgcn < %s | FileCheck -check-prefix=GCN %s
declare void @llvm.memset.p5i8.i32(i8 addrspace(5)* nocapture, i8, i32, i32, i1) #1
; ERROR: error: <unknown>:0:0: stack frame size (131061) exceeds limit (131056) in function 'stack_size_limit_wave64'
; GCN: ; ScratchSize: 131061
define amdgpu_kernel void @stack_size_limit_wave64() #0 {
entry:
%alloca = alloca [131057 x i8], align 1, addrspace(5)
%alloca.bc = bitcast [131057 x i8] addrspace(5)* %alloca to i8 addrspace(5)*
call void @llvm.memset.p5i8.i32(i8 addrspace(5)* %alloca.bc, i8 9, i32 131057, i32 1, i1 true)
ret void
}
; ERROR: error: <unknown>:0:0: stack frame size (262117) exceeds limit (262112) in function 'stack_size_limit_wave32'
; GCN: ; ScratchSize: 262117
define amdgpu_kernel void @stack_size_limit_wave32() #1 {
entry:
%alloca = alloca [262113 x i8], align 1, addrspace(5)
%alloca.bc = bitcast [262113 x i8] addrspace(5)* %alloca to i8 addrspace(5)*
call void @llvm.memset.p5i8.i32(i8 addrspace(5)* %alloca.bc, i8 9, i32 262113, i32 1, i1 true)
ret void
}
; ERROR-NOT: error:
; GCN: ; ScratchSize: 131056
define amdgpu_kernel void @max_stack_size_wave64() #0 {
entry:
%alloca = alloca [131052 x i8], align 1, addrspace(5)
%alloca.bc = bitcast [131052 x i8] addrspace(5)* %alloca to i8 addrspace(5)*
call void @llvm.memset.p5i8.i32(i8 addrspace(5)* %alloca.bc, i8 9, i32 131052, i32 1, i1 true)
ret void
}
; ERROR-NOT: error:
; GCN: ; ScratchSize: 262112
define amdgpu_kernel void @max_stack_size_wave32() #1 {
entry:
%alloca = alloca [262108 x i8], align 1, addrspace(5)
%alloca.bc = bitcast [262108 x i8] addrspace(5)* %alloca to i8 addrspace(5)*
call void @llvm.memset.p5i8.i32(i8 addrspace(5)* %alloca.bc, i8 9, i32 262108, i32 1, i1 true)
ret void
}
attributes #0 = { "target-cpu" = "gfx900" }
attributes #1 = { "target-cpu" = "gfx1010" }