//
// fragment_main
//
#include <metal_stdlib>

using namespace metal;
uint4 textureLoad_25b67f(texture2d<uint, access::read_write> tint_symbol) {
  uint4 res = tint_symbol.read(uint2(min(uint2(1u), (uint2(tint_symbol.get_width(), tint_symbol.get_height()) - uint2(1u)))));
  return res;
}

fragment void fragment_main(device uint4* tint_symbol_1 [[buffer(0)]], texture2d<uint, access::read_write> tint_symbol_2 [[texture(0)]]) {
  *(tint_symbol_1) = textureLoad_25b67f(tint_symbol_2);
  return;
}

//
// compute_main
//
#include <metal_stdlib>

using namespace metal;
uint4 textureLoad_25b67f(texture2d<uint, access::read_write> tint_symbol) {
  uint4 res = tint_symbol.read(uint2(min(uint2(1u), (uint2(tint_symbol.get_width(), tint_symbol.get_height()) - uint2(1u)))));
  return res;
}

kernel void compute_main(device uint4* tint_symbol_1 [[buffer(0)]], texture2d<uint, access::read_write> tint_symbol_2 [[texture(0)]]) {
  *(tint_symbol_1) = textureLoad_25b67f(tint_symbol_2);
  return;
}

