Skip to content

Commit f62ff29

Browse files
authored
[mlir][spirv] Fix Intel SubgroupBlock* op tests (#166185)
`spirv-val` learned how to check related ops. Move them to a new test file and set the required capabilities. Closes: #166184
1 parent ac21fde commit f62ff29

File tree

2 files changed

+38
-26
lines changed

2 files changed

+38
-26
lines changed

mlir/test/Target/SPIRV/group-ops.mlir

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
// RUN: mlir-translate -no-implicit-module -test-spirv-roundtrip -split-input-file %s | FileCheck %s
1+
// RUN: mlir-translate --no-implicit-module --test-spirv-roundtrip --split-input-file %s | FileCheck %s
22

33
// RUN: %if spirv-tools %{ rm -rf %t %}
44
// RUN: %if spirv-tools %{ mkdir %t %}
55
// RUN: %if spirv-tools %{ mlir-translate --no-implicit-module --serialize-spirv --split-input-file --spirv-save-validation-files-with-prefix=%t/module %s %}
66
// RUN: %if spirv-tools %{ spirv-val %t %}
77

8-
spirv.module Logical GLSL450 requires #spirv.vce<v1.3, [Shader, Linkage, SubgroupBallotKHR, Groups, SubgroupBufferBlockIOINTEL, GroupNonUniformArithmetic, GroupUniformArithmeticKHR], [SPV_KHR_storage_buffer_storage_class, SPV_KHR_shader_ballot, SPV_INTEL_subgroups, SPV_KHR_uniform_group_instructions]> {
8+
spirv.module Logical GLSL450 requires #spirv.vce<v1.3,
9+
[Shader, Linkage, SubgroupBallotKHR, Groups, GroupNonUniformArithmetic, GroupUniformArithmeticKHR],
10+
[SPV_KHR_storage_buffer_storage_class, SPV_KHR_shader_ballot, SPV_KHR_uniform_group_instructions]> {
911
// CHECK-LABEL: @subgroup_ballot
1012
spirv.func @subgroup_ballot(%predicate: i1) -> vector<4xi32> "None" {
1113
// CHECK: %{{.*}} = spirv.KHR.SubgroupBallot %{{.*}}: vector<4xi32>
@@ -24,30 +26,6 @@ spirv.module Logical GLSL450 requires #spirv.vce<v1.3, [Shader, Linkage, Subgrou
2426
%0 = spirv.GroupBroadcast <Workgroup> %value, %localid : f32, vector<3xi32>
2527
spirv.ReturnValue %0: f32
2628
}
27-
// CHECK-LABEL: @subgroup_block_read_intel
28-
spirv.func @subgroup_block_read_intel(%ptr : !spirv.ptr<i32, StorageBuffer>) -> i32 "None" {
29-
// CHECK: spirv.INTEL.SubgroupBlockRead %{{.*}} : !spirv.ptr<i32, StorageBuffer> -> i32
30-
%0 = spirv.INTEL.SubgroupBlockRead %ptr : !spirv.ptr<i32, StorageBuffer> -> i32
31-
spirv.ReturnValue %0: i32
32-
}
33-
// CHECK-LABEL: @subgroup_block_read_intel_vector
34-
spirv.func @subgroup_block_read_intel_vector(%ptr : !spirv.ptr<i32, StorageBuffer>) -> vector<3xi32> "None" {
35-
// CHECK: spirv.INTEL.SubgroupBlockRead %{{.*}} : !spirv.ptr<i32, StorageBuffer> -> vector<3xi32>
36-
%0 = spirv.INTEL.SubgroupBlockRead %ptr : !spirv.ptr<i32, StorageBuffer> -> vector<3xi32>
37-
spirv.ReturnValue %0: vector<3xi32>
38-
}
39-
// CHECK-LABEL: @subgroup_block_write_intel
40-
spirv.func @subgroup_block_write_intel(%ptr : !spirv.ptr<i32, StorageBuffer>, %value: i32) -> () "None" {
41-
// CHECK: spirv.INTEL.SubgroupBlockWrite %{{.*}}, %{{.*}} : i32
42-
spirv.INTEL.SubgroupBlockWrite "StorageBuffer" %ptr, %value : i32
43-
spirv.Return
44-
}
45-
// CHECK-LABEL: @subgroup_block_write_intel_vector
46-
spirv.func @subgroup_block_write_intel_vector(%ptr : !spirv.ptr<i32, StorageBuffer>, %value: vector<3xi32>) -> () "None" {
47-
// CHECK: spirv.INTEL.SubgroupBlockWrite %{{.*}}, %{{.*}} : vector<3xi32>
48-
spirv.INTEL.SubgroupBlockWrite "StorageBuffer" %ptr, %value : vector<3xi32>
49-
spirv.Return
50-
}
5129
// CHECK-LABEL: @group_iadd
5230
spirv.func @group_iadd(%value: i32) -> i32 "None" {
5331
// CHECK: spirv.GroupIAdd <Workgroup> <Reduce> %{{.*}} : i32
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// RUN: mlir-translate --no-implicit-module --test-spirv-roundtrip %s | FileCheck %s
2+
3+
// RUN: %if spirv-tools %{ rm -rf %t %}
4+
// RUN: %if spirv-tools %{ mkdir %t %}
5+
// RUN: %if spirv-tools %{ mlir-translate --no-implicit-module --serialize-spirv --spirv-save-validation-files-with-prefix=%t/module %s %}
6+
// RUN: %if spirv-tools %{ spirv-val %t %}
7+
8+
spirv.module Physical64 GLSL450 requires #spirv.vce<v1.3, [Addresses, Shader, Linkage, SubgroupBufferBlockIOINTEL],
9+
[SPV_KHR_storage_buffer_storage_class, SPV_INTEL_subgroups]> {
10+
// CHECK-LABEL: @subgroup_block_read_intel
11+
spirv.func @subgroup_block_read_intel(%ptr : !spirv.ptr<i32, StorageBuffer>) -> i32 "None" {
12+
// CHECK: spirv.INTEL.SubgroupBlockRead %{{.*}} : !spirv.ptr<i32, StorageBuffer> -> i32
13+
%0 = spirv.INTEL.SubgroupBlockRead %ptr : !spirv.ptr<i32, StorageBuffer> -> i32
14+
spirv.ReturnValue %0: i32
15+
}
16+
// CHECK-LABEL: @subgroup_block_read_intel_vector
17+
spirv.func @subgroup_block_read_intel_vector(%ptr : !spirv.ptr<i32, StorageBuffer>) -> vector<3xi32> "None" {
18+
// CHECK: spirv.INTEL.SubgroupBlockRead %{{.*}} : !spirv.ptr<i32, StorageBuffer> -> vector<3xi32>
19+
%0 = spirv.INTEL.SubgroupBlockRead %ptr : !spirv.ptr<i32, StorageBuffer> -> vector<3xi32>
20+
spirv.ReturnValue %0: vector<3xi32>
21+
}
22+
// CHECK-LABEL: @subgroup_block_write_intel
23+
spirv.func @subgroup_block_write_intel(%ptr : !spirv.ptr<i32, StorageBuffer>, %value: i32) -> () "None" {
24+
// CHECK: spirv.INTEL.SubgroupBlockWrite %{{.*}}, %{{.*}} : i32
25+
spirv.INTEL.SubgroupBlockWrite "StorageBuffer" %ptr, %value : i32
26+
spirv.Return
27+
}
28+
// CHECK-LABEL: @subgroup_block_write_intel_vector
29+
spirv.func @subgroup_block_write_intel_vector(%ptr : !spirv.ptr<i32, StorageBuffer>, %value: vector<3xi32>) -> () "None" {
30+
// CHECK: spirv.INTEL.SubgroupBlockWrite %{{.*}}, %{{.*}} : vector<3xi32>
31+
spirv.INTEL.SubgroupBlockWrite "StorageBuffer" %ptr, %value : vector<3xi32>
32+
spirv.Return
33+
}
34+
}

0 commit comments

Comments
 (0)