tint/hlsl+glsl: fix workgroupUniformLoad polyfills

The BuiltinPolyfill transform expects the DirectVariableAccess transform
to run after it, but this regressed as part of
https://dawn-review.googlesource.com/c/dawn/+/122203

Add unit test along with e2e 1926.wgsl test.

Bug: tint:1926
Change-Id: I5107453ce152b12e6f2f36930846e1fffa775708
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/131020
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/tint/transform/builtin_polyfill_test.cc b/src/tint/transform/builtin_polyfill_test.cc
index 65c1f29..ad47af6 100644
--- a/src/tint/transform/builtin_polyfill_test.cc
+++ b/src/tint/transform/builtin_polyfill_test.cc
@@ -16,6 +16,7 @@
 
 #include <utility>
 
+#include "src/tint/transform/direct_variable_access.h"
 #include "src/tint/transform/test_helper.h"
 
 namespace tint::transform {
@@ -3673,8 +3674,23 @@
 DataMap polyfillWorkgroupUniformLoad() {
     BuiltinPolyfill::Builtins builtins;
     builtins.workgroup_uniform_load = true;
+
     DataMap data;
     data.Add<BuiltinPolyfill::Config>(builtins);
+
+    return data;
+}
+
+DataMap polyfillWorkgroupUniformLoadWithDirectVariableAccess() {
+    DataMap data;
+
+    BuiltinPolyfill::Builtins builtins;
+    builtins.workgroup_uniform_load = true;
+    data.Add<BuiltinPolyfill::Config>(builtins);
+
+    DirectVariableAccess::Options options;
+    data.Add<DirectVariableAccess::Config>(options);
+
     return data;
 }
 
@@ -3830,6 +3846,50 @@
     EXPECT_EQ(expect, str(got));
 }
 
+TEST_F(BuiltinPolyfillTest, WorkgroupUniformLoad_DirectVariableAccess) {
+    auto* src = R"(
+var<workgroup> v : i32;
+var<workgroup> v2 : i32;
+
+fn f() {
+  let r = workgroupUniformLoad(&v);
+  let s = workgroupUniformLoad(&v2);
+}
+)";
+
+    auto* expect = R"(
+enable chromium_experimental_full_ptr_parameters;
+
+fn tint_workgroupUniformLoad_v() -> i32 {
+  workgroupBarrier();
+  let result = v;
+  workgroupBarrier();
+  return result;
+}
+
+fn tint_workgroupUniformLoad_v2() -> i32 {
+  workgroupBarrier();
+  let result = v2;
+  workgroupBarrier();
+  return result;
+}
+
+var<workgroup> v : i32;
+
+var<workgroup> v2 : i32;
+
+fn f() {
+  let r = tint_workgroupUniformLoad_v();
+  let s = tint_workgroupUniformLoad_v2();
+}
+)";
+
+    auto got = Run<BuiltinPolyfill, DirectVariableAccess>(
+        src, polyfillWorkgroupUniformLoadWithDirectVariableAccess());
+
+    EXPECT_EQ(expect, str(got));
+}
+
 ////////////////////////////////////////////////////////////////////////////////
 // quantizeToF16
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/src/tint/writer/glsl/generator_impl.cc b/src/tint/writer/glsl/generator_impl.cc
index 8fcdd3d..181bce8 100644
--- a/src/tint/writer/glsl/generator_impl.cc
+++ b/src/tint/writer/glsl/generator_impl.cc
@@ -170,7 +170,6 @@
     manager.Add<transform::PreservePadding>();  // Must come before DirectVariableAccess
 
     manager.Add<transform::Unshadow>();  // Must come before DirectVariableAccess
-    manager.Add<transform::DirectVariableAccess>();
 
     manager.Add<transform::PromoteSideEffectsToDecl>();
 
@@ -203,9 +202,11 @@
         polyfills.texture_sample_base_clamp_to_edge_2d_f32 = true;
         polyfills.workgroup_uniform_load = true;
         data.Add<transform::BuiltinPolyfill::Config>(polyfills);
-        manager.Add<transform::BuiltinPolyfill>();
+        manager.Add<transform::BuiltinPolyfill>();  // Must come before DirectVariableAccess
     }
 
+    manager.Add<transform::DirectVariableAccess>();
+
     if (!options.disable_workgroup_init) {
         // ZeroInitWorkgroupMemory must come before CanonicalizeEntryPointIO as
         // ZeroInitWorkgroupMemory may inject new builtin parameters.
diff --git a/src/tint/writer/hlsl/generator_impl.cc b/src/tint/writer/hlsl/generator_impl.cc
index ed86e9e..fefd424 100644
--- a/src/tint/writer/hlsl/generator_impl.cc
+++ b/src/tint/writer/hlsl/generator_impl.cc
@@ -176,8 +176,6 @@
 
     manager.Add<transform::Unshadow>();  // Must come before DirectVariableAccess
 
-    manager.Add<transform::DirectVariableAccess>();
-
     // LocalizeStructArrayAssignment must come after:
     // * SimplifyPointers, because it assumes assignment to arrays in structs are
     // done directly, not indirectly.
@@ -229,9 +227,11 @@
         polyfills.texture_sample_base_clamp_to_edge_2d_f32 = true;
         polyfills.workgroup_uniform_load = true;
         data.Add<transform::BuiltinPolyfill::Config>(polyfills);
-        manager.Add<transform::BuiltinPolyfill>();
+        manager.Add<transform::BuiltinPolyfill>();  // Must come before DirectVariableAccess
     }
 
+    manager.Add<transform::DirectVariableAccess>();
+
     if (!options.disable_workgroup_init) {
         // ZeroInitWorkgroupMemory must come before CanonicalizeEntryPointIO as
         // ZeroInitWorkgroupMemory may inject new builtin parameters.
diff --git a/src/tint/writer/spirv/generator_impl.cc b/src/tint/writer/spirv/generator_impl.cc
index 80485c9..0a3f99f 100644
--- a/src/tint/writer/spirv/generator_impl.cc
+++ b/src/tint/writer/spirv/generator_impl.cc
@@ -119,7 +119,7 @@
         polyfills.quantize_to_vec_f16 = true;  // crbug.com/tint/1741
         polyfills.workgroup_uniform_load = true;
         data.Add<transform::BuiltinPolyfill::Config>(polyfills);
-        manager.Add<transform::BuiltinPolyfill>();
+        manager.Add<transform::BuiltinPolyfill>();  // Must come before DirectVariableAccess
     }
 
     bool disable_workgroup_init_in_sanitizer =
