pathfinder_simd/scalar/
swizzle_f32x4.rs

1// pathfinder/simd/src/scalar/swizzle_f32x4.rs
2//
3// Copyright © 2019 The Pathfinder Project Developers.
4//
5// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8// option. This file may not be copied, modified, or distributed
9// except according to those terms.
10
11use crate::scalar::F32x4;
12
13impl F32x4 {
14    /// Constructs a new vector from the first, first, first, and first
15    /// lanes in this vector, respectively.
16    #[inline]
17    pub fn xxxx(self) -> F32x4 {
18        F32x4([self[0], self[0], self[0], self[0]])
19    }
20
21    /// Constructs a new vector from the second, first, first, and first
22    /// lanes in this vector, respectively.
23    #[inline]
24    pub fn yxxx(self) -> F32x4 {
25        F32x4([self[1], self[0], self[0], self[0]])
26    }
27
28    /// Constructs a new vector from the third, first, first, and first
29    /// lanes in this vector, respectively.
30    #[inline]
31    pub fn zxxx(self) -> F32x4 {
32        F32x4([self[2], self[0], self[0], self[0]])
33    }
34
35    /// Constructs a new vector from the fourth, first, first, and first
36    /// lanes in this vector, respectively.
37    #[inline]
38    pub fn wxxx(self) -> F32x4 {
39        F32x4([self[3], self[0], self[0], self[0]])
40    }
41
42    /// Constructs a new vector from the first, second, first, and first
43    /// lanes in this vector, respectively.
44    #[inline]
45    pub fn xyxx(self) -> F32x4 {
46        F32x4([self[0], self[1], self[0], self[0]])
47    }
48
49    /// Constructs a new vector from the second, second, first, and first
50    /// lanes in this vector, respectively.
51    #[inline]
52    pub fn yyxx(self) -> F32x4 {
53        F32x4([self[1], self[1], self[0], self[0]])
54    }
55
56    /// Constructs a new vector from the third, second, first, and first
57    /// lanes in this vector, respectively.
58    #[inline]
59    pub fn zyxx(self) -> F32x4 {
60        F32x4([self[2], self[1], self[0], self[0]])
61    }
62
63    /// Constructs a new vector from the fourth, second, first, and first
64    /// lanes in this vector, respectively.
65    #[inline]
66    pub fn wyxx(self) -> F32x4 {
67        F32x4([self[3], self[1], self[0], self[0]])
68    }
69
70    /// Constructs a new vector from the first, third, first, and first
71    /// lanes in this vector, respectively.
72    #[inline]
73    pub fn xzxx(self) -> F32x4 {
74        F32x4([self[0], self[2], self[0], self[0]])
75    }
76
77    /// Constructs a new vector from the second, third, first, and first
78    /// lanes in this vector, respectively.
79    #[inline]
80    pub fn yzxx(self) -> F32x4 {
81        F32x4([self[1], self[2], self[0], self[0]])
82    }
83
84    /// Constructs a new vector from the third, third, first, and first
85    /// lanes in this vector, respectively.
86    #[inline]
87    pub fn zzxx(self) -> F32x4 {
88        F32x4([self[2], self[2], self[0], self[0]])
89    }
90
91    /// Constructs a new vector from the fourth, third, first, and first
92    /// lanes in this vector, respectively.
93    #[inline]
94    pub fn wzxx(self) -> F32x4 {
95        F32x4([self[3], self[2], self[0], self[0]])
96    }
97
98    /// Constructs a new vector from the first, fourth, first, and first
99    /// lanes in this vector, respectively.
100    #[inline]
101    pub fn xwxx(self) -> F32x4 {
102        F32x4([self[0], self[3], self[0], self[0]])
103    }
104
105    /// Constructs a new vector from the second, fourth, first, and first
106    /// lanes in this vector, respectively.
107    #[inline]
108    pub fn ywxx(self) -> F32x4 {
109        F32x4([self[1], self[3], self[0], self[0]])
110    }
111
112    /// Constructs a new vector from the third, fourth, first, and first
113    /// lanes in this vector, respectively.
114    #[inline]
115    pub fn zwxx(self) -> F32x4 {
116        F32x4([self[2], self[3], self[0], self[0]])
117    }
118
119    /// Constructs a new vector from the fourth, fourth, first, and first
120    /// lanes in this vector, respectively.
121    #[inline]
122    pub fn wwxx(self) -> F32x4 {
123        F32x4([self[3], self[3], self[0], self[0]])
124    }
125
126    /// Constructs a new vector from the first, first, second, and first
127    /// lanes in this vector, respectively.
128    #[inline]
129    pub fn xxyx(self) -> F32x4 {
130        F32x4([self[0], self[0], self[1], self[0]])
131    }
132
133    /// Constructs a new vector from the second, first, second, and first
134    /// lanes in this vector, respectively.
135    #[inline]
136    pub fn yxyx(self) -> F32x4 {
137        F32x4([self[1], self[0], self[1], self[0]])
138    }
139
140    /// Constructs a new vector from the third, first, second, and first
141    /// lanes in this vector, respectively.
142    #[inline]
143    pub fn zxyx(self) -> F32x4 {
144        F32x4([self[2], self[0], self[1], self[0]])
145    }
146
147    /// Constructs a new vector from the fourth, first, second, and first
148    /// lanes in this vector, respectively.
149    #[inline]
150    pub fn wxyx(self) -> F32x4 {
151        F32x4([self[3], self[0], self[1], self[0]])
152    }
153
154    /// Constructs a new vector from the first, second, second, and first
155    /// lanes in this vector, respectively.
156    #[inline]
157    pub fn xyyx(self) -> F32x4 {
158        F32x4([self[0], self[1], self[1], self[0]])
159    }
160
161    /// Constructs a new vector from the second, second, second, and first
162    /// lanes in this vector, respectively.
163    #[inline]
164    pub fn yyyx(self) -> F32x4 {
165        F32x4([self[1], self[1], self[1], self[0]])
166    }
167
168    /// Constructs a new vector from the third, second, second, and first
169    /// lanes in this vector, respectively.
170    #[inline]
171    pub fn zyyx(self) -> F32x4 {
172        F32x4([self[2], self[1], self[1], self[0]])
173    }
174
175    /// Constructs a new vector from the fourth, second, second, and first
176    /// lanes in this vector, respectively.
177    #[inline]
178    pub fn wyyx(self) -> F32x4 {
179        F32x4([self[3], self[1], self[1], self[0]])
180    }
181
182    /// Constructs a new vector from the first, third, second, and first
183    /// lanes in this vector, respectively.
184    #[inline]
185    pub fn xzyx(self) -> F32x4 {
186        F32x4([self[0], self[2], self[1], self[0]])
187    }
188
189    /// Constructs a new vector from the second, third, second, and first
190    /// lanes in this vector, respectively.
191    #[inline]
192    pub fn yzyx(self) -> F32x4 {
193        F32x4([self[1], self[2], self[1], self[0]])
194    }
195
196    /// Constructs a new vector from the third, third, second, and first
197    /// lanes in this vector, respectively.
198    #[inline]
199    pub fn zzyx(self) -> F32x4 {
200        F32x4([self[2], self[2], self[1], self[0]])
201    }
202
203    /// Constructs a new vector from the fourth, third, second, and first
204    /// lanes in this vector, respectively.
205    #[inline]
206    pub fn wzyx(self) -> F32x4 {
207        F32x4([self[3], self[2], self[1], self[0]])
208    }
209
210    /// Constructs a new vector from the first, fourth, second, and first
211    /// lanes in this vector, respectively.
212    #[inline]
213    pub fn xwyx(self) -> F32x4 {
214        F32x4([self[0], self[3], self[1], self[0]])
215    }
216
217    /// Constructs a new vector from the second, fourth, second, and first
218    /// lanes in this vector, respectively.
219    #[inline]
220    pub fn ywyx(self) -> F32x4 {
221        F32x4([self[1], self[3], self[1], self[0]])
222    }
223
224    /// Constructs a new vector from the third, fourth, second, and first
225    /// lanes in this vector, respectively.
226    #[inline]
227    pub fn zwyx(self) -> F32x4 {
228        F32x4([self[2], self[3], self[1], self[0]])
229    }
230
231    /// Constructs a new vector from the fourth, fourth, second, and first
232    /// lanes in this vector, respectively.
233    #[inline]
234    pub fn wwyx(self) -> F32x4 {
235        F32x4([self[3], self[3], self[1], self[0]])
236    }
237
238    /// Constructs a new vector from the first, first, third, and first
239    /// lanes in this vector, respectively.
240    #[inline]
241    pub fn xxzx(self) -> F32x4 {
242        F32x4([self[0], self[0], self[2], self[0]])
243    }
244
245    /// Constructs a new vector from the second, first, third, and first
246    /// lanes in this vector, respectively.
247    #[inline]
248    pub fn yxzx(self) -> F32x4 {
249        F32x4([self[1], self[0], self[2], self[0]])
250    }
251
252    /// Constructs a new vector from the third, first, third, and first
253    /// lanes in this vector, respectively.
254    #[inline]
255    pub fn zxzx(self) -> F32x4 {
256        F32x4([self[2], self[0], self[2], self[0]])
257    }
258
259    /// Constructs a new vector from the fourth, first, third, and first
260    /// lanes in this vector, respectively.
261    #[inline]
262    pub fn wxzx(self) -> F32x4 {
263        F32x4([self[3], self[0], self[2], self[0]])
264    }
265
266    /// Constructs a new vector from the first, second, third, and first
267    /// lanes in this vector, respectively.
268    #[inline]
269    pub fn xyzx(self) -> F32x4 {
270        F32x4([self[0], self[1], self[2], self[0]])
271    }
272
273    /// Constructs a new vector from the second, second, third, and first
274    /// lanes in this vector, respectively.
275    #[inline]
276    pub fn yyzx(self) -> F32x4 {
277        F32x4([self[1], self[1], self[2], self[0]])
278    }
279
280    /// Constructs a new vector from the third, second, third, and first
281    /// lanes in this vector, respectively.
282    #[inline]
283    pub fn zyzx(self) -> F32x4 {
284        F32x4([self[2], self[1], self[2], self[0]])
285    }
286
287    /// Constructs a new vector from the fourth, second, third, and first
288    /// lanes in this vector, respectively.
289    #[inline]
290    pub fn wyzx(self) -> F32x4 {
291        F32x4([self[3], self[1], self[2], self[0]])
292    }
293
294    /// Constructs a new vector from the first, third, third, and first
295    /// lanes in this vector, respectively.
296    #[inline]
297    pub fn xzzx(self) -> F32x4 {
298        F32x4([self[0], self[2], self[2], self[0]])
299    }
300
301    /// Constructs a new vector from the second, third, third, and first
302    /// lanes in this vector, respectively.
303    #[inline]
304    pub fn yzzx(self) -> F32x4 {
305        F32x4([self[1], self[2], self[2], self[0]])
306    }
307
308    /// Constructs a new vector from the third, third, third, and first
309    /// lanes in this vector, respectively.
310    #[inline]
311    pub fn zzzx(self) -> F32x4 {
312        F32x4([self[2], self[2], self[2], self[0]])
313    }
314
315    /// Constructs a new vector from the fourth, third, third, and first
316    /// lanes in this vector, respectively.
317    #[inline]
318    pub fn wzzx(self) -> F32x4 {
319        F32x4([self[3], self[2], self[2], self[0]])
320    }
321
322    /// Constructs a new vector from the first, fourth, third, and first
323    /// lanes in this vector, respectively.
324    #[inline]
325    pub fn xwzx(self) -> F32x4 {
326        F32x4([self[0], self[3], self[2], self[0]])
327    }
328
329    /// Constructs a new vector from the second, fourth, third, and first
330    /// lanes in this vector, respectively.
331    #[inline]
332    pub fn ywzx(self) -> F32x4 {
333        F32x4([self[1], self[3], self[2], self[0]])
334    }
335
336    /// Constructs a new vector from the third, fourth, third, and first
337    /// lanes in this vector, respectively.
338    #[inline]
339    pub fn zwzx(self) -> F32x4 {
340        F32x4([self[2], self[3], self[2], self[0]])
341    }
342
343    /// Constructs a new vector from the fourth, fourth, third, and first
344    /// lanes in this vector, respectively.
345    #[inline]
346    pub fn wwzx(self) -> F32x4 {
347        F32x4([self[3], self[3], self[2], self[0]])
348    }
349
350    /// Constructs a new vector from the first, first, fourth, and first
351    /// lanes in this vector, respectively.
352    #[inline]
353    pub fn xxwx(self) -> F32x4 {
354        F32x4([self[0], self[0], self[3], self[0]])
355    }
356
357    /// Constructs a new vector from the second, first, fourth, and first
358    /// lanes in this vector, respectively.
359    #[inline]
360    pub fn yxwx(self) -> F32x4 {
361        F32x4([self[1], self[0], self[3], self[0]])
362    }
363
364    /// Constructs a new vector from the third, first, fourth, and first
365    /// lanes in this vector, respectively.
366    #[inline]
367    pub fn zxwx(self) -> F32x4 {
368        F32x4([self[2], self[0], self[3], self[0]])
369    }
370
371    /// Constructs a new vector from the fourth, first, fourth, and first
372    /// lanes in this vector, respectively.
373    #[inline]
374    pub fn wxwx(self) -> F32x4 {
375        F32x4([self[3], self[0], self[3], self[0]])
376    }
377
378    /// Constructs a new vector from the first, second, fourth, and first
379    /// lanes in this vector, respectively.
380    #[inline]
381    pub fn xywx(self) -> F32x4 {
382        F32x4([self[0], self[1], self[3], self[0]])
383    }
384
385    /// Constructs a new vector from the second, second, fourth, and first
386    /// lanes in this vector, respectively.
387    #[inline]
388    pub fn yywx(self) -> F32x4 {
389        F32x4([self[1], self[1], self[3], self[0]])
390    }
391
392    /// Constructs a new vector from the third, second, fourth, and first
393    /// lanes in this vector, respectively.
394    #[inline]
395    pub fn zywx(self) -> F32x4 {
396        F32x4([self[2], self[1], self[3], self[0]])
397    }
398
399    /// Constructs a new vector from the fourth, second, fourth, and first
400    /// lanes in this vector, respectively.
401    #[inline]
402    pub fn wywx(self) -> F32x4 {
403        F32x4([self[3], self[1], self[3], self[0]])
404    }
405
406    /// Constructs a new vector from the first, third, fourth, and first
407    /// lanes in this vector, respectively.
408    #[inline]
409    pub fn xzwx(self) -> F32x4 {
410        F32x4([self[0], self[2], self[3], self[0]])
411    }
412
413    /// Constructs a new vector from the second, third, fourth, and first
414    /// lanes in this vector, respectively.
415    #[inline]
416    pub fn yzwx(self) -> F32x4 {
417        F32x4([self[1], self[2], self[3], self[0]])
418    }
419
420    /// Constructs a new vector from the third, third, fourth, and first
421    /// lanes in this vector, respectively.
422    #[inline]
423    pub fn zzwx(self) -> F32x4 {
424        F32x4([self[2], self[2], self[3], self[0]])
425    }
426
427    /// Constructs a new vector from the fourth, third, fourth, and first
428    /// lanes in this vector, respectively.
429    #[inline]
430    pub fn wzwx(self) -> F32x4 {
431        F32x4([self[3], self[2], self[3], self[0]])
432    }
433
434    /// Constructs a new vector from the first, fourth, fourth, and first
435    /// lanes in this vector, respectively.
436    #[inline]
437    pub fn xwwx(self) -> F32x4 {
438        F32x4([self[0], self[3], self[3], self[0]])
439    }
440
441    /// Constructs a new vector from the second, fourth, fourth, and first
442    /// lanes in this vector, respectively.
443    #[inline]
444    pub fn ywwx(self) -> F32x4 {
445        F32x4([self[1], self[3], self[3], self[0]])
446    }
447
448    /// Constructs a new vector from the third, fourth, fourth, and first
449    /// lanes in this vector, respectively.
450    #[inline]
451    pub fn zwwx(self) -> F32x4 {
452        F32x4([self[2], self[3], self[3], self[0]])
453    }
454
455    /// Constructs a new vector from the fourth, fourth, fourth, and first
456    /// lanes in this vector, respectively.
457    #[inline]
458    pub fn wwwx(self) -> F32x4 {
459        F32x4([self[3], self[3], self[3], self[0]])
460    }
461
462    /// Constructs a new vector from the first, first, first, and second
463    /// lanes in this vector, respectively.
464    #[inline]
465    pub fn xxxy(self) -> F32x4 {
466        F32x4([self[0], self[0], self[0], self[1]])
467    }
468
469    /// Constructs a new vector from the second, first, first, and second
470    /// lanes in this vector, respectively.
471    #[inline]
472    pub fn yxxy(self) -> F32x4 {
473        F32x4([self[1], self[0], self[0], self[1]])
474    }
475
476    /// Constructs a new vector from the third, first, first, and second
477    /// lanes in this vector, respectively.
478    #[inline]
479    pub fn zxxy(self) -> F32x4 {
480        F32x4([self[2], self[0], self[0], self[1]])
481    }
482
483    /// Constructs a new vector from the fourth, first, first, and second
484    /// lanes in this vector, respectively.
485    #[inline]
486    pub fn wxxy(self) -> F32x4 {
487        F32x4([self[3], self[0], self[0], self[1]])
488    }
489
490    /// Constructs a new vector from the first, second, first, and second
491    /// lanes in this vector, respectively.
492    #[inline]
493    pub fn xyxy(self) -> F32x4 {
494        F32x4([self[0], self[1], self[0], self[1]])
495    }
496
497    /// Constructs a new vector from the second, second, first, and second
498    /// lanes in this vector, respectively.
499    #[inline]
500    pub fn yyxy(self) -> F32x4 {
501        F32x4([self[1], self[1], self[0], self[1]])
502    }
503
504    /// Constructs a new vector from the third, second, first, and second
505    /// lanes in this vector, respectively.
506    #[inline]
507    pub fn zyxy(self) -> F32x4 {
508        F32x4([self[2], self[1], self[0], self[1]])
509    }
510
511    /// Constructs a new vector from the fourth, second, first, and second
512    /// lanes in this vector, respectively.
513    #[inline]
514    pub fn wyxy(self) -> F32x4 {
515        F32x4([self[3], self[1], self[0], self[1]])
516    }
517
518    /// Constructs a new vector from the first, third, first, and second
519    /// lanes in this vector, respectively.
520    #[inline]
521    pub fn xzxy(self) -> F32x4 {
522        F32x4([self[0], self[2], self[0], self[1]])
523    }
524
525    /// Constructs a new vector from the second, third, first, and second
526    /// lanes in this vector, respectively.
527    #[inline]
528    pub fn yzxy(self) -> F32x4 {
529        F32x4([self[1], self[2], self[0], self[1]])
530    }
531
532    /// Constructs a new vector from the third, third, first, and second
533    /// lanes in this vector, respectively.
534    #[inline]
535    pub fn zzxy(self) -> F32x4 {
536        F32x4([self[2], self[2], self[0], self[1]])
537    }
538
539    /// Constructs a new vector from the fourth, third, first, and second
540    /// lanes in this vector, respectively.
541    #[inline]
542    pub fn wzxy(self) -> F32x4 {
543        F32x4([self[3], self[2], self[0], self[1]])
544    }
545
546    /// Constructs a new vector from the first, fourth, first, and second
547    /// lanes in this vector, respectively.
548    #[inline]
549    pub fn xwxy(self) -> F32x4 {
550        F32x4([self[0], self[3], self[0], self[1]])
551    }
552
553    /// Constructs a new vector from the second, fourth, first, and second
554    /// lanes in this vector, respectively.
555    #[inline]
556    pub fn ywxy(self) -> F32x4 {
557        F32x4([self[1], self[3], self[0], self[1]])
558    }
559
560    /// Constructs a new vector from the third, fourth, first, and second
561    /// lanes in this vector, respectively.
562    #[inline]
563    pub fn zwxy(self) -> F32x4 {
564        F32x4([self[2], self[3], self[0], self[1]])
565    }
566
567    /// Constructs a new vector from the fourth, fourth, first, and second
568    /// lanes in this vector, respectively.
569    #[inline]
570    pub fn wwxy(self) -> F32x4 {
571        F32x4([self[3], self[3], self[0], self[1]])
572    }
573
574    /// Constructs a new vector from the first, first, second, and second
575    /// lanes in this vector, respectively.
576    #[inline]
577    pub fn xxyy(self) -> F32x4 {
578        F32x4([self[0], self[0], self[1], self[1]])
579    }
580
581    /// Constructs a new vector from the second, first, second, and second
582    /// lanes in this vector, respectively.
583    #[inline]
584    pub fn yxyy(self) -> F32x4 {
585        F32x4([self[1], self[0], self[1], self[1]])
586    }
587
588    /// Constructs a new vector from the third, first, second, and second
589    /// lanes in this vector, respectively.
590    #[inline]
591    pub fn zxyy(self) -> F32x4 {
592        F32x4([self[2], self[0], self[1], self[1]])
593    }
594
595    /// Constructs a new vector from the fourth, first, second, and second
596    /// lanes in this vector, respectively.
597    #[inline]
598    pub fn wxyy(self) -> F32x4 {
599        F32x4([self[3], self[0], self[1], self[1]])
600    }
601
602    /// Constructs a new vector from the first, second, second, and second
603    /// lanes in this vector, respectively.
604    #[inline]
605    pub fn xyyy(self) -> F32x4 {
606        F32x4([self[0], self[1], self[1], self[1]])
607    }
608
609    /// Constructs a new vector from the second, second, second, and second
610    /// lanes in this vector, respectively.
611    #[inline]
612    pub fn yyyy(self) -> F32x4 {
613        F32x4([self[1], self[1], self[1], self[1]])
614    }
615
616    /// Constructs a new vector from the third, second, second, and second
617    /// lanes in this vector, respectively.
618    #[inline]
619    pub fn zyyy(self) -> F32x4 {
620        F32x4([self[2], self[1], self[1], self[1]])
621    }
622
623    /// Constructs a new vector from the fourth, second, second, and second
624    /// lanes in this vector, respectively.
625    #[inline]
626    pub fn wyyy(self) -> F32x4 {
627        F32x4([self[3], self[1], self[1], self[1]])
628    }
629
630    /// Constructs a new vector from the first, third, second, and second
631    /// lanes in this vector, respectively.
632    #[inline]
633    pub fn xzyy(self) -> F32x4 {
634        F32x4([self[0], self[2], self[1], self[1]])
635    }
636
637    /// Constructs a new vector from the second, third, second, and second
638    /// lanes in this vector, respectively.
639    #[inline]
640    pub fn yzyy(self) -> F32x4 {
641        F32x4([self[1], self[2], self[1], self[1]])
642    }
643
644    /// Constructs a new vector from the third, third, second, and second
645    /// lanes in this vector, respectively.
646    #[inline]
647    pub fn zzyy(self) -> F32x4 {
648        F32x4([self[2], self[2], self[1], self[1]])
649    }
650
651    /// Constructs a new vector from the fourth, third, second, and second
652    /// lanes in this vector, respectively.
653    #[inline]
654    pub fn wzyy(self) -> F32x4 {
655        F32x4([self[3], self[2], self[1], self[1]])
656    }
657
658    /// Constructs a new vector from the first, fourth, second, and second
659    /// lanes in this vector, respectively.
660    #[inline]
661    pub fn xwyy(self) -> F32x4 {
662        F32x4([self[0], self[3], self[1], self[1]])
663    }
664
665    /// Constructs a new vector from the second, fourth, second, and second
666    /// lanes in this vector, respectively.
667    #[inline]
668    pub fn ywyy(self) -> F32x4 {
669        F32x4([self[1], self[3], self[1], self[1]])
670    }
671
672    /// Constructs a new vector from the third, fourth, second, and second
673    /// lanes in this vector, respectively.
674    #[inline]
675    pub fn zwyy(self) -> F32x4 {
676        F32x4([self[2], self[3], self[1], self[1]])
677    }
678
679    /// Constructs a new vector from the fourth, fourth, second, and second
680    /// lanes in this vector, respectively.
681    #[inline]
682    pub fn wwyy(self) -> F32x4 {
683        F32x4([self[3], self[3], self[1], self[1]])
684    }
685
686    /// Constructs a new vector from the first, first, third, and second
687    /// lanes in this vector, respectively.
688    #[inline]
689    pub fn xxzy(self) -> F32x4 {
690        F32x4([self[0], self[0], self[2], self[1]])
691    }
692
693    /// Constructs a new vector from the second, first, third, and second
694    /// lanes in this vector, respectively.
695    #[inline]
696    pub fn yxzy(self) -> F32x4 {
697        F32x4([self[1], self[0], self[2], self[1]])
698    }
699
700    /// Constructs a new vector from the third, first, third, and second
701    /// lanes in this vector, respectively.
702    #[inline]
703    pub fn zxzy(self) -> F32x4 {
704        F32x4([self[2], self[0], self[2], self[1]])
705    }
706
707    /// Constructs a new vector from the fourth, first, third, and second
708    /// lanes in this vector, respectively.
709    #[inline]
710    pub fn wxzy(self) -> F32x4 {
711        F32x4([self[3], self[0], self[2], self[1]])
712    }
713
714    /// Constructs a new vector from the first, second, third, and second
715    /// lanes in this vector, respectively.
716    #[inline]
717    pub fn xyzy(self) -> F32x4 {
718        F32x4([self[0], self[1], self[2], self[1]])
719    }
720
721    /// Constructs a new vector from the second, second, third, and second
722    /// lanes in this vector, respectively.
723    #[inline]
724    pub fn yyzy(self) -> F32x4 {
725        F32x4([self[1], self[1], self[2], self[1]])
726    }
727
728    /// Constructs a new vector from the third, second, third, and second
729    /// lanes in this vector, respectively.
730    #[inline]
731    pub fn zyzy(self) -> F32x4 {
732        F32x4([self[2], self[1], self[2], self[1]])
733    }
734
735    /// Constructs a new vector from the fourth, second, third, and second
736    /// lanes in this vector, respectively.
737    #[inline]
738    pub fn wyzy(self) -> F32x4 {
739        F32x4([self[3], self[1], self[2], self[1]])
740    }
741
742    /// Constructs a new vector from the first, third, third, and second
743    /// lanes in this vector, respectively.
744    #[inline]
745    pub fn xzzy(self) -> F32x4 {
746        F32x4([self[0], self[2], self[2], self[1]])
747    }
748
749    /// Constructs a new vector from the second, third, third, and second
750    /// lanes in this vector, respectively.
751    #[inline]
752    pub fn yzzy(self) -> F32x4 {
753        F32x4([self[1], self[2], self[2], self[1]])
754    }
755
756    /// Constructs a new vector from the third, third, third, and second
757    /// lanes in this vector, respectively.
758    #[inline]
759    pub fn zzzy(self) -> F32x4 {
760        F32x4([self[2], self[2], self[2], self[1]])
761    }
762
763    /// Constructs a new vector from the fourth, third, third, and second
764    /// lanes in this vector, respectively.
765    #[inline]
766    pub fn wzzy(self) -> F32x4 {
767        F32x4([self[3], self[2], self[2], self[1]])
768    }
769
770    /// Constructs a new vector from the first, fourth, third, and second
771    /// lanes in this vector, respectively.
772    #[inline]
773    pub fn xwzy(self) -> F32x4 {
774        F32x4([self[0], self[3], self[2], self[1]])
775    }
776
777    /// Constructs a new vector from the second, fourth, third, and second
778    /// lanes in this vector, respectively.
779    #[inline]
780    pub fn ywzy(self) -> F32x4 {
781        F32x4([self[1], self[3], self[2], self[1]])
782    }
783
784    /// Constructs a new vector from the third, fourth, third, and second
785    /// lanes in this vector, respectively.
786    #[inline]
787    pub fn zwzy(self) -> F32x4 {
788        F32x4([self[2], self[3], self[2], self[1]])
789    }
790
791    /// Constructs a new vector from the fourth, fourth, third, and second
792    /// lanes in this vector, respectively.
793    #[inline]
794    pub fn wwzy(self) -> F32x4 {
795        F32x4([self[3], self[3], self[2], self[1]])
796    }
797
798    /// Constructs a new vector from the first, first, fourth, and second
799    /// lanes in this vector, respectively.
800    #[inline]
801    pub fn xxwy(self) -> F32x4 {
802        F32x4([self[0], self[0], self[3], self[1]])
803    }
804
805    /// Constructs a new vector from the second, first, fourth, and second
806    /// lanes in this vector, respectively.
807    #[inline]
808    pub fn yxwy(self) -> F32x4 {
809        F32x4([self[1], self[0], self[3], self[1]])
810    }
811
812    /// Constructs a new vector from the third, first, fourth, and second
813    /// lanes in this vector, respectively.
814    #[inline]
815    pub fn zxwy(self) -> F32x4 {
816        F32x4([self[2], self[0], self[3], self[1]])
817    }
818
819    /// Constructs a new vector from the fourth, first, fourth, and second
820    /// lanes in this vector, respectively.
821    #[inline]
822    pub fn wxwy(self) -> F32x4 {
823        F32x4([self[3], self[0], self[3], self[1]])
824    }
825
826    /// Constructs a new vector from the first, second, fourth, and second
827    /// lanes in this vector, respectively.
828    #[inline]
829    pub fn xywy(self) -> F32x4 {
830        F32x4([self[0], self[1], self[3], self[1]])
831    }
832
833    /// Constructs a new vector from the second, second, fourth, and second
834    /// lanes in this vector, respectively.
835    #[inline]
836    pub fn yywy(self) -> F32x4 {
837        F32x4([self[1], self[1], self[3], self[1]])
838    }
839
840    /// Constructs a new vector from the third, second, fourth, and second
841    /// lanes in this vector, respectively.
842    #[inline]
843    pub fn zywy(self) -> F32x4 {
844        F32x4([self[2], self[1], self[3], self[1]])
845    }
846
847    /// Constructs a new vector from the fourth, second, fourth, and second
848    /// lanes in this vector, respectively.
849    #[inline]
850    pub fn wywy(self) -> F32x4 {
851        F32x4([self[3], self[1], self[3], self[1]])
852    }
853
854    /// Constructs a new vector from the first, third, fourth, and second
855    /// lanes in this vector, respectively.
856    #[inline]
857    pub fn xzwy(self) -> F32x4 {
858        F32x4([self[0], self[2], self[3], self[1]])
859    }
860
861    /// Constructs a new vector from the second, third, fourth, and second
862    /// lanes in this vector, respectively.
863    #[inline]
864    pub fn yzwy(self) -> F32x4 {
865        F32x4([self[1], self[2], self[3], self[1]])
866    }
867
868    /// Constructs a new vector from the third, third, fourth, and second
869    /// lanes in this vector, respectively.
870    #[inline]
871    pub fn zzwy(self) -> F32x4 {
872        F32x4([self[2], self[2], self[3], self[1]])
873    }
874
875    /// Constructs a new vector from the fourth, third, fourth, and second
876    /// lanes in this vector, respectively.
877    #[inline]
878    pub fn wzwy(self) -> F32x4 {
879        F32x4([self[3], self[2], self[3], self[1]])
880    }
881
882    /// Constructs a new vector from the first, fourth, fourth, and second
883    /// lanes in this vector, respectively.
884    #[inline]
885    pub fn xwwy(self) -> F32x4 {
886        F32x4([self[0], self[3], self[3], self[1]])
887    }
888
889    /// Constructs a new vector from the second, fourth, fourth, and second
890    /// lanes in this vector, respectively.
891    #[inline]
892    pub fn ywwy(self) -> F32x4 {
893        F32x4([self[1], self[3], self[3], self[1]])
894    }
895
896    /// Constructs a new vector from the third, fourth, fourth, and second
897    /// lanes in this vector, respectively.
898    #[inline]
899    pub fn zwwy(self) -> F32x4 {
900        F32x4([self[2], self[3], self[3], self[1]])
901    }
902
903    /// Constructs a new vector from the fourth, fourth, fourth, and second
904    /// lanes in this vector, respectively.
905    #[inline]
906    pub fn wwwy(self) -> F32x4 {
907        F32x4([self[3], self[3], self[3], self[1]])
908    }
909
910    /// Constructs a new vector from the first, first, first, and third
911    /// lanes in this vector, respectively.
912    #[inline]
913    pub fn xxxz(self) -> F32x4 {
914        F32x4([self[0], self[0], self[0], self[2]])
915    }
916
917    /// Constructs a new vector from the second, first, first, and third
918    /// lanes in this vector, respectively.
919    #[inline]
920    pub fn yxxz(self) -> F32x4 {
921        F32x4([self[1], self[0], self[0], self[2]])
922    }
923
924    /// Constructs a new vector from the third, first, first, and third
925    /// lanes in this vector, respectively.
926    #[inline]
927    pub fn zxxz(self) -> F32x4 {
928        F32x4([self[2], self[0], self[0], self[2]])
929    }
930
931    /// Constructs a new vector from the fourth, first, first, and third
932    /// lanes in this vector, respectively.
933    #[inline]
934    pub fn wxxz(self) -> F32x4 {
935        F32x4([self[3], self[0], self[0], self[2]])
936    }
937
938    /// Constructs a new vector from the first, second, first, and third
939    /// lanes in this vector, respectively.
940    #[inline]
941    pub fn xyxz(self) -> F32x4 {
942        F32x4([self[0], self[1], self[0], self[2]])
943    }
944
945    /// Constructs a new vector from the second, second, first, and third
946    /// lanes in this vector, respectively.
947    #[inline]
948    pub fn yyxz(self) -> F32x4 {
949        F32x4([self[1], self[1], self[0], self[2]])
950    }
951
952    /// Constructs a new vector from the third, second, first, and third
953    /// lanes in this vector, respectively.
954    #[inline]
955    pub fn zyxz(self) -> F32x4 {
956        F32x4([self[2], self[1], self[0], self[2]])
957    }
958
959    /// Constructs a new vector from the fourth, second, first, and third
960    /// lanes in this vector, respectively.
961    #[inline]
962    pub fn wyxz(self) -> F32x4 {
963        F32x4([self[3], self[1], self[0], self[2]])
964    }
965
966    /// Constructs a new vector from the first, third, first, and third
967    /// lanes in this vector, respectively.
968    #[inline]
969    pub fn xzxz(self) -> F32x4 {
970        F32x4([self[0], self[2], self[0], self[2]])
971    }
972
973    /// Constructs a new vector from the second, third, first, and third
974    /// lanes in this vector, respectively.
975    #[inline]
976    pub fn yzxz(self) -> F32x4 {
977        F32x4([self[1], self[2], self[0], self[2]])
978    }
979
980    /// Constructs a new vector from the third, third, first, and third
981    /// lanes in this vector, respectively.
982    #[inline]
983    pub fn zzxz(self) -> F32x4 {
984        F32x4([self[2], self[2], self[0], self[2]])
985    }
986
987    /// Constructs a new vector from the fourth, third, first, and third
988    /// lanes in this vector, respectively.
989    #[inline]
990    pub fn wzxz(self) -> F32x4 {
991        F32x4([self[3], self[2], self[0], self[2]])
992    }
993
994    /// Constructs a new vector from the first, fourth, first, and third
995    /// lanes in this vector, respectively.
996    #[inline]
997    pub fn xwxz(self) -> F32x4 {
998        F32x4([self[0], self[3], self[0], self[2]])
999    }
1000
1001    /// Constructs a new vector from the second, fourth, first, and third
1002    /// lanes in this vector, respectively.
1003    #[inline]
1004    pub fn ywxz(self) -> F32x4 {
1005        F32x4([self[1], self[3], self[0], self[2]])
1006    }
1007
1008    /// Constructs a new vector from the third, fourth, first, and third
1009    /// lanes in this vector, respectively.
1010    #[inline]
1011    pub fn zwxz(self) -> F32x4 {
1012        F32x4([self[2], self[3], self[0], self[2]])
1013    }
1014
1015    /// Constructs a new vector from the fourth, fourth, first, and third
1016    /// lanes in this vector, respectively.
1017    #[inline]
1018    pub fn wwxz(self) -> F32x4 {
1019        F32x4([self[3], self[3], self[0], self[2]])
1020    }
1021
1022    /// Constructs a new vector from the first, first, second, and third
1023    /// lanes in this vector, respectively.
1024    #[inline]
1025    pub fn xxyz(self) -> F32x4 {
1026        F32x4([self[0], self[0], self[1], self[2]])
1027    }
1028
1029    /// Constructs a new vector from the second, first, second, and third
1030    /// lanes in this vector, respectively.
1031    #[inline]
1032    pub fn yxyz(self) -> F32x4 {
1033        F32x4([self[1], self[0], self[1], self[2]])
1034    }
1035
1036    /// Constructs a new vector from the third, first, second, and third
1037    /// lanes in this vector, respectively.
1038    #[inline]
1039    pub fn zxyz(self) -> F32x4 {
1040        F32x4([self[2], self[0], self[1], self[2]])
1041    }
1042
1043    /// Constructs a new vector from the fourth, first, second, and third
1044    /// lanes in this vector, respectively.
1045    #[inline]
1046    pub fn wxyz(self) -> F32x4 {
1047        F32x4([self[3], self[0], self[1], self[2]])
1048    }
1049
1050    /// Constructs a new vector from the first, second, second, and third
1051    /// lanes in this vector, respectively.
1052    #[inline]
1053    pub fn xyyz(self) -> F32x4 {
1054        F32x4([self[0], self[1], self[1], self[2]])
1055    }
1056
1057    /// Constructs a new vector from the second, second, second, and third
1058    /// lanes in this vector, respectively.
1059    #[inline]
1060    pub fn yyyz(self) -> F32x4 {
1061        F32x4([self[1], self[1], self[1], self[2]])
1062    }
1063
1064    /// Constructs a new vector from the third, second, second, and third
1065    /// lanes in this vector, respectively.
1066    #[inline]
1067    pub fn zyyz(self) -> F32x4 {
1068        F32x4([self[2], self[1], self[1], self[2]])
1069    }
1070
1071    /// Constructs a new vector from the fourth, second, second, and third
1072    /// lanes in this vector, respectively.
1073    #[inline]
1074    pub fn wyyz(self) -> F32x4 {
1075        F32x4([self[3], self[1], self[1], self[2]])
1076    }
1077
1078    /// Constructs a new vector from the first, third, second, and third
1079    /// lanes in this vector, respectively.
1080    #[inline]
1081    pub fn xzyz(self) -> F32x4 {
1082        F32x4([self[0], self[2], self[1], self[2]])
1083    }
1084
1085    /// Constructs a new vector from the second, third, second, and third
1086    /// lanes in this vector, respectively.
1087    #[inline]
1088    pub fn yzyz(self) -> F32x4 {
1089        F32x4([self[1], self[2], self[1], self[2]])
1090    }
1091
1092    /// Constructs a new vector from the third, third, second, and third
1093    /// lanes in this vector, respectively.
1094    #[inline]
1095    pub fn zzyz(self) -> F32x4 {
1096        F32x4([self[2], self[2], self[1], self[2]])
1097    }
1098
1099    /// Constructs a new vector from the fourth, third, second, and third
1100    /// lanes in this vector, respectively.
1101    #[inline]
1102    pub fn wzyz(self) -> F32x4 {
1103        F32x4([self[3], self[2], self[1], self[2]])
1104    }
1105
1106    /// Constructs a new vector from the first, fourth, second, and third
1107    /// lanes in this vector, respectively.
1108    #[inline]
1109    pub fn xwyz(self) -> F32x4 {
1110        F32x4([self[0], self[3], self[1], self[2]])
1111    }
1112
1113    /// Constructs a new vector from the second, fourth, second, and third
1114    /// lanes in this vector, respectively.
1115    #[inline]
1116    pub fn ywyz(self) -> F32x4 {
1117        F32x4([self[1], self[3], self[1], self[2]])
1118    }
1119
1120    /// Constructs a new vector from the third, fourth, second, and third
1121    /// lanes in this vector, respectively.
1122    #[inline]
1123    pub fn zwyz(self) -> F32x4 {
1124        F32x4([self[2], self[3], self[1], self[2]])
1125    }
1126
1127    /// Constructs a new vector from the fourth, fourth, second, and third
1128    /// lanes in this vector, respectively.
1129    #[inline]
1130    pub fn wwyz(self) -> F32x4 {
1131        F32x4([self[3], self[3], self[1], self[2]])
1132    }
1133
1134    /// Constructs a new vector from the first, first, third, and third
1135    /// lanes in this vector, respectively.
1136    #[inline]
1137    pub fn xxzz(self) -> F32x4 {
1138        F32x4([self[0], self[0], self[2], self[2]])
1139    }
1140
1141    /// Constructs a new vector from the second, first, third, and third
1142    /// lanes in this vector, respectively.
1143    #[inline]
1144    pub fn yxzz(self) -> F32x4 {
1145        F32x4([self[1], self[0], self[2], self[2]])
1146    }
1147
1148    /// Constructs a new vector from the third, first, third, and third
1149    /// lanes in this vector, respectively.
1150    #[inline]
1151    pub fn zxzz(self) -> F32x4 {
1152        F32x4([self[2], self[0], self[2], self[2]])
1153    }
1154
1155    /// Constructs a new vector from the fourth, first, third, and third
1156    /// lanes in this vector, respectively.
1157    #[inline]
1158    pub fn wxzz(self) -> F32x4 {
1159        F32x4([self[3], self[0], self[2], self[2]])
1160    }
1161
1162    /// Constructs a new vector from the first, second, third, and third
1163    /// lanes in this vector, respectively.
1164    #[inline]
1165    pub fn xyzz(self) -> F32x4 {
1166        F32x4([self[0], self[1], self[2], self[2]])
1167    }
1168
1169    /// Constructs a new vector from the second, second, third, and third
1170    /// lanes in this vector, respectively.
1171    #[inline]
1172    pub fn yyzz(self) -> F32x4 {
1173        F32x4([self[1], self[1], self[2], self[2]])
1174    }
1175
1176    /// Constructs a new vector from the third, second, third, and third
1177    /// lanes in this vector, respectively.
1178    #[inline]
1179    pub fn zyzz(self) -> F32x4 {
1180        F32x4([self[2], self[1], self[2], self[2]])
1181    }
1182
1183    /// Constructs a new vector from the fourth, second, third, and third
1184    /// lanes in this vector, respectively.
1185    #[inline]
1186    pub fn wyzz(self) -> F32x4 {
1187        F32x4([self[3], self[1], self[2], self[2]])
1188    }
1189
1190    /// Constructs a new vector from the first, third, third, and third
1191    /// lanes in this vector, respectively.
1192    #[inline]
1193    pub fn xzzz(self) -> F32x4 {
1194        F32x4([self[0], self[2], self[2], self[2]])
1195    }
1196
1197    /// Constructs a new vector from the second, third, third, and third
1198    /// lanes in this vector, respectively.
1199    #[inline]
1200    pub fn yzzz(self) -> F32x4 {
1201        F32x4([self[1], self[2], self[2], self[2]])
1202    }
1203
1204    /// Constructs a new vector from the third, third, third, and third
1205    /// lanes in this vector, respectively.
1206    #[inline]
1207    pub fn zzzz(self) -> F32x4 {
1208        F32x4([self[2], self[2], self[2], self[2]])
1209    }
1210
1211    /// Constructs a new vector from the fourth, third, third, and third
1212    /// lanes in this vector, respectively.
1213    #[inline]
1214    pub fn wzzz(self) -> F32x4 {
1215        F32x4([self[3], self[2], self[2], self[2]])
1216    }
1217
1218    /// Constructs a new vector from the first, fourth, third, and third
1219    /// lanes in this vector, respectively.
1220    #[inline]
1221    pub fn xwzz(self) -> F32x4 {
1222        F32x4([self[0], self[3], self[2], self[2]])
1223    }
1224
1225    /// Constructs a new vector from the second, fourth, third, and third
1226    /// lanes in this vector, respectively.
1227    #[inline]
1228    pub fn ywzz(self) -> F32x4 {
1229        F32x4([self[1], self[3], self[2], self[2]])
1230    }
1231
1232    /// Constructs a new vector from the third, fourth, third, and third
1233    /// lanes in this vector, respectively.
1234    #[inline]
1235    pub fn zwzz(self) -> F32x4 {
1236        F32x4([self[2], self[3], self[2], self[2]])
1237    }
1238
1239    /// Constructs a new vector from the fourth, fourth, third, and third
1240    /// lanes in this vector, respectively.
1241    #[inline]
1242    pub fn wwzz(self) -> F32x4 {
1243        F32x4([self[3], self[3], self[2], self[2]])
1244    }
1245
1246    /// Constructs a new vector from the first, first, fourth, and third
1247    /// lanes in this vector, respectively.
1248    #[inline]
1249    pub fn xxwz(self) -> F32x4 {
1250        F32x4([self[0], self[0], self[3], self[2]])
1251    }
1252
1253    /// Constructs a new vector from the second, first, fourth, and third
1254    /// lanes in this vector, respectively.
1255    #[inline]
1256    pub fn yxwz(self) -> F32x4 {
1257        F32x4([self[1], self[0], self[3], self[2]])
1258    }
1259
1260    /// Constructs a new vector from the third, first, fourth, and third
1261    /// lanes in this vector, respectively.
1262    #[inline]
1263    pub fn zxwz(self) -> F32x4 {
1264        F32x4([self[2], self[0], self[3], self[2]])
1265    }
1266
1267    /// Constructs a new vector from the fourth, first, fourth, and third
1268    /// lanes in this vector, respectively.
1269    #[inline]
1270    pub fn wxwz(self) -> F32x4 {
1271        F32x4([self[3], self[0], self[3], self[2]])
1272    }
1273
1274    /// Constructs a new vector from the first, second, fourth, and third
1275    /// lanes in this vector, respectively.
1276    #[inline]
1277    pub fn xywz(self) -> F32x4 {
1278        F32x4([self[0], self[1], self[3], self[2]])
1279    }
1280
1281    /// Constructs a new vector from the second, second, fourth, and third
1282    /// lanes in this vector, respectively.
1283    #[inline]
1284    pub fn yywz(self) -> F32x4 {
1285        F32x4([self[1], self[1], self[3], self[2]])
1286    }
1287
1288    /// Constructs a new vector from the third, second, fourth, and third
1289    /// lanes in this vector, respectively.
1290    #[inline]
1291    pub fn zywz(self) -> F32x4 {
1292        F32x4([self[2], self[1], self[3], self[2]])
1293    }
1294
1295    /// Constructs a new vector from the fourth, second, fourth, and third
1296    /// lanes in this vector, respectively.
1297    #[inline]
1298    pub fn wywz(self) -> F32x4 {
1299        F32x4([self[3], self[1], self[3], self[2]])
1300    }
1301
1302    /// Constructs a new vector from the first, third, fourth, and third
1303    /// lanes in this vector, respectively.
1304    #[inline]
1305    pub fn xzwz(self) -> F32x4 {
1306        F32x4([self[0], self[2], self[3], self[2]])
1307    }
1308
1309    /// Constructs a new vector from the second, third, fourth, and third
1310    /// lanes in this vector, respectively.
1311    #[inline]
1312    pub fn yzwz(self) -> F32x4 {
1313        F32x4([self[1], self[2], self[3], self[2]])
1314    }
1315
1316    /// Constructs a new vector from the third, third, fourth, and third
1317    /// lanes in this vector, respectively.
1318    #[inline]
1319    pub fn zzwz(self) -> F32x4 {
1320        F32x4([self[2], self[2], self[3], self[2]])
1321    }
1322
1323    /// Constructs a new vector from the fourth, third, fourth, and third
1324    /// lanes in this vector, respectively.
1325    #[inline]
1326    pub fn wzwz(self) -> F32x4 {
1327        F32x4([self[3], self[2], self[3], self[2]])
1328    }
1329
1330    /// Constructs a new vector from the first, fourth, fourth, and third
1331    /// lanes in this vector, respectively.
1332    #[inline]
1333    pub fn xwwz(self) -> F32x4 {
1334        F32x4([self[0], self[3], self[3], self[2]])
1335    }
1336
1337    /// Constructs a new vector from the second, fourth, fourth, and third
1338    /// lanes in this vector, respectively.
1339    #[inline]
1340    pub fn ywwz(self) -> F32x4 {
1341        F32x4([self[1], self[3], self[3], self[2]])
1342    }
1343
1344    /// Constructs a new vector from the third, fourth, fourth, and third
1345    /// lanes in this vector, respectively.
1346    #[inline]
1347    pub fn zwwz(self) -> F32x4 {
1348        F32x4([self[2], self[3], self[3], self[2]])
1349    }
1350
1351    /// Constructs a new vector from the fourth, fourth, fourth, and third
1352    /// lanes in this vector, respectively.
1353    #[inline]
1354    pub fn wwwz(self) -> F32x4 {
1355        F32x4([self[3], self[3], self[3], self[2]])
1356    }
1357
1358    /// Constructs a new vector from the first, first, first, and fourth
1359    /// lanes in this vector, respectively.
1360    #[inline]
1361    pub fn xxxw(self) -> F32x4 {
1362        F32x4([self[0], self[0], self[0], self[3]])
1363    }
1364
1365    /// Constructs a new vector from the second, first, first, and fourth
1366    /// lanes in this vector, respectively.
1367    #[inline]
1368    pub fn yxxw(self) -> F32x4 {
1369        F32x4([self[1], self[0], self[0], self[3]])
1370    }
1371
1372    /// Constructs a new vector from the third, first, first, and fourth
1373    /// lanes in this vector, respectively.
1374    #[inline]
1375    pub fn zxxw(self) -> F32x4 {
1376        F32x4([self[2], self[0], self[0], self[3]])
1377    }
1378
1379    /// Constructs a new vector from the fourth, first, first, and fourth
1380    /// lanes in this vector, respectively.
1381    #[inline]
1382    pub fn wxxw(self) -> F32x4 {
1383        F32x4([self[3], self[0], self[0], self[3]])
1384    }
1385
1386    /// Constructs a new vector from the first, second, first, and fourth
1387    /// lanes in this vector, respectively.
1388    #[inline]
1389    pub fn xyxw(self) -> F32x4 {
1390        F32x4([self[0], self[1], self[0], self[3]])
1391    }
1392
1393    /// Constructs a new vector from the second, second, first, and fourth
1394    /// lanes in this vector, respectively.
1395    #[inline]
1396    pub fn yyxw(self) -> F32x4 {
1397        F32x4([self[1], self[1], self[0], self[3]])
1398    }
1399
1400    /// Constructs a new vector from the third, second, first, and fourth
1401    /// lanes in this vector, respectively.
1402    #[inline]
1403    pub fn zyxw(self) -> F32x4 {
1404        F32x4([self[2], self[1], self[0], self[3]])
1405    }
1406
1407    /// Constructs a new vector from the fourth, second, first, and fourth
1408    /// lanes in this vector, respectively.
1409    #[inline]
1410    pub fn wyxw(self) -> F32x4 {
1411        F32x4([self[3], self[1], self[0], self[3]])
1412    }
1413
1414    /// Constructs a new vector from the first, third, first, and fourth
1415    /// lanes in this vector, respectively.
1416    #[inline]
1417    pub fn xzxw(self) -> F32x4 {
1418        F32x4([self[0], self[2], self[0], self[3]])
1419    }
1420
1421    /// Constructs a new vector from the second, third, first, and fourth
1422    /// lanes in this vector, respectively.
1423    #[inline]
1424    pub fn yzxw(self) -> F32x4 {
1425        F32x4([self[1], self[2], self[0], self[3]])
1426    }
1427
1428    /// Constructs a new vector from the third, third, first, and fourth
1429    /// lanes in this vector, respectively.
1430    #[inline]
1431    pub fn zzxw(self) -> F32x4 {
1432        F32x4([self[2], self[2], self[0], self[3]])
1433    }
1434
1435    /// Constructs a new vector from the fourth, third, first, and fourth
1436    /// lanes in this vector, respectively.
1437    #[inline]
1438    pub fn wzxw(self) -> F32x4 {
1439        F32x4([self[3], self[2], self[0], self[3]])
1440    }
1441
1442    /// Constructs a new vector from the first, fourth, first, and fourth
1443    /// lanes in this vector, respectively.
1444    #[inline]
1445    pub fn xwxw(self) -> F32x4 {
1446        F32x4([self[0], self[3], self[0], self[3]])
1447    }
1448
1449    /// Constructs a new vector from the second, fourth, first, and fourth
1450    /// lanes in this vector, respectively.
1451    #[inline]
1452    pub fn ywxw(self) -> F32x4 {
1453        F32x4([self[1], self[3], self[0], self[3]])
1454    }
1455
1456    /// Constructs a new vector from the third, fourth, first, and fourth
1457    /// lanes in this vector, respectively.
1458    #[inline]
1459    pub fn zwxw(self) -> F32x4 {
1460        F32x4([self[2], self[3], self[0], self[3]])
1461    }
1462
1463    /// Constructs a new vector from the fourth, fourth, first, and fourth
1464    /// lanes in this vector, respectively.
1465    #[inline]
1466    pub fn wwxw(self) -> F32x4 {
1467        F32x4([self[3], self[3], self[0], self[3]])
1468    }
1469
1470    /// Constructs a new vector from the first, first, second, and fourth
1471    /// lanes in this vector, respectively.
1472    #[inline]
1473    pub fn xxyw(self) -> F32x4 {
1474        F32x4([self[0], self[0], self[1], self[3]])
1475    }
1476
1477    /// Constructs a new vector from the second, first, second, and fourth
1478    /// lanes in this vector, respectively.
1479    #[inline]
1480    pub fn yxyw(self) -> F32x4 {
1481        F32x4([self[1], self[0], self[1], self[3]])
1482    }
1483
1484    /// Constructs a new vector from the third, first, second, and fourth
1485    /// lanes in this vector, respectively.
1486    #[inline]
1487    pub fn zxyw(self) -> F32x4 {
1488        F32x4([self[2], self[0], self[1], self[3]])
1489    }
1490
1491    /// Constructs a new vector from the fourth, first, second, and fourth
1492    /// lanes in this vector, respectively.
1493    #[inline]
1494    pub fn wxyw(self) -> F32x4 {
1495        F32x4([self[3], self[0], self[1], self[3]])
1496    }
1497
1498    /// Constructs a new vector from the first, second, second, and fourth
1499    /// lanes in this vector, respectively.
1500    #[inline]
1501    pub fn xyyw(self) -> F32x4 {
1502        F32x4([self[0], self[1], self[1], self[3]])
1503    }
1504
1505    /// Constructs a new vector from the second, second, second, and fourth
1506    /// lanes in this vector, respectively.
1507    #[inline]
1508    pub fn yyyw(self) -> F32x4 {
1509        F32x4([self[1], self[1], self[1], self[3]])
1510    }
1511
1512    /// Constructs a new vector from the third, second, second, and fourth
1513    /// lanes in this vector, respectively.
1514    #[inline]
1515    pub fn zyyw(self) -> F32x4 {
1516        F32x4([self[2], self[1], self[1], self[3]])
1517    }
1518
1519    /// Constructs a new vector from the fourth, second, second, and fourth
1520    /// lanes in this vector, respectively.
1521    #[inline]
1522    pub fn wyyw(self) -> F32x4 {
1523        F32x4([self[3], self[1], self[1], self[3]])
1524    }
1525
1526    /// Constructs a new vector from the first, third, second, and fourth
1527    /// lanes in this vector, respectively.
1528    #[inline]
1529    pub fn xzyw(self) -> F32x4 {
1530        F32x4([self[0], self[2], self[1], self[3]])
1531    }
1532
1533    /// Constructs a new vector from the second, third, second, and fourth
1534    /// lanes in this vector, respectively.
1535    #[inline]
1536    pub fn yzyw(self) -> F32x4 {
1537        F32x4([self[1], self[2], self[1], self[3]])
1538    }
1539
1540    /// Constructs a new vector from the third, third, second, and fourth
1541    /// lanes in this vector, respectively.
1542    #[inline]
1543    pub fn zzyw(self) -> F32x4 {
1544        F32x4([self[2], self[2], self[1], self[3]])
1545    }
1546
1547    /// Constructs a new vector from the fourth, third, second, and fourth
1548    /// lanes in this vector, respectively.
1549    #[inline]
1550    pub fn wzyw(self) -> F32x4 {
1551        F32x4([self[3], self[2], self[1], self[3]])
1552    }
1553
1554    /// Constructs a new vector from the first, fourth, second, and fourth
1555    /// lanes in this vector, respectively.
1556    #[inline]
1557    pub fn xwyw(self) -> F32x4 {
1558        F32x4([self[0], self[3], self[1], self[3]])
1559    }
1560
1561    /// Constructs a new vector from the second, fourth, second, and fourth
1562    /// lanes in this vector, respectively.
1563    #[inline]
1564    pub fn ywyw(self) -> F32x4 {
1565        F32x4([self[1], self[3], self[1], self[3]])
1566    }
1567
1568    /// Constructs a new vector from the third, fourth, second, and fourth
1569    /// lanes in this vector, respectively.
1570    #[inline]
1571    pub fn zwyw(self) -> F32x4 {
1572        F32x4([self[2], self[3], self[1], self[3]])
1573    }
1574
1575    /// Constructs a new vector from the fourth, fourth, second, and fourth
1576    /// lanes in this vector, respectively.
1577    #[inline]
1578    pub fn wwyw(self) -> F32x4 {
1579        F32x4([self[3], self[3], self[1], self[3]])
1580    }
1581
1582    /// Constructs a new vector from the first, first, third, and fourth
1583    /// lanes in this vector, respectively.
1584    #[inline]
1585    pub fn xxzw(self) -> F32x4 {
1586        F32x4([self[0], self[0], self[2], self[3]])
1587    }
1588
1589    /// Constructs a new vector from the second, first, third, and fourth
1590    /// lanes in this vector, respectively.
1591    #[inline]
1592    pub fn yxzw(self) -> F32x4 {
1593        F32x4([self[1], self[0], self[2], self[3]])
1594    }
1595
1596    /// Constructs a new vector from the third, first, third, and fourth
1597    /// lanes in this vector, respectively.
1598    #[inline]
1599    pub fn zxzw(self) -> F32x4 {
1600        F32x4([self[2], self[0], self[2], self[3]])
1601    }
1602
1603    /// Constructs a new vector from the fourth, first, third, and fourth
1604    /// lanes in this vector, respectively.
1605    #[inline]
1606    pub fn wxzw(self) -> F32x4 {
1607        F32x4([self[3], self[0], self[2], self[3]])
1608    }
1609
1610    /// Constructs a new vector from the first, second, third, and fourth
1611    /// lanes in this vector, respectively.
1612    #[inline]
1613    pub fn xyzw(self) -> F32x4 {
1614        F32x4([self[0], self[1], self[2], self[3]])
1615    }
1616
1617    /// Constructs a new vector from the second, second, third, and fourth
1618    /// lanes in this vector, respectively.
1619    #[inline]
1620    pub fn yyzw(self) -> F32x4 {
1621        F32x4([self[1], self[1], self[2], self[3]])
1622    }
1623
1624    /// Constructs a new vector from the third, second, third, and fourth
1625    /// lanes in this vector, respectively.
1626    #[inline]
1627    pub fn zyzw(self) -> F32x4 {
1628        F32x4([self[2], self[1], self[2], self[3]])
1629    }
1630
1631    /// Constructs a new vector from the fourth, second, third, and fourth
1632    /// lanes in this vector, respectively.
1633    #[inline]
1634    pub fn wyzw(self) -> F32x4 {
1635        F32x4([self[3], self[1], self[2], self[3]])
1636    }
1637
1638    /// Constructs a new vector from the first, third, third, and fourth
1639    /// lanes in this vector, respectively.
1640    #[inline]
1641    pub fn xzzw(self) -> F32x4 {
1642        F32x4([self[0], self[2], self[2], self[3]])
1643    }
1644
1645    /// Constructs a new vector from the second, third, third, and fourth
1646    /// lanes in this vector, respectively.
1647    #[inline]
1648    pub fn yzzw(self) -> F32x4 {
1649        F32x4([self[1], self[2], self[2], self[3]])
1650    }
1651
1652    /// Constructs a new vector from the third, third, third, and fourth
1653    /// lanes in this vector, respectively.
1654    #[inline]
1655    pub fn zzzw(self) -> F32x4 {
1656        F32x4([self[2], self[2], self[2], self[3]])
1657    }
1658
1659    /// Constructs a new vector from the fourth, third, third, and fourth
1660    /// lanes in this vector, respectively.
1661    #[inline]
1662    pub fn wzzw(self) -> F32x4 {
1663        F32x4([self[3], self[2], self[2], self[3]])
1664    }
1665
1666    /// Constructs a new vector from the first, fourth, third, and fourth
1667    /// lanes in this vector, respectively.
1668    #[inline]
1669    pub fn xwzw(self) -> F32x4 {
1670        F32x4([self[0], self[3], self[2], self[3]])
1671    }
1672
1673    /// Constructs a new vector from the second, fourth, third, and fourth
1674    /// lanes in this vector, respectively.
1675    #[inline]
1676    pub fn ywzw(self) -> F32x4 {
1677        F32x4([self[1], self[3], self[2], self[3]])
1678    }
1679
1680    /// Constructs a new vector from the third, fourth, third, and fourth
1681    /// lanes in this vector, respectively.
1682    #[inline]
1683    pub fn zwzw(self) -> F32x4 {
1684        F32x4([self[2], self[3], self[2], self[3]])
1685    }
1686
1687    /// Constructs a new vector from the fourth, fourth, third, and fourth
1688    /// lanes in this vector, respectively.
1689    #[inline]
1690    pub fn wwzw(self) -> F32x4 {
1691        F32x4([self[3], self[3], self[2], self[3]])
1692    }
1693
1694    /// Constructs a new vector from the first, first, fourth, and fourth
1695    /// lanes in this vector, respectively.
1696    #[inline]
1697    pub fn xxww(self) -> F32x4 {
1698        F32x4([self[0], self[0], self[3], self[3]])
1699    }
1700
1701    /// Constructs a new vector from the second, first, fourth, and fourth
1702    /// lanes in this vector, respectively.
1703    #[inline]
1704    pub fn yxww(self) -> F32x4 {
1705        F32x4([self[1], self[0], self[3], self[3]])
1706    }
1707
1708    /// Constructs a new vector from the third, first, fourth, and fourth
1709    /// lanes in this vector, respectively.
1710    #[inline]
1711    pub fn zxww(self) -> F32x4 {
1712        F32x4([self[2], self[0], self[3], self[3]])
1713    }
1714
1715    /// Constructs a new vector from the fourth, first, fourth, and fourth
1716    /// lanes in this vector, respectively.
1717    #[inline]
1718    pub fn wxww(self) -> F32x4 {
1719        F32x4([self[3], self[0], self[3], self[3]])
1720    }
1721
1722    /// Constructs a new vector from the first, second, fourth, and fourth
1723    /// lanes in this vector, respectively.
1724    #[inline]
1725    pub fn xyww(self) -> F32x4 {
1726        F32x4([self[0], self[1], self[3], self[3]])
1727    }
1728
1729    /// Constructs a new vector from the second, second, fourth, and fourth
1730    /// lanes in this vector, respectively.
1731    #[inline]
1732    pub fn yyww(self) -> F32x4 {
1733        F32x4([self[1], self[1], self[3], self[3]])
1734    }
1735
1736    /// Constructs a new vector from the third, second, fourth, and fourth
1737    /// lanes in this vector, respectively.
1738    #[inline]
1739    pub fn zyww(self) -> F32x4 {
1740        F32x4([self[2], self[1], self[3], self[3]])
1741    }
1742
1743    /// Constructs a new vector from the fourth, second, fourth, and fourth
1744    /// lanes in this vector, respectively.
1745    #[inline]
1746    pub fn wyww(self) -> F32x4 {
1747        F32x4([self[3], self[1], self[3], self[3]])
1748    }
1749
1750    /// Constructs a new vector from the first, third, fourth, and fourth
1751    /// lanes in this vector, respectively.
1752    #[inline]
1753    pub fn xzww(self) -> F32x4 {
1754        F32x4([self[0], self[2], self[3], self[3]])
1755    }
1756
1757    /// Constructs a new vector from the second, third, fourth, and fourth
1758    /// lanes in this vector, respectively.
1759    #[inline]
1760    pub fn yzww(self) -> F32x4 {
1761        F32x4([self[1], self[2], self[3], self[3]])
1762    }
1763
1764    /// Constructs a new vector from the third, third, fourth, and fourth
1765    /// lanes in this vector, respectively.
1766    #[inline]
1767    pub fn zzww(self) -> F32x4 {
1768        F32x4([self[2], self[2], self[3], self[3]])
1769    }
1770
1771    /// Constructs a new vector from the fourth, third, fourth, and fourth
1772    /// lanes in this vector, respectively.
1773    #[inline]
1774    pub fn wzww(self) -> F32x4 {
1775        F32x4([self[3], self[2], self[3], self[3]])
1776    }
1777
1778    /// Constructs a new vector from the first, fourth, fourth, and fourth
1779    /// lanes in this vector, respectively.
1780    #[inline]
1781    pub fn xwww(self) -> F32x4 {
1782        F32x4([self[0], self[3], self[3], self[3]])
1783    }
1784
1785    /// Constructs a new vector from the second, fourth, fourth, and fourth
1786    /// lanes in this vector, respectively.
1787    #[inline]
1788    pub fn ywww(self) -> F32x4 {
1789        F32x4([self[1], self[3], self[3], self[3]])
1790    }
1791
1792    /// Constructs a new vector from the third, fourth, fourth, and fourth
1793    /// lanes in this vector, respectively.
1794    #[inline]
1795    pub fn zwww(self) -> F32x4 {
1796        F32x4([self[2], self[3], self[3], self[3]])
1797    }
1798
1799    /// Constructs a new vector from the fourth, fourth, fourth, and fourth
1800    /// lanes in this vector, respectively.
1801    #[inline]
1802    pub fn wwww(self) -> F32x4 {
1803        F32x4([self[3], self[3], self[3], self[3]])
1804    }
1805}