#include <metal_stdlib>
using namespace metal;

struct tint_module_vars_struct {
  device int4* prevent_dce;
};

int4 subgroupShuffleDown_313d9b() {
  int4 arg_0 = int4(1);
  uint arg_1 = 1u;
  int4 res = simd_shuffle_down(arg_0, arg_1);
  return res;
}

fragment void fragment_main(device int4* prevent_dce [[buffer(0)]]) {
  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.prevent_dce=prevent_dce};
  (*tint_module_vars.prevent_dce) = subgroupShuffleDown_313d9b();
}

kernel void compute_main(device int4* prevent_dce [[buffer(0)]]) {
  tint_module_vars_struct const tint_module_vars = tint_module_vars_struct{.prevent_dce=prevent_dce};
  (*tint_module_vars.prevent_dce) = subgroupShuffleDown_313d9b();
}
