diff --git a/src/writer/spirv/builder.cc b/src/writer/spirv/builder.cc index 5fbdfb70ff..c17cb4de1c 100644 --- a/src/writer/spirv/builder.cc +++ b/src/writer/spirv/builder.cc @@ -3109,7 +3109,7 @@ bool Builder::GenerateControlBarrierIntrinsic(const sem::Intrinsic* intrinsic) { static_cast(spv::MemorySemanticsMask::WorkgroupMemory); } else if (intrinsic->Type() == sem::IntrinsicType::kStorageBarrier) { execution = static_cast(spv::Scope::Workgroup); - memory = static_cast(spv::Scope::Device); + memory = static_cast(spv::Scope::Workgroup); semantics = static_cast(spv::MemorySemanticsMask::AcquireRelease) | static_cast(spv::MemorySemanticsMask::UniformMemory); diff --git a/src/writer/spirv/builder_intrinsic_test.cc b/src/writer/spirv/builder_intrinsic_test.cc index 5925370ddb..f7c068d62e 100644 --- a/src/writer/spirv/builder_intrinsic_test.cc +++ b/src/writer/spirv/builder_intrinsic_test.cc @@ -2541,13 +2541,12 @@ TEST_F(IntrinsicBuilderTest, Call_StorageBarrier) { %1 = OpTypeFunction %2 %6 = OpTypeInt 32 0 %7 = OpConstant %6 2 -%8 = OpConstant %6 1 -%9 = OpConstant %6 72 +%8 = OpConstant %6 72 )"; auto got_types = DumpInstructions(b.types()); EXPECT_EQ(expected_types, got_types); - auto* expected_instructions = R"(OpControlBarrier %7 %8 %9 + auto* expected_instructions = R"(OpControlBarrier %7 %7 %8 )"; auto got_instructions = DumpInstructions(b.functions()[0].instructions()); EXPECT_EQ(expected_instructions, got_instructions); diff --git a/test/intrinsics/gen/storageBarrier/d87211.wgsl.expected.spvasm b/test/intrinsics/gen/storageBarrier/d87211.wgsl.expected.spvasm index f8fa6e97d7..79f2372a0d 100644 --- a/test/intrinsics/gen/storageBarrier/d87211.wgsl.expected.spvasm +++ b/test/intrinsics/gen/storageBarrier/d87211.wgsl.expected.spvasm @@ -1,7 +1,7 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 13 +; Bound: 12 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 @@ -13,15 +13,14 @@ %1 = OpTypeFunction %void %uint = OpTypeInt 32 0 %uint_2 = OpConstant %uint 2 - %uint_1 = OpConstant %uint 1 %uint_72 = OpConstant %uint 72 %storageBarrier_d87211 = OpFunction %void None %1 %4 = OpLabel - OpControlBarrier %uint_2 %uint_1 %uint_72 + OpControlBarrier %uint_2 %uint_2 %uint_72 OpReturn OpFunctionEnd %compute_main = OpFunction %void None %1 - %11 = OpLabel - %12 = OpFunctionCall %void %storageBarrier_d87211 + %10 = OpLabel + %11 = OpFunctionCall %void %storageBarrier_d87211 OpReturn OpFunctionEnd