// RUN: mlir-translate -no-implicit-module -test-spirv-roundtrip -split-input-file %s | FileCheck %s // RUN: %if spirv-tools %{ rm -rf %t %} // RUN: %if spirv-tools %{ mkdir %t %} // RUN: %if spirv-tools %{ mlir-translate --no-implicit-module --serialize-spirv --split-input-file --spirv-save-validation-files-with-prefix=%t/module %s %} // RUN: %if spirv-tools %{ spirv-val %t %} spirv.module Logical OpenCL requires #spirv.vce { spirv.func @noop() -> () "None" { spirv.Return } // CHECK: spirv.EntryPoint "Kernel" @noop // CHECK-NEXT: spirv.ExecutionMode @noop "ContractionOff" spirv.EntryPoint "Kernel" @noop spirv.ExecutionMode @noop "ContractionOff" } // ----- spirv.module Logical GLSL450 requires #spirv.vce { // CHECK: spirv.GlobalVariable @var2 : !spirv.ptr // CHECK-NEXT: spirv.GlobalVariable @var3 : !spirv.ptr // CHECK-NEXT: spirv.func @noop() "None" // CHECK: spirv.EntryPoint "GLCompute" @noop, @var2, @var3 spirv.GlobalVariable @var2 : !spirv.ptr spirv.GlobalVariable @var3 : !spirv.ptr spirv.func @noop() -> () "None" { spirv.Return } spirv.EntryPoint "GLCompute" @noop, @var2, @var3 spirv.ExecutionMode @noop "LocalSize", 1, 1, 1 }