xref: /llvm-project/llvm/test/CodeGen/SPIRV/execution-mode-reqd_work_group_size.ll (revision 0047df9af4a106560197850438d6543dcb87d839)
1; From Khronos Translator's test case: test/reqd_work_group_size_md.ll
2
3; The purpose of this test is to check that the reqd_work_group_size metadata
4; is correctly converted to the LocalSize execution mode for the kernels it is
5; applied to.
6
7; RUN: llc -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s
8; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %}
9
10; CHECK: OpMemoryModel
11; CHECK-DAG: OpEntryPoint Kernel %[[#ENTRY1:]] "test1"
12; CHECK-DAG: OpEntryPoint Kernel %[[#ENTRY2:]] "test2"
13; CHECK-DAG: OpEntryPoint Kernel %[[#ENTRY3:]] "test3"
14; CHECK-DAG: OpExecutionMode %[[#ENTRY1]] LocalSize 1 2 3
15; CHECK-DAG: OpExecutionMode %[[#ENTRY2]] LocalSize 2 3 1
16; CHECK-DAG: OpExecutionMode %[[#ENTRY3]] LocalSize 3 1 1
17
18define spir_kernel void @test1() !reqd_work_group_size !1 {
19entry:
20  ret void
21}
22
23define spir_kernel void @test2() !reqd_work_group_size !2 {
24entry:
25  ret void
26}
27
28define spir_kernel void @test3() !reqd_work_group_size !3 {
29entry:
30  ret void
31}
32
33!1 = !{i32 1, i32 2, i32 3}
34!2 = !{i32 2, i32 3}
35!3 = !{i32 3}
36