// RUN: mlir-opt -split-input-file -spirv-lower-abi-attrs %s | FileCheck %s module attributes { spirv.target_env = #spirv.target_env<#spirv.vce, #spirv.resource_limits<>> } { spirv.module Physical64 OpenCL { // CHECK-LABEL: spirv.module // CHECK: spirv.func [[FN:@.*]]({{%.*}}: f32, {{%.*}}: !spirv.ptr)>, CrossWorkgroup> // We cannot generate SubgroupSize execution mode without necessary capability -- leave it alone. // CHECK-SAME: #spirv.entry_point_abi // CHECK: spirv.EntryPoint "Kernel" [[FN]] // CHECK: spirv.ExecutionMode [[FN]] "LocalSize", 32, 1, 1 spirv.func @kernel( %arg0: f32, %arg1: !spirv.ptr)>, CrossWorkgroup>) "None" attributes {spirv.entry_point_abi = #spirv.entry_point_abi} { spirv.Return } } } // ----- module attributes { spirv.target_env = #spirv.target_env<#spirv.vce, #spirv.resource_limits<>> } { spirv.module Physical64 OpenCL { // CHECK-LABEL: spirv.module // CHECK: spirv.func [[FN:@.*]]({{%.*}}: f32, {{%.*}}: !spirv.ptr)>, CrossWorkgroup> // CHECK: spirv.EntryPoint "Kernel" [[FN]] // CHECK: spirv.ExecutionMode [[FN]] "LocalSize", 32, 1, 1 // CHECK: spirv.ExecutionMode [[FN]] "SubgroupSize", 64 spirv.func @kernel( %arg0: f32, %arg1: !spirv.ptr)>, CrossWorkgroup>) "None" attributes {spirv.entry_point_abi = #spirv.entry_point_abi} { spirv.Return } } }