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

#include <metal_stdlib>

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

void textureLoad_f56e6f(texture3d<uint, access::read> tint_symbol_2) {
  uint4 res = tint_symbol_2.read(uint3(int3()));
}

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

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

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

