//
// fragment_main
//
#include <metal_stdlib>
using namespace metal;

struct tint_module_vars_struct {
  device uint4* prevent_dce;
  texture1d<uint, access::read_write> arg_0;
};

uint4 textureLoad_a548a8(tint_module_vars_struct tint_module_vars) {
  uint const v = (uint(tint_module_vars.arg_0.get_width()) - 1u);
  uint4 res = tint_module_vars.arg_0.read(min(uint(1), v));
  return res;
}

fragment void fragment_main(device uint4* prevent_dce [[buffer(0)]], texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.prevent_dce=prevent_dce, .arg_0=arg_0};
  (*tint_module_vars.prevent_dce) = textureLoad_a548a8(tint_module_vars);
}
//
// compute_main
//
#include <metal_stdlib>
using namespace metal;

struct tint_module_vars_struct {
  device uint4* prevent_dce;
  texture1d<uint, access::read_write> arg_0;
};

uint4 textureLoad_a548a8(tint_module_vars_struct tint_module_vars) {
  uint const v = (uint(tint_module_vars.arg_0.get_width()) - 1u);
  uint4 res = tint_module_vars.arg_0.read(min(uint(1), v));
  return res;
}

kernel void compute_main(device uint4* prevent_dce [[buffer(0)]], texture1d<uint, access::read_write> arg_0 [[texture(0)]]) {
  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.prevent_dce=prevent_dce, .arg_0=arg_0};
  (*tint_module_vars.prevent_dce) = textureLoad_a548a8(tint_module_vars);
}
