|  | #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 tint_module_vars_struct { | 
|  | device tint_array<uint, 1>* s; | 
|  | const constant tint_array<uint4, 1>* tint_storage_buffer_sizes; | 
|  | }; | 
|  |  | 
|  | struct tint_array_lengths_struct { | 
|  | uint tint_array_length_0_0; | 
|  | }; | 
|  |  | 
|  | kernel void v(device tint_array<uint, 1>* s [[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{.s=s, .tint_storage_buffer_sizes=tint_storage_buffer_sizes}; | 
|  | uint q = 0u; | 
|  | uint const v_1 = (tint_array_lengths_struct{.tint_array_length_0_0=((*tint_module_vars.tint_storage_buffer_sizes)[0u].x / 4u)}.tint_array_length_0_0 - 1u); | 
|  | device uint* const v_2 = (&(*tint_module_vars.s)[min(uint(0), v_1)]); | 
|  | (*v_2) = tint_array<uint2, 2>{uint2(1u, 2u), uint2(3u, 4u)}[min(q, 1u)].x; | 
|  | } |