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

#include <metal_stdlib>

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

void textureLoad_e65916(texture3d<int, access::read> tint_symbol_2) {
  int4 res = tint_symbol_2.read(uint3(int3()));
}

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

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

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

