From e28c71596ad509bdccf32be3f33cf8efcba8f74e Mon Sep 17 00:00:00 2001 From: Igor Wodiany Date: Thu, 6 Nov 2025 16:54:21 +0000 Subject: [PATCH] [mlir][spirv] Add validation for loop and struct tests This adds missing extensions and capabilities to both tests, and missing offsets in the struct tests. Once this patch is merged all tests that can be validated are. --- mlir/test/Target/SPIRV/loop.mlir | 7 ++++++- mlir/test/Target/SPIRV/struct.mlir | 23 ++++++++++++++--------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/mlir/test/Target/SPIRV/loop.mlir b/mlir/test/Target/SPIRV/loop.mlir index 95b87b319ac2d..b9a4295a04e7c 100644 --- a/mlir/test/Target/SPIRV/loop.mlir +++ b/mlir/test/Target/SPIRV/loop.mlir @@ -1,5 +1,10 @@ // RUN: mlir-translate -no-implicit-module -split-input-file -test-spirv-roundtrip %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 %} + // Single loop spirv.module Logical GLSL450 requires #spirv.vce { @@ -62,7 +67,7 @@ spirv.module Logical GLSL450 requires #spirv.vce { // Single loop with block arguments -spirv.module Logical GLSL450 requires #spirv.vce { +spirv.module Logical GLSL450 requires #spirv.vce { spirv.GlobalVariable @GV1 bind(0, 0) : !spirv.ptr [0])>, StorageBuffer> spirv.GlobalVariable @GV2 bind(0, 1) : !spirv.ptr [0])>, StorageBuffer> // CHECK-LABEL: @loop_kernel diff --git a/mlir/test/Target/SPIRV/struct.mlir b/mlir/test/Target/SPIRV/struct.mlir index 4984ee79f903d..c4235005b07bb 100644 --- a/mlir/test/Target/SPIRV/struct.mlir +++ b/mlir/test/Target/SPIRV/struct.mlir @@ -1,6 +1,11 @@ // RUN: mlir-translate -no-implicit-module -test-spirv-roundtrip %s | FileCheck %s -spirv.module Logical GLSL450 requires #spirv.vce { +// 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 GLSL450 requires #spirv.vce { // CHECK: !spirv.ptr [0])>, Input> spirv.GlobalVariable @var0 bind(0, 1) : !spirv.ptr [0])>, Input> @@ -16,8 +21,8 @@ spirv.module Logical GLSL450 requires #spirv.vce { // CHECK: !spirv.ptr, StorageBuffer> spirv.GlobalVariable @var4 : !spirv.ptr, StorageBuffer> - // CHECK: !spirv.ptr, StorageBuffer> - spirv.GlobalVariable @var5 : !spirv.ptr, StorageBuffer> + // CHECK: !spirv.ptr, StorageBuffer> + spirv.GlobalVariable @var5 : !spirv.ptr, StorageBuffer> // CHECK: !spirv.ptr, StorageBuffer> spirv.GlobalVariable @var6 : !spirv.ptr, StorageBuffer> @@ -34,14 +39,14 @@ spirv.module Logical GLSL450 requires #spirv.vce { // CHECK: !spirv.ptr [0])>, Input> spirv.GlobalVariable @id_var0 : !spirv.ptr [0])>, Input> - // CHECK: !spirv.ptr, StorageBuffer>), Block>, StorageBuffer> - spirv.GlobalVariable @recursive_simple : !spirv.ptr, StorageBuffer>), Block>, StorageBuffer> + // CHECK: !spirv.ptr, StorageBuffer> [0]), Block>, StorageBuffer> + spirv.GlobalVariable @recursive_simple : !spirv.ptr, StorageBuffer> [0]), Block>, StorageBuffer> - // CHECK: !spirv.ptr, Uniform>), Block>, Uniform>), Block>, Uniform> - spirv.GlobalVariable @recursive_2 : !spirv.ptr, Uniform>), Block>, Uniform>), Block>, Uniform> + // CHECK: !spirv.ptr, Uniform> [0]), Block>, Uniform> [0]), Block>, Uniform> + spirv.GlobalVariable @recursive_2 : !spirv.ptr, Uniform> [0]), Block>, Uniform> [0]), Block>, Uniform> - // CHECK: !spirv.ptr, Uniform>, !spirv.ptr, Uniform>), Block>, Uniform>), Block>, Uniform> - spirv.GlobalVariable @recursive_3 : !spirv.ptr, Uniform>, !spirv.ptr, Uniform>), Block>, Uniform>), Block>, Uniform> + // CHECK: !spirv.ptr, Uniform> [0], !spirv.ptr, Uniform> [8]), Block>, Uniform> [0]), Block>, Uniform> + spirv.GlobalVariable @recursive_3 : !spirv.ptr, Uniform> [0], !spirv.ptr, Uniform> [8]), Block>, Uniform> [0]), Block>, Uniform> // CHECK: spirv.GlobalVariable @block : !spirv.ptr [BuiltIn=0], f32 [BuiltIn=1]), Block>, Output> spirv.GlobalVariable @block : !spirv.ptr [BuiltIn=0], f32 [BuiltIn=1]), Block>, Output>