1 uniform half4 colorRed, colorGreen;
2 uniform half unknownInput;
8 half4 x = half4(half2(1), half2(2, 3)) + 5;
9 ok = ok && (x == half4(6, 6, 7, 8));
10 x = half4(8, half3(10)) - 1;
11 ok = ok && (x == half4(7, 9, 9, 9));
12 x = half4(half2(8), half2(9)) + 1;
13 ok = ok && (x == half4(9, 9, 10, 10));
15 ok = ok && (x == half4(6, 6, 6, 10));
17 ok = ok && (x == half4(3, 3, 6, 10));
19 // (Vector op scalar).swizzle
20 x = (half4(12) / 2).yxwz;
21 ok = ok && (x == half4(6));
24 x = 5 + half4(half2(1), half2(2, 3));
25 ok = ok && (x == half4(6, 6, 7, 8));
26 x = 1 - half4(8, half3(10));
27 ok = ok && (x == half4(-7, -9, -9, -9));
28 x = 1 + half4(half2(8), half2(9));
29 ok = ok && (x == half4(9, 9, 10, 10));
31 ok = ok && (x == half4(6, 6, 6, 10));
32 x.xy = 4 / half2(0.5);
33 ok = ok && (x == half4(8, 8, 6, 10));
34 x = 20 / half4(10, 20, 40, 80);
35 ok = ok && (x == half4(2, 1, 0.5, 0.25));
37 // (Scalar op vector).swizzle
38 x = (12 / half4(2)).yxwz;
39 ok = ok && (x == half4(6));
41 // Vector op unknown scalar
42 half unknown = unknownInput;
43 x = half4(0) + unknown;
44 ok = ok && (x == half4(unknown));
45 x = half4(0) * unknown;
46 ok = ok && (x == half4(0));
47 x = half4(0) / unknown;
48 ok = ok && (x == half4(0));
49 x = half4(1) * unknown;
50 ok = ok && (x == half4(unknown));
52 // Unknown scalar op vector
53 x = unknown * half4(1);
54 ok = ok && (x == half4(unknown));
55 x = unknown + half4(0);
56 ok = ok && (x == half4(unknown));
57 x = unknown - half4(0);
58 ok = ok && (x == half4(unknown));
59 x = unknown / half4(1);
60 ok = ok && (x == half4(unknown));
62 // Scalar op unknown vector
63 x = 0 + half4(unknown);
64 ok = ok && (x == half4(unknown));
65 x = 0 * half4(unknown);
66 ok = ok && (x == half4(0));
67 x = 0 / half4(unknown); // this should NOT optimize away
68 ok = ok && (x == half4(0));
69 x = 1 * half4(unknown);
70 ok = ok && (x == half4(unknown));
72 // X = Unknown op scalar
73 x = half4(unknown) + 0;
74 ok = ok && (x == half4(unknown));
75 x = half4(unknown) * 0;
76 ok = ok && (x == half4(0));
77 x = half4(unknown) * 1;
78 ok = ok && (x == half4(unknown));
79 x = half4(unknown) - 0;
80 ok = ok && (x == half4(unknown));
90 ok = ok && (x == half4(unknown));
100 ok = ok && (x == half4(unknown));
109 int4 x = int4(int2(1), int2(2, 3)) + 5;
110 ok = ok && (x == int4(6, 6, 7, 8));
111 x = int4(8, int3(10)) - 1;
112 ok = ok && (x == int4(7, 9, 9, 9));
113 x = int4(int2(8), int2(9)) + 1;
114 ok = ok && (x == int4(9, 9, 10, 10));
116 ok = ok && (x == int4(6, 6, 6, 10));
118 ok = ok && (x == int4(3, 3, 6, 10));
120 // (Vector op scalar).swizzle
121 x = (int4(12) / 2).yxwz;
122 ok = ok && (x == int4(6));
125 x = 5 + int4(int2(1), int2(2, 3));
126 ok = ok && (x == int4(6, 6, 7, 8));
127 x = 1 - int4(8, int3(10));
128 ok = ok && (x == int4(-7, -9, -9, -9));
129 x = 1 + int4(int2(8), int2(9));
130 ok = ok && (x == int4(9, 9, 10, 10));
132 ok = ok && (x == int4(6, 6, 6, 10));
134 ok = ok && (x == int4(8, 8, 6, 10));
135 x = 2000 / int4(10, 20, 40, 80);
136 ok = ok && (x == int4(200, 100, 50, 25));
138 // (Scalar op vector).swizzle
139 x = (12 / int4(2)).yxwz;
140 ok = ok && (x == int4(6));
142 // Vector op unknown scalar
143 int unknown = int(unknownInput);
144 x = int4(0) + unknown;
145 ok = ok && (x == int4(unknown));
146 x = int4(0) * unknown;
147 ok = ok && (x == int4(0));
148 x = int4(0) / unknown;
149 ok = ok && (x == int4(0));
150 x = int4(1) * unknown;
151 ok = ok && (x == int4(unknown));
153 // Unknown scalar op vector
154 x = unknown * int4(1);
155 ok = ok && (x == int4(unknown));
156 x = unknown + int4(0);
157 ok = ok && (x == int4(unknown));
158 x = unknown - int4(0);
159 ok = ok && (x == int4(unknown));
160 x = unknown / int4(1);
161 ok = ok && (x == int4(unknown));
163 // Scalar op unknown vector
164 x = 0 + int4(unknown);
165 ok = ok && (x == int4(unknown));
166 x = 0 * int4(unknown);
167 ok = ok && (x == int4(0));
168 x = 0 / int4(unknown);
169 ok = ok && (x == int4(0));
170 x = 1 * int4(unknown);
171 ok = ok && (x == int4(unknown));
173 // Unknown vector op scalar
174 x = int4(unknown) + 0;
175 ok = ok && (x == int4(unknown));
176 x = int4(unknown) * 0;
177 ok = ok && (x == int4(0));
178 x = int4(unknown) * 1;
179 ok = ok && (x == int4(unknown));
180 x = int4(unknown) - 0;
181 ok = ok && (x == int4(unknown));
191 ok = ok && (x == int4(unknown));
201 ok = ok && (x == int4(unknown));
206 half4 main(float2 coords) {
207 return test_half() && test_int() ? colorGreen : colorRed;