#include <metal_stdlib>
using namespace metal;

struct tint_module_vars_struct {
  device half2* prevent_dce;
};

half2 quadBroadcast_3c3824() {
  half2 arg_0 = half2(1.0h);
  half2 res = quad_broadcast(arg_0, 1u);
  return res;
}

fragment void fragment_main(device half2* 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) = quadBroadcast_3c3824();
}

kernel void compute_main(device half2* 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) = quadBroadcast_3c3824();
}
