diagnostic(off, derivative_uniformity);
diagnostic(off, chromium.unreachable_code);
struct IndirectDispatchArgs {
  x: i32,
  y: i32,
  z: i32,
};
var<workgroup> outX: i32;
var<workgroup> outY: i32;
var<workgroup> outZ: i32;
fn one_i() -> i32 {
  {
    return 1;
  }
}
fn two_i() -> i32 {
  {
    return 2;
  }
}
fn three_i() -> i32 {
  {
    return 3;
  }
}
fn _skslMain() {
  {
    let _skTemp0 = one_i();
    let _skTemp1 = two_i();
    let _skTemp2 = three_i();
    outX = IndirectDispatchArgs(_skTemp0, _skTemp1, _skTemp2).x;
    let _skTemp3 = one_i();
    let _skTemp4 = two_i();
    let _skTemp5 = three_i();
    outY = IndirectDispatchArgs(_skTemp3, _skTemp4, _skTemp5).y;
    let _skTemp6 = one_i();
    let _skTemp7 = two_i();
    let _skTemp8 = three_i();
    outZ = IndirectDispatchArgs(_skTemp6, _skTemp7, _skTemp8).z;
  }
}
@compute @workgroup_size(16, 16, 1) fn main() {
  _skslMain();
}
