1 // Copyright 2022 The SwiftShader Authors. All Rights Reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14
15 namespace rr {
16
17 template<class T>
18 struct Scalar;
19
20 template<class Vector4>
21 struct XYZW;
22
23 template<class T>
24 class RValue;
25
26 template<class Vector4, int T>
27 class Swizzle2
28 {
29 friend Vector4;
30
31 public:
32 operator RValue<Vector4>() const;
33
34 private:
35 Vector4 *parent;
36 };
37
38 template<class Vector4, int T>
39 class Swizzle4
40 {
41 public:
42 operator RValue<Vector4>() const;
43
44 private:
45 Vector4 *parent;
46 };
47
48 template<class Vector4, int T>
49 class SwizzleMask4
50 {
51 friend XYZW<Vector4>;
52
53 public:
54 operator RValue<Vector4>() const;
55
56 RValue<Vector4> operator=(RValue<Vector4> rhs);
57 RValue<Vector4> operator=(RValue<typename Scalar<Vector4>::Type> rhs);
58
59 private:
60 Vector4 *parent;
61 };
62
63 template<class Vector4, int T>
64 class SwizzleMask1
65 {
66 public:
67 operator RValue<typename Scalar<Vector4>::Type>() const;
68 operator RValue<Vector4>() const;
69
70 RValue<Vector4> operator=(float x);
71 RValue<Vector4> operator=(RValue<Vector4> rhs);
72 RValue<Vector4> operator=(RValue<typename Scalar<Vector4>::Type> rhs);
73
74 private:
75 Vector4 *parent;
76 };
77
78 template<class Vector4, int T>
operator +(RValue<typename Scalar<Vector4>::Type> lhs,SwizzleMask1<Vector4,T> rhs)79 RValue<typename Scalar<Vector4>::Type> operator+(RValue<typename Scalar<Vector4>::Type> lhs, SwizzleMask1<Vector4, T> rhs)
80 {
81 return lhs + RValue<typename Scalar<Vector4>::Type>(rhs);
82 }
83
84 template<class Vector4, int T>
operator +(SwizzleMask1<Vector4,T> lhs,RValue<typename Scalar<Vector4>::Type> rhs)85 RValue<typename Scalar<Vector4>::Type> operator+(SwizzleMask1<Vector4, T> lhs, RValue<typename Scalar<Vector4>::Type> rhs)
86 {
87 return RValue<typename Scalar<Vector4>::Type>(lhs) + rhs;
88 }
89
90 template<class Vector4, int T>
operator -(RValue<typename Scalar<Vector4>::Type> lhs,SwizzleMask1<Vector4,T> rhs)91 RValue<typename Scalar<Vector4>::Type> operator-(RValue<typename Scalar<Vector4>::Type> lhs, SwizzleMask1<Vector4, T> rhs)
92 {
93 return lhs - RValue<typename Scalar<Vector4>::Type>(rhs);
94 }
95
96 template<class Vector4, int T>
operator -(SwizzleMask1<Vector4,T> lhs,RValue<typename Scalar<Vector4>::Type> rhs)97 RValue<typename Scalar<Vector4>::Type> operator-(SwizzleMask1<Vector4, T> lhs, RValue<typename Scalar<Vector4>::Type> rhs)
98 {
99 return RValue<typename Scalar<Vector4>::Type>(lhs) - rhs;
100 }
101
102 template<class Vector4, int T>
103 class SwizzleMask2
104 {
105 friend Vector4;
106
107 public:
108 operator RValue<Vector4>() const;
109
110 RValue<Vector4> operator=(RValue<Vector4> rhs);
111
112 private:
113 Vector4 *parent;
114 };
115
116 template<class Vector4>
117 struct XYZW
118 {
119 friend Vector4;
120
121 private:
XYZWrr::XYZW122 XYZW(Vector4 *parent)
123 {
124 xyzw.parent = parent;
125 }
126
127 public:
128 union
129 {
130 SwizzleMask1<Vector4, 0x0000> x;
131 SwizzleMask1<Vector4, 0x1111> y;
132 SwizzleMask1<Vector4, 0x2222> z;
133 SwizzleMask1<Vector4, 0x3333> w;
134 Swizzle2<Vector4, 0x0000> xx;
135 Swizzle2<Vector4, 0x1000> yx;
136 Swizzle2<Vector4, 0x2000> zx;
137 Swizzle2<Vector4, 0x3000> wx;
138 SwizzleMask2<Vector4, 0x0111> xy;
139 Swizzle2<Vector4, 0x1111> yy;
140 Swizzle2<Vector4, 0x2111> zy;
141 Swizzle2<Vector4, 0x3111> wy;
142 SwizzleMask2<Vector4, 0x0222> xz;
143 SwizzleMask2<Vector4, 0x1222> yz;
144 Swizzle2<Vector4, 0x2222> zz;
145 Swizzle2<Vector4, 0x3222> wz;
146 SwizzleMask2<Vector4, 0x0333> xw;
147 SwizzleMask2<Vector4, 0x1333> yw;
148 SwizzleMask2<Vector4, 0x2333> zw;
149 Swizzle2<Vector4, 0x3333> ww;
150 Swizzle4<Vector4, 0x0000> xxx;
151 Swizzle4<Vector4, 0x1000> yxx;
152 Swizzle4<Vector4, 0x2000> zxx;
153 Swizzle4<Vector4, 0x3000> wxx;
154 Swizzle4<Vector4, 0x0100> xyx;
155 Swizzle4<Vector4, 0x1100> yyx;
156 Swizzle4<Vector4, 0x2100> zyx;
157 Swizzle4<Vector4, 0x3100> wyx;
158 Swizzle4<Vector4, 0x0200> xzx;
159 Swizzle4<Vector4, 0x1200> yzx;
160 Swizzle4<Vector4, 0x2200> zzx;
161 Swizzle4<Vector4, 0x3200> wzx;
162 Swizzle4<Vector4, 0x0300> xwx;
163 Swizzle4<Vector4, 0x1300> ywx;
164 Swizzle4<Vector4, 0x2300> zwx;
165 Swizzle4<Vector4, 0x3300> wwx;
166 Swizzle4<Vector4, 0x0011> xxy;
167 Swizzle4<Vector4, 0x1011> yxy;
168 Swizzle4<Vector4, 0x2011> zxy;
169 Swizzle4<Vector4, 0x3011> wxy;
170 Swizzle4<Vector4, 0x0111> xyy;
171 Swizzle4<Vector4, 0x1111> yyy;
172 Swizzle4<Vector4, 0x2111> zyy;
173 Swizzle4<Vector4, 0x3111> wyy;
174 Swizzle4<Vector4, 0x0211> xzy;
175 Swizzle4<Vector4, 0x1211> yzy;
176 Swizzle4<Vector4, 0x2211> zzy;
177 Swizzle4<Vector4, 0x3211> wzy;
178 Swizzle4<Vector4, 0x0311> xwy;
179 Swizzle4<Vector4, 0x1311> ywy;
180 Swizzle4<Vector4, 0x2311> zwy;
181 Swizzle4<Vector4, 0x3311> wwy;
182 Swizzle4<Vector4, 0x0022> xxz;
183 Swizzle4<Vector4, 0x1022> yxz;
184 Swizzle4<Vector4, 0x2022> zxz;
185 Swizzle4<Vector4, 0x3022> wxz;
186 SwizzleMask4<Vector4, 0x0122> xyz;
187 Swizzle4<Vector4, 0x1122> yyz;
188 Swizzle4<Vector4, 0x2122> zyz;
189 Swizzle4<Vector4, 0x3122> wyz;
190 Swizzle4<Vector4, 0x0222> xzz;
191 Swizzle4<Vector4, 0x1222> yzz;
192 Swizzle4<Vector4, 0x2222> zzz;
193 Swizzle4<Vector4, 0x3222> wzz;
194 Swizzle4<Vector4, 0x0322> xwz;
195 Swizzle4<Vector4, 0x1322> ywz;
196 Swizzle4<Vector4, 0x2322> zwz;
197 Swizzle4<Vector4, 0x3322> wwz;
198 Swizzle4<Vector4, 0x0033> xxw;
199 Swizzle4<Vector4, 0x1033> yxw;
200 Swizzle4<Vector4, 0x2033> zxw;
201 Swizzle4<Vector4, 0x3033> wxw;
202 SwizzleMask4<Vector4, 0x0133> xyw;
203 Swizzle4<Vector4, 0x1133> yyw;
204 Swizzle4<Vector4, 0x2133> zyw;
205 Swizzle4<Vector4, 0x3133> wyw;
206 SwizzleMask4<Vector4, 0x0233> xzw;
207 SwizzleMask4<Vector4, 0x1233> yzw;
208 Swizzle4<Vector4, 0x2233> zzw;
209 Swizzle4<Vector4, 0x3233> wzw;
210 Swizzle4<Vector4, 0x0333> xww;
211 Swizzle4<Vector4, 0x1333> yww;
212 Swizzle4<Vector4, 0x2333> zww;
213 Swizzle4<Vector4, 0x3333> www;
214 Swizzle4<Vector4, 0x0000> xxxx;
215 Swizzle4<Vector4, 0x1000> yxxx;
216 Swizzle4<Vector4, 0x2000> zxxx;
217 Swizzle4<Vector4, 0x3000> wxxx;
218 Swizzle4<Vector4, 0x0100> xyxx;
219 Swizzle4<Vector4, 0x1100> yyxx;
220 Swizzle4<Vector4, 0x2100> zyxx;
221 Swizzle4<Vector4, 0x3100> wyxx;
222 Swizzle4<Vector4, 0x0200> xzxx;
223 Swizzle4<Vector4, 0x1200> yzxx;
224 Swizzle4<Vector4, 0x2200> zzxx;
225 Swizzle4<Vector4, 0x3200> wzxx;
226 Swizzle4<Vector4, 0x0300> xwxx;
227 Swizzle4<Vector4, 0x1300> ywxx;
228 Swizzle4<Vector4, 0x2300> zwxx;
229 Swizzle4<Vector4, 0x3300> wwxx;
230 Swizzle4<Vector4, 0x0010> xxyx;
231 Swizzle4<Vector4, 0x1010> yxyx;
232 Swizzle4<Vector4, 0x2010> zxyx;
233 Swizzle4<Vector4, 0x3010> wxyx;
234 Swizzle4<Vector4, 0x0110> xyyx;
235 Swizzle4<Vector4, 0x1110> yyyx;
236 Swizzle4<Vector4, 0x2110> zyyx;
237 Swizzle4<Vector4, 0x3110> wyyx;
238 Swizzle4<Vector4, 0x0210> xzyx;
239 Swizzle4<Vector4, 0x1210> yzyx;
240 Swizzle4<Vector4, 0x2210> zzyx;
241 Swizzle4<Vector4, 0x3210> wzyx;
242 Swizzle4<Vector4, 0x0310> xwyx;
243 Swizzle4<Vector4, 0x1310> ywyx;
244 Swizzle4<Vector4, 0x2310> zwyx;
245 Swizzle4<Vector4, 0x3310> wwyx;
246 Swizzle4<Vector4, 0x0020> xxzx;
247 Swizzle4<Vector4, 0x1020> yxzx;
248 Swizzle4<Vector4, 0x2020> zxzx;
249 Swizzle4<Vector4, 0x3020> wxzx;
250 Swizzle4<Vector4, 0x0120> xyzx;
251 Swizzle4<Vector4, 0x1120> yyzx;
252 Swizzle4<Vector4, 0x2120> zyzx;
253 Swizzle4<Vector4, 0x3120> wyzx;
254 Swizzle4<Vector4, 0x0220> xzzx;
255 Swizzle4<Vector4, 0x1220> yzzx;
256 Swizzle4<Vector4, 0x2220> zzzx;
257 Swizzle4<Vector4, 0x3220> wzzx;
258 Swizzle4<Vector4, 0x0320> xwzx;
259 Swizzle4<Vector4, 0x1320> ywzx;
260 Swizzle4<Vector4, 0x2320> zwzx;
261 Swizzle4<Vector4, 0x3320> wwzx;
262 Swizzle4<Vector4, 0x0030> xxwx;
263 Swizzle4<Vector4, 0x1030> yxwx;
264 Swizzle4<Vector4, 0x2030> zxwx;
265 Swizzle4<Vector4, 0x3030> wxwx;
266 Swizzle4<Vector4, 0x0130> xywx;
267 Swizzle4<Vector4, 0x1130> yywx;
268 Swizzle4<Vector4, 0x2130> zywx;
269 Swizzle4<Vector4, 0x3130> wywx;
270 Swizzle4<Vector4, 0x0230> xzwx;
271 Swizzle4<Vector4, 0x1230> yzwx;
272 Swizzle4<Vector4, 0x2230> zzwx;
273 Swizzle4<Vector4, 0x3230> wzwx;
274 Swizzle4<Vector4, 0x0330> xwwx;
275 Swizzle4<Vector4, 0x1330> ywwx;
276 Swizzle4<Vector4, 0x2330> zwwx;
277 Swizzle4<Vector4, 0x3330> wwwx;
278 Swizzle4<Vector4, 0x0001> xxxy;
279 Swizzle4<Vector4, 0x1001> yxxy;
280 Swizzle4<Vector4, 0x2001> zxxy;
281 Swizzle4<Vector4, 0x3001> wxxy;
282 Swizzle4<Vector4, 0x0101> xyxy;
283 Swizzle4<Vector4, 0x1101> yyxy;
284 Swizzle4<Vector4, 0x2101> zyxy;
285 Swizzle4<Vector4, 0x3101> wyxy;
286 Swizzle4<Vector4, 0x0201> xzxy;
287 Swizzle4<Vector4, 0x1201> yzxy;
288 Swizzle4<Vector4, 0x2201> zzxy;
289 Swizzle4<Vector4, 0x3201> wzxy;
290 Swizzle4<Vector4, 0x0301> xwxy;
291 Swizzle4<Vector4, 0x1301> ywxy;
292 Swizzle4<Vector4, 0x2301> zwxy;
293 Swizzle4<Vector4, 0x3301> wwxy;
294 Swizzle4<Vector4, 0x0011> xxyy;
295 Swizzle4<Vector4, 0x1011> yxyy;
296 Swizzle4<Vector4, 0x2011> zxyy;
297 Swizzle4<Vector4, 0x3011> wxyy;
298 Swizzle4<Vector4, 0x0111> xyyy;
299 Swizzle4<Vector4, 0x1111> yyyy;
300 Swizzle4<Vector4, 0x2111> zyyy;
301 Swizzle4<Vector4, 0x3111> wyyy;
302 Swizzle4<Vector4, 0x0211> xzyy;
303 Swizzle4<Vector4, 0x1211> yzyy;
304 Swizzle4<Vector4, 0x2211> zzyy;
305 Swizzle4<Vector4, 0x3211> wzyy;
306 Swizzle4<Vector4, 0x0311> xwyy;
307 Swizzle4<Vector4, 0x1311> ywyy;
308 Swizzle4<Vector4, 0x2311> zwyy;
309 Swizzle4<Vector4, 0x3311> wwyy;
310 Swizzle4<Vector4, 0x0021> xxzy;
311 Swizzle4<Vector4, 0x1021> yxzy;
312 Swizzle4<Vector4, 0x2021> zxzy;
313 Swizzle4<Vector4, 0x3021> wxzy;
314 Swizzle4<Vector4, 0x0121> xyzy;
315 Swizzle4<Vector4, 0x1121> yyzy;
316 Swizzle4<Vector4, 0x2121> zyzy;
317 Swizzle4<Vector4, 0x3121> wyzy;
318 Swizzle4<Vector4, 0x0221> xzzy;
319 Swizzle4<Vector4, 0x1221> yzzy;
320 Swizzle4<Vector4, 0x2221> zzzy;
321 Swizzle4<Vector4, 0x3221> wzzy;
322 Swizzle4<Vector4, 0x0321> xwzy;
323 Swizzle4<Vector4, 0x1321> ywzy;
324 Swizzle4<Vector4, 0x2321> zwzy;
325 Swizzle4<Vector4, 0x3321> wwzy;
326 Swizzle4<Vector4, 0x0031> xxwy;
327 Swizzle4<Vector4, 0x1031> yxwy;
328 Swizzle4<Vector4, 0x2031> zxwy;
329 Swizzle4<Vector4, 0x3031> wxwy;
330 Swizzle4<Vector4, 0x0131> xywy;
331 Swizzle4<Vector4, 0x1131> yywy;
332 Swizzle4<Vector4, 0x2131> zywy;
333 Swizzle4<Vector4, 0x3131> wywy;
334 Swizzle4<Vector4, 0x0231> xzwy;
335 Swizzle4<Vector4, 0x1231> yzwy;
336 Swizzle4<Vector4, 0x2231> zzwy;
337 Swizzle4<Vector4, 0x3231> wzwy;
338 Swizzle4<Vector4, 0x0331> xwwy;
339 Swizzle4<Vector4, 0x1331> ywwy;
340 Swizzle4<Vector4, 0x2331> zwwy;
341 Swizzle4<Vector4, 0x3331> wwwy;
342 Swizzle4<Vector4, 0x0002> xxxz;
343 Swizzle4<Vector4, 0x1002> yxxz;
344 Swizzle4<Vector4, 0x2002> zxxz;
345 Swizzle4<Vector4, 0x3002> wxxz;
346 Swizzle4<Vector4, 0x0102> xyxz;
347 Swizzle4<Vector4, 0x1102> yyxz;
348 Swizzle4<Vector4, 0x2102> zyxz;
349 Swizzle4<Vector4, 0x3102> wyxz;
350 Swizzle4<Vector4, 0x0202> xzxz;
351 Swizzle4<Vector4, 0x1202> yzxz;
352 Swizzle4<Vector4, 0x2202> zzxz;
353 Swizzle4<Vector4, 0x3202> wzxz;
354 Swizzle4<Vector4, 0x0302> xwxz;
355 Swizzle4<Vector4, 0x1302> ywxz;
356 Swizzle4<Vector4, 0x2302> zwxz;
357 Swizzle4<Vector4, 0x3302> wwxz;
358 Swizzle4<Vector4, 0x0012> xxyz;
359 Swizzle4<Vector4, 0x1012> yxyz;
360 Swizzle4<Vector4, 0x2012> zxyz;
361 Swizzle4<Vector4, 0x3012> wxyz;
362 Swizzle4<Vector4, 0x0112> xyyz;
363 Swizzle4<Vector4, 0x1112> yyyz;
364 Swizzle4<Vector4, 0x2112> zyyz;
365 Swizzle4<Vector4, 0x3112> wyyz;
366 Swizzle4<Vector4, 0x0212> xzyz;
367 Swizzle4<Vector4, 0x1212> yzyz;
368 Swizzle4<Vector4, 0x2212> zzyz;
369 Swizzle4<Vector4, 0x3212> wzyz;
370 Swizzle4<Vector4, 0x0312> xwyz;
371 Swizzle4<Vector4, 0x1312> ywyz;
372 Swizzle4<Vector4, 0x2312> zwyz;
373 Swizzle4<Vector4, 0x3312> wwyz;
374 Swizzle4<Vector4, 0x0022> xxzz;
375 Swizzle4<Vector4, 0x1022> yxzz;
376 Swizzle4<Vector4, 0x2022> zxzz;
377 Swizzle4<Vector4, 0x3022> wxzz;
378 Swizzle4<Vector4, 0x0122> xyzz;
379 Swizzle4<Vector4, 0x1122> yyzz;
380 Swizzle4<Vector4, 0x2122> zyzz;
381 Swizzle4<Vector4, 0x3122> wyzz;
382 Swizzle4<Vector4, 0x0222> xzzz;
383 Swizzle4<Vector4, 0x1222> yzzz;
384 Swizzle4<Vector4, 0x2222> zzzz;
385 Swizzle4<Vector4, 0x3222> wzzz;
386 Swizzle4<Vector4, 0x0322> xwzz;
387 Swizzle4<Vector4, 0x1322> ywzz;
388 Swizzle4<Vector4, 0x2322> zwzz;
389 Swizzle4<Vector4, 0x3322> wwzz;
390 Swizzle4<Vector4, 0x0032> xxwz;
391 Swizzle4<Vector4, 0x1032> yxwz;
392 Swizzle4<Vector4, 0x2032> zxwz;
393 Swizzle4<Vector4, 0x3032> wxwz;
394 Swizzle4<Vector4, 0x0132> xywz;
395 Swizzle4<Vector4, 0x1132> yywz;
396 Swizzle4<Vector4, 0x2132> zywz;
397 Swizzle4<Vector4, 0x3132> wywz;
398 Swizzle4<Vector4, 0x0232> xzwz;
399 Swizzle4<Vector4, 0x1232> yzwz;
400 Swizzle4<Vector4, 0x2232> zzwz;
401 Swizzle4<Vector4, 0x3232> wzwz;
402 Swizzle4<Vector4, 0x0332> xwwz;
403 Swizzle4<Vector4, 0x1332> ywwz;
404 Swizzle4<Vector4, 0x2332> zwwz;
405 Swizzle4<Vector4, 0x3332> wwwz;
406 Swizzle4<Vector4, 0x0003> xxxw;
407 Swizzle4<Vector4, 0x1003> yxxw;
408 Swizzle4<Vector4, 0x2003> zxxw;
409 Swizzle4<Vector4, 0x3003> wxxw;
410 Swizzle4<Vector4, 0x0103> xyxw;
411 Swizzle4<Vector4, 0x1103> yyxw;
412 Swizzle4<Vector4, 0x2103> zyxw;
413 Swizzle4<Vector4, 0x3103> wyxw;
414 Swizzle4<Vector4, 0x0203> xzxw;
415 Swizzle4<Vector4, 0x1203> yzxw;
416 Swizzle4<Vector4, 0x2203> zzxw;
417 Swizzle4<Vector4, 0x3203> wzxw;
418 Swizzle4<Vector4, 0x0303> xwxw;
419 Swizzle4<Vector4, 0x1303> ywxw;
420 Swizzle4<Vector4, 0x2303> zwxw;
421 Swizzle4<Vector4, 0x3303> wwxw;
422 Swizzle4<Vector4, 0x0013> xxyw;
423 Swizzle4<Vector4, 0x1013> yxyw;
424 Swizzle4<Vector4, 0x2013> zxyw;
425 Swizzle4<Vector4, 0x3013> wxyw;
426 Swizzle4<Vector4, 0x0113> xyyw;
427 Swizzle4<Vector4, 0x1113> yyyw;
428 Swizzle4<Vector4, 0x2113> zyyw;
429 Swizzle4<Vector4, 0x3113> wyyw;
430 Swizzle4<Vector4, 0x0213> xzyw;
431 Swizzle4<Vector4, 0x1213> yzyw;
432 Swizzle4<Vector4, 0x2213> zzyw;
433 Swizzle4<Vector4, 0x3213> wzyw;
434 Swizzle4<Vector4, 0x0313> xwyw;
435 Swizzle4<Vector4, 0x1313> ywyw;
436 Swizzle4<Vector4, 0x2313> zwyw;
437 Swizzle4<Vector4, 0x3313> wwyw;
438 Swizzle4<Vector4, 0x0023> xxzw;
439 Swizzle4<Vector4, 0x1023> yxzw;
440 Swizzle4<Vector4, 0x2023> zxzw;
441 Swizzle4<Vector4, 0x3023> wxzw;
442 SwizzleMask4<Vector4, 0x0123> xyzw;
443 Swizzle4<Vector4, 0x1123> yyzw;
444 Swizzle4<Vector4, 0x2123> zyzw;
445 Swizzle4<Vector4, 0x3123> wyzw;
446 Swizzle4<Vector4, 0x0223> xzzw;
447 Swizzle4<Vector4, 0x1223> yzzw;
448 Swizzle4<Vector4, 0x2223> zzzw;
449 Swizzle4<Vector4, 0x3223> wzzw;
450 Swizzle4<Vector4, 0x0323> xwzw;
451 Swizzle4<Vector4, 0x1323> ywzw;
452 Swizzle4<Vector4, 0x2323> zwzw;
453 Swizzle4<Vector4, 0x3323> wwzw;
454 Swizzle4<Vector4, 0x0033> xxww;
455 Swizzle4<Vector4, 0x1033> yxww;
456 Swizzle4<Vector4, 0x2033> zxww;
457 Swizzle4<Vector4, 0x3033> wxww;
458 Swizzle4<Vector4, 0x0133> xyww;
459 Swizzle4<Vector4, 0x1133> yyww;
460 Swizzle4<Vector4, 0x2133> zyww;
461 Swizzle4<Vector4, 0x3133> wyww;
462 Swizzle4<Vector4, 0x0233> xzww;
463 Swizzle4<Vector4, 0x1233> yzww;
464 Swizzle4<Vector4, 0x2233> zzww;
465 Swizzle4<Vector4, 0x3233> wzww;
466 Swizzle4<Vector4, 0x0333> xwww;
467 Swizzle4<Vector4, 0x1333> ywww;
468 Swizzle4<Vector4, 0x2333> zwww;
469 Swizzle4<Vector4, 0x3333> wwww;
470 };
471 };
472
473 } // namespace rr
474