writer/hlsl: Emit UBO as an array of vector

Instead of a ConstantBuffer.

HLSL requires that each structure field in a UBO is 16 byte aligned.
WGSL has much looser constraints with its UBO field alignment rules.

Instead generate an array of uint4 vectors, and index into this, much
like we index into [RW]ByteAddressBuffers for SSBOs.

Extend the DecomposeStorageAccess transform to support uniforms too.
This has been renamed to DecomposeMemoryAccess.

Change-Id: I3868ff80af1ab3b3dddfbf5b969724cb87ef0744
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/55246
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: David Neto <dneto@google.com>
diff --git a/test/BUILD.gn b/test/BUILD.gn
index 99ff487..d4df320 100644
--- a/test/BUILD.gn
+++ b/test/BUILD.gn
@@ -279,7 +279,7 @@
     "../src/transform/bound_array_accessors_test.cc",
     "../src/transform/calculate_array_length_test.cc",
     "../src/transform/canonicalize_entry_point_io_test.cc",
-    "../src/transform/decompose_storage_access_test.cc",
+    "../src/transform/decompose_memory_access_test.cc",
     "../src/transform/external_texture_transform_test.cc",
     "../src/transform/first_index_offset_test.cc",
     "../src/transform/inline_pointer_lets_test.cc",
diff --git a/test/array/assign_to_function_var.wgsl.expected.hlsl b/test/array/assign_to_function_var.wgsl.expected.hlsl
index 5935a13..133a58e 100644
--- a/test/array/assign_to_function_var.wgsl.expected.hlsl
+++ b/test/array/assign_to_function_var.wgsl.expected.hlsl
@@ -4,40 +4,44 @@
 }
 
 struct tint_padded_array_element {
-  /* 0x0000 */ int el;
-  /* 0x0004 */ int tint_pad_0[3];
+  int el;
 };
-
-tint_padded_array_element make_tint_padded_array_element(int param_0) {
-  tint_padded_array_element output;
-  output.el = param_0;
-  return output;
-}
 struct tint_array_wrapper {
-  /* 0x0000 */ tint_padded_array_element arr[4];
+  tint_padded_array_element arr[4];
 };
 struct S {
-  /* 0x0000 */ tint_array_wrapper arr;
+  tint_array_wrapper arr;
 };
 
-tint_array_wrapper tint_symbol_2(RWByteAddressBuffer buffer, uint offset) {
-  const tint_array_wrapper tint_symbol_3 = {{make_tint_padded_array_element(asint(buffer.Load((offset + 0u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 16u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 32u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 48u))))}};
-  return tint_symbol_3;
+tint_array_wrapper tint_symbol_2(uint4 buffer[4], uint offset) {
+  const int scalar_offset = ((offset + 0u)) / 4;
+  const int scalar_offset_1 = ((offset + 16u)) / 4;
+  const int scalar_offset_2 = ((offset + 32u)) / 4;
+  const int scalar_offset_3 = ((offset + 48u)) / 4;
+  const tint_array_wrapper tint_symbol_5 = {{{asint(buffer[scalar_offset / 4][scalar_offset % 4])}, {asint(buffer[scalar_offset_1 / 4][scalar_offset_1 % 4])}, {asint(buffer[scalar_offset_2 / 4][scalar_offset_2 % 4])}, {asint(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4])}}};
+  return tint_symbol_5;
+}
+
+tint_array_wrapper tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
+  const tint_array_wrapper tint_symbol_6 = {{{asint(buffer.Load((offset + 0u)))}, {asint(buffer.Load((offset + 16u)))}, {asint(buffer.Load((offset + 32u)))}, {asint(buffer.Load((offset + 48u)))}}};
+  return tint_symbol_6;
 }
 
 static tint_array_wrapper src_private;
 groupshared tint_array_wrapper src_workgroup;
