#include <metal_stdlib>

using namespace metal;
void textureStore_d1ab82(texture2d<float, access::read_write> tint_symbol) {
  int2 arg_1 = int2(1);
  float4 arg_2 = float4(1.0f);
  tint_symbol.write(arg_2, uint2(arg_1)); tint_symbol.fence();
}

fragment void fragment_main(texture2d<float, access::read_write> tint_symbol_1 [[texture(0)]]) {
  textureStore_d1ab82(tint_symbol_1);
  return;
}

kernel void compute_main(texture2d<float, access::read_write> tint_symbol_2 [[texture(0)]]) {
  textureStore_d1ab82(tint_symbol_2);
  return;
}

