[spirv-reader] Fix storageBarrier emission

WGSL's `storageBarrier()` builtin has a memory scope of `Workgroup`,
not `Device`.

Change-Id: Ie627c27a5f247542c5b06d37e2f0f1f8f837e042
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/146260
Reviewed-by: David Neto <dneto@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/src/tint/lang/spirv/reader/ast_parser/barrier_test.cc b/src/tint/lang/spirv/reader/ast_parser/barrier_test.cc
index 42d57ca..5aa0678 100644
--- a/src/tint/lang/spirv/reader/ast_parser/barrier_test.cc
+++ b/src/tint/lang/spirv/reader/ast_parser/barrier_test.cc
@@ -87,7 +87,7 @@
     %uint_72 = OpConstant %uint 72
      %helper = OpFunction %void None %1
           %4 = OpLabel
-               OpControlBarrier %uint_2 %uint_1 %uint_72
+               OpControlBarrier %uint_2 %uint_2 %uint_72
                OpReturn
                OpFunctionEnd
        %main = OpFunction %void None %1
@@ -187,18 +187,18 @@
        %void = OpTypeVoid
           %1 = OpTypeFunction %void
        %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
      %uint_2 = OpConstant %uint 2
-     %uint_8 = OpConstant %uint 8
     %uint_72 = OpConstant %uint 72
        %main = OpFunction %void None %1
           %4 = OpLabel
-               OpControlBarrier %uint_2 %uint_8 %uint_72
+               OpControlBarrier %uint_2 %uint_1 %uint_72
                OpReturn
                OpFunctionEnd
   )");
     EXPECT_FALSE(program.IsValid());
     EXPECT_THAT(program.Diagnostics().str(),
-                HasSubstr("storageBarrier requires device memory scope"));
+                HasSubstr("storageBarrier requires workgroup memory scope"));
 }
 
 }  // namespace
diff --git a/src/tint/lang/spirv/reader/ast_parser/function.cc b/src/tint/lang/spirv/reader/ast_parser/function.cc
index 895efcf..8316aa2 100644
--- a/src/tint/lang/spirv/reader/ast_parser/function.cc
+++ b/src/tint/lang/spirv/reader/ast_parser/function.cc
@@ -5299,8 +5299,8 @@
         semantics &= ~static_cast<uint32_t>(spv::MemorySemanticsMask::WorkgroupMemory);
     }
     if (semantics & uint32_t(spv::MemorySemanticsMask::UniformMemory)) {
-        if (memory != uint32_t(spv::Scope::Device)) {
-            return Fail() << "storageBarrier requires device memory scope";
+        if (memory != uint32_t(spv::Scope::Workgroup)) {
+            return Fail() << "storageBarrier requires workgroup memory scope";
         }
         AddStatement(builder_.CallStmt(builder_.Call("storageBarrier")));
         semantics &= ~static_cast<uint32_t>(spv::MemorySemanticsMask::UniformMemory);