void test_half() {
    sk_FragColor.r = half4(0.5, 1, 1, 1).x;
    sk_FragColor = half4(half2(1), half2(2, 3)) + half4(5, 6, 7, 8);
    sk_FragColor = half4(8, half3(10)) - half4(1);
    sk_FragColor = half4(2) * half4(1, 2, 3, 4);
    sk_FragColor = half4(12) / half4(1, 2, 3, 4);
    sk_FragColor.x = (half4(12) / half4(1, 2, 3, 4)).y;
    sk_FragColor.x = half4(1) == half4(1) ? 1.0 : -1.0;
    sk_FragColor.x = half4(1) == half4(2) ? 2.0 : -2.0;
    sk_FragColor.x = half2(1) == half2(1, 1) ? 3.0 : -3.0;
    sk_FragColor.x = half2(1, 1) == half2(1, 1) ? 4.0 : -4.0;
    sk_FragColor.x = half2(1) == half2(1, 0) ? 5.0 : -5.0;
    sk_FragColor.x = half4(1) == half4(half2(1), half2(1)) ? 6.0 : -6.0;
    sk_FragColor.x = half4(half3(1), 1) == half4(half2(1), half2(1)) ? 7.0 : -7.0;
    sk_FragColor.x = half4(half3(1), 1) == half4(half2(1), 1, 0) ? 8.0 : -8.0;
    sk_FragColor.x = half2(1) != half2(1, 0) ? 9.0 : -9.0;
    sk_FragColor.x = half4(1) != half4(half2(1), half2(1)) ? 10.0 : -10.0;
    sk_FragColor.x = half4(1) == -half4(1) ? 11.0 : -11.0;
    sk_FragColor.x = -half4(1) == half4(1) ? 12.0 : -12.0;
    sk_FragColor.x = -half4(1) == -half4(1) ? 13.0 : -13.0;
    sk_FragColor.x = half4(1) != -half4(1) ? -11.0 : 11.0;
    sk_FragColor.x = -half4(1) != half4(1) ? -12.0 : 12.0;
    sk_FragColor.x = -half4(1) != -half4(1) ? -13.0 : 13.0;
    sk_FragColor.x = half4(0) == -half4(1) ? 11.0 : -11.0;
    sk_FragColor.x = -half4(0) == half4(1) ? 12.0 : -12.0;
    sk_FragColor.x = -half4(0) == -half4(1) ? 13.0 : -13.0;
    sk_FragColor.x = half4(0) != -half4(1) ? -11.0 : 11.0;
    sk_FragColor.x = -half4(0) != half4(1) ? -12.0 : 12.0;
    sk_FragColor.x = -half4(0) != -half4(1) ? -13.0 : 13.0;
    sk_FragColor = half4(half(sqrt(1))) * half4(1);
    sk_FragColor = half4(1) * half4(half(sqrt(2)));
    sk_FragColor = half4(0) * half4(half(sqrt(3)));
    sk_FragColor = half4(half(sqrt(4))) * half4(0);
    sk_FragColor = half4(0) / half4(half(sqrt(5)));
    sk_FragColor = half4(0) + half4(half(sqrt(6)));
    sk_FragColor = half4(half(sqrt(7))) + half4(0);
    sk_FragColor = half4(half(sqrt(8))) - half4(0);
    sk_FragColor = half4(0) + half(half(sqrt(9)));
    sk_FragColor = half4(0) * half(sqrt(10));
    sk_FragColor = half4(0) / half(sqrt(11));
    sk_FragColor = half4(1) * half(sqrt(12));
    sk_FragColor = 0 + half4(half(sqrt(13)));
    sk_FragColor = 0 * half4(half(sqrt(14)));
    sk_FragColor = 0 / half4(half(sqrt(15)));
    sk_FragColor = 1 * half4(half(sqrt(16)));
    sk_FragColor = half4(half(sqrt(17))) + 0;
    sk_FragColor = half4(half(sqrt(18))) * 0;
    sk_FragColor = half4(half(sqrt(19))) * 1;
    sk_FragColor = half4(half(sqrt(19.5))) - 0;
    sk_FragColor = half(half(sqrt(20))) * half4(1);
    sk_FragColor = half(half(sqrt(21))) + half4(0);
    sk_FragColor = half(half(sqrt(22))) - half4(0);
    sk_FragColor = half(half(sqrt(23))) / half4(1);
    sk_FragColor = half4(half(sqrt(24))) / 1;
    sk_FragColor += half4(1);
    sk_FragColor += half4(0);
    sk_FragColor -= half4(1);
    sk_FragColor -= half4(0);
    sk_FragColor *= half4(1);
    sk_FragColor *= half4(2);
    sk_FragColor /= half4(1);
    sk_FragColor /= half4(2);
}

