#include <metal_stdlib>
using namespace metal;

struct tint_module_vars_struct {
  texture2d<uint, access::read_write> arg_0;
};

void textureStore_a24491(tint_module_vars_struct tint_module_vars) {
  tint_module_vars.arg_0.write(uint4(1u), uint2(1u));
  const_cast<texture2d<uint, access::read_write>thread &>(tint_module_vars.arg_0).fence();
}

fragment void fragment_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.arg_0=arg_0};
  textureStore_a24491(tint_module_vars);
}

kernel void compute_main(texture2d<uint, access::read_write> arg_0 [[texture(0)]]) {
  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.arg_0=arg_0};
  textureStore_a24491(tint_module_vars);
}
