xref: /llvm-project/llvm/test/CodeGen/SPIRV/execution-mode-per-entry-point.ll (revision 8e8f9c0bc0773147b8e9dbc0df9730efd630e18f)
1; RUN: llc -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s
2; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %}
3
4; CHECK: OpMemoryModel
5; CHECK-DAG: OpEntryPoint Kernel %[[#ENTRY1:]] "foo1"
6; CHECK-DAG: OpEntryPoint Kernel %[[#ENTRY4:]] "foo4"
7; CHECK-NOT: OpSource
8; CHECK-DAG: OpExecutionMode %[[#ENTRY1]] {{[a-zA-Z]+}}
9; CHECK-DAG: OpExecutionMode %[[#ENTRY4]] {{[a-zA-Z]+}}
10; CHECK: OpSource
11
12; RUN: llc -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s --check-prefix=CHECKN
13
14; CHECKN: OpMemoryModel
15; CHECKN-COUNT-2: OpEntryPoint Kernel
16; CHECKN-NOT: OpEntryPoint Kernel
17; CHECKN-COUNT-2: OpExecutionMode
18; CHECKN-NOT: OpExecutionMode
19; CHECKN: OpSource
20
21define spir_kernel void @foo1() {
22entry:
23  ret void
24}
25
26define void @foo2() {
27entry:
28  ret void
29}
30
31define dso_local spir_func void @foo3() {
32entry:
33  ret void
34}
35
36define spir_kernel void @foo4() {
37entry:
38  ret void
39}
40