diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-04-04 18:43:11 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-04-04 18:43:11 +0000 |
commit | dce3b51aea56b17d182c779787984f2edac8e3d3 (patch) | |
tree | 6cd63352de717c8383d3f16b73359b296d03d9a4 /test/Verifier | |
parent | 5d76ab9dece3a231da84f1fb9a1870f3d261605d (diff) |
Verifier: Check some amdgpu calling convention restrictions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299457 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Verifier')
-rw-r--r-- | test/Verifier/amdgpu-cc.ll | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/test/Verifier/amdgpu-cc.ll b/test/Verifier/amdgpu-cc.ll new file mode 100644 index 000000000000..68c7f309b6e1 --- /dev/null +++ b/test/Verifier/amdgpu-cc.ll @@ -0,0 +1,55 @@ +; RUN: not llvm-as < %s 2>&1 | FileCheck %s + +; CHECK: Calling convention requires void return type +; CHECK-NEXT: i32 ()* @nonvoid_cc_amdgpu_kernel +define amdgpu_kernel i32 @nonvoid_cc_amdgpu_kernel() { + ret i32 0 +} + +; CHECK: Calling convention does not support varargs or perfect forwarding! +; CHECK-NEXT: void (...)* @varargs_amdgpu_kernel +define amdgpu_kernel void @varargs_amdgpu_kernel(...) { + ret void +} + +; CHECK: Calling convention does not allow sret +; CHECK-NEXT: void (i32*)* @sret_cc_amdgpu_kernel +define amdgpu_kernel void @sret_cc_amdgpu_kernel(i32* sret %ptr) { + ret void +} + +; CHECK: Calling convention does not support varargs or perfect forwarding! +; CHECK-NEXT: void (...)* @varargs_amdgpu_vs +define amdgpu_vs void @varargs_amdgpu_vs(...) { + ret void +} + +; CHECK: Calling convention does not support varargs or perfect forwarding! +; CHECK-NEXT: void (...)* @varargs_amdgpu_gs +define amdgpu_gs void @varargs_amdgpu_gs(...) { + ret void +} + +; CHECK: Calling convention does not support varargs or perfect forwarding! +; CHECK-NEXT: void (...)* @varargs_amdgpu_ps +define amdgpu_ps void @varargs_amdgpu_ps(...) { + ret void +} + +; CHECK: Calling convention does not support varargs or perfect forwarding! +; CHECK-NEXT: void (...)* @varargs_amdgpu_cs +define amdgpu_cs void @varargs_amdgpu_cs(...) { + ret void +} + +; CHECK: Calling convention requires void return type +; CHECK-NEXT: i32 ()* @nonvoid_cc_spir_kernel +define spir_kernel i32 @nonvoid_cc_spir_kernel() { + ret i32 0 +} + +; CHECK: Calling convention does not support varargs or perfect forwarding! +; CHECK-NEXT: void (...)* @varargs_spir_kernel +define spir_kernel void @varargs_spir_kernel(...) { + ret void +} |