llvm-project/clang/test/CodeGenOpenCL/spir-calling-conv.cl
Alexander Kornienko 21de0ae3d4 Re-apply "r226548 - Introduce SPIR calling conventions" reverted in r226558.
The test was fixed after a discussion with the revision author: the check
pattern was made more flexible as the "%call" part is not what we actually want
to check strictly there.

The original patch description:
===
Introduce SPIR calling conventions.

This implements Section 3.7 from the SPIR 1.2 spec:

    SPIR kernels should use "spir_kernel" calling convention.
    Non-kernel functions use "spir_func" calling convention. All
    other calling conventions are disallowed.

The patch works only for OpenCL source. Any other uses will need
to ensure that kernels are assigned the spir_kernel calling
convention correctly.
===

llvm-svn: 226561
2015-01-20 11:20:41 +00:00

19 lines
544 B
Common Lisp

// RUN: %clang_cc1 %s -triple "spir-unknown-unknown" -emit-llvm -o - | FileCheck %s
int get_dummy_id(int D);
kernel void bar(global int *A);
kernel void foo(global int *A)
// CHECK: define spir_kernel void @foo(i32 addrspace(1)* %A)
{
int id = get_dummy_id(0);
// CHECK: %{{[a-z0-9_]+}} = tail call spir_func i32 @get_dummy_id(i32 0)
A[id] = id;
bar(A);
// CHECK: tail call spir_kernel void @bar(i32 addrspace(1)* %A)
}
// CHECK: declare spir_func i32 @get_dummy_id(i32)
// CHECK: declare spir_kernel void @bar(i32 addrspace(1)*)