RWByteAddressBuffer prevent_dce : register(u0);

uint3 quadSwapX_bddb9f() {
  uint3 arg_0 = (1u).xxx;
  uint3 res = QuadReadAcrossX(arg_0);
  return res;
}

void fragment_main() {
  prevent_dce.Store3(0u, asuint(quadSwapX_bddb9f()));
  return;
}

[numthreads(1, 1, 1)]
void compute_main() {
  prevent_dce.Store3(0u, asuint(quadSwapX_bddb9f()));
  return;
}
