intrinsics/gen/textureLoad/3c0d9e.wgsl:29:24 warning: use of deprecated intrinsic
  var res: vec4<u32> = textureLoad(arg_0, vec2<i32>());
                       ^^^^^^^^^^^

#include <metal_stdlib>

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

void textureLoad_3c0d9e(texture2d<uint, access::read> tint_symbol_2) {
  uint4 res = tint_symbol_2.read(uint2(int2()));
}

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

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

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

