#include <metal_stdlib>

using namespace metal;
struct tint_symbol {
  float4 value [[position]];
};

void ignore_c8a0ee(depth2d_array<float, access::sample> tint_symbol_2) {
  (void) tint_symbol_2;
}

vertex tint_symbol vertex_main(depth2d_array<float, access::sample> tint_symbol_3 [[texture(0)]]) {
  ignore_c8a0ee(tint_symbol_3);
  tint_symbol const tint_symbol_1 = {.value=float4()};
  return tint_symbol_1;
}

fragment void fragment_main(depth2d_array<float, access::sample> tint_symbol_4 [[texture(0)]]) {
  ignore_c8a0ee(tint_symbol_4);
  return;
}

kernel void compute_main(depth2d_array<float, access::sample> tint_symbol_5 [[texture(0)]]) {
  ignore_c8a0ee(tint_symbol_5);
  return;
}

