#include <metal_stdlib>

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

void textureNumSamples_42f8bb(texture2d_ms<uint, access::read> tint_symbol_2) {
  int res = int(tint_symbol_2.get_num_samples());
}

vertex tint_symbol vertex_main(texture2d_ms<uint, access::read> tint_symbol_3 [[texture(0)]]) {
  textureNumSamples_42f8bb(tint_symbol_3);
  tint_symbol const tint_symbol_1 = {.value=float4()};
  return tint_symbol_1;
}

fragment void fragment_main(texture2d_ms<uint, access::read> tint_symbol_4 [[texture(0)]]) {
  textureNumSamples_42f8bb(tint_symbol_4);
  return;
}

kernel void compute_main(texture2d_ms<uint, access::read> tint_symbol_5 [[texture(0)]]) {
  textureNumSamples_42f8bb(tint_symbol_5);
  return;
}

