blob: 9e36c20fd02633b6276a9b256e30696295d377e2 [file] [log] [blame]
#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 Inner {
float3x3 m;
};
struct Outer {
tint_array<Inner, 4> a;
};
struct tint_module_vars_struct {
const constant tint_array<Outer, 4>* a;
};
kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.a=a};
const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
const constant Outer* const p_a_3 = (&(*p_a)[3]);
const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
const constant Inner* const p_a_3_a_2 = (&(*p_a_3_a)[2]);
const constant float3x3* const p_a_3_a_2_m = (&(*p_a_3_a_2).m);
const constant float3* const p_a_3_a_2_m_1 = (&(*p_a_3_a_2_m)[1]);
tint_array<Outer, 4> const l_a = (*p_a);
Outer const l_a_3 = (*p_a_3);
tint_array<Inner, 4> const l_a_3_a = (*p_a_3_a);
Inner const l_a_3_a_2 = (*p_a_3_a_2);
float3x3 const l_a_3_a_2_m = (*p_a_3_a_2_m);
float3 const l_a_3_a_2_m_1 = (*p_a_3_a_2_m_1);
float const l_a_3_a_2_m_1_0 = (*p_a_3_a_2_m_1)[0];
}