• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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