void test_int() {
    int4 result;
    result.r = int4(2, 3, 3, 3).x;
    result = int4(int2(1), int2(2, 3)) + int4(5, 6, 7, 8);
    result = int4(8, int3(10)) - int4(1);
    result = int4(2) * int4(1, 2, 3, 4);
    result = int4(12) / int4(1, 2, 3, 4);
    sk_FragColor.x = (int4(12) / int4(1, 2, 3, 4)).y;
    sk_FragColor.x = int4(1) == int4(1) ? 1.0 : -1.0;
    sk_FragColor.x = int4(1) == int4(2) ? 2.0 : -2.0;
    sk_FragColor.x = int2(1) == int2(1, 1) ? 3.0 : -3.0;
    sk_FragColor.x = int2(1, 1) == int2(1, 1) ? 4.0 : -4.0;
    sk_FragColor.x = int2(1) == int2(1, 0) ? 5.0 : -5.0;
    sk_FragColor.x = int4(1) == int4(int2(1), int2(1)) ? 6.0 : -6.0;
    sk_FragColor.x = int4(int3(1), 1) == int4(int2(1), int2(1)) ? 7.0 : -7.0;
    sk_FragColor.x = int4(int3(1), 1) == int4(int2(1), 1, 0) ? 8.0 : -8.0;
    sk_FragColor.x = int2(1) != int2(1, 0) ? 9.0 : -9.0;
    sk_FragColor.x = int4(1) != int4(int2(1), int2(1)) ? 10.0 : -10.0;
    result = int4(int(sqrt(1))) * int4(1);
    result = int4(1) * int4(int(sqrt(2)));
    result = int4(0) * int4(int(sqrt(3)));
    result = int4(int(sqrt(4))) * int4(0);
    result = int4(0) / int4(int(sqrt(5)));
    result = int4(0) + int4(int(sqrt(6)));
    result = int4(int(sqrt(7))) + int4(0);
    result = int4(int(sqrt(8))) - int4(0);
    result = int4(0) + int(int(sqrt(9)));
    result = int4(0) * int(sqrt(10));
    result = int4(0) / int(sqrt(11));
    result = int4(1) * int(sqrt(12));
    result = 0 + int4(int(sqrt(13)));
    result = 0 * int4(int(sqrt(14)));
    result = 0 / int4(int(sqrt(15)));
    result = 1 * int4(int(sqrt(16)));
    result = int4(int(sqrt(17))) + 0;
    result = int4(int(sqrt(18))) * 0;
    result = int4(int(sqrt(19))) * 1;
    result = int4(int(sqrt(19.5))) - 0;
    result = int(int(sqrt(20))) * int4(1);
    result = int(int(sqrt(21))) + int4(0);
    result = int(int(sqrt(22))) - int4(0);
    result = int(int(sqrt(23))) / int4(1);
    result = int4(int(sqrt(24))) / 1;
    result += int4(1);
    result += int4(0);
    result -= int4(1);
    result -= int4(0);
    result *= int4(1);
    result *= int4(2);
    result /= int4(1);
    result /= int4(2);
    sk_FragColor = int4(result);
}

void main() {
    test_half();
    test_int();
}
