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