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 | 3333968771e5c58a8cdd7ab9ef3c2e1090c8c6b5 (patch) | |
tree | 1a3a65beba784f6f2ee9d3197bb992b33e7478cf /llvm/test/Verifier/amdgpu-cc.ll | |
parent | 7b5c098cfa79897e1eb157911b47b464da4a92f2 (diff) | |
download | bcm5719-llvm-3333968771e5c58a8cdd7ab9ef3c2e1090c8c6b5.tar.gz bcm5719-llvm-3333968771e5c58a8cdd7ab9ef3c2e1090c8c6b5.zip |
Verifier: Check some amdgpu calling convention restrictions
llvm-svn: 299457
Diffstat (limited to 'llvm/test/Verifier/amdgpu-cc.ll')
-rw-r--r-- | llvm/test/Verifier/amdgpu-cc.ll | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/llvm/test/Verifier/amdgpu-cc.ll b/llvm/test/Verifier/amdgpu-cc.ll new file mode 100644 index 00000000000..68c7f309b6e --- /dev/null +++ b/llvm/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 +} |