1uniform half4 colorRed, colorGreen; 2uniform half unknownInput; 3 4bool test_half() { 5 bool ok = true; 6 half4 inputRed = colorRed; 7 half4 inputGreen = colorGreen; 8 9 // Vector op scalar 10 half4 x = inputRed + 2; 11 ok = ok && (x == half4(3, 2, 2, 3)); 12 x = inputGreen.garb - 2; 13 ok = ok && (x == half4(-1, -1, -2, -2)); 14 x = inputRed + inputGreen.g; 15 ok = ok && (x == half4(2, 1, 1, 2)); 16 x.xyz = inputGreen.aga * 9; 17 ok = ok && (x == half4(9, 9, 9, 2)); 18 x.xy = x.zw / 0.5; 19 ok = ok && (x == half4(18, 4, 9, 2)); 20 21 // (Vector op scalar).swizzle 22 x = (inputRed * 5).yxwz; 23 ok = ok && (x == half4(0, 5, 5, 0)); 24 25 // Scalar op vector 26 x = 2 + inputRed; 27 ok = ok && (x == half4(3, 2, 2, 3)); 28 x = 10 - inputGreen.garb; 29 ok = ok && (x == half4(9, 9, 10, 10)); 30 x = inputRed.r + inputGreen; 31 ok = ok && (x == half4(1, 2, 1, 2)); 32 x.xyz = 9 * inputGreen.aga; 33 ok = ok && (x == half4(9, 9, 9, 2)); 34 x.xy = 36 / x.zw; 35 ok = ok && (x == half4(4, 18, 9, 2)); 36 37 // (Scalar op vector).swizzle 38 x = (36 / x).yxwz; 39 ok = ok && (x == half4(2, 9, 18, 4)); 40 41 // X op= scalar. 42 x += 2; 43 x *= 2; 44 x -= 4; 45 x /= 2; 46 ok = ok && (x == half4(2, 9, 18, 4)); 47 48 // X = X op scalar. 49 x = x + 2; 50 x = x * 2; 51 x = x - 4; 52 x = x / 2; 53 ok = ok && (x == half4(2, 9, 18, 4)); 54 55 return ok; 56} 57 58bool test_int() { 59 bool ok = true; 60 int4 inputRed = int4(colorRed); 61 int4 inputGreen = int4(colorGreen); 62 63 // Vector op scalar 64 int4 x = inputRed + 2; 65 ok = ok && (x == int4(3, 2, 2, 3)); 66 x = inputGreen.garb - 2; 67 ok = ok && (x == int4(-1, -1, -2, -2)); 68 x = inputRed + inputGreen.g; 69 ok = ok && (x == int4(2, 1, 1, 2)); 70 x.xyz = inputGreen.aga * 9; 71 ok = ok && (x == int4(9, 9, 9, 2)); 72 x.xy = x.zw / 3; 73 ok = ok && (x == int4(3, 0, 9, 2)); 74 75 // (Vector op scalar).swizzle 76 x = (inputRed * 5).yxwz; 77 ok = ok && (x == int4(0, 5, 5, 0)); 78 79 // Scalar op vector 80 x = 2 + inputRed; 81 ok = ok && (x == int4(3, 2, 2, 3)); 82 x = 10 - inputGreen.garb; 83 ok = ok && (x == int4(9, 9, 10, 10)); 84 x = inputRed.r + inputGreen; 85 ok = ok && (x == int4(1, 2, 1, 2)); 86 x.xyz = 9 * inputGreen.aga; 87 ok = ok && (x == int4(9, 9, 9, 2)); 88 x.xy = 36 / x.zw; 89 ok = ok && (x == int4(4, 18, 9, 2)); 90 91 // (Scalar op vector).swizzle 92 x = (36 / x).yxwz; 93 ok = ok && (x == int4(2, 9, 18, 4)); 94 95 // X op= scalar. 96 x += 2; 97 x *= 2; 98 x -= 4; 99 x /= 2; 100 ok = ok && (x == int4(2, 9, 18, 4)); 101 102 // X = X op scalar. 103 x = x + 2; 104 x = x * 2; 105 x = x - 4; 106 x = x / 2; 107 ok = ok && (x == int4(2, 9, 18, 4)); 108 109 return ok; 110} 111 112half4 main(float2 coords) { 113 return test_half() && test_int() ? colorGreen : colorRed; 114} 115