#include <metal_stdlib>
using namespace metal;

struct tint_module_vars_struct {
  device half* prevent_dce;
};

half quadSwapX_a4e103() {
  half arg_0 = 1.0h;
  half res = quad_shuffle_xor(arg_0, 1u);
  return res;
}

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

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