1cb93a386Sopenharmony_ciuniform half4 colorRed, colorGreen; 2cb93a386Sopenharmony_ciuniform float unknownInput; 3cb93a386Sopenharmony_ci 4cb93a386Sopenharmony_cibool test() { 5cb93a386Sopenharmony_ci half unknown = half(unknownInput); 6cb93a386Sopenharmony_ci 7cb93a386Sopenharmony_ci bool ok = true; 8cb93a386Sopenharmony_ci half x = 32.0 + 2.0; 9cb93a386Sopenharmony_ci ok = ok && (x == 34); 10cb93a386Sopenharmony_ci x = 32.0 - 2.0; 11cb93a386Sopenharmony_ci ok = ok && (x == 30); 12cb93a386Sopenharmony_ci x = 32.0 * 2.0; 13cb93a386Sopenharmony_ci ok = ok && (x == 64); 14cb93a386Sopenharmony_ci x = 32.0 / 2.0; 15cb93a386Sopenharmony_ci ok = ok && (x == 16); 16cb93a386Sopenharmony_ci x = (12 > 2.0) ? (10 * 2 / 5 + 18 - 3) : 0; 17cb93a386Sopenharmony_ci ok = ok && (x == 19); 18cb93a386Sopenharmony_ci x = 0.0 == 0.0 ? 1 : -1; 19cb93a386Sopenharmony_ci ok = ok && (x == 1); 20cb93a386Sopenharmony_ci x = 0.0 == 1.0 ? 2 : -2; 21cb93a386Sopenharmony_ci ok = ok && (x == -2); 22cb93a386Sopenharmony_ci x = 0.0 != 1.0 ? 3 : -3; 23cb93a386Sopenharmony_ci ok = ok && (x == 3); 24cb93a386Sopenharmony_ci x = 0.0 != 0.0 ? 4 : -4; 25cb93a386Sopenharmony_ci ok = ok && (x == -4); 26cb93a386Sopenharmony_ci x = 6.0 > 5.0 ? 5 : -5; 27cb93a386Sopenharmony_ci ok = ok && (x == 5); 28cb93a386Sopenharmony_ci x = 6.0 > 6.0 ? 6 : -6; 29cb93a386Sopenharmony_ci ok = ok && (x == -6); 30cb93a386Sopenharmony_ci x = 6.0 >= 6.0 ? 7 : -7; 31cb93a386Sopenharmony_ci ok = ok && (x == 7); 32cb93a386Sopenharmony_ci x = 6.0 >= 7.0 ? 8 : -8; 33cb93a386Sopenharmony_ci ok = ok && (x == -8); 34cb93a386Sopenharmony_ci x = 5.0 < 6.0 ? 9 : -9; 35cb93a386Sopenharmony_ci ok = ok && (x == 9); 36cb93a386Sopenharmony_ci x = 6.0 < 6.0 ? 10 : -10; 37cb93a386Sopenharmony_ci ok = ok && (x == -10); 38cb93a386Sopenharmony_ci x = 6.0 <= 6.0 ? 11 : -11; 39cb93a386Sopenharmony_ci ok = ok && (x == 11); 40cb93a386Sopenharmony_ci x = 6.0 <= 5.0 ? 12 : -12; 41cb93a386Sopenharmony_ci ok = ok && (x == -12); 42cb93a386Sopenharmony_ci 43cb93a386Sopenharmony_ci x = half(unknown + 0); 44cb93a386Sopenharmony_ci ok = ok && (x == unknown); 45cb93a386Sopenharmony_ci x = half(0 + unknown); 46cb93a386Sopenharmony_ci ok = ok && (x == unknown); 47cb93a386Sopenharmony_ci x = half(unknown - 0); 48cb93a386Sopenharmony_ci ok = ok && (x == unknown); 49cb93a386Sopenharmony_ci x = half(unknown * 0); 50cb93a386Sopenharmony_ci ok = ok && (x == 0); 51cb93a386Sopenharmony_ci x = half(unknown * 1); 52cb93a386Sopenharmony_ci ok = ok && (x == unknown); 53cb93a386Sopenharmony_ci x = half(1 * unknown); 54cb93a386Sopenharmony_ci ok = ok && (x == unknown); 55cb93a386Sopenharmony_ci x = half(0 * unknown); 56cb93a386Sopenharmony_ci ok = ok && (x == 0); 57cb93a386Sopenharmony_ci x = half(unknown / 1); 58cb93a386Sopenharmony_ci ok = ok && (x == unknown); 59cb93a386Sopenharmony_ci x = half(0 / unknown); // this should NOT optimize away 60cb93a386Sopenharmony_ci ok = ok && (x == 0); 61cb93a386Sopenharmony_ci x += 1; 62cb93a386Sopenharmony_ci ok = ok && (x == 1); 63cb93a386Sopenharmony_ci x += 0; 64cb93a386Sopenharmony_ci ok = ok && (x == 1); 65cb93a386Sopenharmony_ci x -= 2; 66cb93a386Sopenharmony_ci ok = ok && (x == -1); 67cb93a386Sopenharmony_ci x -= 0; 68cb93a386Sopenharmony_ci ok = ok && (x == -1); 69cb93a386Sopenharmony_ci x *= 1; 70cb93a386Sopenharmony_ci ok = ok && (x == -1); 71cb93a386Sopenharmony_ci x *= 2; 72cb93a386Sopenharmony_ci ok = ok && (x == -2); 73cb93a386Sopenharmony_ci x /= 1; 74cb93a386Sopenharmony_ci ok = ok && (x == -2); 75cb93a386Sopenharmony_ci x /= 2; 76cb93a386Sopenharmony_ci ok = ok && (x == -1); 77cb93a386Sopenharmony_ci return ok; 78cb93a386Sopenharmony_ci} 79cb93a386Sopenharmony_ci 80cb93a386Sopenharmony_cihalf4 main(float2 coords) { 81cb93a386Sopenharmony_ci return test() ? colorGreen : colorRed; 82cb93a386Sopenharmony_ci} 83