diff --git a/test/tint/bug/tint/1926.wgsl b/test/tint/bug/tint/1926.wgsl
new file mode 100644
index 0000000..5e86097
--- /dev/null
+++ b/test/tint/bug/tint/1926.wgsl
@@ -0,0 +1,16 @@
+var<workgroup> sh_atomic_failed: u32;
+
+@group(0) @binding(4)
+var<storage, read_write> output: u32;
+
+@compute @workgroup_size(256)
+fn main(
+    @builtin(global_invocation_id) global_id: vec3<u32>,
+    @builtin(local_invocation_id) local_id: vec3<u32>,
+) {
+    let failed = workgroupUniformLoad(&sh_atomic_failed);
+    
+    if (local_id.x == 0) {
+        output = failed;
+    }
+}
diff --git a/test/tint/bug/tint/1926.wgsl.expected.dxc.hlsl b/test/tint/bug/tint/1926.wgsl.expected.dxc.hlsl
new file mode 100644
index 0000000..9367ce7
--- /dev/null
+++ b/test/tint/bug/tint/1926.wgsl.expected.dxc.hlsl
@@ -0,0 +1,33 @@
+groupshared uint sh_atomic_failed;
+
+uint tint_workgroupUniformLoad_sh_atomic_failed() {
+  GroupMemoryBarrierWithGroupSync();
+  const uint result = sh_atomic_failed;
+  GroupMemoryBarrierWithGroupSync();
+  return result;
+}
+
+RWByteAddressBuffer output : register(u4);
+
+struct tint_symbol_1 {
+  uint3 local_id : SV_GroupThreadID;
+  uint local_invocation_index : SV_GroupIndex;
+  uint3 global_id : SV_DispatchThreadID;
+};
+
+void main_inner(uint3 global_id, uint3 local_id, uint local_invocation_index) {
+  if ((local_invocation_index < 1u)) {
+    sh_atomic_failed = 0u;
+  }
+  GroupMemoryBarrierWithGroupSync();
+  const uint failed = tint_workgroupUniformLoad_sh_atomic_failed();
+  if ((local_id.x == 0u)) {
+    output.Store(0u, asuint(failed));
+  }
+}
+
+[numthreads(256, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  main_inner(tint_symbol.global_id, tint_symbol.local_id, tint_symbol.local_invocation_index);
+  return;
+}
diff --git a/test/tint/bug/tint/1926.wgsl.expected.fxc.hlsl b/test/tint/bug/tint/1926.wgsl.expected.fxc.hlsl
new file mode 100644
index 0000000..9367ce7
--- /dev/null
+++ b/test/tint/bug/tint/1926.wgsl.expected.fxc.hlsl
@@ -0,0 +1,33 @@
+groupshared uint sh_atomic_failed;
+
+uint tint_workgroupUniformLoad_sh_atomic_failed() {
+  GroupMemoryBarrierWithGroupSync();
+  const uint result = sh_atomic_failed;
+  GroupMemoryBarrierWithGroupSync();
+  return result;
+}
+
+RWByteAddressBuffer output : register(u4);
+
+struct tint_symbol_1 {
+  uint3 local_id : SV_GroupThreadID;
+  uint local_invocation_index : SV_GroupIndex;
+  uint3 global_id : SV_DispatchThreadID;
+};
+
+void main_inner(uint3 global_id, uint3 local_id, uint local_invocation_index) {
+  if ((local_invocation_index < 1u)) {
+    sh_atomic_failed = 0u;
+  }
+  GroupMemoryBarrierWithGroupSync();
+  const uint failed = tint_workgroupUniformLoad_sh_atomic_failed();
+  if ((local_id.x == 0u)) {
+    output.Store(0u, asuint(failed));
+  }
+}
+
+[numthreads(256, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  main_inner(tint_symbol.global_id, tint_symbol.local_id, tint_symbol.local_invocation_index);
+  return;
+}
diff --git a/test/tint/bug/tint/1926.wgsl.expected.glsl b/test/tint/bug/tint/1926.wgsl.expected.glsl
new file mode 100644
index 0000000..5e3cd06
--- /dev/null
+++ b/test/tint/bug/tint/1926.wgsl.expected.glsl
@@ -0,0 +1,30 @@
+#version 310 es
+
+shared uint sh_atomic_failed;
+uint tint_workgroupUniformLoad_sh_atomic_failed() {
+  barrier();
+  uint result = sh_atomic_failed;
+  barrier();
+  return result;
+}
+
+layout(binding = 4, std430) buffer tint_symbol_block_ssbo {
+  uint inner;
+} tint_symbol;
+
+void tint_symbol_1(uvec3 global_id, uvec3 local_id, uint local_invocation_index) {
+  if ((local_invocation_index < 1u)) {
+    sh_atomic_failed = 0u;
+  }
+  barrier();
+  uint failed = tint_workgroupUniformLoad_sh_atomic_failed();
+  if ((local_id.x == 0u)) {
+    tint_symbol.inner = failed;
+  }
+}
+
+layout(local_size_x = 256, local_size_y = 1, local_size_z = 1) in;
+void main() {
+  tint_symbol_1(gl_GlobalInvocationID, gl_LocalInvocationID, gl_LocalInvocationIndex);
+  return;
+}
diff --git a/test/tint/bug/tint/1926.wgsl.expected.msl b/test/tint/bug/tint/1926.wgsl.expected.msl
new file mode 100644
index 0000000..1a9d82f
--- /dev/null
+++ b/test/tint/bug/tint/1926.wgsl.expected.msl
@@ -0,0 +1,27 @@
+#include <metal_stdlib>
+
+using namespace metal;
+uint tint_workgroupUniformLoad(threadgroup uint* const p) {
+  threadgroup_barrier(mem_flags::mem_threadgroup);
+  uint const result = *(p);
+  threadgroup_barrier(mem_flags::mem_threadgroup);
+  return result;
+}
+
+void tint_symbol_inner(uint3 global_id, uint3 local_id, uint local_invocation_index, threadgroup uint* const tint_symbol_1, device uint* const tint_symbol_2) {
+  if ((local_invocation_index < 1u)) {
+    *(tint_symbol_1) = 0u;
+  }
+  threadgroup_barrier(mem_flags::mem_threadgroup);
+  uint const failed = tint_workgroupUniformLoad(tint_symbol_1);
+  if ((local_id[0] == 0u)) {
+    *(tint_symbol_2) = failed;
+  }
+}
+
+kernel void tint_symbol(device uint* tint_symbol_4 [[buffer(0)]], uint3 global_id [[thread_position_in_grid]], uint3 local_id [[thread_position_in_threadgroup]], uint local_invocation_index [[thread_index_in_threadgroup]]) {
+  threadgroup uint tint_symbol_3;
+  tint_symbol_inner(global_id, local_id, local_invocation_index, &(tint_symbol_3), tint_symbol_4);
+  return;
+}
+
diff --git a/test/tint/bug/tint/1926.wgsl.expected.spvasm b/test/tint/bug/tint/1926.wgsl.expected.spvasm
new file mode 100644
index 0000000..48ba716
--- /dev/null
+++ b/test/tint/bug/tint/1926.wgsl.expected.spvasm
@@ -0,0 +1,92 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 50
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %global_id_1 %local_id_1 %local_invocation_index_1
+               OpExecutionMode %main LocalSize 256 1 1
+               OpName %global_id_1 "global_id_1"
+               OpName %local_id_1 "local_id_1"
+               OpName %local_invocation_index_1 "local_invocation_index_1"
+               OpName %sh_atomic_failed "sh_atomic_failed"
+               OpName %output_block "output_block"
+               OpMemberName %output_block 0 "inner"
+               OpName %output "output"
+               OpName %tint_workgroupUniformLoad_sh_atomic_failed "tint_workgroupUniformLoad_sh_atomic_failed"
+               OpName %main_inner "main_inner"
+               OpName %global_id "global_id"
+               OpName %local_id "local_id"
+               OpName %local_invocation_index "local_invocation_index"
+               OpName %main "main"
+               OpDecorate %global_id_1 BuiltIn GlobalInvocationId
+               OpDecorate %local_id_1 BuiltIn LocalInvocationId
+               OpDecorate %local_invocation_index_1 BuiltIn LocalInvocationIndex
+               OpDecorate %output_block Block
+               OpMemberDecorate %output_block 0 Offset 0
+               OpDecorate %output DescriptorSet 0
+               OpDecorate %output Binding 4
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%global_id_1 = OpVariable %_ptr_Input_v3uint Input
+ %local_id_1 = OpVariable %_ptr_Input_v3uint Input
+%_ptr_Input_uint = OpTypePointer Input %uint
+%local_invocation_index_1 = OpVariable %_ptr_Input_uint Input
+%_ptr_Workgroup_uint = OpTypePointer Workgroup %uint
+%sh_atomic_failed = OpVariable %_ptr_Workgroup_uint Workgroup
+%output_block = OpTypeStruct %uint
+%_ptr_StorageBuffer_output_block = OpTypePointer StorageBuffer %output_block
+     %output = OpVariable %_ptr_StorageBuffer_output_block StorageBuffer
+         %13 = OpTypeFunction %uint
+       %void = OpTypeVoid
+     %uint_2 = OpConstant %uint 2
+   %uint_264 = OpConstant %uint 264
+         %22 = OpTypeFunction %void %v3uint %v3uint %uint
+     %uint_1 = OpConstant %uint 1
+       %bool = OpTypeBool
+         %33 = OpConstantNull %uint
+     %uint_0 = OpConstant %uint 0
+%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
+         %43 = OpTypeFunction %void
+%tint_workgroupUniformLoad_sh_atomic_failed = OpFunction %uint None %13
+         %15 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+         %20 = OpLoad %uint %sh_atomic_failed
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+               OpReturnValue %20
+               OpFunctionEnd
+ %main_inner = OpFunction %void None %22
+  %global_id = OpFunctionParameter %v3uint
+   %local_id = OpFunctionParameter %v3uint
+%local_invocation_index = OpFunctionParameter %uint
+         %27 = OpLabel
+         %29 = OpULessThan %bool %local_invocation_index %uint_1
+               OpSelectionMerge %31 None
+               OpBranchConditional %29 %32 %31
+         %32 = OpLabel
+               OpStore %sh_atomic_failed %33
+               OpBranch %31
+         %31 = OpLabel
+               OpControlBarrier %uint_2 %uint_2 %uint_264
+         %35 = OpFunctionCall %uint %tint_workgroupUniformLoad_sh_atomic_failed
+         %36 = OpCompositeExtract %uint %local_id 0
+         %37 = OpIEqual %bool %36 %33
+               OpSelectionMerge %38 None
+               OpBranchConditional %37 %39 %38
+         %39 = OpLabel
+         %42 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0
+               OpStore %42 %35
+               OpBranch %38
+         %38 = OpLabel
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %43
+         %45 = OpLabel
+         %47 = OpLoad %v3uint %global_id_1
+         %48 = OpLoad %v3uint %local_id_1
+         %49 = OpLoad %uint %local_invocation_index_1
+         %46 = OpFunctionCall %void %main_inner %47 %48 %49
+               OpReturn
+               OpFunctionEnd
diff --git a/test/tint/bug/tint/1926.wgsl.expected.wgsl b/test/tint/bug/tint/1926.wgsl.expected.wgsl
new file mode 100644
index 0000000..c485055
--- /dev/null
+++ b/test/tint/bug/tint/1926.wgsl.expected.wgsl
@@ -0,0 +1,11 @@
+var<workgroup> sh_atomic_failed : u32;
+
+@group(0) @binding(4) var<storage, read_write> output : u32;
+
+@compute @workgroup_size(256)
+fn main(@builtin(global_invocation_id) global_id : vec3<u32>, @builtin(local_invocation_id) local_id : vec3<u32>) {
+  let failed = workgroupUniformLoad(&(sh_atomic_failed));
+  if ((local_id.x == 0)) {
+    output = failed;
+  }
+}
diff --git a/test/tint/builtins/gen/literal/workgroupUniformLoad/37307c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/workgroupUniformLoad/37307c.wgsl.expected.dxc.hlsl
index 7db1f5c..33ea9c0 100644
--- a/test/tint/builtins/gen/literal/workgroupUniformLoad/37307c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/workgroupUniformLoad/37307c.wgsl.expected.dxc.hlsl
@@ -1,15 +1,16 @@
-uint tint_workgroupUniformLoad(inout uint p) {
+groupshared uint arg_0;
+
+uint tint_workgroupUniformLoad_arg_0() {
   GroupMemoryBarrierWithGroupSync();
-  const uint result = p;
+  const uint result = arg_0;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared uint arg_0;
 RWByteAddressBuffer prevent_dce : register(u0, space2);
 
 void workgroupUniformLoad_37307c() {
-  uint res = tint_workgroupUniformLoad(arg_0);
+  uint res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.Store(0u, asuint(res));
 }
 
diff --git a/test/tint/builtins/gen/literal/workgroupUniformLoad/37307c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/workgroupUniformLoad/37307c.wgsl.expected.fxc.hlsl
index 7db1f5c..33ea9c0 100644
--- a/test/tint/builtins/gen/literal/workgroupUniformLoad/37307c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/workgroupUniformLoad/37307c.wgsl.expected.fxc.hlsl
@@ -1,15 +1,16 @@
-uint tint_workgroupUniformLoad(inout uint p) {
+groupshared uint arg_0;
+
+uint tint_workgroupUniformLoad_arg_0() {
   GroupMemoryBarrierWithGroupSync();
-  const uint result = p;
+  const uint result = arg_0;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared uint arg_0;
 RWByteAddressBuffer prevent_dce : register(u0, space2);
 
 void workgroupUniformLoad_37307c() {
-  uint res = tint_workgroupUniformLoad(arg_0);
+  uint res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.Store(0u, asuint(res));
 }
 
diff --git a/test/tint/builtins/gen/literal/workgroupUniformLoad/37307c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/workgroupUniformLoad/37307c.wgsl.expected.glsl
index 08650d7..fd29d9c 100644
--- a/test/tint/builtins/gen/literal/workgroupUniformLoad/37307c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/workgroupUniformLoad/37307c.wgsl.expected.glsl
@@ -1,19 +1,19 @@
 #version 310 es
 
-uint tint_workgroupUniformLoad(inout uint p) {
+shared uint arg_0;
+uint tint_workgroupUniformLoad_arg_0() {
   barrier();
-  uint result = p;
+  uint result = arg_0;
   barrier();
   return result;
 }
 
-shared uint arg_0;
 layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
   uint inner;
 } prevent_dce;
 
 void workgroupUniformLoad_37307c() {
-  uint res = tint_workgroupUniformLoad(arg_0);
+  uint res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.inner = res;
 }
 
diff --git a/test/tint/builtins/gen/literal/workgroupUniformLoad/7a857c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/workgroupUniformLoad/7a857c.wgsl.expected.dxc.hlsl
index 31bcd63..05e4c85 100644
--- a/test/tint/builtins/gen/literal/workgroupUniformLoad/7a857c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/workgroupUniformLoad/7a857c.wgsl.expected.dxc.hlsl
@@ -1,15 +1,16 @@
-float tint_workgroupUniformLoad(inout float p) {
+groupshared float arg_0;
+
+float tint_workgroupUniformLoad_arg_0() {
   GroupMemoryBarrierWithGroupSync();
-  const float result = p;
+  const float result = arg_0;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared float arg_0;
 RWByteAddressBuffer prevent_dce : register(u0, space2);
 
 void workgroupUniformLoad_7a857c() {
-  float res = tint_workgroupUniformLoad(arg_0);
+  float res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.Store(0u, asuint(res));
 }
 
diff --git a/test/tint/builtins/gen/literal/workgroupUniformLoad/7a857c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/workgroupUniformLoad/7a857c.wgsl.expected.fxc.hlsl
index 31bcd63..05e4c85 100644
--- a/test/tint/builtins/gen/literal/workgroupUniformLoad/7a857c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/workgroupUniformLoad/7a857c.wgsl.expected.fxc.hlsl
@@ -1,15 +1,16 @@
-float tint_workgroupUniformLoad(inout float p) {
+groupshared float arg_0;
+
+float tint_workgroupUniformLoad_arg_0() {
   GroupMemoryBarrierWithGroupSync();
-  const float result = p;
+  const float result = arg_0;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared float arg_0;
 RWByteAddressBuffer prevent_dce : register(u0, space2);
 
 void workgroupUniformLoad_7a857c() {
-  float res = tint_workgroupUniformLoad(arg_0);
+  float res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.Store(0u, asuint(res));
 }
 
diff --git a/test/tint/builtins/gen/literal/workgroupUniformLoad/7a857c.wgsl.expected.glsl b/test/tint/builtins/gen/literal/workgroupUniformLoad/7a857c.wgsl.expected.glsl
index b0d7db3..1dc5546 100644
--- a/test/tint/builtins/gen/literal/workgroupUniformLoad/7a857c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/workgroupUniformLoad/7a857c.wgsl.expected.glsl
@@ -1,19 +1,19 @@
 #version 310 es
 
-float tint_workgroupUniformLoad(inout float p) {
+shared float arg_0;
+float tint_workgroupUniformLoad_arg_0() {
   barrier();
-  float result = p;
+  float result = arg_0;
   barrier();
   return result;
 }
 
-shared float arg_0;
 layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
   float inner;
 } prevent_dce;
 
 void workgroupUniformLoad_7a857c() {
-  float res = tint_workgroupUniformLoad(arg_0);
+  float res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.inner = res;
 }
 
diff --git a/test/tint/builtins/gen/literal/workgroupUniformLoad/9d33de.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/workgroupUniformLoad/9d33de.wgsl.expected.dxc.hlsl
index c495ebc..6d8b261 100644
--- a/test/tint/builtins/gen/literal/workgroupUniformLoad/9d33de.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/workgroupUniformLoad/9d33de.wgsl.expected.dxc.hlsl
@@ -1,15 +1,16 @@
-int tint_workgroupUniformLoad(inout int p) {
+groupshared int arg_0;
+
+int tint_workgroupUniformLoad_arg_0() {
   GroupMemoryBarrierWithGroupSync();
-  const int result = p;
+  const int result = arg_0;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared int arg_0;
 RWByteAddressBuffer prevent_dce : register(u0, space2);
 
 void workgroupUniformLoad_9d33de() {
-  int res = tint_workgroupUniformLoad(arg_0);
+  int res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.Store(0u, asuint(res));
 }
 
diff --git a/test/tint/builtins/gen/literal/workgroupUniformLoad/9d33de.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/literal/workgroupUniformLoad/9d33de.wgsl.expected.fxc.hlsl
index c495ebc..6d8b261 100644
--- a/test/tint/builtins/gen/literal/workgroupUniformLoad/9d33de.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/literal/workgroupUniformLoad/9d33de.wgsl.expected.fxc.hlsl
@@ -1,15 +1,16 @@
-int tint_workgroupUniformLoad(inout int p) {
+groupshared int arg_0;
+
+int tint_workgroupUniformLoad_arg_0() {
   GroupMemoryBarrierWithGroupSync();
-  const int result = p;
+  const int result = arg_0;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared int arg_0;
 RWByteAddressBuffer prevent_dce : register(u0, space2);
 
 void workgroupUniformLoad_9d33de() {
-  int res = tint_workgroupUniformLoad(arg_0);
+  int res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.Store(0u, asuint(res));
 }
 
diff --git a/test/tint/builtins/gen/literal/workgroupUniformLoad/9d33de.wgsl.expected.glsl b/test/tint/builtins/gen/literal/workgroupUniformLoad/9d33de.wgsl.expected.glsl
index 8d3a9e6..5919644 100644
--- a/test/tint/builtins/gen/literal/workgroupUniformLoad/9d33de.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/workgroupUniformLoad/9d33de.wgsl.expected.glsl
@@ -1,19 +1,19 @@
 #version 310 es
 
-int tint_workgroupUniformLoad(inout int p) {
+shared int arg_0;
+int tint_workgroupUniformLoad_arg_0() {
   barrier();
-  int result = p;
+  int result = arg_0;
   barrier();
   return result;
 }
 
-shared int arg_0;
 layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
   int inner;
 } prevent_dce;
 
 void workgroupUniformLoad_9d33de() {
-  int res = tint_workgroupUniformLoad(arg_0);
+  int res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.inner = res;
 }
 
diff --git a/test/tint/builtins/gen/literal/workgroupUniformLoad/e07d08.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/literal/workgroupUniformLoad/e07d08.wgsl.expected.dxc.hlsl
index ed848f2..c8e40ee 100644
--- a/test/tint/builtins/gen/literal/workgroupUniformLoad/e07d08.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/literal/workgroupUniformLoad/e07d08.wgsl.expected.dxc.hlsl
@@ -1,15 +1,16 @@
-float16_t tint_workgroupUniformLoad(inout float16_t p) {
+groupshared float16_t arg_0;
+
+float16_t tint_workgroupUniformLoad_arg_0() {
   GroupMemoryBarrierWithGroupSync();
-  const float16_t result = p;
+  const float16_t result = arg_0;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared float16_t arg_0;
 RWByteAddressBuffer prevent_dce : register(u0, space2);
 
 void workgroupUniformLoad_e07d08() {
-  float16_t res = tint_workgroupUniformLoad(arg_0);
+  float16_t res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.Store<float16_t>(0u, res);
 }
 
diff --git a/test/tint/builtins/gen/literal/workgroupUniformLoad/e07d08.wgsl.expected.glsl b/test/tint/builtins/gen/literal/workgroupUniformLoad/e07d08.wgsl.expected.glsl
index 9d804d4..fe2cfd0 100644
--- a/test/tint/builtins/gen/literal/workgroupUniformLoad/e07d08.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/literal/workgroupUniformLoad/e07d08.wgsl.expected.glsl
@@ -1,20 +1,20 @@
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float : require
 
-float16_t tint_workgroupUniformLoad(inout float16_t p) {
+shared float16_t arg_0;
+float16_t tint_workgroupUniformLoad_arg_0() {
   barrier();
-  float16_t result = p;
+  float16_t result = arg_0;
   barrier();
   return result;
 }
 
-shared float16_t arg_0;
 layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
   float16_t inner;
 } prevent_dce;
 
 void workgroupUniformLoad_e07d08() {
-  float16_t res = tint_workgroupUniformLoad(arg_0);
+  float16_t res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.inner = res;
 }
 
diff --git a/test/tint/builtins/gen/var/workgroupUniformLoad/37307c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/workgroupUniformLoad/37307c.wgsl.expected.dxc.hlsl
index 7db1f5c..33ea9c0 100644
--- a/test/tint/builtins/gen/var/workgroupUniformLoad/37307c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/workgroupUniformLoad/37307c.wgsl.expected.dxc.hlsl
@@ -1,15 +1,16 @@
-uint tint_workgroupUniformLoad(inout uint p) {
+groupshared uint arg_0;
+
+uint tint_workgroupUniformLoad_arg_0() {
   GroupMemoryBarrierWithGroupSync();
-  const uint result = p;
+  const uint result = arg_0;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared uint arg_0;
 RWByteAddressBuffer prevent_dce : register(u0, space2);
 
 void workgroupUniformLoad_37307c() {
-  uint res = tint_workgroupUniformLoad(arg_0);
+  uint res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.Store(0u, asuint(res));
 }
 
diff --git a/test/tint/builtins/gen/var/workgroupUniformLoad/37307c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/workgroupUniformLoad/37307c.wgsl.expected.fxc.hlsl
index 7db1f5c..33ea9c0 100644
--- a/test/tint/builtins/gen/var/workgroupUniformLoad/37307c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/workgroupUniformLoad/37307c.wgsl.expected.fxc.hlsl
@@ -1,15 +1,16 @@
-uint tint_workgroupUniformLoad(inout uint p) {
+groupshared uint arg_0;
+
+uint tint_workgroupUniformLoad_arg_0() {
   GroupMemoryBarrierWithGroupSync();
-  const uint result = p;
+  const uint result = arg_0;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared uint arg_0;
 RWByteAddressBuffer prevent_dce : register(u0, space2);
 
 void workgroupUniformLoad_37307c() {
-  uint res = tint_workgroupUniformLoad(arg_0);
+  uint res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.Store(0u, asuint(res));
 }
 
diff --git a/test/tint/builtins/gen/var/workgroupUniformLoad/37307c.wgsl.expected.glsl b/test/tint/builtins/gen/var/workgroupUniformLoad/37307c.wgsl.expected.glsl
index 08650d7..fd29d9c 100644
--- a/test/tint/builtins/gen/var/workgroupUniformLoad/37307c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/workgroupUniformLoad/37307c.wgsl.expected.glsl
@@ -1,19 +1,19 @@
 #version 310 es
 
-uint tint_workgroupUniformLoad(inout uint p) {
+shared uint arg_0;
+uint tint_workgroupUniformLoad_arg_0() {
   barrier();
-  uint result = p;
+  uint result = arg_0;
   barrier();
   return result;
 }
 
-shared uint arg_0;
 layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
   uint inner;
 } prevent_dce;
 
 void workgroupUniformLoad_37307c() {
-  uint res = tint_workgroupUniformLoad(arg_0);
+  uint res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.inner = res;
 }
 
diff --git a/test/tint/builtins/gen/var/workgroupUniformLoad/7a857c.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/workgroupUniformLoad/7a857c.wgsl.expected.dxc.hlsl
index 31bcd63..05e4c85 100644
--- a/test/tint/builtins/gen/var/workgroupUniformLoad/7a857c.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/workgroupUniformLoad/7a857c.wgsl.expected.dxc.hlsl
@@ -1,15 +1,16 @@
-float tint_workgroupUniformLoad(inout float p) {
+groupshared float arg_0;
+
+float tint_workgroupUniformLoad_arg_0() {
   GroupMemoryBarrierWithGroupSync();
-  const float result = p;
+  const float result = arg_0;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared float arg_0;
 RWByteAddressBuffer prevent_dce : register(u0, space2);
 
 void workgroupUniformLoad_7a857c() {
-  float res = tint_workgroupUniformLoad(arg_0);
+  float res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.Store(0u, asuint(res));
 }
 
diff --git a/test/tint/builtins/gen/var/workgroupUniformLoad/7a857c.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/workgroupUniformLoad/7a857c.wgsl.expected.fxc.hlsl
index 31bcd63..05e4c85 100644
--- a/test/tint/builtins/gen/var/workgroupUniformLoad/7a857c.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/workgroupUniformLoad/7a857c.wgsl.expected.fxc.hlsl
@@ -1,15 +1,16 @@
-float tint_workgroupUniformLoad(inout float p) {
+groupshared float arg_0;
+
+float tint_workgroupUniformLoad_arg_0() {
   GroupMemoryBarrierWithGroupSync();
-  const float result = p;
+  const float result = arg_0;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared float arg_0;
 RWByteAddressBuffer prevent_dce : register(u0, space2);
 
 void workgroupUniformLoad_7a857c() {
-  float res = tint_workgroupUniformLoad(arg_0);
+  float res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.Store(0u, asuint(res));
 }
 
diff --git a/test/tint/builtins/gen/var/workgroupUniformLoad/7a857c.wgsl.expected.glsl b/test/tint/builtins/gen/var/workgroupUniformLoad/7a857c.wgsl.expected.glsl
index b0d7db3..1dc5546 100644
--- a/test/tint/builtins/gen/var/workgroupUniformLoad/7a857c.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/workgroupUniformLoad/7a857c.wgsl.expected.glsl
@@ -1,19 +1,19 @@
 #version 310 es
 
-float tint_workgroupUniformLoad(inout float p) {
+shared float arg_0;
+float tint_workgroupUniformLoad_arg_0() {
   barrier();
-  float result = p;
+  float result = arg_0;
   barrier();
   return result;
 }
 
-shared float arg_0;
 layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
   float inner;
 } prevent_dce;
 
 void workgroupUniformLoad_7a857c() {
-  float res = tint_workgroupUniformLoad(arg_0);
+  float res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.inner = res;
 }
 
diff --git a/test/tint/builtins/gen/var/workgroupUniformLoad/9d33de.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/workgroupUniformLoad/9d33de.wgsl.expected.dxc.hlsl
index c495ebc..6d8b261 100644
--- a/test/tint/builtins/gen/var/workgroupUniformLoad/9d33de.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/workgroupUniformLoad/9d33de.wgsl.expected.dxc.hlsl
@@ -1,15 +1,16 @@
-int tint_workgroupUniformLoad(inout int p) {
+groupshared int arg_0;
+
+int tint_workgroupUniformLoad_arg_0() {
   GroupMemoryBarrierWithGroupSync();
-  const int result = p;
+  const int result = arg_0;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared int arg_0;
 RWByteAddressBuffer prevent_dce : register(u0, space2);
 
 void workgroupUniformLoad_9d33de() {
-  int res = tint_workgroupUniformLoad(arg_0);
+  int res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.Store(0u, asuint(res));
 }
 
diff --git a/test/tint/builtins/gen/var/workgroupUniformLoad/9d33de.wgsl.expected.fxc.hlsl b/test/tint/builtins/gen/var/workgroupUniformLoad/9d33de.wgsl.expected.fxc.hlsl
index c495ebc..6d8b261 100644
--- a/test/tint/builtins/gen/var/workgroupUniformLoad/9d33de.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/gen/var/workgroupUniformLoad/9d33de.wgsl.expected.fxc.hlsl
@@ -1,15 +1,16 @@
-int tint_workgroupUniformLoad(inout int p) {
+groupshared int arg_0;
+
+int tint_workgroupUniformLoad_arg_0() {
   GroupMemoryBarrierWithGroupSync();
-  const int result = p;
+  const int result = arg_0;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared int arg_0;
 RWByteAddressBuffer prevent_dce : register(u0, space2);
 
 void workgroupUniformLoad_9d33de() {
-  int res = tint_workgroupUniformLoad(arg_0);
+  int res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.Store(0u, asuint(res));
 }
 
diff --git a/test/tint/builtins/gen/var/workgroupUniformLoad/9d33de.wgsl.expected.glsl b/test/tint/builtins/gen/var/workgroupUniformLoad/9d33de.wgsl.expected.glsl
index 8d3a9e6..5919644 100644
--- a/test/tint/builtins/gen/var/workgroupUniformLoad/9d33de.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/workgroupUniformLoad/9d33de.wgsl.expected.glsl
@@ -1,19 +1,19 @@
 #version 310 es
 
-int tint_workgroupUniformLoad(inout int p) {
+shared int arg_0;
+int tint_workgroupUniformLoad_arg_0() {
   barrier();
-  int result = p;
+  int result = arg_0;
   barrier();
   return result;
 }
 
-shared int arg_0;
 layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
   int inner;
 } prevent_dce;
 
 void workgroupUniformLoad_9d33de() {
-  int res = tint_workgroupUniformLoad(arg_0);
+  int res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.inner = res;
 }
 
diff --git a/test/tint/builtins/gen/var/workgroupUniformLoad/e07d08.wgsl.expected.dxc.hlsl b/test/tint/builtins/gen/var/workgroupUniformLoad/e07d08.wgsl.expected.dxc.hlsl
index ed848f2..c8e40ee 100644
--- a/test/tint/builtins/gen/var/workgroupUniformLoad/e07d08.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/gen/var/workgroupUniformLoad/e07d08.wgsl.expected.dxc.hlsl
@@ -1,15 +1,16 @@
-float16_t tint_workgroupUniformLoad(inout float16_t p) {
+groupshared float16_t arg_0;
+
+float16_t tint_workgroupUniformLoad_arg_0() {
   GroupMemoryBarrierWithGroupSync();
-  const float16_t result = p;
+  const float16_t result = arg_0;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared float16_t arg_0;
 RWByteAddressBuffer prevent_dce : register(u0, space2);
 
 void workgroupUniformLoad_e07d08() {
-  float16_t res = tint_workgroupUniformLoad(arg_0);
+  float16_t res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.Store<float16_t>(0u, res);
 }
 
diff --git a/test/tint/builtins/gen/var/workgroupUniformLoad/e07d08.wgsl.expected.glsl b/test/tint/builtins/gen/var/workgroupUniformLoad/e07d08.wgsl.expected.glsl
index 9d804d4..fe2cfd0 100644
--- a/test/tint/builtins/gen/var/workgroupUniformLoad/e07d08.wgsl.expected.glsl
+++ b/test/tint/builtins/gen/var/workgroupUniformLoad/e07d08.wgsl.expected.glsl
@@ -1,20 +1,20 @@
 #version 310 es
 #extension GL_AMD_gpu_shader_half_float : require
 
-float16_t tint_workgroupUniformLoad(inout float16_t p) {
+shared float16_t arg_0;
+float16_t tint_workgroupUniformLoad_arg_0() {
   barrier();
-  float16_t result = p;
+  float16_t result = arg_0;
   barrier();
   return result;
 }
 
-shared float16_t arg_0;
 layout(binding = 0, std430) buffer prevent_dce_block_ssbo {
   float16_t inner;
 } prevent_dce;
 
 void workgroupUniformLoad_e07d08() {
-  float16_t res = tint_workgroupUniformLoad(arg_0);
+  float16_t res = tint_workgroupUniformLoad_arg_0();
   prevent_dce.inner = res;
 }
 
diff --git a/test/tint/builtins/workgroupUniformLoad/array.wgsl.expected.dxc.hlsl b/test/tint/builtins/workgroupUniformLoad/array.wgsl.expected.dxc.hlsl
index d8a47b9..a9b6ea5 100644
--- a/test/tint/builtins/workgroupUniformLoad/array.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/workgroupUniformLoad/array.wgsl.expected.dxc.hlsl
@@ -3,17 +3,17 @@
   return;
 }
 
-typedef int tint_workgroupUniformLoad_ret[4];
-tint_workgroupUniformLoad_ret tint_workgroupUniformLoad(inout int p[4]) {
+groupshared int v[4];
+
+typedef int tint_workgroupUniformLoad_v_ret[4];
+tint_workgroupUniformLoad_v_ret tint_workgroupUniformLoad_v() {
   GroupMemoryBarrierWithGroupSync();
-  const int result[4] = p;
+  const int result[4] = v;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared int v[4];
-
 typedef int foo_ret[4];
 foo_ret foo() {
-  return tint_workgroupUniformLoad(v);
+  return tint_workgroupUniformLoad_v();
 }
diff --git a/test/tint/builtins/workgroupUniformLoad/array.wgsl.expected.fxc.hlsl b/test/tint/builtins/workgroupUniformLoad/array.wgsl.expected.fxc.hlsl
index d8a47b9..a9b6ea5 100644
--- a/test/tint/builtins/workgroupUniformLoad/array.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/workgroupUniformLoad/array.wgsl.expected.fxc.hlsl
@@ -3,17 +3,17 @@
   return;
 }
 
-typedef int tint_workgroupUniformLoad_ret[4];
-tint_workgroupUniformLoad_ret tint_workgroupUniformLoad(inout int p[4]) {
+groupshared int v[4];
+
+typedef int tint_workgroupUniformLoad_v_ret[4];
+tint_workgroupUniformLoad_v_ret tint_workgroupUniformLoad_v() {
   GroupMemoryBarrierWithGroupSync();
-  const int result[4] = p;
+  const int result[4] = v;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared int v[4];
-
 typedef int foo_ret[4];
 foo_ret foo() {
-  return tint_workgroupUniformLoad(v);
+  return tint_workgroupUniformLoad_v();
 }
diff --git a/test/tint/builtins/workgroupUniformLoad/array.wgsl.expected.glsl b/test/tint/builtins/workgroupUniformLoad/array.wgsl.expected.glsl
index 661c13b..cda9b79 100644
--- a/test/tint/builtins/workgroupUniformLoad/array.wgsl.expected.glsl
+++ b/test/tint/builtins/workgroupUniformLoad/array.wgsl.expected.glsl
@@ -4,15 +4,15 @@
 void unused_entry_point() {
   return;
 }
-int[4] tint_workgroupUniformLoad(inout int p[4]) {
+shared int v[4];
+int[4] tint_workgroupUniformLoad_v() {
   barrier();
-  int result[4] = p;
+  int result[4] = v;
   barrier();
   return result;
 }
 
-shared int v[4];
 int[4] foo() {
-  return tint_workgroupUniformLoad(v);
+  return tint_workgroupUniformLoad_v();
 }
 
diff --git a/test/tint/builtins/workgroupUniformLoad/array_overridable_count.wgsl.expected.dxc.hlsl b/test/tint/builtins/workgroupUniformLoad/array_overridable_count.wgsl.expected.dxc.hlsl
index 1958f4a..a42cbe5 100644
--- a/test/tint/builtins/workgroupUniformLoad/array_overridable_count.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/workgroupUniformLoad/array_overridable_count.wgsl.expected.dxc.hlsl
@@ -3,17 +3,17 @@
   return;
 }
 
-typedef int tint_workgroupUniformLoad_ret[128];
-tint_workgroupUniformLoad_ret tint_workgroupUniformLoad(inout int p[128]) {
+groupshared int v[128];
+
+typedef int tint_workgroupUniformLoad_v_ret[128];
+tint_workgroupUniformLoad_v_ret tint_workgroupUniformLoad_v() {
   GroupMemoryBarrierWithGroupSync();
-  const int result[128] = p;
+  const int result[128] = v;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared int v[128];
-
 int foo() {
-  const int tint_symbol[128] = tint_workgroupUniformLoad(v);
+  const int tint_symbol[128] = tint_workgroupUniformLoad_v();
   return tint_symbol[0];
 }
diff --git a/test/tint/builtins/workgroupUniformLoad/array_overridable_count.wgsl.expected.fxc.hlsl b/test/tint/builtins/workgroupUniformLoad/array_overridable_count.wgsl.expected.fxc.hlsl
index 1958f4a..a42cbe5 100644
--- a/test/tint/builtins/workgroupUniformLoad/array_overridable_count.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/workgroupUniformLoad/array_overridable_count.wgsl.expected.fxc.hlsl
@@ -3,17 +3,17 @@
   return;
 }
 
-typedef int tint_workgroupUniformLoad_ret[128];
-tint_workgroupUniformLoad_ret tint_workgroupUniformLoad(inout int p[128]) {
+groupshared int v[128];
+
+typedef int tint_workgroupUniformLoad_v_ret[128];
+tint_workgroupUniformLoad_v_ret tint_workgroupUniformLoad_v() {
   GroupMemoryBarrierWithGroupSync();
-  const int result[128] = p;
+  const int result[128] = v;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared int v[128];
-
 int foo() {
-  const int tint_symbol[128] = tint_workgroupUniformLoad(v);
+  const int tint_symbol[128] = tint_workgroupUniformLoad_v();
   return tint_symbol[0];
 }
diff --git a/test/tint/builtins/workgroupUniformLoad/array_overridable_count.wgsl.expected.glsl b/test/tint/builtins/workgroupUniformLoad/array_overridable_count.wgsl.expected.glsl
index fa13387..6e551e8 100644
--- a/test/tint/builtins/workgroupUniformLoad/array_overridable_count.wgsl.expected.glsl
+++ b/test/tint/builtins/workgroupUniformLoad/array_overridable_count.wgsl.expected.glsl
@@ -4,16 +4,16 @@
 void unused_entry_point() {
   return;
 }
-int[128] tint_workgroupUniformLoad(inout int p[128]) {
+shared int v[128];
+int[128] tint_workgroupUniformLoad_v() {
   barrier();
-  int result[128] = p;
+  int result[128] = v;
   barrier();
   return result;
 }
 
-shared int v[128];
 int foo() {
-  int tint_symbol[128] = tint_workgroupUniformLoad(v);
+  int tint_symbol[128] = tint_workgroupUniformLoad_v();
   return tint_symbol[0];
 }
 
diff --git a/test/tint/builtins/workgroupUniformLoad/array_overridable_count_aliased.wgsl.expected.dxc.hlsl b/test/tint/builtins/workgroupUniformLoad/array_overridable_count_aliased.wgsl.expected.dxc.hlsl
index 1958f4a..a42cbe5 100644
--- a/test/tint/builtins/workgroupUniformLoad/array_overridable_count_aliased.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/workgroupUniformLoad/array_overridable_count_aliased.wgsl.expected.dxc.hlsl
@@ -3,17 +3,17 @@
   return;
 }
 
-typedef int tint_workgroupUniformLoad_ret[128];
-tint_workgroupUniformLoad_ret tint_workgroupUniformLoad(inout int p[128]) {
+groupshared int v[128];
+
+typedef int tint_workgroupUniformLoad_v_ret[128];
+tint_workgroupUniformLoad_v_ret tint_workgroupUniformLoad_v() {
   GroupMemoryBarrierWithGroupSync();
-  const int result[128] = p;
+  const int result[128] = v;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared int v[128];
-
 int foo() {
-  const int tint_symbol[128] = tint_workgroupUniformLoad(v);
+  const int tint_symbol[128] = tint_workgroupUniformLoad_v();
   return tint_symbol[0];
 }
diff --git a/test/tint/builtins/workgroupUniformLoad/array_overridable_count_aliased.wgsl.expected.fxc.hlsl b/test/tint/builtins/workgroupUniformLoad/array_overridable_count_aliased.wgsl.expected.fxc.hlsl
index 1958f4a..a42cbe5 100644
--- a/test/tint/builtins/workgroupUniformLoad/array_overridable_count_aliased.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/workgroupUniformLoad/array_overridable_count_aliased.wgsl.expected.fxc.hlsl
@@ -3,17 +3,17 @@
   return;
 }
 
-typedef int tint_workgroupUniformLoad_ret[128];
-tint_workgroupUniformLoad_ret tint_workgroupUniformLoad(inout int p[128]) {
+groupshared int v[128];
+
+typedef int tint_workgroupUniformLoad_v_ret[128];
+tint_workgroupUniformLoad_v_ret tint_workgroupUniformLoad_v() {
   GroupMemoryBarrierWithGroupSync();
-  const int result[128] = p;
+  const int result[128] = v;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared int v[128];
-
 int foo() {
-  const int tint_symbol[128] = tint_workgroupUniformLoad(v);
+  const int tint_symbol[128] = tint_workgroupUniformLoad_v();
   return tint_symbol[0];
 }
diff --git a/test/tint/builtins/workgroupUniformLoad/array_overridable_count_aliased.wgsl.expected.glsl b/test/tint/builtins/workgroupUniformLoad/array_overridable_count_aliased.wgsl.expected.glsl
index fa13387..6e551e8 100644
--- a/test/tint/builtins/workgroupUniformLoad/array_overridable_count_aliased.wgsl.expected.glsl
+++ b/test/tint/builtins/workgroupUniformLoad/array_overridable_count_aliased.wgsl.expected.glsl
@@ -4,16 +4,16 @@
 void unused_entry_point() {
   return;
 }
-int[128] tint_workgroupUniformLoad(inout int p[128]) {
+shared int v[128];
+int[128] tint_workgroupUniformLoad_v() {
   barrier();
-  int result[128] = p;
+  int result[128] = v;
   barrier();
   return result;
 }
 
-shared int v[128];
 int foo() {
-  int tint_symbol[128] = tint_workgroupUniformLoad(v);
+  int tint_symbol[128] = tint_workgroupUniformLoad_v();
   return tint_symbol[0];
 }
 
diff --git a/test/tint/builtins/workgroupUniformLoad/bool.wgsl.expected.dxc.hlsl b/test/tint/builtins/workgroupUniformLoad/bool.wgsl.expected.dxc.hlsl
index 28f1e19..afb3e79 100644
--- a/test/tint/builtins/workgroupUniformLoad/bool.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/workgroupUniformLoad/bool.wgsl.expected.dxc.hlsl
@@ -3,15 +3,15 @@
   return;
 }
 
-bool tint_workgroupUniformLoad(inout bool p) {
+groupshared bool v;
+
+bool tint_workgroupUniformLoad_v() {
   GroupMemoryBarrierWithGroupSync();
-  const bool result = p;
+  const bool result = v;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared bool v;
-
 bool foo() {
-  return tint_workgroupUniformLoad(v);
+  return tint_workgroupUniformLoad_v();
 }
diff --git a/test/tint/builtins/workgroupUniformLoad/bool.wgsl.expected.fxc.hlsl b/test/tint/builtins/workgroupUniformLoad/bool.wgsl.expected.fxc.hlsl
index 28f1e19..afb3e79 100644
--- a/test/tint/builtins/workgroupUniformLoad/bool.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/workgroupUniformLoad/bool.wgsl.expected.fxc.hlsl
@@ -3,15 +3,15 @@
   return;
 }
 
-bool tint_workgroupUniformLoad(inout bool p) {
+groupshared bool v;
+
+bool tint_workgroupUniformLoad_v() {
   GroupMemoryBarrierWithGroupSync();
-  const bool result = p;
+  const bool result = v;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared bool v;
-
 bool foo() {
-  return tint_workgroupUniformLoad(v);
+  return tint_workgroupUniformLoad_v();
 }
diff --git a/test/tint/builtins/workgroupUniformLoad/bool.wgsl.expected.glsl b/test/tint/builtins/workgroupUniformLoad/bool.wgsl.expected.glsl
index 9793dba..4962454 100644
--- a/test/tint/builtins/workgroupUniformLoad/bool.wgsl.expected.glsl
+++ b/test/tint/builtins/workgroupUniformLoad/bool.wgsl.expected.glsl
@@ -4,15 +4,15 @@
 void unused_entry_point() {
   return;
 }
-bool tint_workgroupUniformLoad(inout bool p) {
+shared bool v;
+bool tint_workgroupUniformLoad_v() {
   barrier();
-  bool result = p;
+  bool result = v;
   barrier();
   return result;
 }
 
-shared bool v;
 bool foo() {
-  return tint_workgroupUniformLoad(v);
+  return tint_workgroupUniformLoad_v();
 }
 
diff --git a/test/tint/builtins/workgroupUniformLoad/for_loop.wgsl.expected.dxc.hlsl b/test/tint/builtins/workgroupUniformLoad/for_loop.wgsl.expected.dxc.hlsl
index 98df2c2..ec23355 100644
--- a/test/tint/builtins/workgroupUniformLoad/for_loop.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/workgroupUniformLoad/for_loop.wgsl.expected.dxc.hlsl
@@ -3,22 +3,30 @@
   return;
 }
 
-int tint_workgroupUniformLoad(inout int p) {
+groupshared int a;
+
+int tint_workgroupUniformLoad_a() {
   GroupMemoryBarrierWithGroupSync();
-  const int result = p;
+  const int result = a;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared int a;
 groupshared int b;
 
+int tint_workgroupUniformLoad_b() {
+  GroupMemoryBarrierWithGroupSync();
+  const int result = b;
+  GroupMemoryBarrierWithGroupSync();
+  return result;
+}
+
 void foo() {
   {
     int i = 0;
     while (true) {
       const int tint_symbol = i;
-      const int tint_symbol_1 = tint_workgroupUniformLoad(a);
+      const int tint_symbol_1 = tint_workgroupUniformLoad_a();
       if (!((tint_symbol < tint_symbol_1))) {
         break;
       }
@@ -26,7 +34,7 @@
       }
       {
         const int tint_symbol_2 = i;
-        const int tint_symbol_3 = tint_workgroupUniformLoad(b);
+        const int tint_symbol_3 = tint_workgroupUniformLoad_b();
         i = (tint_symbol_2 + tint_symbol_3);
       }
     }
diff --git a/test/tint/builtins/workgroupUniformLoad/for_loop.wgsl.expected.fxc.hlsl b/test/tint/builtins/workgroupUniformLoad/for_loop.wgsl.expected.fxc.hlsl
index 98df2c2..ec23355 100644
--- a/test/tint/builtins/workgroupUniformLoad/for_loop.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/workgroupUniformLoad/for_loop.wgsl.expected.fxc.hlsl
@@ -3,22 +3,30 @@
   return;
 }
 
-int tint_workgroupUniformLoad(inout int p) {
+groupshared int a;
+
+int tint_workgroupUniformLoad_a() {
   GroupMemoryBarrierWithGroupSync();
-  const int result = p;
+  const int result = a;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared int a;
 groupshared int b;
 
+int tint_workgroupUniformLoad_b() {
+  GroupMemoryBarrierWithGroupSync();
+  const int result = b;
+  GroupMemoryBarrierWithGroupSync();
+  return result;
+}
+
 void foo() {
   {
     int i = 0;
     while (true) {
       const int tint_symbol = i;
-      const int tint_symbol_1 = tint_workgroupUniformLoad(a);
+      const int tint_symbol_1 = tint_workgroupUniformLoad_a();
       if (!((tint_symbol < tint_symbol_1))) {
         break;
       }
@@ -26,7 +34,7 @@
       }
       {
         const int tint_symbol_2 = i;
-        const int tint_symbol_3 = tint_workgroupUniformLoad(b);
+        const int tint_symbol_3 = tint_workgroupUniformLoad_b();
         i = (tint_symbol_2 + tint_symbol_3);
       }
     }
diff --git a/test/tint/builtins/workgroupUniformLoad/for_loop.wgsl.expected.glsl b/test/tint/builtins/workgroupUniformLoad/for_loop.wgsl.expected.glsl
index 97926d0..09c4abe 100644
--- a/test/tint/builtins/workgroupUniformLoad/for_loop.wgsl.expected.glsl
+++ b/test/tint/builtins/workgroupUniformLoad/for_loop.wgsl.expected.glsl
@@ -4,21 +4,28 @@
 void unused_entry_point() {
   return;
 }
-int tint_workgroupUniformLoad(inout int p) {
+shared int a;
+int tint_workgroupUniformLoad_a() {
   barrier();
-  int result = p;
+  int result = a;
   barrier();
   return result;
 }
 
-shared int a;
 shared int b;
+int tint_workgroupUniformLoad_b() {
+  barrier();
+  int result = b;
+  barrier();
+  return result;
+}
+
 void foo() {
   {
     int i = 0;
     while (true) {
       int tint_symbol = i;
-      int tint_symbol_1 = tint_workgroupUniformLoad(a);
+      int tint_symbol_1 = tint_workgroupUniformLoad_a();
       if (!((tint_symbol < tint_symbol_1))) {
         break;
       }
@@ -26,7 +33,7 @@
       }
       {
         int tint_symbol_2 = i;
-        int tint_symbol_3 = tint_workgroupUniformLoad(b);
+        int tint_symbol_3 = tint_workgroupUniformLoad_b();
         i = (tint_symbol_2 + tint_symbol_3);
       }
     }
diff --git a/test/tint/builtins/workgroupUniformLoad/if_condition.wgsl.expected.dxc.hlsl b/test/tint/builtins/workgroupUniformLoad/if_condition.wgsl.expected.dxc.hlsl
index bfc2a25..48a589f 100644
--- a/test/tint/builtins/workgroupUniformLoad/if_condition.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/workgroupUniformLoad/if_condition.wgsl.expected.dxc.hlsl
@@ -3,17 +3,17 @@
   return;
 }
 
-bool tint_workgroupUniformLoad(inout bool p) {
+groupshared bool v;
+
+bool tint_workgroupUniformLoad_v() {
   GroupMemoryBarrierWithGroupSync();
-  const bool result = p;
+  const bool result = v;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared bool v;
-
 int foo() {
-  if (tint_workgroupUniformLoad(v)) {
+  if (tint_workgroupUniformLoad_v()) {
     return 42;
   }
   return 0;
diff --git a/test/tint/builtins/workgroupUniformLoad/if_condition.wgsl.expected.fxc.hlsl b/test/tint/builtins/workgroupUniformLoad/if_condition.wgsl.expected.fxc.hlsl
index bfc2a25..48a589f 100644
--- a/test/tint/builtins/workgroupUniformLoad/if_condition.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/workgroupUniformLoad/if_condition.wgsl.expected.fxc.hlsl
@@ -3,17 +3,17 @@
   return;
 }
 
-bool tint_workgroupUniformLoad(inout bool p) {
+groupshared bool v;
+
+bool tint_workgroupUniformLoad_v() {
   GroupMemoryBarrierWithGroupSync();
-  const bool result = p;
+  const bool result = v;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared bool v;
-
 int foo() {
-  if (tint_workgroupUniformLoad(v)) {
+  if (tint_workgroupUniformLoad_v()) {
     return 42;
   }
   return 0;
diff --git a/test/tint/builtins/workgroupUniformLoad/if_condition.wgsl.expected.glsl b/test/tint/builtins/workgroupUniformLoad/if_condition.wgsl.expected.glsl
index ef53245..ad15d25 100644
--- a/test/tint/builtins/workgroupUniformLoad/if_condition.wgsl.expected.glsl
+++ b/test/tint/builtins/workgroupUniformLoad/if_condition.wgsl.expected.glsl
@@ -4,16 +4,16 @@
 void unused_entry_point() {
   return;
 }
-bool tint_workgroupUniformLoad(inout bool p) {
+shared bool v;
+bool tint_workgroupUniformLoad_v() {
   barrier();
-  bool result = p;
+  bool result = v;
   barrier();
   return result;
 }
 
-shared bool v;
 int foo() {
-  if (tint_workgroupUniformLoad(v)) {
+  if (tint_workgroupUniformLoad_v()) {
     return 42;
   }
   return 0;
diff --git a/test/tint/builtins/workgroupUniformLoad/matrix.wgsl.expected.dxc.hlsl b/test/tint/builtins/workgroupUniformLoad/matrix.wgsl.expected.dxc.hlsl
index 053093e..1b22b46 100644
--- a/test/tint/builtins/workgroupUniformLoad/matrix.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/workgroupUniformLoad/matrix.wgsl.expected.dxc.hlsl
@@ -3,15 +3,15 @@
   return;
 }
 
-float3x3 tint_workgroupUniformLoad(inout float3x3 p) {
+groupshared float3x3 v;
+
+float3x3 tint_workgroupUniformLoad_v() {
   GroupMemoryBarrierWithGroupSync();
-  const float3x3 result = p;
+  const float3x3 result = v;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared float3x3 v;
-
 float3x3 foo() {
-  return tint_workgroupUniformLoad(v);
+  return tint_workgroupUniformLoad_v();
 }
diff --git a/test/tint/builtins/workgroupUniformLoad/matrix.wgsl.expected.fxc.hlsl b/test/tint/builtins/workgroupUniformLoad/matrix.wgsl.expected.fxc.hlsl
index 053093e..1b22b46 100644
--- a/test/tint/builtins/workgroupUniformLoad/matrix.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/workgroupUniformLoad/matrix.wgsl.expected.fxc.hlsl
@@ -3,15 +3,15 @@
   return;
 }
 
-float3x3 tint_workgroupUniformLoad(inout float3x3 p) {
+groupshared float3x3 v;
+
+float3x3 tint_workgroupUniformLoad_v() {
   GroupMemoryBarrierWithGroupSync();
-  const float3x3 result = p;
+  const float3x3 result = v;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared float3x3 v;
-
 float3x3 foo() {
-  return tint_workgroupUniformLoad(v);
+  return tint_workgroupUniformLoad_v();
 }
diff --git a/test/tint/builtins/workgroupUniformLoad/matrix.wgsl.expected.glsl b/test/tint/builtins/workgroupUniformLoad/matrix.wgsl.expected.glsl
index 86ea506..ac70b34a 100644
--- a/test/tint/builtins/workgroupUniformLoad/matrix.wgsl.expected.glsl
+++ b/test/tint/builtins/workgroupUniformLoad/matrix.wgsl.expected.glsl
@@ -4,15 +4,15 @@
 void unused_entry_point() {
   return;
 }
-mat3 tint_workgroupUniformLoad(inout mat3 p) {
+shared mat3 v;
+mat3 tint_workgroupUniformLoad_v() {
   barrier();
-  mat3 result = p;
+  mat3 result = v;
   barrier();
   return result;
 }
 
-shared mat3 v;
 mat3 foo() {
-  return tint_workgroupUniformLoad(v);
+  return tint_workgroupUniformLoad_v();
 }
 
diff --git a/test/tint/builtins/workgroupUniformLoad/structures.wgsl.expected.dxc.hlsl b/test/tint/builtins/workgroupUniformLoad/structures.wgsl.expected.dxc.hlsl
index 201beac..eb3a52c 100644
--- a/test/tint/builtins/workgroupUniformLoad/structures.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/workgroupUniformLoad/structures.wgsl.expected.dxc.hlsl
@@ -12,15 +12,15 @@
   Inner a[4];
 };
 
-Outer tint_workgroupUniformLoad(inout Outer p) {
+groupshared Outer v;
+
+Outer tint_workgroupUniformLoad_v() {
   GroupMemoryBarrierWithGroupSync();
-  const Outer result = p;
+  const Outer result = v;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared Outer v;
-
 Outer foo() {
-  return tint_workgroupUniformLoad(v);
+  return tint_workgroupUniformLoad_v();
 }
diff --git a/test/tint/builtins/workgroupUniformLoad/structures.wgsl.expected.fxc.hlsl b/test/tint/builtins/workgroupUniformLoad/structures.wgsl.expected.fxc.hlsl
index 201beac..eb3a52c 100644
--- a/test/tint/builtins/workgroupUniformLoad/structures.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/workgroupUniformLoad/structures.wgsl.expected.fxc.hlsl
@@ -12,15 +12,15 @@
   Inner a[4];
 };
 
-Outer tint_workgroupUniformLoad(inout Outer p) {
+groupshared Outer v;
+
+Outer tint_workgroupUniformLoad_v() {
   GroupMemoryBarrierWithGroupSync();
-  const Outer result = p;
+  const Outer result = v;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared Outer v;
-
 Outer foo() {
-  return tint_workgroupUniformLoad(v);
+  return tint_workgroupUniformLoad_v();
 }
diff --git a/test/tint/builtins/workgroupUniformLoad/structures.wgsl.expected.glsl b/test/tint/builtins/workgroupUniformLoad/structures.wgsl.expected.glsl
index 203e90d..7f9766a 100644
--- a/test/tint/builtins/workgroupUniformLoad/structures.wgsl.expected.glsl
+++ b/test/tint/builtins/workgroupUniformLoad/structures.wgsl.expected.glsl
@@ -14,15 +14,15 @@
   Inner a[4];
 };
 
-Outer tint_workgroupUniformLoad(inout Outer p) {
+shared Outer v;
+Outer tint_workgroupUniformLoad_v() {
   barrier();
-  Outer result = p;
+  Outer result = v;
   barrier();
   return result;
 }
 
-shared Outer v;
 Outer foo() {
-  return tint_workgroupUniformLoad(v);
+  return tint_workgroupUniformLoad_v();
 }
 
diff --git a/test/tint/builtins/workgroupUniformLoad/vec.wgsl.expected.dxc.hlsl b/test/tint/builtins/workgroupUniformLoad/vec.wgsl.expected.dxc.hlsl
index 77473c206..80cd6df 100644
--- a/test/tint/builtins/workgroupUniformLoad/vec.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/workgroupUniformLoad/vec.wgsl.expected.dxc.hlsl
@@ -3,15 +3,15 @@
   return;
 }
 
-float4 tint_workgroupUniformLoad(inout float4 p) {
+groupshared float4 v;
+
+float4 tint_workgroupUniformLoad_v() {
   GroupMemoryBarrierWithGroupSync();
-  const float4 result = p;
+  const float4 result = v;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared float4 v;
-
 float4 foo() {
-  return tint_workgroupUniformLoad(v);
+  return tint_workgroupUniformLoad_v();
 }
diff --git a/test/tint/builtins/workgroupUniformLoad/vec.wgsl.expected.fxc.hlsl b/test/tint/builtins/workgroupUniformLoad/vec.wgsl.expected.fxc.hlsl
index 77473c206..80cd6df 100644
--- a/test/tint/builtins/workgroupUniformLoad/vec.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/workgroupUniformLoad/vec.wgsl.expected.fxc.hlsl
@@ -3,15 +3,15 @@
   return;
 }
 
-float4 tint_workgroupUniformLoad(inout float4 p) {
+groupshared float4 v;
+
+float4 tint_workgroupUniformLoad_v() {
   GroupMemoryBarrierWithGroupSync();
-  const float4 result = p;
+  const float4 result = v;
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared float4 v;
-
 float4 foo() {
-  return tint_workgroupUniformLoad(v);
+  return tint_workgroupUniformLoad_v();
 }
diff --git a/test/tint/builtins/workgroupUniformLoad/vec.wgsl.expected.glsl b/test/tint/builtins/workgroupUniformLoad/vec.wgsl.expected.glsl
index 76e29ed..f4dc643 100644
--- a/test/tint/builtins/workgroupUniformLoad/vec.wgsl.expected.glsl
+++ b/test/tint/builtins/workgroupUniformLoad/vec.wgsl.expected.glsl
@@ -4,15 +4,15 @@
 void unused_entry_point() {
   return;
 }
-vec4 tint_workgroupUniformLoad(inout vec4 p) {
+shared vec4 v;
+vec4 tint_workgroupUniformLoad_v() {
   barrier();
-  vec4 result = p;
+  vec4 result = v;
   barrier();
   return result;
 }
 
-shared vec4 v;
 vec4 foo() {
-  return tint_workgroupUniformLoad(v);
+  return tint_workgroupUniformLoad_v();
 }
 
diff --git a/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.dxc.hlsl b/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.dxc.hlsl
index 2d0fe18..de20d9c 100644
--- a/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.dxc.hlsl
+++ b/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.dxc.hlsl
@@ -3,20 +3,21 @@
   return;
 }
 
-int tint_workgroupUniformLoad(inout int p) {
+groupshared int v[4];
+
+int tint_workgroupUniformLoad_v_X(uint p[1]) {
   GroupMemoryBarrierWithGroupSync();
-  const int result = p;
+  const int result = v[p[0]];
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared int v[4];
-
 int foo_v_X(uint p[1]) {
-  return tint_workgroupUniformLoad(v[p[0]]);
+  const uint tint_symbol[1] = {p[0u]};
+  return tint_workgroupUniformLoad_v_X(tint_symbol);
 }
 
 int bar() {
-  const uint tint_symbol[1] = (uint[1])0;
-  return foo_v_X(tint_symbol);
+  const uint tint_symbol_1[1] = (uint[1])0;
+  return foo_v_X(tint_symbol_1);
 }
diff --git a/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.fxc.hlsl b/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.fxc.hlsl
index 2d0fe18..de20d9c 100644
--- a/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.fxc.hlsl
+++ b/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.fxc.hlsl
@@ -3,20 +3,21 @@
   return;
 }
 
-int tint_workgroupUniformLoad(inout int p) {
+groupshared int v[4];
+
+int tint_workgroupUniformLoad_v_X(uint p[1]) {
   GroupMemoryBarrierWithGroupSync();
-  const int result = p;
+  const int result = v[p[0]];
   GroupMemoryBarrierWithGroupSync();
   return result;
 }
 
-groupshared int v[4];
-
 int foo_v_X(uint p[1]) {
-  return tint_workgroupUniformLoad(v[p[0]]);
+  const uint tint_symbol[1] = {p[0u]};
+  return tint_workgroupUniformLoad_v_X(tint_symbol);
 }
 
 int bar() {
-  const uint tint_symbol[1] = (uint[1])0;
-  return foo_v_X(tint_symbol);
+  const uint tint_symbol_1[1] = (uint[1])0;
+  return foo_v_X(tint_symbol_1);
 }
diff --git a/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.glsl b/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.glsl
index aa2e549..7555463 100644
--- a/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.glsl
+++ b/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.glsl
@@ -4,20 +4,21 @@
 void unused_entry_point() {
   return;
 }
-int tint_workgroupUniformLoad(inout int p) {
+shared int v[4];
+int tint_workgroupUniformLoad_v_X(uint p[1]) {
   barrier();
-  int result = p;
+  int result = v[p[0]];
   barrier();
   return result;
 }
 
-shared int v[4];
 int foo_v_X(uint p[1]) {
-  return tint_workgroupUniformLoad(v[p[0]]);
+  uint tint_symbol[1] = uint[1](p[0u]);
+  return tint_workgroupUniformLoad_v_X(tint_symbol);
 }
 
 int bar() {
-  uint tint_symbol[1] = uint[1](0u);
-  return foo_v_X(tint_symbol);
+  uint tint_symbol_1[1] = uint[1](0u);
+  return foo_v_X(tint_symbol_1);
 }