35 lines · plain
1// RUN: mlir-translate --no-implicit-module --test-spirv-roundtrip %s | FileCheck %s2 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 8spirv.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_intel11 spirv.func @subgroup_block_read_intel(%ptr : !spirv.ptr<i32, StorageBuffer>) -> i32 "None" {12 // CHECK: spirv.INTEL.SubgroupBlockRead %{{.*}} : !spirv.ptr<i32, StorageBuffer> -> i3213 %0 = spirv.INTEL.SubgroupBlockRead %ptr : !spirv.ptr<i32, StorageBuffer> -> i3214 spirv.ReturnValue %0: i3215 }16 // CHECK-LABEL: @subgroup_block_read_intel_vector17 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_intel23 spirv.func @subgroup_block_write_intel(%ptr : !spirv.ptr<i32, StorageBuffer>, %value: i32) -> () "None" {24 // CHECK: spirv.INTEL.SubgroupBlockWrite %{{.*}}, %{{.*}} : i3225 spirv.INTEL.SubgroupBlockWrite "StorageBuffer" %ptr, %value : i3226 spirv.Return27 }28 // CHECK-LABEL: @subgroup_block_write_intel_vector29 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.Return33 }34}35