|  | #include <metal_stdlib> | 
|  | using namespace metal; | 
|  |  | 
|  | template<typename T, size_t N> | 
|  | struct tint_array { | 
|  | const constant T& operator[](size_t i) const constant { return elements[i]; } | 
|  | device T& operator[](size_t i) device { return elements[i]; } | 
|  | const device T& operator[](size_t i) const device { return elements[i]; } | 
|  | thread T& operator[](size_t i) thread { return elements[i]; } | 
|  | const thread T& operator[](size_t i) const thread { return elements[i]; } | 
|  | threadgroup T& operator[](size_t i) threadgroup { return elements[i]; } | 
|  | const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; } | 
|  | T elements[N]; | 
|  | }; | 
|  |  | 
|  | struct S { | 
|  | simdgroup_float8x8 l; | 
|  | simdgroup_float8x8 r; | 
|  | }; | 
|  |  | 
|  | struct S_Nested { | 
|  | S s; | 
|  | }; | 
|  |  | 
|  | struct tint_array_lengths_struct { | 
|  | uint tint_array_length_0_0; | 
|  | }; | 
|  |  | 
|  | struct tint_module_vars_struct { | 
|  | device tint_array<float, 1>* tint_member; | 
|  | const constant tint_array<uint4, 1>* tint_storage_buffer_sizes; | 
|  | }; | 
|  |  | 
|  | void foo(simdgroup_float8x8 m, tint_array<simdgroup_float8x8, 4> m_array, tint_array<tint_array<simdgroup_float8x8, 4>, 4> m_nested_array, S m_struct, S_Nested m_nested_struct, tint_array_lengths_struct tint_array_lengths, tint_module_vars_struct tint_module_vars) { | 
|  | if ((((0u + (64u * 7u)) + 8u) <= tint_array_lengths.tint_array_length_0_0)) { | 
|  | simdgroup_store(m, (&(*tint_module_vars.tint_member)[0u]), ulong(64u), ulong2(0ul), false); | 
|  | } | 
|  | if ((((0u + (64u * 7u)) + 8u) <= tint_array_lengths.tint_array_length_0_0)) { | 
|  | simdgroup_store(m_array[0u], (&(*tint_module_vars.tint_member)[0u]), ulong(64u), ulong2(0ul), false); | 
|  | } | 
|  | if ((((0u + (64u * 7u)) + 8u) <= tint_array_lengths.tint_array_length_0_0)) { | 
|  | simdgroup_store(m_nested_array[1u][2u], (&(*tint_module_vars.tint_member)[0u]), ulong(64u), ulong2(0ul), false); | 
|  | } | 
|  | if ((((0u + (64u * 7u)) + 8u) <= tint_array_lengths.tint_array_length_0_0)) { | 
|  | simdgroup_store(m_struct.l, (&(*tint_module_vars.tint_member)[0u]), ulong(64u), ulong2(0ul), false); | 
|  | } | 
|  | if ((((0u + (64u * 7u)) + 8u) <= tint_array_lengths.tint_array_length_0_0)) { | 
|  | simdgroup_store(m_nested_struct.s.r, (&(*tint_module_vars.tint_member)[0u]), ulong(64u), ulong2(0ul), false); | 
|  | } | 
|  | } | 
|  |  | 
|  | kernel void v(device tint_array<float, 1>* v_1 [[buffer(0)]], const constant tint_array<uint4, 1>* tint_storage_buffer_sizes [[buffer(30)]]) { | 
|  | tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.tint_member=v_1, .tint_storage_buffer_sizes=tint_storage_buffer_sizes}; | 
|  | tint_array_lengths_struct const v_2 = tint_array_lengths_struct{.tint_array_length_0_0=((*tint_module_vars.tint_storage_buffer_sizes)[0u].x / 4u)}; | 
|  | simdgroup_float8x8 m = make_filled_simdgroup_matrix<float, 8, 8>(0.0f); | 
|  | tint_array<simdgroup_float8x8, 4> m_array = {}; | 
|  | tint_array<tint_array<simdgroup_float8x8, 4>, 4> m_nested_array = {}; | 
|  | S m_struct = {}; | 
|  | S_Nested m_nested_struct = {}; | 
|  | foo(m, m_array, m_nested_array, m_struct, m_nested_struct, v_2, tint_module_vars); | 
|  | } |