-ConstantBuffer<S> src_uniform : register(b0, space0);
+cbuffer cbuffer_src_uniform : register(b0, space0) {
+  uint4 src_uniform[4];
+};
 RWByteAddressBuffer src_storage : register(u1, space0);
 
 tint_array_wrapper ret_arr() {
-  const tint_array_wrapper tint_symbol_4 = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
-  return tint_symbol_4;
+  const tint_array_wrapper tint_symbol_7 = {{{0}, {0}, {0}, {0}}};
+  return tint_symbol_7;
 }
 
 S ret_struct_arr() {
-  const S tint_symbol_5 = {{{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}}};
-  return tint_symbol_5;
+  const S tint_symbol_8 = {{{{0}, {0}, {0}, {0}}}};
+  return tint_symbol_8;
 }
 
 struct tint_array_wrapper_3 {
@@ -51,20 +55,20 @@
 };
 
 void foo(tint_array_wrapper src_param) {
-  tint_array_wrapper src_function = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
-  tint_array_wrapper tint_symbol = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
-  const tint_array_wrapper tint_symbol_6 = {{make_tint_padded_array_element(1), make_tint_padded_array_element(2), make_tint_padded_array_element(3), make_tint_padded_array_element(3)}};
-  tint_symbol = tint_symbol_6;
+  tint_array_wrapper src_function = {{{0}, {0}, {0}, {0}}};
+  tint_array_wrapper tint_symbol = {{{0}, {0}, {0}, {0}}};
+  const tint_array_wrapper tint_symbol_9 = {{{1}, {2}, {3}, {3}}};
+  tint_symbol = tint_symbol_9;
   tint_symbol = src_param;
   tint_symbol = ret_arr();
-  const tint_array_wrapper src_let = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
+  const tint_array_wrapper src_let = {{{0}, {0}, {0}, {0}}};
   tint_symbol = src_let;
   tint_symbol = src_function;
   tint_symbol = src_private;
   tint_symbol = src_workgroup;
   tint_symbol = ret_struct_arr().arr;
-  tint_symbol = src_uniform.arr;
-  tint_symbol = tint_symbol_2(src_storage, 0u);
+  tint_symbol = tint_symbol_2(src_uniform, 0u);
+  tint_symbol = tint_symbol_4(src_storage, 0u);
   tint_array_wrapper_1 dst_nested = {{{{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}}};
   tint_array_wrapper_1 src_nested = {{{{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}}};
   dst_nested = src_nested;
diff --git a/test/array/assign_to_private_var.wgsl.expected.hlsl b/test/array/assign_to_private_var.wgsl.expected.hlsl
index cca7ff6..101ba44 100644
--- a/test/array/assign_to_private_var.wgsl.expected.hlsl
+++ b/test/array/assign_to_private_var.wgsl.expected.hlsl
@@ -4,30 +4,34 @@
 }
 
 struct tint_padded_array_element {
-  /* 0x0000 */ int el;
-  /* 0x0004 */ int tint_pad_0[3];
+  int el;
 };
-
-tint_padded_array_element make_tint_padded_array_element(int param_0) {
-  tint_padded_array_element output;
-  output.el = param_0;
-  return output;
-}
 struct tint_array_wrapper {
-  /* 0x0000 */ tint_padded_array_element arr[4];
+  tint_padded_array_element arr[4];
 };
 struct S {
-  /* 0x0000 */ tint_array_wrapper arr;
+  tint_array_wrapper arr;
 };
 
-tint_array_wrapper tint_symbol_2(RWByteAddressBuffer buffer, uint offset) {
-  const tint_array_wrapper tint_symbol_3 = {{make_tint_padded_array_element(asint(buffer.Load((offset + 0u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 16u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 32u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 48u))))}};
-  return tint_symbol_3;
+tint_array_wrapper tint_symbol_2(uint4 buffer[4], uint offset) {
+  const int scalar_offset = ((offset + 0u)) / 4;
+  const int scalar_offset_1 = ((offset + 16u)) / 4;
+  const int scalar_offset_2 = ((offset + 32u)) / 4;
+  const int scalar_offset_3 = ((offset + 48u)) / 4;
+  const tint_array_wrapper tint_symbol_5 = {{{asint(buffer[scalar_offset / 4][scalar_offset % 4])}, {asint(buffer[scalar_offset_1 / 4][scalar_offset_1 % 4])}, {asint(buffer[scalar_offset_2 / 4][scalar_offset_2 % 4])}, {asint(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4])}}};
+  return tint_symbol_5;
+}
+
+tint_array_wrapper tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
+  const tint_array_wrapper tint_symbol_6 = {{{asint(buffer.Load((offset + 0u)))}, {asint(buffer.Load((offset + 16u)))}, {asint(buffer.Load((offset + 32u)))}, {asint(buffer.Load((offset + 48u)))}}};
+  return tint_symbol_6;
 }
 
 static tint_array_wrapper src_private;
 groupshared tint_array_wrapper src_workgroup;
-ConstantBuffer<S> src_uniform : register(b0, space0);
+cbuffer cbuffer_src_uniform : register(b0, space0) {
+  uint4 src_uniform[4];
+};
 RWByteAddressBuffer src_storage : register(u1, space0);
 static tint_array_wrapper tint_symbol;
 
@@ -44,29 +48,29 @@
 static tint_array_wrapper_1 dst_nested;
 
 tint_array_wrapper ret_arr() {
-  const tint_array_wrapper tint_symbol_4 = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
-  return tint_symbol_4;
+  const tint_array_wrapper tint_symbol_7 = {{{0}, {0}, {0}, {0}}};
+  return tint_symbol_7;
 }
 
 S ret_struct_arr() {
-  const S tint_symbol_5 = {{{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}}};
-  return tint_symbol_5;
+  const S tint_symbol_8 = {{{{0}, {0}, {0}, {0}}}};
+  return tint_symbol_8;
 }
 
 void foo(tint_array_wrapper src_param) {
-  tint_array_wrapper src_function = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
-  const tint_array_wrapper tint_symbol_6 = {{make_tint_padded_array_element(1), make_tint_padded_array_element(2), make_tint_padded_array_element(3), make_tint_padded_array_element(3)}};
-  tint_symbol = tint_symbol_6;
+  tint_array_wrapper src_function = {{{0}, {0}, {0}, {0}}};
+  const tint_array_wrapper tint_symbol_9 = {{{1}, {2}, {3}, {3}}};
+  tint_symbol = tint_symbol_9;
   tint_symbol = src_param;
   tint_symbol = ret_arr();
-  const tint_array_wrapper src_let = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
+  const tint_array_wrapper src_let = {{{0}, {0}, {0}, {0}}};
   tint_symbol = src_let;
   tint_symbol = src_function;
   tint_symbol = src_private;
   tint_symbol = src_workgroup;
   tint_symbol = ret_struct_arr().arr;
-  tint_symbol = src_uniform.arr;
-  tint_symbol = tint_symbol_2(src_storage, 0u);
+  tint_symbol = tint_symbol_2(src_uniform, 0u);
+  tint_symbol = tint_symbol_4(src_storage, 0u);
   tint_array_wrapper_1 src_nested = {{{{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}}};
   dst_nested = src_nested;
 }
diff --git a/test/array/assign_to_storage_var.wgsl.expected.hlsl b/test/array/assign_to_storage_var.wgsl.expected.hlsl
index 6ed5129..ba72892 100644
--- a/test/array/assign_to_storage_var.wgsl.expected.hlsl
+++ b/test/array/assign_to_storage_var.wgsl.expected.hlsl
@@ -4,28 +4,30 @@
 }
 
 struct tint_padded_array_element {
-  /* 0x0000 */ int el;
-  /* 0x0004 */ int tint_pad_0[3];
+  int el;
 };
-
-tint_padded_array_element make_tint_padded_array_element(int param_0) {
-  tint_padded_array_element output;
-  output.el = param_0;
-  return output;
-}
 struct tint_array_wrapper {
-  /* 0x0000 */ tint_padded_array_element arr[4];
+  tint_padded_array_element arr[4];
 };
 struct S {
-  /* 0x0000 */ tint_array_wrapper arr;
+  tint_array_wrapper arr;
 };
 
-tint_array_wrapper tint_symbol_2(RWByteAddressBuffer buffer, uint offset) {
-  const tint_array_wrapper tint_symbol_9 = {{make_tint_padded_array_element(asint(buffer.Load((offset + 0u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 16u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 32u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 48u))))}};
-  return tint_symbol_9;
+tint_array_wrapper tint_symbol_2(uint4 buffer[4], uint offset) {
+  const int scalar_offset = ((offset + 0u)) / 4;
+  const int scalar_offset_1 = ((offset + 16u)) / 4;
+  const int scalar_offset_2 = ((offset + 32u)) / 4;
+  const int scalar_offset_3 = ((offset + 48u)) / 4;
+  const tint_array_wrapper tint_symbol_11 = {{{asint(buffer[scalar_offset / 4][scalar_offset % 4])}, {asint(buffer[scalar_offset_1 / 4][scalar_offset_1 % 4])}, {asint(buffer[scalar_offset_2 / 4][scalar_offset_2 % 4])}, {asint(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4])}}};
+  return tint_symbol_11;
 }
 
-void tint_symbol_4(RWByteAddressBuffer buffer, uint offset, tint_array_wrapper value) {
+tint_array_wrapper tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
+  const tint_array_wrapper tint_symbol_12 = {{{asint(buffer.Load((offset + 0u)))}, {asint(buffer.Load((offset + 16u)))}, {asint(buffer.Load((offset + 32u)))}, {asint(buffer.Load((offset + 48u)))}}};
+  return tint_symbol_12;
+}
+
+void tint_symbol_6(RWByteAddressBuffer buffer, uint offset, tint_array_wrapper value) {
   buffer.Store((offset + 0u), asuint(value.arr[0u].el));
   buffer.Store((offset + 16u), asuint(value.arr[1u].el));
   buffer.Store((offset + 32u), asuint(value.arr[2u].el));
@@ -33,64 +35,66 @@
 }
 
 struct tint_array_wrapper_3 {
-  /* 0x0000 */ int arr[2];
+  int arr[2];
 };
 struct tint_array_wrapper_2 {
-  /* 0x0000 */ tint_array_wrapper_3 arr[3];
+  tint_array_wrapper_3 arr[3];
 };
 struct tint_array_wrapper_1 {
-  /* 0x0000 */ tint_array_wrapper_2 arr[4];
+  tint_array_wrapper_2 arr[4];
 };
 
-void tint_symbol_6(RWByteAddressBuffer buffer, uint offset, tint_array_wrapper_3 value) {
+void tint_symbol_8(RWByteAddressBuffer buffer, uint offset, tint_array_wrapper_3 value) {
   buffer.Store((offset + 0u), asuint(value.arr[0u]));
   buffer.Store((offset + 4u), asuint(value.arr[1u]));
 }
 
-void tint_symbol_7(RWByteAddressBuffer buffer, uint offset, tint_array_wrapper_2 value) {
-  tint_symbol_6(buffer, (offset + 0u), value.arr[0u]);
-  tint_symbol_6(buffer, (offset + 8u), value.arr[1u]);
-  tint_symbol_6(buffer, (offset + 16u), value.arr[2u]);
+void tint_symbol_9(RWByteAddressBuffer buffer, uint offset, tint_array_wrapper_2 value) {
+  tint_symbol_8(buffer, (offset + 0u), value.arr[0u]);
+  tint_symbol_8(buffer, (offset + 8u), value.arr[1u]);
+  tint_symbol_8(buffer, (offset + 16u), value.arr[2u]);
 }
 
-void tint_symbol_8(RWByteAddressBuffer buffer, uint offset, tint_array_wrapper_1 value) {
-  tint_symbol_7(buffer, (offset + 0u), value.arr[0u]);
-  tint_symbol_7(buffer, (offset + 24u), value.arr[1u]);
-  tint_symbol_7(buffer, (offset + 48u), value.arr[2u]);
-  tint_symbol_7(buffer, (offset + 72u), value.arr[3u]);
+void tint_symbol_10(RWByteAddressBuffer buffer, uint offset, tint_array_wrapper_1 value) {
+  tint_symbol_9(buffer, (offset + 0u), value.arr[0u]);
+  tint_symbol_9(buffer, (offset + 24u), value.arr[1u]);
+  tint_symbol_9(buffer, (offset + 48u), value.arr[2u]);
+  tint_symbol_9(buffer, (offset + 72u), value.arr[3u]);
 }
 
 static tint_array_wrapper src_private;
 groupshared tint_array_wrapper src_workgroup;
-ConstantBuffer<S> src_uniform : register(b0, space0);
+cbuffer cbuffer_src_uniform : register(b0, space0) {
+  uint4 src_uniform[4];
+};
 RWByteAddressBuffer src_storage : register(u1, space0);
 RWByteAddressBuffer tint_symbol : register(u2, space0);
 RWByteAddressBuffer dst_nested : register(u3, space0);
 
 tint_array_wrapper ret_arr() {
-  const tint_array_wrapper tint_symbol_10 = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
-  return tint_symbol_10;
+  const tint_array_wrapper tint_symbol_13 = {{{0}, {0}, {0}, {0}}};
+  return tint_symbol_13;
 }
 
 S ret_struct_arr() {
-  const S tint_symbol_11 = {{{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}}};
-  return tint_symbol_11;
+  const S tint_symbol_14 = {{{{0}, {0}, {0}, {0}}}};
+  return tint_symbol_14;
 }
 
 void foo(tint_array_wrapper src_param) {
-  tint_array_wrapper src_function = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
-  const tint_array_wrapper tint_symbol_12 = {{make_tint_padded_array_element(1), make_tint_padded_array_element(2), make_tint_padded_array_element(3), make_tint_padded_array_element(3)}};
-  tint_symbol_4(tint_symbol, 0u, tint_symbol_12);
-  tint_symbol_4(tint_symbol, 0u, src_param);
-  tint_symbol_4(tint_symbol, 0u, ret_arr());
-  const tint_array_wrapper src_let = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
-  tint_symbol_4(tint_symbol, 0u, src_let);
-  tint_symbol_4(tint_symbol, 0u, src_function);
-  tint_symbol_4(tint_symbol, 0u, src_private);
-  tint_symbol_4(tint_symbol, 0u, src_workgroup);
-  tint_symbol_4(tint_symbol, 0u, ret_struct_arr().arr);
-  tint_symbol_4(tint_symbol, 0u, src_uniform.arr);
-  tint_symbol_4(tint_symbol, 0u, tint_symbol_2(src_storage, 0u));
+  tint_array_wrapper src_function = {{{0}, {0}, {0}, {0}}};
+  const tint_array_wrapper tint_symbol_15 = {{{1}, {2}, {3}, {3}}};
+  tint_symbol_6(tint_symbol, 0u, tint_symbol_15);
+  tint_symbol_6(tint_symbol, 0u, src_param);
+  tint_symbol_6(tint_symbol, 0u, ret_arr());
+  const tint_array_wrapper src_let = {{{0}, {0}, {0}, {0}}};
+  tint_symbol_6(tint_symbol, 0u, src_let);
+  tint_symbol_6(tint_symbol, 0u, src_function);
+  tint_symbol_6(tint_symbol, 0u, src_private);
+  tint_symbol_6(tint_symbol, 0u, src_workgroup);
+  tint_symbol_6(tint_symbol, 0u, ret_struct_arr().arr);
+  tint_symbol_6(tint_symbol, 0u, tint_symbol_2(src_uniform, 0u));
+  tint_symbol_6(tint_symbol, 0u, tint_symbol_4(src_storage, 0u));
   tint_array_wrapper_1 src_nested = {{{{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}}};
-  tint_symbol_8(dst_nested, 0u, src_nested);
+  tint_symbol_10(dst_nested, 0u, src_nested);
 }
diff --git a/test/array/assign_to_workgroup_var.wgsl.expected.hlsl b/test/array/assign_to_workgroup_var.wgsl.expected.hlsl
index 64bb639..49062f7 100644
--- a/test/array/assign_to_workgroup_var.wgsl.expected.hlsl
+++ b/test/array/assign_to_workgroup_var.wgsl.expected.hlsl
@@ -4,30 +4,34 @@
 }
 
 struct tint_padded_array_element {
-  /* 0x0000 */ int el;
-  /* 0x0004 */ int tint_pad_0[3];
+  int el;
 };
-
-tint_padded_array_element make_tint_padded_array_element(int param_0) {
-  tint_padded_array_element output;
-  output.el = param_0;
-  return output;
-}
 struct tint_array_wrapper {
-  /* 0x0000 */ tint_padded_array_element arr[4];
+  tint_padded_array_element arr[4];
 };
 struct S {
-  /* 0x0000 */ tint_array_wrapper arr;
+  tint_array_wrapper arr;
 };
 
-tint_array_wrapper tint_symbol_2(RWByteAddressBuffer buffer, uint offset) {
-  const tint_array_wrapper tint_symbol_3 = {{make_tint_padded_array_element(asint(buffer.Load((offset + 0u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 16u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 32u)))), make_tint_padded_array_element(asint(buffer.Load((offset + 48u))))}};
-  return tint_symbol_3;
+tint_array_wrapper tint_symbol_2(uint4 buffer[4], uint offset) {
+  const int scalar_offset = ((offset + 0u)) / 4;
+  const int scalar_offset_1 = ((offset + 16u)) / 4;
+  const int scalar_offset_2 = ((offset + 32u)) / 4;
+  const int scalar_offset_3 = ((offset + 48u)) / 4;
+  const tint_array_wrapper tint_symbol_5 = {{{asint(buffer[scalar_offset / 4][scalar_offset % 4])}, {asint(buffer[scalar_offset_1 / 4][scalar_offset_1 % 4])}, {asint(buffer[scalar_offset_2 / 4][scalar_offset_2 % 4])}, {asint(buffer[scalar_offset_3 / 4][scalar_offset_3 % 4])}}};
+  return tint_symbol_5;
+}
+
+tint_array_wrapper tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
+  const tint_array_wrapper tint_symbol_6 = {{{asint(buffer.Load((offset + 0u)))}, {asint(buffer.Load((offset + 16u)))}, {asint(buffer.Load((offset + 32u)))}, {asint(buffer.Load((offset + 48u)))}}};
+  return tint_symbol_6;
 }
 
 static tint_array_wrapper src_private;
 groupshared tint_array_wrapper src_workgroup;
-ConstantBuffer<S> src_uniform : register(b0, space0);
+cbuffer cbuffer_src_uniform : register(b0, space0) {
+  uint4 src_uniform[4];
+};
 RWByteAddressBuffer src_storage : register(u1, space0);
 groupshared tint_array_wrapper tint_symbol;
 
@@ -44,29 +48,29 @@
 groupshared tint_array_wrapper_1 dst_nested;
 
 tint_array_wrapper ret_arr() {
-  const tint_array_wrapper tint_symbol_4 = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
-  return tint_symbol_4;
+  const tint_array_wrapper tint_symbol_7 = {{{0}, {0}, {0}, {0}}};
+  return tint_symbol_7;
 }
 
 S ret_struct_arr() {
-  const S tint_symbol_5 = {{{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}}};
-  return tint_symbol_5;
+  const S tint_symbol_8 = {{{{0}, {0}, {0}, {0}}}};
+  return tint_symbol_8;
 }
 
 void foo(tint_array_wrapper src_param) {
-  tint_array_wrapper src_function = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
-  const tint_array_wrapper tint_symbol_6 = {{make_tint_padded_array_element(1), make_tint_padded_array_element(2), make_tint_padded_array_element(3), make_tint_padded_array_element(3)}};
-  tint_symbol = tint_symbol_6;
+  tint_array_wrapper src_function = {{{0}, {0}, {0}, {0}}};
+  const tint_array_wrapper tint_symbol_9 = {{{1}, {2}, {3}, {3}}};
+  tint_symbol = tint_symbol_9;
   tint_symbol = src_param;
   tint_symbol = ret_arr();
-  const tint_array_wrapper src_let = {{make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0), make_tint_padded_array_element(0)}};
+  const tint_array_wrapper src_let = {{{0}, {0}, {0}, {0}}};
   tint_symbol = src_let;
   tint_symbol = src_function;
   tint_symbol = src_private;
   tint_symbol = src_workgroup;
   tint_symbol = ret_struct_arr().arr;
-  tint_symbol = src_uniform.arr;
-  tint_symbol = tint_symbol_2(src_storage, 0u);
+  tint_symbol = tint_symbol_2(src_uniform, 0u);
+  tint_symbol = tint_symbol_4(src_storage, 0u);
   tint_array_wrapper_1 src_nested = {{{{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}, {{{{0, 0}}, {{0, 0}}, {{0, 0}}}}}};
   dst_nested = src_nested;
 }
diff --git a/test/bug/tint/744.wgsl.expected.hlsl b/test/bug/tint/744.wgsl.expected.hlsl
index 7819eb6..b23e414 100644
--- a/test/bug/tint/744.wgsl.expected.hlsl
+++ b/test/bug/tint/744.wgsl.expected.hlsl
@@ -1,13 +1,9 @@
-struct Uniforms {
-  /* 0x0000 */ uint2 aShape;
-  /* 0x0008 */ uint2 bShape;
-  /* 0x0010 */ uint2 outShape;
-};
-
 ByteAddressBuffer firstMatrix : register(t0, space0);
 ByteAddressBuffer secondMatrix : register(t1, space0);
 RWByteAddressBuffer resultMatrix : register(u2, space0);
-ConstantBuffer<Uniforms> uniforms : register(b3, space0);
+cbuffer cbuffer_uniforms : register(b3, space0) {
+  uint4 uniforms[2];
+};
 
 struct tint_symbol_1 {
   uint3 global_id : SV_DispatchThreadID;
@@ -17,8 +13,10 @@
 void main(tint_symbol_1 tint_symbol) {
   const uint3 global_id = tint_symbol.global_id;
   const uint2 resultCell = uint2(global_id.y, global_id.x);
-  const uint dimInner = uniforms.aShape.y;
-  const uint dimOutter = uniforms.outShape.y;
+  const int scalar_offset = (4u) / 4;
+  const uint dimInner = uniforms[scalar_offset / 4][scalar_offset % 4];
+  const int scalar_offset_1 = (20u) / 4;
+  const uint dimOutter = uniforms[scalar_offset_1 / 4][scalar_offset_1 % 4];
   uint result = 0u;
   {
     uint i = 0u;
diff --git a/test/bug/tint/749.spvasm.expected.hlsl b/test/bug/tint/749.spvasm.expected.hlsl
index c241a45..a8f610d 100644
--- a/test/bug/tint/749.spvasm.expected.hlsl
+++ b/test/bug/tint/749.spvasm.expected.hlsl
@@ -4,13 +4,12 @@
 struct QuicksortObject {
   tint_array_wrapper numbers;
 };
-struct buf0 {
-  /* 0x0000 */ float2 resolution;
-};
 
 static QuicksortObject obj;
 static float4 gl_FragCoord;
-ConstantBuffer<buf0> x_188 : register(b0, space0);
+cbuffer cbuffer_x_188 : register(b0, space0) {
+  uint4 x_188[1];
+};
 static float4 x_GLF_color;
 
 void swap_i1_i1_(inout int i, inout int j) {
@@ -61,18 +60,18 @@
   const int x_34_save = x_33;
   const int x_35 = obj.numbers.arr[x_34_save];
   const QuicksortObject x_943 = obj;
-  const tint_array_wrapper tint_symbol_4 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  const QuicksortObject tint_symbol_5 = {tint_symbol_4};
-  obj = tint_symbol_5;
+  const tint_array_wrapper tint_symbol_5 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const QuicksortObject tint_symbol_6 = {tint_symbol_5};
+  obj = tint_symbol_6;
   obj = x_943;
   const float2 x_527 = float2(x_526.x, x_526.x);
   const int x_36_save = x_32;
   const float3 x_528 = float3(x_524.x, x_524.z, x_524.x);
   obj.numbers.arr[x_36_save] = x_35;
   const QuicksortObject x_944 = obj;
-  const tint_array_wrapper tint_symbol_6 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  const QuicksortObject tint_symbol_7 = {tint_symbol_6};
-  obj = tint_symbol_7;
+  const tint_array_wrapper tint_symbol_7 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const QuicksortObject tint_symbol_8 = {tint_symbol_7};
+  obj = tint_symbol_8;
   obj = x_944;
   const float3 x_529 = float3(x_526.y, x_526.z, x_526.x);
   const int x_945 = i;
@@ -95,9 +94,9 @@
   obj.numbers.arr[x_36_save] = 0;
   obj.numbers.arr[x_36_save] = x_949;
   const QuicksortObject x_950 = obj;
-  const tint_array_wrapper tint_symbol_8 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  const QuicksortObject tint_symbol_9 = {tint_symbol_8};
-  obj = tint_symbol_9;
+  const tint_array_wrapper tint_symbol_9 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const QuicksortObject tint_symbol_10 = {tint_symbol_9};
+  obj = tint_symbol_10;
   obj = x_950;
   const float3 x_532 = float3(x_528.x, x_528.y, x_528.x);
   const int x_951 = obj.numbers.arr[x_34_save];
@@ -153,9 +152,9 @@
   const float3 x_536 = float3(x_534.x, x_534.z, x_535.x);
   j_1 = 10;
   const QuicksortObject x_960 = obj;
-  const tint_array_wrapper tint_symbol_10 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  const QuicksortObject tint_symbol_11 = {tint_symbol_10};
-  obj = tint_symbol_11;
+  const tint_array_wrapper tint_symbol_11 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const QuicksortObject tint_symbol_12 = {tint_symbol_11};
+  obj = tint_symbol_12;
   obj = x_960;
   while (true) {
     const int x_961 = pivot;
@@ -170,9 +169,9 @@
     pivot = x_963;
     x_537 = float2(float3(1.0f, 2.0f, 3.0f).y, float3(1.0f, 2.0f, 3.0f).z);
     const QuicksortObject x_964 = obj;
-    const tint_array_wrapper tint_symbol_12 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    const QuicksortObject tint_symbol_13 = {tint_symbol_12};
-    obj = tint_symbol_13;
+    const tint_array_wrapper tint_symbol_13 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const QuicksortObject tint_symbol_14 = {tint_symbol_13};
+    obj = tint_symbol_14;
     obj = x_964;
     const int x_56 = h;
     const int x_965 = h;
@@ -206,9 +205,9 @@
     param_1 = x_971;
     const int x_62 = obj.numbers.arr[x_61_save];
     const QuicksortObject x_972 = obj;
-    const tint_array_wrapper tint_symbol_14 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    const QuicksortObject tint_symbol_15 = {tint_symbol_14};
-    obj = tint_symbol_15;
+    const tint_array_wrapper tint_symbol_15 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const QuicksortObject tint_symbol_16 = {tint_symbol_15};
+    obj = tint_symbol_16;
     obj = x_972;
     const int x_63 = pivot;
     const float2 x_540 = float2(float3(1.0f, 2.0f, 3.0f).y, x_534.z);
@@ -267,9 +266,9 @@
       param_1 = x_985;
     }
     const QuicksortObject x_986 = obj;
-    const tint_array_wrapper tint_symbol_16 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    const QuicksortObject tint_symbol_17 = {tint_symbol_16};
-    obj = tint_symbol_17;
+    const tint_array_wrapper tint_symbol_17 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const QuicksortObject tint_symbol_18 = {tint_symbol_17};
+    obj = tint_symbol_18;
     obj = x_986;
     {
       const int x_987 = h;
@@ -302,9 +301,9 @@
   obj.numbers.arr[x_42_save] = x_993;
   const float2 x_549 = float2(x_534.x, x_534.y);
   const QuicksortObject x_994 = obj;
-  const tint_array_wrapper tint_symbol_18 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  const QuicksortObject tint_symbol_19 = {tint_symbol_18};
-  obj = tint_symbol_19;
+  const tint_array_wrapper tint_symbol_19 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const QuicksortObject tint_symbol_20 = {tint_symbol_19};
+  obj = tint_symbol_20;
   obj = x_994;
   const int x_995 = h;
   h = 0;
@@ -372,8 +371,8 @@
   param_5 = x_1007;
   h_1 = 9;
   const tint_array_wrapper x_1008 = stack;
-  const tint_array_wrapper tint_symbol_20 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  stack = tint_symbol_20;
+  const tint_array_wrapper tint_symbol_21 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  stack = tint_symbol_21;
   stack = x_1008;
   const float2 x_556 = float2(float3(1.0f, 2.0f, 3.0f).y, float3(1.0f, 2.0f, 3.0f).y);
   const int x_1009 = param_5;
@@ -406,15 +405,15 @@
   param_4 = x_1015;
   const int x_95 = l_1;
   const QuicksortObject x_1016 = obj;
-  const tint_array_wrapper tint_symbol_21 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  const QuicksortObject tint_symbol_22 = {tint_symbol_21};
-  obj = tint_symbol_22;
+  const tint_array_wrapper tint_symbol_22 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const QuicksortObject tint_symbol_23 = {tint_symbol_22};
+  obj = tint_symbol_23;
   obj = x_1016;
   const float3 x_560 = float3(x_559.y, x_559.x, x_557.x);
   const int x_96_save = x_94;
   const tint_array_wrapper x_1017 = stack;
-  const tint_array_wrapper tint_symbol_23 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  stack = tint_symbol_23;
+  const tint_array_wrapper tint_symbol_24 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  stack = tint_symbol_24;
   stack = x_1017;
   const float3 x_561 = float3(x_556.y, x_556.y, x_556.y);
   const int x_1018 = l_1;
@@ -464,13 +463,13 @@
     h_1 = 0;
     h_1 = x_1028;
     const tint_array_wrapper x_1029 = stack;
-    const tint_array_wrapper tint_symbol_24 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    stack = tint_symbol_24;
+    const tint_array_wrapper tint_symbol_25 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    stack = tint_symbol_25;
     stack = x_1029;
     const int x_106 = top;
     const tint_array_wrapper x_1030 = stack;
-    const tint_array_wrapper tint_symbol_25 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    stack = tint_symbol_25;
+    const tint_array_wrapper tint_symbol_26 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    stack = tint_symbol_26;
     stack = x_1030;
     const float2 x_567 = float2(x_558.x, x_564.z);
     const int x_1031 = param_4;
@@ -481,9 +480,9 @@
       break;
     }
     const QuicksortObject x_1032 = obj;
-    const tint_array_wrapper tint_symbol_26 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    const QuicksortObject tint_symbol_27 = {tint_symbol_26};
-    obj = tint_symbol_27;
+    const tint_array_wrapper tint_symbol_27 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const QuicksortObject tint_symbol_28 = {tint_symbol_27};
+    obj = tint_symbol_28;
     obj = x_1032;
     const float3 x_568 = float3(x_559.y, x_559.x, x_563.y);
     const int x_1033 = param_4;
@@ -508,8 +507,8 @@
     stack.arr[x_96_save] = x_1037;
     const int x_111 = stack.arr[x_110_save];
     const tint_array_wrapper x_1038 = stack;
-    const tint_array_wrapper tint_symbol_28 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    stack = tint_symbol_28;
+    const tint_array_wrapper tint_symbol_29 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    stack = tint_symbol_29;
     stack = x_1038;
     const float3 x_571 = float3(x_559.y, x_559.x, x_564.y);
     const int x_1039 = l_1;
@@ -517,8 +516,8 @@
     l_1 = x_1039;
     h_1 = x_111;
     const tint_array_wrapper x_1040 = stack;
-    const tint_array_wrapper tint_symbol_29 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    stack = tint_symbol_29;
+    const tint_array_wrapper tint_symbol_30 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    stack = tint_symbol_30;
     stack = x_1040;
     const float2 x_572 = float2(x_562.y, x_561.y);
     const int x_1041 = p;
@@ -610,8 +609,8 @@
       stack.arr[x_100_save] = 0;
       stack.arr[x_100_save] = x_1061;
       const tint_array_wrapper x_1062 = stack;
-      const tint_array_wrapper tint_symbol_30 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-      stack = tint_symbol_30;
+      const tint_array_wrapper tint_symbol_31 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+      stack = tint_symbol_31;
       stack = x_1062;
       const float2 x_584 = float2(x_569.z, x_569.y);
       const float3 x_585 = float3(x_580.y, x_577.x, x_577.x);
@@ -650,8 +649,8 @@
       h_1 = x_1070;
       top = x_133;
       const tint_array_wrapper x_1071 = stack;
-      const tint_array_wrapper tint_symbol_31 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-      stack = tint_symbol_31;
+      const tint_array_wrapper tint_symbol_32 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+      stack = tint_symbol_32;
       stack = x_1071;
       const int x_134 = p;
       const float2 x_590 = float2(x_576.x, x_573.y);
@@ -676,9 +675,9 @@
     stack.arr[x_96_save] = x_1076;
     const float2 x_592 = float2(float3(1.0f, 2.0f, 3.0f).x, float3(1.0f, 2.0f, 3.0f).y);
     const QuicksortObject x_1077 = obj;
-    const tint_array_wrapper tint_symbol_32 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    const QuicksortObject tint_symbol_33 = {tint_symbol_32};
-    obj = tint_symbol_33;
+    const tint_array_wrapper tint_symbol_33 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const QuicksortObject tint_symbol_34 = {tint_symbol_33};
+    obj = tint_symbol_34;
     obj = x_1077;
     const int x_137 = p;
     const int x_1078 = stack.arr[x_114_save];
@@ -743,8 +742,8 @@
       const float2 x_601 = float2(x_563.x, x_563.y);
       stack.arr[x_147_save] = asint((1u + asuint(x_145)));
       const tint_array_wrapper x_1093 = stack;
-      const tint_array_wrapper tint_symbol_34 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-      stack = tint_symbol_34;
+      const tint_array_wrapper tint_symbol_35 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+      stack = tint_symbol_35;
       stack = x_1093;
       const int x_148 = top;
       const int x_1094 = stack.arr[x_114_save];
@@ -752,8 +751,8 @@
       stack.arr[x_114_save] = x_1094;
       const float2 x_602 = float2(x_565.y, x_599.y);
       const tint_array_wrapper x_1095 = stack;
-      const tint_array_wrapper tint_symbol_35 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-      stack = tint_symbol_35;
+      const tint_array_wrapper tint_symbol_36 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+      stack = tint_symbol_36;
       stack = x_1095;
       const int x_149 = (x_148 + asint(1u));
       const int x_1096 = stack.arr[x_147_save];
@@ -788,9 +787,9 @@
       l_1 = x_1103;
       const float2 x_604 = float2(x_563.z, x_564.x);
       const QuicksortObject x_1104 = obj;
-      const tint_array_wrapper tint_symbol_36 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-      const QuicksortObject tint_symbol_37 = {tint_symbol_36};
-      obj = tint_symbol_37;
+      const tint_array_wrapper tint_symbol_37 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+      const QuicksortObject tint_symbol_38 = {tint_symbol_37};
+      obj = tint_symbol_38;
       obj = x_1104;
     }
   }
@@ -809,15 +808,15 @@
   uv = x_717;
   i_2 = 0;
   const QuicksortObject x_721 = obj;
-  const tint_array_wrapper tint_symbol_38 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  const QuicksortObject tint_symbol_39 = {tint_symbol_38};
-  obj = tint_symbol_39;
+  const tint_array_wrapper tint_symbol_39 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const QuicksortObject tint_symbol_40 = {tint_symbol_39};
+  obj = tint_symbol_40;
   obj = x_721;
   if (true) {
     const QuicksortObject x_722 = obj;
-    const tint_array_wrapper tint_symbol_40 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    const QuicksortObject tint_symbol_41 = {tint_symbol_40};
-    obj = tint_symbol_41;
+    const tint_array_wrapper tint_symbol_41 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const QuicksortObject tint_symbol_42 = {tint_symbol_41};
+    obj = tint_symbol_42;
     obj = x_722;
     const float2 x_431 = float2(float3(1.0f, 2.0f, 3.0f).x, float3(1.0f, 2.0f, 3.0f).x);
     const int x_158 = i_2;
@@ -829,15 +828,15 @@
     color = x_725;
     const float2 x_432 = float2(x_431.y, x_431.y);
     const QuicksortObject x_726 = obj;
-    const tint_array_wrapper tint_symbol_42 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    const QuicksortObject tint_symbol_43 = {tint_symbol_42};
-    obj = tint_symbol_43;
+    const tint_array_wrapper tint_symbol_43 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const QuicksortObject tint_symbol_44 = {tint_symbol_43};
+    obj = tint_symbol_44;
     obj = x_726;
   }
   const QuicksortObject x_756 = obj;
-  const tint_array_wrapper tint_symbol_44 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  const QuicksortObject tint_symbol_45 = {tint_symbol_44};
-  obj = tint_symbol_45;
+  const tint_array_wrapper tint_symbol_45 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const QuicksortObject tint_symbol_46 = {tint_symbol_45};
+  obj = tint_symbol_46;
   obj = x_756;
   const float2 x_446 = float2(float2(0.0f, 0.0f).x, float2(0.0f, 0.0f).x);
   const int x_757 = i_2;
@@ -845,9 +844,9 @@
   i_2 = x_757;
   quicksort_();
   const QuicksortObject x_758 = obj;
-  const tint_array_wrapper tint_symbol_46 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  const QuicksortObject tint_symbol_47 = {tint_symbol_46};
-  obj = tint_symbol_47;
+  const tint_array_wrapper tint_symbol_47 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const QuicksortObject tint_symbol_48 = {tint_symbol_47};
+  obj = tint_symbol_48;
   obj = x_758;
   const float4 x_184 = gl_FragCoord;
   const float2 x_759 = uv;
@@ -860,18 +859,20 @@
   const float2 x_185 = float2(x_184.x, x_184.y);
   const float3 x_448 = float3(x_185.y, x_446.y, x_446.y);
   const QuicksortObject x_761 = obj;
-  const tint_array_wrapper tint_symbol_48 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  const QuicksortObject tint_symbol_49 = {tint_symbol_48};
-  obj = tint_symbol_49;
+  const tint_array_wrapper tint_symbol_49 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const QuicksortObject tint_symbol_50 = {tint_symbol_49};
+  obj = tint_symbol_50;
   obj = x_761;
   const float2 x_762 = uv;
   uv = float2(0.0f, 0.0f);
   uv = x_762;
-  const float2 x_191 = x_188.resolution;
+  const int scalar_offset = (0u) / 4;
+  uint4 ubo_load = x_188[scalar_offset / 4];
+  const float2 x_191 = asfloat((scalar_offset & 2) ? ubo_load.zw : ubo_load.xy);
   const QuicksortObject x_763 = obj;
-  const tint_array_wrapper tint_symbol_50 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  const QuicksortObject tint_symbol_51 = {tint_symbol_50};
-  obj = tint_symbol_51;
+  const tint_array_wrapper tint_symbol_51 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const QuicksortObject tint_symbol_52 = {tint_symbol_51};
+  obj = tint_symbol_52;
   obj = x_763;
   const float3 x_449 = float3(x_184.y, float3(1.0f, 2.0f, 3.0f).z, x_184.w);
   const float3 x_764 = color;
@@ -879,9 +880,9 @@
   color = x_764;
   const float2 x_192 = (x_185 / x_191);
   const QuicksortObject x_765 = obj;
-  const tint_array_wrapper tint_symbol_52 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  const QuicksortObject tint_symbol_53 = {tint_symbol_52};
-  obj = tint_symbol_53;
+  const tint_array_wrapper tint_symbol_53 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const QuicksortObject tint_symbol_54 = {tint_symbol_53};
+  obj = tint_symbol_54;
   obj = x_765;
   const float2 x_450 = float2(x_447.x, x_185.y);
   const float3 x_766 = color;
@@ -897,18 +898,18 @@
   color = x_768;
   const float3 x_451 = float3(x_185.x, x_185.y, x_446.y);
   const QuicksortObject x_769 = obj;
-  const tint_array_wrapper tint_symbol_54 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  const QuicksortObject tint_symbol_55 = {tint_symbol_54};
-  obj = tint_symbol_55;
+  const tint_array_wrapper tint_symbol_55 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const QuicksortObject tint_symbol_56 = {tint_symbol_55};
+  obj = tint_symbol_56;
   obj = x_769;
   const int x_770 = obj.numbers.arr[0u];
   obj.numbers.arr[0u] = 0;
   obj.numbers.arr[0u] = x_770;
   const int x_201 = obj.numbers.arr[0u];
   const QuicksortObject x_771 = obj;
-  const tint_array_wrapper tint_symbol_56 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  const QuicksortObject tint_symbol_57 = {tint_symbol_56};
-  obj = tint_symbol_57;
+  const tint_array_wrapper tint_symbol_57 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const QuicksortObject tint_symbol_58 = {tint_symbol_57};
+  obj = tint_symbol_58;
   obj = x_771;
   const int x_772 = obj.numbers.arr[0u];
   obj.numbers.arr[0u] = 0;
@@ -922,9 +923,9 @@
   i_2 = 0;
   i_2 = x_774;
   const QuicksortObject x_775 = obj;
-  const tint_array_wrapper tint_symbol_58 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  const QuicksortObject tint_symbol_59 = {tint_symbol_58};
-  obj = tint_symbol_59;
+  const tint_array_wrapper tint_symbol_59 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const QuicksortObject tint_symbol_60 = {tint_symbol_59};
+  obj = tint_symbol_60;
   obj = x_775;
   const float3 x_453 = float3(x_451.x, x_450.x, x_450.y);
   color.x = (x_206 + float(x_201));
@@ -941,9 +942,9 @@
   uv.x = 0.0f;
   uv.x = x_778;
   const QuicksortObject x_779 = obj;
-  const tint_array_wrapper tint_symbol_60 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  const QuicksortObject tint_symbol_61 = {tint_symbol_60};
-  obj = tint_symbol_61;
+  const tint_array_wrapper tint_symbol_61 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const QuicksortObject tint_symbol_62 = {tint_symbol_61};
+  obj = tint_symbol_62;
   obj = x_779;
   if ((x_210 > 0.25f)) {
     const int x_780 = i_2;
@@ -958,18 +959,18 @@
     uv.x = x_782;
     const int x_216 = obj.numbers.arr[1];
     const QuicksortObject x_783 = obj;
-    const tint_array_wrapper tint_symbol_62 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    const QuicksortObject tint_symbol_63 = {tint_symbol_62};
-    obj = tint_symbol_63;
+    const tint_array_wrapper tint_symbol_63 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const QuicksortObject tint_symbol_64 = {tint_symbol_63};
+    obj = tint_symbol_64;
     obj = x_783;
     const float2 x_457 = float2(x_454.x, x_454.x);
     const float2 x_784 = uv;
     uv = float2(0.0f, 0.0f);
     uv = x_784;
     const QuicksortObject x_785 = obj;
-    const tint_array_wrapper tint_symbol_64 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    const QuicksortObject tint_symbol_65 = {tint_symbol_64};
-    obj = tint_symbol_65;
+    const tint_array_wrapper tint_symbol_65 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const QuicksortObject tint_symbol_66 = {tint_symbol_65};
+    obj = tint_symbol_66;
     obj = x_785;
     const float2 x_458 = float2(float3(1.0f, 2.0f, 3.0f).z, float2(0.0f, 0.0f).y);
     const int x_786 = i_2;
@@ -1087,9 +1088,9 @@
     color.x = 0.0f;
     color.x = x_816;
     const QuicksortObject x_817 = obj;
-    const tint_array_wrapper tint_symbol_66 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    const QuicksortObject tint_symbol_67 = {tint_symbol_66};
-    obj = tint_symbol_67;
+    const tint_array_wrapper tint_symbol_67 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const QuicksortObject tint_symbol_68 = {tint_symbol_67};
+    obj = tint_symbol_68;
     obj = x_817;
     const float3 x_468 = float3(x_467.x, x_467.x, x_467.x);
     const float x_818 = uv[0];
@@ -1198,9 +1199,9 @@
     uv[0] = x_844;
     const float3 x_482 = float3(x_455.x, x_475.y, x_455.y);
     const QuicksortObject x_845 = obj;
-    const tint_array_wrapper tint_symbol_68 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    const QuicksortObject tint_symbol_69 = {tint_symbol_68};
-    obj = tint_symbol_69;
+    const tint_array_wrapper tint_symbol_69 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const QuicksortObject tint_symbol_70 = {tint_symbol_69};
+    obj = tint_symbol_70;
     obj = x_845;
     const float x_846 = uv.y;
     uv.y = 0.0f;
@@ -1271,9 +1272,9 @@
     obj.numbers.arr[6u] = x_863;
     const float2 x_490 = float2(x_480.z, x_480.z);
     const QuicksortObject x_864 = obj;
-    const tint_array_wrapper tint_symbol_70 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    const QuicksortObject tint_symbol_71 = {tint_symbol_70};
-    obj = tint_symbol_71;
+    const tint_array_wrapper tint_symbol_71 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const QuicksortObject tint_symbol_72 = {tint_symbol_71};
+    obj = tint_symbol_72;
     obj = x_864;
     color.y = (float(x_280) + x_283);
     const float x_865 = color.x;
@@ -1290,9 +1291,9 @@
   color.x = x_867;
   const float x_287 = uv.y;
   const QuicksortObject x_868 = obj;
-  const tint_array_wrapper tint_symbol_72 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  const QuicksortObject tint_symbol_73 = {tint_symbol_72};
-  obj = tint_symbol_73;
+  const tint_array_wrapper tint_symbol_73 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const QuicksortObject tint_symbol_74 = {tint_symbol_73};
+  obj = tint_symbol_74;
   obj = x_868;
   const float2 x_493 = float2(x_475.x, x_475.y);
   const float x_869 = uv[0];
@@ -1452,9 +1453,9 @@
     uv.x = 0.0f;
     uv.x = x_910;
     const QuicksortObject x_911 = obj;
-    const tint_array_wrapper tint_symbol_74 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-    const QuicksortObject tint_symbol_75 = {tint_symbol_74};
-    obj = tint_symbol_75;
+    const tint_array_wrapper tint_symbol_75 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+    const QuicksortObject tint_symbol_76 = {tint_symbol_75};
+    obj = tint_symbol_76;
     obj = x_911;
     const float3 x_513 = float3(x_505.z, x_505.x, x_448.x);
     const int x_912 = obj.numbers.arr[8];
@@ -1506,14 +1507,14 @@
   uv.x = 0.0f;
   uv.x = x_923;
   const QuicksortObject x_924 = obj;
-  const tint_array_wrapper tint_symbol_76 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  const QuicksortObject tint_symbol_77 = {tint_symbol_76};
-  obj = tint_symbol_77;
+  const tint_array_wrapper tint_symbol_77 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const QuicksortObject tint_symbol_78 = {tint_symbol_77};
+  obj = tint_symbol_78;
   obj = x_924;
   const QuicksortObject x_925 = obj;
-  const tint_array_wrapper tint_symbol_78 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  const QuicksortObject tint_symbol_79 = {tint_symbol_78};
-  obj = tint_symbol_79;
+  const tint_array_wrapper tint_symbol_79 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const QuicksortObject tint_symbol_80 = {tint_symbol_79};
+  obj = tint_symbol_80;
   obj = x_925;
   const float x_926 = color.y;
   color.y = 0.0f;
@@ -1532,9 +1533,9 @@
   uv.x = x_929;
   x_GLF_color = x_330;
   const QuicksortObject x_930 = obj;
-  const tint_array_wrapper tint_symbol_80 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
-  const QuicksortObject tint_symbol_81 = {tint_symbol_80};
-  obj = tint_symbol_81;
+  const tint_array_wrapper tint_symbol_81 = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
+  const QuicksortObject tint_symbol_82 = {tint_symbol_81};
+  obj = tint_symbol_82;
   obj = x_930;
   const float3 x_522 = float3(x_330.w, x_330.y, x_493.x);
   const float x_931 = color.x;
@@ -1558,6 +1559,6 @@
   gl_FragCoord = gl_FragCoord_param;
   main_1();
   const main_out tint_symbol_3 = {x_GLF_color};
-  const tint_symbol_2 tint_symbol_82 = {tint_symbol_3.x_GLF_color};
-  return tint_symbol_82;
+  const tint_symbol_2 tint_symbol_83 = {tint_symbol_3.x_GLF_color};
+  return tint_symbol_83;
 }
diff --git a/test/bug/tint/757.wgsl.expected.hlsl b/test/bug/tint/757.wgsl.expected.hlsl
index e7db592..5243384 100644
--- a/test/bug/tint/757.wgsl.expected.hlsl
+++ b/test/bug/tint/757.wgsl.expected.hlsl
@@ -1,8 +1,6 @@
-struct Constants {
-  /* 0x0000 */ int level;
+cbuffer cbuffer_constants : register(b0, space0) {
+  uint4 constants[1];
 };
-
-ConstantBuffer<Constants> constants : register(b0, space0);
 Texture2DArray<float4> myTexture : register(t1, space0);
 
 RWByteAddressBuffer result : register(u3, space0);
diff --git a/test/bug/tint/870.spvasm.expected.hlsl b/test/bug/tint/870.spvasm.expected.hlsl
index 7cb227e..4e15ce2 100644
--- a/test/bug/tint/870.spvasm.expected.hlsl
+++ b/test/bug/tint/870.spvasm.expected.hlsl
@@ -1,5 +1,5 @@
 struct tint_array_wrapper {
-  /* 0x0000 */ int arr[6];
+  int arr[6];
 };
 
 tint_array_wrapper tint_symbol_1(ByteAddressBuffer buffer, uint offset) {
diff --git a/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.hlsl b/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.hlsl
index ac3efc5..80d076b 100644
--- a/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.hlsl
+++ b/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.hlsl
@@ -1,11 +1,10 @@
-struct S {
-  /* 0x0000 */ int a;
+cbuffer cbuffer_v : register(b0, space0) {
+  uint4 v[1];
 };
 
-ConstantBuffer<S> v : register(b0, space0);
-
 [numthreads(1, 1, 1)]
 void main() {
-  const int use = (v.a + 1);
+  const int scalar_offset = (0u) / 4;
+  const int use = (asint(v[scalar_offset / 4][scalar_offset % 4]) + 1);
   return;
 }
diff --git a/test/samples/compute_boids.wgsl.expected.hlsl b/test/samples/compute_boids.wgsl.expected.hlsl
index 974996a..b90f8fb 100644
--- a/test/samples/compute_boids.wgsl.expected.hlsl
+++ b/test/samples/compute_boids.wgsl.expected.hlsl
@@ -13,8 +13,8 @@
   const float2 a_pos = tint_symbol.a_pos;
   float angle = -(atan2(a_particleVel.x, a_particleVel.y));
   float2 pos = float2(((a_pos.x * cos(angle)) - (a_pos.y * sin(angle))), ((a_pos.x * sin(angle)) + (a_pos.y * cos(angle))));
-  const tint_symbol_2 tint_symbol_8 = {float4((pos + a_particlePos), 0.0f, 1.0f)};
-  return tint_symbol_8;
+  const tint_symbol_2 tint_symbol_9 = {float4((pos + a_particlePos), 0.0f, 1.0f)};
+  return tint_symbol_9;
 }
 
 struct tint_symbol_3 {
@@ -22,21 +22,13 @@
 };
 
 tint_symbol_3 frag_main() {
-  const tint_symbol_3 tint_symbol_9 = {float4(1.0f, 1.0f, 1.0f, 1.0f)};
-  return tint_symbol_9;
+  const tint_symbol_3 tint_symbol_10 = {float4(1.0f, 1.0f, 1.0f, 1.0f)};
+  return tint_symbol_10;
 }
 
-struct SimParams {
-  /* 0x0000 */ float deltaT;
-  /* 0x0004 */ float rule1Distance;
-  /* 0x0008 */ float rule2Distance;
-  /* 0x000c */ float rule3Distance;
-  /* 0x0010 */ float rule1Scale;
-  /* 0x0014 */ float rule2Scale;
-  /* 0x0018 */ float rule3Scale;
+cbuffer cbuffer_params : register(b0, space0) {
+  uint4 params[2];
 };
-
-ConstantBuffer<SimParams> params : register(b0, space0);
 RWByteAddressBuffer particlesA : register(u1, space0);
 RWByteAddressBuffer particlesB : register(u2, space0);
 
@@ -74,14 +66,17 @@
       }
       pos = asfloat(particlesA.Load2((16u * i))).xy;
       vel = asfloat(particlesA.Load2(((16u * i) + 8u))).xy;
-      if ((distance(pos, vPos) < params.rule1Distance)) {
+      const int scalar_offset = (4u) / 4;
+      if ((distance(pos, vPos) < asfloat(params[scalar_offset / 4][scalar_offset % 4]))) {
         cMass = (cMass + pos);
         cMassCount = (cMassCount + 1);
       }
-      if ((distance(pos, vPos) < params.rule2Distance)) {
+      const int scalar_offset_1 = (8u) / 4;
+      if ((distance(pos, vPos) < asfloat(params[scalar_offset_1 / 4][scalar_offset_1 % 4]))) {
         colVel = (colVel - (pos - vPos));
       }
-      if ((distance(pos, vPos) < params.rule3Distance)) {
+      const int scalar_offset_2 = (12u) / 4;
+      if ((distance(pos, vPos) < asfloat(params[scalar_offset_2 / 4][scalar_offset_2 % 4]))) {
         cVel = (cVel + vel);
         cVelCount = (cVelCount + 1);
       }
@@ -96,9 +91,13 @@
   if ((cVelCount > 0)) {
     cVel = (cVel / float2(float(cVelCount), float(cVelCount)));
   }
-  vVel = (((vVel + (cMass * params.rule1Scale)) + (colVel * params.rule2Scale)) + (cVel * params.rule3Scale));
+  const int scalar_offset_3 = (16u) / 4;
+  const int scalar_offset_4 = (20u) / 4;
+  const int scalar_offset_5 = (24u) / 4;
+  vVel = (((vVel + (cMass * asfloat(params[scalar_offset_3 / 4][scalar_offset_3 % 4]))) + (colVel * asfloat(params[scalar_offset_4 / 4][scalar_offset_4 % 4]))) + (cVel * asfloat(params[scalar_offset_5 / 4][scalar_offset_5 % 4])));
   vVel = (normalize(vVel) * clamp(length(vVel), 0.0f, 0.100000001f));
-  vPos = (vPos + (vVel * params.deltaT));
+  const int scalar_offset_6 = (0u) / 4;
+  vPos = (vPos + (vVel * asfloat(params[scalar_offset_6 / 4][scalar_offset_6 % 4])));
   if ((vPos.x < -1.0f)) {
     vPos.x = 1.0f;
   }
diff --git a/test/samples/cube.wgsl.expected.hlsl b/test/samples/cube.wgsl.expected.hlsl
index 05fb49f..d5d3408 100644
--- a/test/samples/cube.wgsl.expected.hlsl
+++ b/test/samples/cube.wgsl.expected.hlsl
@@ -1,8 +1,14 @@
-struct Uniforms {
-  /* 0x0000 */ float4x4 modelViewProjectionMatrix;
-};
+float4x4 tint_symbol_7(uint4 buffer[4], uint offset) {
+  const int scalar_offset = ((offset + 0u)) / 4;
+  const int scalar_offset_1 = ((offset + 16u)) / 4;
+  const int scalar_offset_2 = ((offset + 32u)) / 4;
+  const int scalar_offset_3 = ((offset + 48u)) / 4;
+  return float4x4(asfloat(buffer[scalar_offset / 4]), asfloat(buffer[scalar_offset_1 / 4]), asfloat(buffer[scalar_offset_2 / 4]), asfloat(buffer[scalar_offset_3 / 4]));
+}
 
-ConstantBuffer<Uniforms> uniforms : register(b0, space0);
+cbuffer cbuffer_uniforms : register(b0, space0) {
+  uint4 uniforms[4];
+};
 
 struct VertexInput {
   float4 cur_position;
@@ -24,10 +30,10 @@
 tint_symbol_2 vtx_main(tint_symbol_1 tint_symbol) {
   const VertexInput input = {tint_symbol.cur_position, tint_symbol.color};
   VertexOutput output = {float4(0.0f, 0.0f, 0.0f, 0.0f), float4(0.0f, 0.0f, 0.0f, 0.0f)};
-  output.Position = mul(input.cur_position, uniforms.modelViewProjectionMatrix);
+  output.Position = mul(input.cur_position, tint_symbol_7(uniforms, 0u));
   output.vtxFragColor = input.color;
-  const tint_symbol_2 tint_symbol_6 = {output.vtxFragColor, output.Position};
-  return tint_symbol_6;
+  const tint_symbol_2 tint_symbol_8 = {output.vtxFragColor, output.Position};
+  return tint_symbol_8;
 }
 
 struct tint_symbol_4 {
@@ -39,6 +45,6 @@
 
 tint_symbol_5 frag_main(tint_symbol_4 tint_symbol_3) {
   const float4 fragColor = tint_symbol_3.fragColor;
-  const tint_symbol_5 tint_symbol_7 = {fragColor};
-  return tint_symbol_7;
+  const tint_symbol_5 tint_symbol_9 = {fragColor};
+  return tint_symbol_9;
 }
diff --git a/test/shader_io/shared_struct_storage_buffer.wgsl.expected.hlsl b/test/shader_io/shared_struct_storage_buffer.wgsl.expected.hlsl
index b482205..1c8ad7d 100644
--- a/test/shader_io/shared_struct_storage_buffer.wgsl.expected.hlsl
+++ b/test/shader_io/shared_struct_storage_buffer.wgsl.expected.hlsl
@@ -1,21 +1,9 @@
 struct S {
-  /* 0x0000 */ float f;
-  /* 0x0004 */ uint u;
-  /* 0x0008 */ int tint_pad_0[30];
-  /* 0x0080 */ float4 v;
-  /* 0x0090 */ int tint_pad_1[28];
+  float f;
+  uint u;
+  float4 v;
 };
 
-S make_S(float param_0,
-         uint param_1,
-         float4 param_2) {
-  S output;
-  output.f = param_0;
-  output.u = param_1;
-  output.v = param_2;
-  return output;
-}
-
 void tint_symbol_5(RWByteAddressBuffer buffer, uint offset, S value) {
   buffer.Store((offset + 0u), asuint(value.f));
   buffer.Store((offset + 4u), asuint(value.u));
@@ -31,7 +19,7 @@
 };
 
 void frag_main(tint_symbol_1 tint_symbol) {
-  const S input = make_S(tint_symbol.f, tint_symbol.u, tint_symbol.v);
+  const S input = {tint_symbol.f, tint_symbol.u, tint_symbol.v};
   const float f = input.f;
   const uint u = input.u;
   const float4 v = input.v;