blob: c41dbb3ec30de13353da88314dd86e62c825dda8 [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 {
half2x4 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 = {.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 half2x4* const p_a_3_a_2_m = (&(*p_a_3_a_2).m);
const constant half4* 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);
half2x4 const l_a_3_a_2_m = (*p_a_3_a_2_m);
half4 const l_a_3_a_2_m_1 = (*p_a_3_a_2_m_1);
half const l_a_3_a_2_m_1_0 = (*p_a_3_a_2_m_1)[0];
}