fn test(x : prod(i32, f32), b: bool) -> prod(i32, f32) zero = constant(u64, 0) one = constant(i32, 1) two = constant(u64, 2) three = constant(f32, 3.0) f_ctrl = fork(start, 10) idx = thread_id(f_ctrl, 0) mod2 = rem(idx, two) is_even = eq(mod2, zero) field0 = read(res, field(0)) field1 = read(res, field(1)) add = add(field0, one) mul = mul(field1, three) upd0 = write(res, add, field(0)) upd1 = write(res, mul, field(1)) select = select(is_even, upd0, upd1) j_ctrl = join(f_ctrl) res = reduce(j_ctrl, x, select) r = return(j_ctrl, res)