Skip to main content

grafix_toolbox/kit/policies/math/tuple/
swizzle.rs

1#[rustfmt::skip]
2pub mod s {
3pub trait TupleSwizzle2<A: Copy, B: Copy>: Sized {
4	fn s(self) -> (A, B);
5	#[inline(always)] fn x(self) -> A { self.s().0 }
6	#[inline(always)] fn y(self) -> B { self.s().1 }
7	#[inline(always)] fn xx(self) -> (A, A) { let s = self.s(); (s.0, s.0) }
8	#[inline(always)] fn xy(self) -> (A, B) { let s = self.s(); (s.0, s.1) }
9	#[inline(always)] fn yx(self) -> (B, A) { let s = self.s(); (s.1, s.0) }
10	#[inline(always)] fn yy(self) -> (B, B) { let s = self.s(); (s.1, s.1) }
11
12	#[inline(always)] fn r(self) -> A { self.s().0 }
13	#[inline(always)] fn g(self) -> B { self.s().1 }
14	#[inline(always)] fn rr(self) -> (A, A) { let s = self.s(); (s.0, s.0) }
15	#[inline(always)] fn rg(self) -> (A, B) { let s = self.s(); (s.0, s.1) }
16	#[inline(always)] fn gr(self) -> (B, A) { let s = self.s(); (s.1, s.0) }
17	#[inline(always)] fn gg(self) -> (B, B) { let s = self.s(); (s.1, s.1) }
18}
19pub trait TupleSwizzle3<A: Copy, B: Copy, C: Copy>: Sized {
20	fn s(self) -> (A, B, C);
21	#[inline(always)] fn x(self) -> A { self.s().0 }
22	#[inline(always)] fn y(self) -> B { self.s().1 }
23	#[inline(always)] fn z(self) -> C { self.s().2 }
24	#[inline(always)] fn xx(self) -> (A, A){ let s = self.s(); (s.0, s.0) }
25	#[inline(always)] fn xy(self) -> (A, B){ let s = self.s(); (s.0, s.1) }
26	#[inline(always)] fn xz(self) -> (A, C){ let s = self.s(); (s.0, s.2) }
27	#[inline(always)] fn yx(self) -> (B, A){ let s = self.s(); (s.1, s.0) }
28	#[inline(always)] fn yy(self) -> (B, B){ let s = self.s(); (s.1, s.1) }
29	#[inline(always)] fn yz(self) -> (B, C){ let s = self.s(); (s.1, s.2) }
30	#[inline(always)] fn zx(self) -> (C, A){ let s = self.s(); (s.2, s.0) }
31	#[inline(always)] fn zy(self) -> (C, B){ let s = self.s(); (s.2, s.1) }
32	#[inline(always)] fn zz(self) -> (C, C){ let s = self.s(); (s.2, s.2) }
33	#[inline(always)] fn xxx(self) -> (A, A, A) { let s = self.s(); (s.0, s.0, s.0) }
34	#[inline(always)] fn xxy(self) -> (A, A, B) { let s = self.s(); (s.0, s.0, s.1) }
35	#[inline(always)] fn xxz(self) -> (A, A, C) { let s = self.s(); (s.0, s.0, s.2) }
36	#[inline(always)] fn xyx(self) -> (A, B, A) { let s = self.s(); (s.0, s.1, s.0) }
37	#[inline(always)] fn xyy(self) -> (A, B, B) { let s = self.s(); (s.0, s.1, s.1) }
38	#[inline(always)] fn xyz(self) -> (A, B, C) { let s = self.s(); (s.0, s.1, s.2) }
39	#[inline(always)] fn xzx(self) -> (A, C, A) { let s = self.s(); (s.0, s.2, s.0) }
40	#[inline(always)] fn xzy(self) -> (A, C, B) { let s = self.s(); (s.0, s.2, s.1) }
41	#[inline(always)] fn xzz(self) -> (A, C, C) { let s = self.s(); (s.0, s.2, s.2) }
42	#[inline(always)] fn yxx(self) -> (B, A, A) { let s = self.s(); (s.1, s.0, s.0) }
43	#[inline(always)] fn yxy(self) -> (B, A, B) { let s = self.s(); (s.1, s.0, s.1) }
44	#[inline(always)] fn yxz(self) -> (B, A, C) { let s = self.s(); (s.1, s.0, s.2) }
45	#[inline(always)] fn yyx(self) -> (B, B, A) { let s = self.s(); (s.1, s.1, s.0) }
46	#[inline(always)] fn yyy(self) -> (B, B, B) { let s = self.s(); (s.1, s.1, s.1) }
47	#[inline(always)] fn yyz(self) -> (B, B, C) { let s = self.s(); (s.1, s.1, s.2) }
48	#[inline(always)] fn yzx(self) -> (B, C, A) { let s = self.s(); (s.1, s.2, s.0) }
49	#[inline(always)] fn yzy(self) -> (B, C, B) { let s = self.s(); (s.1, s.2, s.1) }
50	#[inline(always)] fn yzz(self) -> (B, C, C) { let s = self.s(); (s.1, s.2, s.2) }
51	#[inline(always)] fn zxx(self) -> (C, A, A) { let s = self.s(); (s.2, s.0, s.0) }
52	#[inline(always)] fn zxy(self) -> (C, A, B) { let s = self.s(); (s.2, s.0, s.1) }
53	#[inline(always)] fn zxz(self) -> (C, A, C) { let s = self.s(); (s.2, s.0, s.2) }
54	#[inline(always)] fn zyx(self) -> (C, B, A) { let s = self.s(); (s.2, s.1, s.0) }
55	#[inline(always)] fn zyy(self) -> (C, B, B) { let s = self.s(); (s.2, s.1, s.1) }
56	#[inline(always)] fn zyz(self) -> (C, B, C) { let s = self.s(); (s.2, s.1, s.2) }
57	#[inline(always)] fn zzx(self) -> (C, C, A) { let s = self.s(); (s.2, s.2, s.0) }
58	#[inline(always)] fn zzy(self) -> (C, C, B) { let s = self.s(); (s.2, s.2, s.1) }
59	#[inline(always)] fn zzz(self) -> (C, C, C) { let s = self.s(); (s.2, s.2, s.2) }
60
61	#[inline(always)] fn r(self) -> A { self.s().0 }
62	#[inline(always)] fn g(self) -> B { self.s().1 }
63	#[inline(always)] fn b(self) -> C { self.s().2 }
64	#[inline(always)] fn rr(self) -> (A, A){ let s = self.s(); (s.0, s.0) }
65	#[inline(always)] fn rg(self) -> (A, B){ let s = self.s(); (s.0, s.1) }
66	#[inline(always)] fn rb(self) -> (A, C){ let s = self.s(); (s.0, s.2) }
67	#[inline(always)] fn gr(self) -> (B, A){ let s = self.s(); (s.1, s.0) }
68	#[inline(always)] fn gg(self) -> (B, B){ let s = self.s(); (s.1, s.1) }
69	#[inline(always)] fn gb(self) -> (B, C){ let s = self.s(); (s.1, s.2) }
70	#[inline(always)] fn br(self) -> (C, A){ let s = self.s(); (s.2, s.0) }
71	#[inline(always)] fn bg(self) -> (C, B){ let s = self.s(); (s.2, s.1) }
72	#[inline(always)] fn bb(self) -> (C, C){ let s = self.s(); (s.2, s.2) }
73	#[inline(always)] fn rrr(self) -> (A, A, A) { let s = self.s(); (s.0, s.0, s.0) }
74	#[inline(always)] fn rrg(self) -> (A, A, B) { let s = self.s(); (s.0, s.0, s.1) }
75	#[inline(always)] fn rrb(self) -> (A, A, C) { let s = self.s(); (s.0, s.0, s.2) }
76	#[inline(always)] fn rgr(self) -> (A, B, A) { let s = self.s(); (s.0, s.1, s.0) }
77	#[inline(always)] fn rgg(self) -> (A, B, B) { let s = self.s(); (s.0, s.1, s.1) }
78	#[inline(always)] fn rgb(self) -> (A, B, C) { let s = self.s(); (s.0, s.1, s.2) }
79	#[inline(always)] fn rbr(self) -> (A, C, A) { let s = self.s(); (s.0, s.2, s.0) }
80	#[inline(always)] fn rbg(self) -> (A, C, B) { let s = self.s(); (s.0, s.2, s.1) }
81	#[inline(always)] fn rbb(self) -> (A, C, C) { let s = self.s(); (s.0, s.2, s.2) }
82	#[inline(always)] fn grr(self) -> (B, A, A) { let s = self.s(); (s.1, s.0, s.0) }
83	#[inline(always)] fn grg(self) -> (B, A, B) { let s = self.s(); (s.1, s.0, s.1) }
84	#[inline(always)] fn grb(self) -> (B, A, C) { let s = self.s(); (s.1, s.0, s.2) }
85	#[inline(always)] fn ggr(self) -> (B, B, A) { let s = self.s(); (s.1, s.1, s.0) }
86	#[inline(always)] fn ggg(self) -> (B, B, B) { let s = self.s(); (s.1, s.1, s.1) }
87	#[inline(always)] fn ggb(self) -> (B, B, C) { let s = self.s(); (s.1, s.1, s.2) }
88	#[inline(always)] fn gbr(self) -> (B, C, A) { let s = self.s(); (s.1, s.2, s.0) }
89	#[inline(always)] fn gbg(self) -> (B, C, B) { let s = self.s(); (s.1, s.2, s.1) }
90	#[inline(always)] fn gbb(self) -> (B, C, C) { let s = self.s(); (s.1, s.2, s.2) }
91	#[inline(always)] fn brr(self) -> (C, A, A) { let s = self.s(); (s.2, s.0, s.0) }
92	#[inline(always)] fn brg(self) -> (C, A, B) { let s = self.s(); (s.2, s.0, s.1) }
93	#[inline(always)] fn brb(self) -> (C, A, C) { let s = self.s(); (s.2, s.0, s.2) }
94	#[inline(always)] fn bgr(self) -> (C, B, A) { let s = self.s(); (s.2, s.1, s.0) }
95	#[inline(always)] fn bgg(self) -> (C, B, B) { let s = self.s(); (s.2, s.1, s.1) }
96	#[inline(always)] fn bgb(self) -> (C, B, C) { let s = self.s(); (s.2, s.1, s.2) }
97	#[inline(always)] fn bbr(self) -> (C, C, A) { let s = self.s(); (s.2, s.2, s.0) }
98	#[inline(always)] fn bbg(self) -> (C, C, B) { let s = self.s(); (s.2, s.2, s.1) }
99	#[inline(always)] fn bbb(self) -> (C, C, C) { let s = self.s(); (s.2, s.2, s.2) }
100}
101pub trait TupleSwizzle4<A: Copy, B: Copy, C: Copy, D: Copy>: Sized {
102	fn s(self) -> (A, B, C, D);
103	#[inline(always)] fn x(self) -> A { self.s().0 }
104	#[inline(always)] fn y(self) -> B { self.s().1 }
105	#[inline(always)] fn z(self) -> C { self.s().2 }
106	#[inline(always)] fn w(self) -> D { self.s().3 }
107	#[inline(always)] fn xx(self) -> (A, A) { let s = self.s(); (s.0, s.0) }
108	#[inline(always)] fn xy(self) -> (A, B) { let s = self.s(); (s.0, s.1) }
109	#[inline(always)] fn xz(self) -> (A, C) { let s = self.s(); (s.0, s.2) }
110	#[inline(always)] fn xw(self) -> (A, D) { let s = self.s(); (s.0, s.3) }
111	#[inline(always)] fn yx(self) -> (B, A) { let s = self.s(); (s.1, s.0) }
112	#[inline(always)] fn yy(self) -> (B, B) { let s = self.s(); (s.1, s.1) }
113	#[inline(always)] fn yz(self) -> (B, C) { let s = self.s(); (s.1, s.2) }
114	#[inline(always)] fn yw(self) -> (B, D) { let s = self.s(); (s.1, s.3) }
115	#[inline(always)] fn zx(self) -> (C, A) { let s = self.s(); (s.2, s.0) }
116	#[inline(always)] fn zy(self) -> (C, B) { let s = self.s(); (s.2, s.1) }
117	#[inline(always)] fn zz(self) -> (C, C) { let s = self.s(); (s.2, s.2) }
118	#[inline(always)] fn zw(self) -> (C, D) { let s = self.s(); (s.2, s.3) }
119	#[inline(always)] fn wx(self) -> (D, A) { let s = self.s(); (s.3, s.0) }
120	#[inline(always)] fn wy(self) -> (D, B) { let s = self.s(); (s.3, s.1) }
121	#[inline(always)] fn wz(self) -> (D, C) { let s = self.s(); (s.3, s.2) }
122	#[inline(always)] fn ww(self) -> (D, D) { let s = self.s(); (s.3, s.3) }
123	#[inline(always)] fn xxx(self) -> (A, A, A) { let s = self.s(); (s.0, s.0, s.0) }
124	#[inline(always)] fn xxy(self) -> (A, A, B) { let s = self.s(); (s.0, s.0, s.1) }
125	#[inline(always)] fn xxz(self) -> (A, A, C) { let s = self.s(); (s.0, s.0, s.2) }
126	#[inline(always)] fn xxw(self) -> (A, A, D) { let s = self.s(); (s.0, s.0, s.3) }
127	#[inline(always)] fn xyx(self) -> (A, B, A) { let s = self.s(); (s.0, s.1, s.0) }
128	#[inline(always)] fn xyy(self) -> (A, B, B) { let s = self.s(); (s.0, s.1, s.1) }
129	#[inline(always)] fn xyz(self) -> (A, B, C) { let s = self.s(); (s.0, s.1, s.2) }
130	#[inline(always)] fn xyw(self) -> (A, B, D) { let s = self.s(); (s.0, s.1, s.3) }
131	#[inline(always)] fn xzx(self) -> (A, C, A) { let s = self.s(); (s.0, s.2, s.0) }
132	#[inline(always)] fn xzy(self) -> (A, C, B) { let s = self.s(); (s.0, s.2, s.1) }
133	#[inline(always)] fn xzz(self) -> (A, C, C) { let s = self.s(); (s.0, s.2, s.2) }
134	#[inline(always)] fn xzw(self) -> (A, C, D) { let s = self.s(); (s.0, s.2, s.3) }
135	#[inline(always)] fn xwx(self) -> (A, D, A) { let s = self.s(); (s.0, s.3, s.0) }
136	#[inline(always)] fn xwy(self) -> (A, D, B) { let s = self.s(); (s.0, s.3, s.1) }
137	#[inline(always)] fn xwz(self) -> (A, D, C) { let s = self.s(); (s.0, s.3, s.2) }
138	#[inline(always)] fn xww(self) -> (A, D, D) { let s = self.s(); (s.0, s.3, s.3) }
139	#[inline(always)] fn yxx(self) -> (B, A, A) { let s = self.s(); (s.1, s.0, s.0) }
140	#[inline(always)] fn yxy(self) -> (B, A, B) { let s = self.s(); (s.1, s.0, s.1) }
141	#[inline(always)] fn yxz(self) -> (B, A, C) { let s = self.s(); (s.1, s.0, s.2) }
142	#[inline(always)] fn yxw(self) -> (B, A, D) { let s = self.s(); (s.1, s.0, s.3) }
143	#[inline(always)] fn yyx(self) -> (B, B, A) { let s = self.s(); (s.1, s.1, s.0) }
144	#[inline(always)] fn yyy(self) -> (B, B, B) { let s = self.s(); (s.1, s.1, s.1) }
145	#[inline(always)] fn yyz(self) -> (B, B, C) { let s = self.s(); (s.1, s.1, s.2) }
146	#[inline(always)] fn yyw(self) -> (B, B, D) { let s = self.s(); (s.1, s.1, s.3) }
147	#[inline(always)] fn yzx(self) -> (B, C, A) { let s = self.s(); (s.1, s.2, s.0) }
148	#[inline(always)] fn yzy(self) -> (B, C, B) { let s = self.s(); (s.1, s.2, s.1) }
149	#[inline(always)] fn yzz(self) -> (B, C, C) { let s = self.s(); (s.1, s.2, s.2) }
150	#[inline(always)] fn yzw(self) -> (B, C, D) { let s = self.s(); (s.1, s.2, s.3) }
151	#[inline(always)] fn ywx(self) -> (B, D, A) { let s = self.s(); (s.1, s.3, s.0) }
152	#[inline(always)] fn ywy(self) -> (B, D, B) { let s = self.s(); (s.1, s.3, s.1) }
153	#[inline(always)] fn ywz(self) -> (B, D, C) { let s = self.s(); (s.1, s.3, s.2) }
154	#[inline(always)] fn yww(self) -> (B, D, D) { let s = self.s(); (s.1, s.3, s.3) }
155	#[inline(always)] fn zxx(self) -> (C, A, A) { let s = self.s(); (s.2, s.0, s.0) }
156	#[inline(always)] fn zxy(self) -> (C, A, B) { let s = self.s(); (s.2, s.0, s.1) }
157	#[inline(always)] fn zxz(self) -> (C, A, C) { let s = self.s(); (s.2, s.0, s.2) }
158	#[inline(always)] fn zxw(self) -> (C, A, D) { let s = self.s(); (s.2, s.0, s.3) }
159	#[inline(always)] fn zyx(self) -> (C, B, A) { let s = self.s(); (s.2, s.1, s.0) }
160	#[inline(always)] fn zyy(self) -> (C, B, B) { let s = self.s(); (s.2, s.1, s.1) }
161	#[inline(always)] fn zyz(self) -> (C, B, C) { let s = self.s(); (s.2, s.1, s.2) }
162	#[inline(always)] fn zyw(self) -> (C, B, D) { let s = self.s(); (s.2, s.1, s.3) }
163	#[inline(always)] fn zzx(self) -> (C, C, A) { let s = self.s(); (s.2, s.2, s.0) }
164	#[inline(always)] fn zzy(self) -> (C, C, B) { let s = self.s(); (s.2, s.2, s.1) }
165	#[inline(always)] fn zzz(self) -> (C, C, C) { let s = self.s(); (s.2, s.2, s.2) }
166	#[inline(always)] fn zzw(self) -> (C, C, D) { let s = self.s(); (s.2, s.2, s.3) }
167	#[inline(always)] fn zwx(self) -> (C, D, A) { let s = self.s(); (s.2, s.3, s.0) }
168	#[inline(always)] fn zwy(self) -> (C, D, B) { let s = self.s(); (s.2, s.3, s.1) }
169	#[inline(always)] fn zwz(self) -> (C, D, C) { let s = self.s(); (s.2, s.3, s.2) }
170	#[inline(always)] fn zww(self) -> (C, D, D) { let s = self.s(); (s.2, s.3, s.3) }
171	#[inline(always)] fn wxx(self) -> (D, A, A) { let s = self.s(); (s.3, s.0, s.0) }
172	#[inline(always)] fn wxy(self) -> (D, A, B) { let s = self.s(); (s.3, s.0, s.1) }
173	#[inline(always)] fn wxz(self) -> (D, A, C) { let s = self.s(); (s.3, s.0, s.2) }
174	#[inline(always)] fn wxw(self) -> (D, A, D) { let s = self.s(); (s.3, s.0, s.3) }
175	#[inline(always)] fn wyx(self) -> (D, B, A) { let s = self.s(); (s.3, s.1, s.0) }
176	#[inline(always)] fn wyy(self) -> (D, B, B) { let s = self.s(); (s.3, s.1, s.1) }
177	#[inline(always)] fn wyz(self) -> (D, B, C) { let s = self.s(); (s.3, s.1, s.2) }
178	#[inline(always)] fn wyw(self) -> (D, B, D) { let s = self.s(); (s.3, s.1, s.3) }
179	#[inline(always)] fn wzx(self) -> (D, C, A) { let s = self.s(); (s.3, s.2, s.0) }
180	#[inline(always)] fn wzy(self) -> (D, C, B) { let s = self.s(); (s.3, s.2, s.1) }
181	#[inline(always)] fn wzz(self) -> (D, C, C) { let s = self.s(); (s.3, s.2, s.2) }
182	#[inline(always)] fn wzw(self) -> (D, C, D) { let s = self.s(); (s.3, s.2, s.3) }
183	#[inline(always)] fn wwx(self) -> (D, D, A) { let s = self.s(); (s.3, s.3, s.0) }
184	#[inline(always)] fn wwy(self) -> (D, D, B) { let s = self.s(); (s.3, s.3, s.1) }
185	#[inline(always)] fn wwz(self) -> (D, D, C) { let s = self.s(); (s.3, s.3, s.2) }
186	#[inline(always)] fn www(self) -> (D, D, D) { let s = self.s(); (s.3, s.3, s.3) }
187
188	#[inline(always)] fn xxxx(self) -> (A, A, A, A) { let s = self.s(); (s.0, s.0, s.0, s.0) }
189	#[inline(always)] fn xxxy(self) -> (A, A, A, B) { let s = self.s(); (s.0, s.0, s.0, s.1) }
190	#[inline(always)] fn xxxz(self) -> (A, A, A, C) { let s = self.s(); (s.0, s.0, s.0, s.2) }
191	#[inline(always)] fn xxxw(self) -> (A, A, A, D) { let s = self.s(); (s.0, s.0, s.0, s.3) }
192	#[inline(always)] fn xxyx(self) -> (A, A, B, A) { let s = self.s(); (s.0, s.0, s.1, s.0) }
193	#[inline(always)] fn xxyy(self) -> (A, A, B, B) { let s = self.s(); (s.0, s.0, s.1, s.1) }
194	#[inline(always)] fn xxyz(self) -> (A, A, B, C) { let s = self.s(); (s.0, s.0, s.1, s.2) }
195	#[inline(always)] fn xxyw(self) -> (A, A, B, D) { let s = self.s(); (s.0, s.0, s.1, s.3) }
196	#[inline(always)] fn xxzx(self) -> (A, A, C, A) { let s = self.s(); (s.0, s.0, s.2, s.0) }
197	#[inline(always)] fn xxzy(self) -> (A, A, C, B) { let s = self.s(); (s.0, s.0, s.2, s.1) }
198	#[inline(always)] fn xxzz(self) -> (A, A, C, C) { let s = self.s(); (s.0, s.0, s.2, s.2) }
199	#[inline(always)] fn xxzw(self) -> (A, A, C, D) { let s = self.s(); (s.0, s.0, s.2, s.3) }
200	#[inline(always)] fn xxwx(self) -> (A, A, D, A) { let s = self.s(); (s.0, s.0, s.3, s.0) }
201	#[inline(always)] fn xxwy(self) -> (A, A, D, B) { let s = self.s(); (s.0, s.0, s.3, s.1) }
202	#[inline(always)] fn xxwz(self) -> (A, A, D, C) { let s = self.s(); (s.0, s.0, s.3, s.2) }
203	#[inline(always)] fn xxww(self) -> (A, A, D, D) { let s = self.s(); (s.0, s.0, s.3, s.3) }
204	#[inline(always)] fn xyxx(self) -> (A, B, A, A) { let s = self.s(); (s.0, s.1, s.0, s.0) }
205	#[inline(always)] fn xyxy(self) -> (A, B, A, B) { let s = self.s(); (s.0, s.1, s.0, s.1) }
206	#[inline(always)] fn xyxz(self) -> (A, B, A, C) { let s = self.s(); (s.0, s.1, s.0, s.2) }
207	#[inline(always)] fn xyxw(self) -> (A, B, A, D) { let s = self.s(); (s.0, s.1, s.0, s.3) }
208	#[inline(always)] fn xyyx(self) -> (A, B, B, A) { let s = self.s(); (s.0, s.1, s.1, s.0) }
209	#[inline(always)] fn xyyy(self) -> (A, B, B, B) { let s = self.s(); (s.0, s.1, s.1, s.1) }
210	#[inline(always)] fn xyyz(self) -> (A, B, B, C) { let s = self.s(); (s.0, s.1, s.1, s.2) }
211	#[inline(always)] fn xyyw(self) -> (A, B, B, D) { let s = self.s(); (s.0, s.1, s.1, s.3) }
212	#[inline(always)] fn xyzx(self) -> (A, B, C, A) { let s = self.s(); (s.0, s.1, s.2, s.0) }
213	#[inline(always)] fn xyzy(self) -> (A, B, C, B) { let s = self.s(); (s.0, s.1, s.2, s.1) }
214	#[inline(always)] fn xyzz(self) -> (A, B, C, C) { let s = self.s(); (s.0, s.1, s.2, s.2) }
215	#[inline(always)] fn xyzw(self) -> (A, B, C, D) { let s = self.s(); (s.0, s.1, s.2, s.3) }
216	#[inline(always)] fn xywx(self) -> (A, B, D, A) { let s = self.s(); (s.0, s.1, s.3, s.0) }
217	#[inline(always)] fn xywy(self) -> (A, B, D, B) { let s = self.s(); (s.0, s.1, s.3, s.1) }
218	#[inline(always)] fn xywz(self) -> (A, B, D, C) { let s = self.s(); (s.0, s.1, s.3, s.2) }
219	#[inline(always)] fn xyww(self) -> (A, B, D, D) { let s = self.s(); (s.0, s.1, s.3, s.3) }
220	#[inline(always)] fn xzxx(self) -> (A, C, A, A) { let s = self.s(); (s.0, s.2, s.0, s.0) }
221	#[inline(always)] fn xzxy(self) -> (A, C, A, B) { let s = self.s(); (s.0, s.2, s.0, s.1) }
222	#[inline(always)] fn xzxz(self) -> (A, C, A, C) { let s = self.s(); (s.0, s.2, s.0, s.2) }
223	#[inline(always)] fn xzxw(self) -> (A, C, A, D) { let s = self.s(); (s.0, s.2, s.0, s.3) }
224	#[inline(always)] fn xzyx(self) -> (A, C, B, A) { let s = self.s(); (s.0, s.2, s.1, s.0) }
225	#[inline(always)] fn xzyy(self) -> (A, C, B, B) { let s = self.s(); (s.0, s.2, s.1, s.1) }
226	#[inline(always)] fn xzyz(self) -> (A, C, B, C) { let s = self.s(); (s.0, s.2, s.1, s.2) }
227	#[inline(always)] fn xzyw(self) -> (A, C, B, D) { let s = self.s(); (s.0, s.2, s.1, s.3) }
228	#[inline(always)] fn xzzx(self) -> (A, C, C, A) { let s = self.s(); (s.0, s.2, s.2, s.0) }
229	#[inline(always)] fn xzzy(self) -> (A, C, C, B) { let s = self.s(); (s.0, s.2, s.2, s.1) }
230	#[inline(always)] fn xzzz(self) -> (A, C, C, C) { let s = self.s(); (s.0, s.2, s.2, s.2) }
231	#[inline(always)] fn xzzw(self) -> (A, C, C, D) { let s = self.s(); (s.0, s.2, s.2, s.3) }
232	#[inline(always)] fn xzwx(self) -> (A, C, D, A) { let s = self.s(); (s.0, s.2, s.3, s.0) }
233	#[inline(always)] fn xzwy(self) -> (A, C, D, B) { let s = self.s(); (s.0, s.2, s.3, s.1) }
234	#[inline(always)] fn xzwz(self) -> (A, C, D, C) { let s = self.s(); (s.0, s.2, s.3, s.2) }
235	#[inline(always)] fn xzww(self) -> (A, C, D, D) { let s = self.s(); (s.0, s.2, s.3, s.3) }
236	#[inline(always)] fn xwxx(self) -> (A, D, A, A) { let s = self.s(); (s.0, s.3, s.0, s.0) }
237	#[inline(always)] fn xwxy(self) -> (A, D, A, B) { let s = self.s(); (s.0, s.3, s.0, s.1) }
238	#[inline(always)] fn xwxz(self) -> (A, D, A, C) { let s = self.s(); (s.0, s.3, s.0, s.2) }
239	#[inline(always)] fn xwxw(self) -> (A, D, A, D) { let s = self.s(); (s.0, s.3, s.0, s.3) }
240	#[inline(always)] fn xwyx(self) -> (A, D, B, A) { let s = self.s(); (s.0, s.3, s.1, s.0) }
241	#[inline(always)] fn xwyy(self) -> (A, D, B, B) { let s = self.s(); (s.0, s.3, s.1, s.1) }
242	#[inline(always)] fn xwyz(self) -> (A, D, B, C) { let s = self.s(); (s.0, s.3, s.1, s.2) }
243	#[inline(always)] fn xwyw(self) -> (A, D, B, D) { let s = self.s(); (s.0, s.3, s.1, s.3) }
244	#[inline(always)] fn xwzx(self) -> (A, D, C, A) { let s = self.s(); (s.0, s.3, s.2, s.0) }
245	#[inline(always)] fn xwzy(self) -> (A, D, C, B) { let s = self.s(); (s.0, s.3, s.2, s.1) }
246	#[inline(always)] fn xwzz(self) -> (A, D, C, C) { let s = self.s(); (s.0, s.3, s.2, s.2) }
247	#[inline(always)] fn xwzw(self) -> (A, D, C, D) { let s = self.s(); (s.0, s.3, s.2, s.3) }
248	#[inline(always)] fn xwwx(self) -> (A, D, D, A) { let s = self.s(); (s.0, s.3, s.3, s.0) }
249	#[inline(always)] fn xwwy(self) -> (A, D, D, B) { let s = self.s(); (s.0, s.3, s.3, s.1) }
250	#[inline(always)] fn xwwz(self) -> (A, D, D, C) { let s = self.s(); (s.0, s.3, s.3, s.2) }
251	#[inline(always)] fn xwww(self) -> (A, D, D, D) { let s = self.s(); (s.0, s.3, s.3, s.3) }
252
253	#[inline(always)] fn yxxx(self) -> (B, A, A, A) { let s = self.s(); (s.1, s.0, s.0, s.0) }
254	#[inline(always)] fn yxxy(self) -> (B, A, A, B) { let s = self.s(); (s.1, s.0, s.0, s.1) }
255	#[inline(always)] fn yxxz(self) -> (B, A, A, C) { let s = self.s(); (s.1, s.0, s.0, s.2) }
256	#[inline(always)] fn yxxw(self) -> (B, A, A, D) { let s = self.s(); (s.1, s.0, s.0, s.3) }
257	#[inline(always)] fn yxyx(self) -> (B, A, B, A) { let s = self.s(); (s.1, s.0, s.1, s.0) }
258	#[inline(always)] fn yxyy(self) -> (B, A, B, B) { let s = self.s(); (s.1, s.0, s.1, s.1) }
259	#[inline(always)] fn yxyz(self) -> (B, A, B, C) { let s = self.s(); (s.1, s.0, s.1, s.2) }
260	#[inline(always)] fn yxyw(self) -> (B, A, B, D) { let s = self.s(); (s.1, s.0, s.1, s.3) }
261	#[inline(always)] fn yxzx(self) -> (B, A, C, A) { let s = self.s(); (s.1, s.0, s.2, s.0) }
262	#[inline(always)] fn yxzy(self) -> (B, A, C, B) { let s = self.s(); (s.1, s.0, s.2, s.1) }
263	#[inline(always)] fn yxzz(self) -> (B, A, C, C) { let s = self.s(); (s.1, s.0, s.2, s.2) }
264	#[inline(always)] fn yxzw(self) -> (B, A, C, D) { let s = self.s(); (s.1, s.0, s.2, s.3) }
265	#[inline(always)] fn yxwx(self) -> (B, A, D, A) { let s = self.s(); (s.1, s.0, s.3, s.0) }
266	#[inline(always)] fn yxwy(self) -> (B, A, D, B) { let s = self.s(); (s.1, s.0, s.3, s.1) }
267	#[inline(always)] fn yxwz(self) -> (B, A, D, C) { let s = self.s(); (s.1, s.0, s.3, s.2) }
268	#[inline(always)] fn yxww(self) -> (B, A, D, D) { let s = self.s(); (s.1, s.0, s.3, s.3) }
269	#[inline(always)] fn yyxx(self) -> (B, B, A, A) { let s = self.s(); (s.1, s.1, s.0, s.0) }
270	#[inline(always)] fn yyxy(self) -> (B, B, A, B) { let s = self.s(); (s.1, s.1, s.0, s.1) }
271	#[inline(always)] fn yyxz(self) -> (B, B, A, C) { let s = self.s(); (s.1, s.1, s.0, s.2) }
272	#[inline(always)] fn yyxw(self) -> (B, B, A, D) { let s = self.s(); (s.1, s.1, s.0, s.3) }
273	#[inline(always)] fn yyyx(self) -> (B, B, B, A) { let s = self.s(); (s.1, s.1, s.1, s.0) }
274	#[inline(always)] fn yyyy(self) -> (B, B, B, B) { let s = self.s(); (s.1, s.1, s.1, s.1) }
275	#[inline(always)] fn yyyz(self) -> (B, B, B, C) { let s = self.s(); (s.1, s.1, s.1, s.2) }
276	#[inline(always)] fn yyyw(self) -> (B, B, B, D) { let s = self.s(); (s.1, s.1, s.1, s.3) }
277	#[inline(always)] fn yyzx(self) -> (B, B, C, A) { let s = self.s(); (s.1, s.1, s.2, s.0) }
278	#[inline(always)] fn yyzy(self) -> (B, B, C, B) { let s = self.s(); (s.1, s.1, s.2, s.1) }
279	#[inline(always)] fn yyzz(self) -> (B, B, C, C) { let s = self.s(); (s.1, s.1, s.2, s.2) }
280	#[inline(always)] fn yyzw(self) -> (B, B, C, D) { let s = self.s(); (s.1, s.1, s.2, s.3) }
281	#[inline(always)] fn yywx(self) -> (B, B, D, A) { let s = self.s(); (s.1, s.1, s.3, s.0) }
282	#[inline(always)] fn yywy(self) -> (B, B, D, B) { let s = self.s(); (s.1, s.1, s.3, s.1) }
283	#[inline(always)] fn yywz(self) -> (B, B, D, C) { let s = self.s(); (s.1, s.1, s.3, s.2) }
284	#[inline(always)] fn yyww(self) -> (B, B, D, D) { let s = self.s(); (s.1, s.1, s.3, s.3) }
285	#[inline(always)] fn yzxx(self) -> (B, C, A, A) { let s = self.s(); (s.1, s.2, s.0, s.0) }
286	#[inline(always)] fn yzxy(self) -> (B, C, A, B) { let s = self.s(); (s.1, s.2, s.0, s.1) }
287	#[inline(always)] fn yzxz(self) -> (B, C, A, C) { let s = self.s(); (s.1, s.2, s.0, s.2) }
288	#[inline(always)] fn yzxw(self) -> (B, C, A, D) { let s = self.s(); (s.1, s.2, s.0, s.3) }
289	#[inline(always)] fn yzyx(self) -> (B, C, B, A) { let s = self.s(); (s.1, s.2, s.1, s.0) }
290	#[inline(always)] fn yzyy(self) -> (B, C, B, B) { let s = self.s(); (s.1, s.2, s.1, s.1) }
291	#[inline(always)] fn yzyz(self) -> (B, C, B, C) { let s = self.s(); (s.1, s.2, s.1, s.2) }
292	#[inline(always)] fn yzyw(self) -> (B, C, B, D) { let s = self.s(); (s.1, s.2, s.1, s.3) }
293	#[inline(always)] fn yzzx(self) -> (B, C, C, A) { let s = self.s(); (s.1, s.2, s.2, s.0) }
294	#[inline(always)] fn yzzy(self) -> (B, C, C, B) { let s = self.s(); (s.1, s.2, s.2, s.1) }
295	#[inline(always)] fn yzzz(self) -> (B, C, C, C) { let s = self.s(); (s.1, s.2, s.2, s.2) }
296	#[inline(always)] fn yzzw(self) -> (B, C, C, D) { let s = self.s(); (s.1, s.2, s.2, s.3) }
297	#[inline(always)] fn yzwx(self) -> (B, C, D, A) { let s = self.s(); (s.1, s.2, s.3, s.0) }
298	#[inline(always)] fn yzwy(self) -> (B, C, D, B) { let s = self.s(); (s.1, s.2, s.3, s.1) }
299	#[inline(always)] fn yzwz(self) -> (B, C, D, C) { let s = self.s(); (s.1, s.2, s.3, s.2) }
300	#[inline(always)] fn yzww(self) -> (B, C, D, D) { let s = self.s(); (s.1, s.2, s.3, s.3) }
301	#[inline(always)] fn ywxx(self) -> (B, D, A, A) { let s = self.s(); (s.1, s.3, s.0, s.0) }
302	#[inline(always)] fn ywxy(self) -> (B, D, A, B) { let s = self.s(); (s.1, s.3, s.0, s.1) }
303	#[inline(always)] fn ywxz(self) -> (B, D, A, C) { let s = self.s(); (s.1, s.3, s.0, s.2) }
304	#[inline(always)] fn ywxw(self) -> (B, D, A, D) { let s = self.s(); (s.1, s.3, s.0, s.3) }
305	#[inline(always)] fn ywyx(self) -> (B, D, B, A) { let s = self.s(); (s.1, s.3, s.1, s.0) }
306	#[inline(always)] fn ywyy(self) -> (B, D, B, B) { let s = self.s(); (s.1, s.3, s.1, s.1) }
307	#[inline(always)] fn ywyz(self) -> (B, D, B, C) { let s = self.s(); (s.1, s.3, s.1, s.2) }
308	#[inline(always)] fn ywyw(self) -> (B, D, B, D) { let s = self.s(); (s.1, s.3, s.1, s.3) }
309	#[inline(always)] fn ywzx(self) -> (B, D, C, A) { let s = self.s(); (s.1, s.3, s.2, s.0) }
310	#[inline(always)] fn ywzy(self) -> (B, D, C, B) { let s = self.s(); (s.1, s.3, s.2, s.1) }
311	#[inline(always)] fn ywzz(self) -> (B, D, C, C) { let s = self.s(); (s.1, s.3, s.2, s.2) }
312	#[inline(always)] fn ywzw(self) -> (B, D, C, D) { let s = self.s(); (s.1, s.3, s.2, s.3) }
313	#[inline(always)] fn ywwx(self) -> (B, D, D, A) { let s = self.s(); (s.1, s.3, s.3, s.0) }
314	#[inline(always)] fn ywwy(self) -> (B, D, D, B) { let s = self.s(); (s.1, s.3, s.3, s.1) }
315	#[inline(always)] fn ywwz(self) -> (B, D, D, C) { let s = self.s(); (s.1, s.3, s.3, s.2) }
316	#[inline(always)] fn ywww(self) -> (B, D, D, D) { let s = self.s(); (s.1, s.3, s.3, s.3) }
317
318	#[inline(always)] fn zxxx(self) -> (C, A, A, A) { let s = self.s(); (s.2, s.0, s.0, s.0) }
319	#[inline(always)] fn zxxy(self) -> (C, A, A, B) { let s = self.s(); (s.2, s.0, s.0, s.1) }
320	#[inline(always)] fn zxxz(self) -> (C, A, A, C) { let s = self.s(); (s.2, s.0, s.0, s.2) }
321	#[inline(always)] fn zxxw(self) -> (C, A, A, D) { let s = self.s(); (s.2, s.0, s.0, s.3) }
322	#[inline(always)] fn zxyx(self) -> (C, A, B, A) { let s = self.s(); (s.2, s.0, s.1, s.0) }
323	#[inline(always)] fn zxyy(self) -> (C, A, B, B) { let s = self.s(); (s.2, s.0, s.1, s.1) }
324	#[inline(always)] fn zxyz(self) -> (C, A, B, C) { let s = self.s(); (s.2, s.0, s.1, s.2) }
325	#[inline(always)] fn zxyw(self) -> (C, A, B, D) { let s = self.s(); (s.2, s.0, s.1, s.3) }
326	#[inline(always)] fn zxzx(self) -> (C, A, C, A) { let s = self.s(); (s.2, s.0, s.2, s.0) }
327	#[inline(always)] fn zxzy(self) -> (C, A, C, B) { let s = self.s(); (s.2, s.0, s.2, s.1) }
328	#[inline(always)] fn zxzz(self) -> (C, A, C, C) { let s = self.s(); (s.2, s.0, s.2, s.2) }
329	#[inline(always)] fn zxzw(self) -> (C, A, C, D) { let s = self.s(); (s.2, s.0, s.2, s.3) }
330	#[inline(always)] fn zxwx(self) -> (C, A, D, A) { let s = self.s(); (s.2, s.0, s.3, s.0) }
331	#[inline(always)] fn zxwy(self) -> (C, A, D, B) { let s = self.s(); (s.2, s.0, s.3, s.1) }
332	#[inline(always)] fn zxwz(self) -> (C, A, D, C) { let s = self.s(); (s.2, s.0, s.3, s.2) }
333	#[inline(always)] fn zxww(self) -> (C, A, D, D) { let s = self.s(); (s.2, s.0, s.3, s.3) }
334	#[inline(always)] fn zyxx(self) -> (C, B, A, A) { let s = self.s(); (s.2, s.1, s.0, s.0) }
335	#[inline(always)] fn zyxy(self) -> (C, B, A, B) { let s = self.s(); (s.2, s.1, s.0, s.1) }
336	#[inline(always)] fn zyxz(self) -> (C, B, A, C) { let s = self.s(); (s.2, s.1, s.0, s.2) }
337	#[inline(always)] fn zyxw(self) -> (C, B, A, D) { let s = self.s(); (s.2, s.1, s.0, s.3) }
338	#[inline(always)] fn zyyx(self) -> (C, B, B, A) { let s = self.s(); (s.2, s.1, s.1, s.0) }
339	#[inline(always)] fn zyyy(self) -> (C, B, B, B) { let s = self.s(); (s.2, s.1, s.1, s.1) }
340	#[inline(always)] fn zyyz(self) -> (C, B, B, C) { let s = self.s(); (s.2, s.1, s.1, s.2) }
341	#[inline(always)] fn zyyw(self) -> (C, B, B, D) { let s = self.s(); (s.2, s.1, s.1, s.3) }
342	#[inline(always)] fn zyzx(self) -> (C, B, C, A) { let s = self.s(); (s.2, s.1, s.2, s.0) }
343	#[inline(always)] fn zyzy(self) -> (C, B, C, B) { let s = self.s(); (s.2, s.1, s.2, s.1) }
344	#[inline(always)] fn zyzz(self) -> (C, B, C, C) { let s = self.s(); (s.2, s.1, s.2, s.2) }
345	#[inline(always)] fn zyzw(self) -> (C, B, C, D) { let s = self.s(); (s.2, s.1, s.2, s.3) }
346	#[inline(always)] fn zywx(self) -> (C, B, D, A) { let s = self.s(); (s.2, s.1, s.3, s.0) }
347	#[inline(always)] fn zywy(self) -> (C, B, D, B) { let s = self.s(); (s.2, s.1, s.3, s.1) }
348	#[inline(always)] fn zywz(self) -> (C, B, D, C) { let s = self.s(); (s.2, s.1, s.3, s.2) }
349	#[inline(always)] fn zyww(self) -> (C, B, D, D) { let s = self.s(); (s.2, s.1, s.3, s.3) }
350	#[inline(always)] fn zzxx(self) -> (C, C, A, A) { let s = self.s(); (s.2, s.2, s.0, s.0) }
351	#[inline(always)] fn zzxy(self) -> (C, C, A, B) { let s = self.s(); (s.2, s.2, s.0, s.1) }
352	#[inline(always)] fn zzxz(self) -> (C, C, A, C) { let s = self.s(); (s.2, s.2, s.0, s.2) }
353	#[inline(always)] fn zzxw(self) -> (C, C, A, D) { let s = self.s(); (s.2, s.2, s.0, s.3) }
354	#[inline(always)] fn zzyx(self) -> (C, C, B, A) { let s = self.s(); (s.2, s.2, s.1, s.0) }
355	#[inline(always)] fn zzyy(self) -> (C, C, B, B) { let s = self.s(); (s.2, s.2, s.1, s.1) }
356	#[inline(always)] fn zzyz(self) -> (C, C, B, C) { let s = self.s(); (s.2, s.2, s.1, s.2) }
357	#[inline(always)] fn zzyw(self) -> (C, C, B, D) { let s = self.s(); (s.2, s.2, s.1, s.3) }
358	#[inline(always)] fn zzzx(self) -> (C, C, C, A) { let s = self.s(); (s.2, s.2, s.2, s.0) }
359	#[inline(always)] fn zzzy(self) -> (C, C, C, B) { let s = self.s(); (s.2, s.2, s.2, s.1) }
360	#[inline(always)] fn zzzz(self) -> (C, C, C, C) { let s = self.s(); (s.2, s.2, s.2, s.2) }
361	#[inline(always)] fn zzzw(self) -> (C, C, C, D) { let s = self.s(); (s.2, s.2, s.2, s.3) }
362	#[inline(always)] fn zzwx(self) -> (C, C, D, A) { let s = self.s(); (s.2, s.2, s.3, s.0) }
363	#[inline(always)] fn zzwy(self) -> (C, C, D, B) { let s = self.s(); (s.2, s.2, s.3, s.1) }
364	#[inline(always)] fn zzwz(self) -> (C, C, D, C) { let s = self.s(); (s.2, s.2, s.3, s.2) }
365	#[inline(always)] fn zzww(self) -> (C, C, D, D) { let s = self.s(); (s.2, s.2, s.3, s.3) }
366	#[inline(always)] fn zwxx(self) -> (C, D, A, A) { let s = self.s(); (s.2, s.3, s.0, s.0) }
367	#[inline(always)] fn zwxy(self) -> (C, D, A, B) { let s = self.s(); (s.2, s.3, s.0, s.1) }
368	#[inline(always)] fn zwxz(self) -> (C, D, A, C) { let s = self.s(); (s.2, s.3, s.0, s.2) }
369	#[inline(always)] fn zwxw(self) -> (C, D, A, D) { let s = self.s(); (s.2, s.3, s.0, s.3) }
370	#[inline(always)] fn zwyx(self) -> (C, D, B, A) { let s = self.s(); (s.2, s.3, s.1, s.0) }
371	#[inline(always)] fn zwyy(self) -> (C, D, B, B) { let s = self.s(); (s.2, s.3, s.1, s.1) }
372	#[inline(always)] fn zwyz(self) -> (C, D, B, C) { let s = self.s(); (s.2, s.3, s.1, s.2) }
373	#[inline(always)] fn zwyw(self) -> (C, D, B, D) { let s = self.s(); (s.2, s.3, s.1, s.3) }
374	#[inline(always)] fn zwzx(self) -> (C, D, C, A) { let s = self.s(); (s.2, s.3, s.2, s.0) }
375	#[inline(always)] fn zwzy(self) -> (C, D, C, B) { let s = self.s(); (s.2, s.3, s.2, s.1) }
376	#[inline(always)] fn zwzz(self) -> (C, D, C, C) { let s = self.s(); (s.2, s.3, s.2, s.2) }
377	#[inline(always)] fn zwzw(self) -> (C, D, C, D) { let s = self.s(); (s.2, s.3, s.2, s.3) }
378	#[inline(always)] fn zwwx(self) -> (C, D, D, A) { let s = self.s(); (s.2, s.3, s.3, s.0) }
379	#[inline(always)] fn zwwy(self) -> (C, D, D, B) { let s = self.s(); (s.2, s.3, s.3, s.1) }
380	#[inline(always)] fn zwwz(self) -> (C, D, D, C) { let s = self.s(); (s.2, s.3, s.3, s.2) }
381	#[inline(always)] fn zwww(self) -> (C, D, D, D) { let s = self.s(); (s.2, s.3, s.3, s.3) }
382
383	#[inline(always)] fn wxxx(self) -> (D, A, A, A) { let s = self.s(); (s.3, s.0, s.0, s.0) }
384	#[inline(always)] fn wxxy(self) -> (D, A, A, B) { let s = self.s(); (s.3, s.0, s.0, s.1) }
385	#[inline(always)] fn wxxz(self) -> (D, A, A, C) { let s = self.s(); (s.3, s.0, s.0, s.2) }
386	#[inline(always)] fn wxxw(self) -> (D, A, A, D) { let s = self.s(); (s.3, s.0, s.0, s.3) }
387	#[inline(always)] fn wxyx(self) -> (D, A, B, A) { let s = self.s(); (s.3, s.0, s.1, s.0) }
388	#[inline(always)] fn wxyy(self) -> (D, A, B, B) { let s = self.s(); (s.3, s.0, s.1, s.1) }
389	#[inline(always)] fn wxyz(self) -> (D, A, B, C) { let s = self.s(); (s.3, s.0, s.1, s.2) }
390	#[inline(always)] fn wxyw(self) -> (D, A, B, D) { let s = self.s(); (s.3, s.0, s.1, s.3) }
391	#[inline(always)] fn wxzx(self) -> (D, A, C, A) { let s = self.s(); (s.3, s.0, s.2, s.0) }
392	#[inline(always)] fn wxzy(self) -> (D, A, C, B) { let s = self.s(); (s.3, s.0, s.2, s.1) }
393	#[inline(always)] fn wxzz(self) -> (D, A, C, C) { let s = self.s(); (s.3, s.0, s.2, s.2) }
394	#[inline(always)] fn wxzw(self) -> (D, A, C, D) { let s = self.s(); (s.3, s.0, s.2, s.3) }
395	#[inline(always)] fn wxwx(self) -> (D, A, D, A) { let s = self.s(); (s.3, s.0, s.3, s.0) }
396	#[inline(always)] fn wxwy(self) -> (D, A, D, B) { let s = self.s(); (s.3, s.0, s.3, s.1) }
397	#[inline(always)] fn wxwz(self) -> (D, A, D, C) { let s = self.s(); (s.3, s.0, s.3, s.2) }
398	#[inline(always)] fn wxww(self) -> (D, A, D, D) { let s = self.s(); (s.3, s.0, s.3, s.3) }
399	#[inline(always)] fn wyxx(self) -> (D, B, A, A) { let s = self.s(); (s.3, s.1, s.0, s.0) }
400	#[inline(always)] fn wyxy(self) -> (D, B, A, B) { let s = self.s(); (s.3, s.1, s.0, s.1) }
401	#[inline(always)] fn wyxz(self) -> (D, B, A, C) { let s = self.s(); (s.3, s.1, s.0, s.2) }
402	#[inline(always)] fn wyxw(self) -> (D, B, A, D) { let s = self.s(); (s.3, s.1, s.0, s.3) }
403	#[inline(always)] fn wyyx(self) -> (D, B, B, A) { let s = self.s(); (s.3, s.1, s.1, s.0) }
404	#[inline(always)] fn wyyy(self) -> (D, B, B, B) { let s = self.s(); (s.3, s.1, s.1, s.1) }
405	#[inline(always)] fn wyyz(self) -> (D, B, B, C) { let s = self.s(); (s.3, s.1, s.1, s.2) }
406	#[inline(always)] fn wyyw(self) -> (D, B, B, D) { let s = self.s(); (s.3, s.1, s.1, s.3) }
407	#[inline(always)] fn wyzx(self) -> (D, B, C, A) { let s = self.s(); (s.3, s.1, s.2, s.0) }
408	#[inline(always)] fn wyzy(self) -> (D, B, C, B) { let s = self.s(); (s.3, s.1, s.2, s.1) }
409	#[inline(always)] fn wyzz(self) -> (D, B, C, C) { let s = self.s(); (s.3, s.1, s.2, s.2) }
410	#[inline(always)] fn wyzw(self) -> (D, B, C, D) { let s = self.s(); (s.3, s.1, s.2, s.3) }
411	#[inline(always)] fn wywx(self) -> (D, B, D, A) { let s = self.s(); (s.3, s.1, s.3, s.0) }
412	#[inline(always)] fn wywy(self) -> (D, B, D, B) { let s = self.s(); (s.3, s.1, s.3, s.1) }
413	#[inline(always)] fn wywz(self) -> (D, B, D, C) { let s = self.s(); (s.3, s.1, s.3, s.2) }
414	#[inline(always)] fn wyww(self) -> (D, B, D, D) { let s = self.s(); (s.3, s.1, s.3, s.3) }
415	#[inline(always)] fn wzxx(self) -> (D, C, A, A) { let s = self.s(); (s.3, s.2, s.0, s.0) }
416	#[inline(always)] fn wzxy(self) -> (D, C, A, B) { let s = self.s(); (s.3, s.2, s.0, s.1) }
417	#[inline(always)] fn wzxz(self) -> (D, C, A, C) { let s = self.s(); (s.3, s.2, s.0, s.2) }
418	#[inline(always)] fn wzxw(self) -> (D, C, A, D) { let s = self.s(); (s.3, s.2, s.0, s.3) }
419	#[inline(always)] fn wzyx(self) -> (D, C, B, A) { let s = self.s(); (s.3, s.2, s.1, s.0) }
420	#[inline(always)] fn wzyy(self) -> (D, C, B, B) { let s = self.s(); (s.3, s.2, s.1, s.1) }
421	#[inline(always)] fn wzyz(self) -> (D, C, B, C) { let s = self.s(); (s.3, s.2, s.1, s.2) }
422	#[inline(always)] fn wzyw(self) -> (D, C, B, D) { let s = self.s(); (s.3, s.2, s.1, s.3) }
423	#[inline(always)] fn wzzx(self) -> (D, C, C, A) { let s = self.s(); (s.3, s.2, s.2, s.0) }
424	#[inline(always)] fn wzzy(self) -> (D, C, C, B) { let s = self.s(); (s.3, s.2, s.2, s.1) }
425	#[inline(always)] fn wzzz(self) -> (D, C, C, C) { let s = self.s(); (s.3, s.2, s.2, s.2) }
426	#[inline(always)] fn wzzw(self) -> (D, C, C, D) { let s = self.s(); (s.3, s.2, s.2, s.3) }
427	#[inline(always)] fn wzwx(self) -> (D, C, D, A) { let s = self.s(); (s.3, s.2, s.3, s.0) }
428	#[inline(always)] fn wzwy(self) -> (D, C, D, B) { let s = self.s(); (s.3, s.2, s.3, s.1) }
429	#[inline(always)] fn wzwz(self) -> (D, C, D, C) { let s = self.s(); (s.3, s.2, s.3, s.2) }
430	#[inline(always)] fn wzww(self) -> (D, C, D, D) { let s = self.s(); (s.3, s.2, s.3, s.3) }
431	#[inline(always)] fn wwxx(self) -> (D, D, A, A) { let s = self.s(); (s.3, s.3, s.0, s.0) }
432	#[inline(always)] fn wwxy(self) -> (D, D, A, B) { let s = self.s(); (s.3, s.3, s.0, s.1) }
433	#[inline(always)] fn wwxz(self) -> (D, D, A, C) { let s = self.s(); (s.3, s.3, s.0, s.2) }
434	#[inline(always)] fn wwxw(self) -> (D, D, A, D) { let s = self.s(); (s.3, s.3, s.0, s.3) }
435	#[inline(always)] fn wwyx(self) -> (D, D, B, A) { let s = self.s(); (s.3, s.3, s.1, s.0) }
436	#[inline(always)] fn wwyy(self) -> (D, D, B, B) { let s = self.s(); (s.3, s.3, s.1, s.1) }
437	#[inline(always)] fn wwyz(self) -> (D, D, B, C) { let s = self.s(); (s.3, s.3, s.1, s.2) }
438	#[inline(always)] fn wwyw(self) -> (D, D, B, D) { let s = self.s(); (s.3, s.3, s.1, s.3) }
439	#[inline(always)] fn wwzx(self) -> (D, D, C, A) { let s = self.s(); (s.3, s.3, s.2, s.0) }
440	#[inline(always)] fn wwzy(self) -> (D, D, C, B) { let s = self.s(); (s.3, s.3, s.2, s.1) }
441	#[inline(always)] fn wwzz(self) -> (D, D, C, C) { let s = self.s(); (s.3, s.3, s.2, s.2) }
442	#[inline(always)] fn wwzw(self) -> (D, D, C, D) { let s = self.s(); (s.3, s.3, s.2, s.3) }
443	#[inline(always)] fn wwwx(self) -> (D, D, D, A) { let s = self.s(); (s.3, s.3, s.3, s.0) }
444	#[inline(always)] fn wwwy(self) -> (D, D, D, B) { let s = self.s(); (s.3, s.3, s.3, s.1) }
445	#[inline(always)] fn wwwz(self) -> (D, D, D, C) { let s = self.s(); (s.3, s.3, s.3, s.2) }
446	#[inline(always)] fn wwww(self) -> (D, D, D, D) { let s = self.s(); (s.3, s.3, s.3, s.3) }
447
448	#[inline(always)] fn r(self) -> A { self.s().0 }
449	#[inline(always)] fn g(self) -> B { self.s().1 }
450	#[inline(always)] fn b(self) -> C { self.s().2 }
451	#[inline(always)] fn a(self) -> D { self.s().3 }
452	#[inline(always)] fn rr(self) -> (A, A) { let s = self.s(); (s.0, s.0) }
453	#[inline(always)] fn rg(self) -> (A, B) { let s = self.s(); (s.0, s.1) }
454	#[inline(always)] fn rb(self) -> (A, C) { let s = self.s(); (s.0, s.2) }
455	#[inline(always)] fn ra(self) -> (A, D) { let s = self.s(); (s.0, s.3) }
456	#[inline(always)] fn gr(self) -> (B, A) { let s = self.s(); (s.1, s.0) }
457	#[inline(always)] fn gg(self) -> (B, B) { let s = self.s(); (s.1, s.1) }
458	#[inline(always)] fn gb(self) -> (B, C) { let s = self.s(); (s.1, s.2) }
459	#[inline(always)] fn ga(self) -> (B, D) { let s = self.s(); (s.1, s.3) }
460	#[inline(always)] fn br(self) -> (C, A) { let s = self.s(); (s.2, s.0) }
461	#[inline(always)] fn bg(self) -> (C, B) { let s = self.s(); (s.2, s.1) }
462	#[inline(always)] fn bb(self) -> (C, C) { let s = self.s(); (s.2, s.2) }
463	#[inline(always)] fn ba(self) -> (C, D) { let s = self.s(); (s.2, s.3) }
464	#[inline(always)] fn ar(self) -> (D, A) { let s = self.s(); (s.3, s.0) }
465	#[inline(always)] fn ag(self) -> (D, B) { let s = self.s(); (s.3, s.1) }
466	#[inline(always)] fn ab(self) -> (D, C) { let s = self.s(); (s.3, s.2) }
467	#[inline(always)] fn aa(self) -> (D, D) { let s = self.s(); (s.3, s.3) }
468	#[inline(always)] fn rrr(self) -> (A, A, A) { let s = self.s(); (s.0, s.0, s.0) }
469	#[inline(always)] fn rrg(self) -> (A, A, B) { let s = self.s(); (s.0, s.0, s.1) }
470	#[inline(always)] fn rrb(self) -> (A, A, C) { let s = self.s(); (s.0, s.0, s.2) }
471	#[inline(always)] fn rra(self) -> (A, A, D) { let s = self.s(); (s.0, s.0, s.3) }
472	#[inline(always)] fn rgr(self) -> (A, B, A) { let s = self.s(); (s.0, s.1, s.0) }
473	#[inline(always)] fn rgg(self) -> (A, B, B) { let s = self.s(); (s.0, s.1, s.1) }
474	#[inline(always)] fn rgb(self) -> (A, B, C) { let s = self.s(); (s.0, s.1, s.2) }
475	#[inline(always)] fn rga(self) -> (A, B, D) { let s = self.s(); (s.0, s.1, s.3) }
476	#[inline(always)] fn rbr(self) -> (A, C, A) { let s = self.s(); (s.0, s.2, s.0) }
477	#[inline(always)] fn rbg(self) -> (A, C, B) { let s = self.s(); (s.0, s.2, s.1) }
478	#[inline(always)] fn rbb(self) -> (A, C, C) { let s = self.s(); (s.0, s.2, s.2) }
479	#[inline(always)] fn rba(self) -> (A, C, D) { let s = self.s(); (s.0, s.2, s.3) }
480	#[inline(always)] fn rar(self) -> (A, D, A) { let s = self.s(); (s.0, s.3, s.0) }
481	#[inline(always)] fn rag(self) -> (A, D, B) { let s = self.s(); (s.0, s.3, s.1) }
482	#[inline(always)] fn rab(self) -> (A, D, C) { let s = self.s(); (s.0, s.3, s.2) }
483	#[inline(always)] fn raa(self) -> (A, D, D) { let s = self.s(); (s.0, s.3, s.3) }
484	#[inline(always)] fn grr(self) -> (B, A, A) { let s = self.s(); (s.1, s.0, s.0) }
485	#[inline(always)] fn grg(self) -> (B, A, B) { let s = self.s(); (s.1, s.0, s.1) }
486	#[inline(always)] fn grb(self) -> (B, A, C) { let s = self.s(); (s.1, s.0, s.2) }
487	#[inline(always)] fn gra(self) -> (B, A, D) { let s = self.s(); (s.1, s.0, s.3) }
488	#[inline(always)] fn ggr(self) -> (B, B, A) { let s = self.s(); (s.1, s.1, s.0) }
489	#[inline(always)] fn ggg(self) -> (B, B, B) { let s = self.s(); (s.1, s.1, s.1) }
490	#[inline(always)] fn ggb(self) -> (B, B, C) { let s = self.s(); (s.1, s.1, s.2) }
491	#[inline(always)] fn gga(self) -> (B, B, D) { let s = self.s(); (s.1, s.1, s.3) }
492	#[inline(always)] fn gbr(self) -> (B, C, A) { let s = self.s(); (s.1, s.2, s.0) }
493	#[inline(always)] fn gbg(self) -> (B, C, B) { let s = self.s(); (s.1, s.2, s.1) }
494	#[inline(always)] fn gbb(self) -> (B, C, C) { let s = self.s(); (s.1, s.2, s.2) }
495	#[inline(always)] fn gba(self) -> (B, C, D) { let s = self.s(); (s.1, s.2, s.3) }
496	#[inline(always)] fn gar(self) -> (B, D, A) { let s = self.s(); (s.1, s.3, s.0) }
497	#[inline(always)] fn gag(self) -> (B, D, B) { let s = self.s(); (s.1, s.3, s.1) }
498	#[inline(always)] fn gab(self) -> (B, D, C) { let s = self.s(); (s.1, s.3, s.2) }
499	#[inline(always)] fn gaa(self) -> (B, D, D) { let s = self.s(); (s.1, s.3, s.3) }
500	#[inline(always)] fn brr(self) -> (C, A, A) { let s = self.s(); (s.2, s.0, s.0) }
501	#[inline(always)] fn brg(self) -> (C, A, B) { let s = self.s(); (s.2, s.0, s.1) }
502	#[inline(always)] fn brb(self) -> (C, A, C) { let s = self.s(); (s.2, s.0, s.2) }
503	#[inline(always)] fn bra(self) -> (C, A, D) { let s = self.s(); (s.2, s.0, s.3) }
504	#[inline(always)] fn bgr(self) -> (C, B, A) { let s = self.s(); (s.2, s.1, s.0) }
505	#[inline(always)] fn bgg(self) -> (C, B, B) { let s = self.s(); (s.2, s.1, s.1) }
506	#[inline(always)] fn bgb(self) -> (C, B, C) { let s = self.s(); (s.2, s.1, s.2) }
507	#[inline(always)] fn bga(self) -> (C, B, D) { let s = self.s(); (s.2, s.1, s.3) }
508	#[inline(always)] fn bbr(self) -> (C, C, A) { let s = self.s(); (s.2, s.2, s.0) }
509	#[inline(always)] fn bbg(self) -> (C, C, B) { let s = self.s(); (s.2, s.2, s.1) }
510	#[inline(always)] fn bbb(self) -> (C, C, C) { let s = self.s(); (s.2, s.2, s.2) }
511	#[inline(always)] fn bba(self) -> (C, C, D) { let s = self.s(); (s.2, s.2, s.3) }
512	#[inline(always)] fn bar(self) -> (C, D, A) { let s = self.s(); (s.2, s.3, s.0) }
513	#[inline(always)] fn bag(self) -> (C, D, B) { let s = self.s(); (s.2, s.3, s.1) }
514	#[inline(always)] fn bab(self) -> (C, D, C) { let s = self.s(); (s.2, s.3, s.2) }
515	#[inline(always)] fn baa(self) -> (C, D, D) { let s = self.s(); (s.2, s.3, s.3) }
516	#[inline(always)] fn arr(self) -> (D, A, A) { let s = self.s(); (s.3, s.0, s.0) }
517	#[inline(always)] fn arg(self) -> (D, A, B) { let s = self.s(); (s.3, s.0, s.1) }
518	#[inline(always)] fn arb(self) -> (D, A, C) { let s = self.s(); (s.3, s.0, s.2) }
519	#[inline(always)] fn ara(self) -> (D, A, D) { let s = self.s(); (s.3, s.0, s.3) }
520	#[inline(always)] fn agr(self) -> (D, B, A) { let s = self.s(); (s.3, s.1, s.0) }
521	#[inline(always)] fn agg(self) -> (D, B, B) { let s = self.s(); (s.3, s.1, s.1) }
522	#[inline(always)] fn agb(self) -> (D, B, C) { let s = self.s(); (s.3, s.1, s.2) }
523	#[inline(always)] fn aga(self) -> (D, B, D) { let s = self.s(); (s.3, s.1, s.3) }
524	#[inline(always)] fn abr(self) -> (D, C, A) { let s = self.s(); (s.3, s.2, s.0) }
525	#[inline(always)] fn abg(self) -> (D, C, B) { let s = self.s(); (s.3, s.2, s.1) }
526	#[inline(always)] fn abb(self) -> (D, C, C) { let s = self.s(); (s.3, s.2, s.2) }
527	#[inline(always)] fn aba(self) -> (D, C, D) { let s = self.s(); (s.3, s.2, s.3) }
528	#[inline(always)] fn aar(self) -> (D, D, A) { let s = self.s(); (s.3, s.3, s.0) }
529	#[inline(always)] fn aag(self) -> (D, D, B) { let s = self.s(); (s.3, s.3, s.1) }
530	#[inline(always)] fn aab(self) -> (D, D, C) { let s = self.s(); (s.3, s.3, s.2) }
531	#[inline(always)] fn aaa(self) -> (D, D, D) { let s = self.s(); (s.3, s.3, s.3) }
532
533	#[inline(always)] fn rrrr(self) -> (A, A, A, A) { let s = self.s(); (s.0, s.0, s.0, s.0) }
534	#[inline(always)] fn rrrg(self) -> (A, A, A, B) { let s = self.s(); (s.0, s.0, s.0, s.1) }
535	#[inline(always)] fn rrrb(self) -> (A, A, A, C) { let s = self.s(); (s.0, s.0, s.0, s.2) }
536	#[inline(always)] fn rrra(self) -> (A, A, A, D) { let s = self.s(); (s.0, s.0, s.0, s.3) }
537	#[inline(always)] fn rrgr(self) -> (A, A, B, A) { let s = self.s(); (s.0, s.0, s.1, s.0) }
538	#[inline(always)] fn rrgg(self) -> (A, A, B, B) { let s = self.s(); (s.0, s.0, s.1, s.1) }
539	#[inline(always)] fn rrgb(self) -> (A, A, B, C) { let s = self.s(); (s.0, s.0, s.1, s.2) }
540	#[inline(always)] fn rrga(self) -> (A, A, B, D) { let s = self.s(); (s.0, s.0, s.1, s.3) }
541	#[inline(always)] fn rrbr(self) -> (A, A, C, A) { let s = self.s(); (s.0, s.0, s.2, s.0) }
542	#[inline(always)] fn rrbg(self) -> (A, A, C, B) { let s = self.s(); (s.0, s.0, s.2, s.1) }
543	#[inline(always)] fn rrbb(self) -> (A, A, C, C) { let s = self.s(); (s.0, s.0, s.2, s.2) }
544	#[inline(always)] fn rrba(self) -> (A, A, C, D) { let s = self.s(); (s.0, s.0, s.2, s.3) }
545	#[inline(always)] fn rrar(self) -> (A, A, D, A) { let s = self.s(); (s.0, s.0, s.3, s.0) }
546	#[inline(always)] fn rrag(self) -> (A, A, D, B) { let s = self.s(); (s.0, s.0, s.3, s.1) }
547	#[inline(always)] fn rrab(self) -> (A, A, D, C) { let s = self.s(); (s.0, s.0, s.3, s.2) }
548	#[inline(always)] fn rraa(self) -> (A, A, D, D) { let s = self.s(); (s.0, s.0, s.3, s.3) }
549	#[inline(always)] fn rgrr(self) -> (A, B, A, A) { let s = self.s(); (s.0, s.1, s.0, s.0) }
550	#[inline(always)] fn rgrg(self) -> (A, B, A, B) { let s = self.s(); (s.0, s.1, s.0, s.1) }
551	#[inline(always)] fn rgrb(self) -> (A, B, A, C) { let s = self.s(); (s.0, s.1, s.0, s.2) }
552	#[inline(always)] fn rgra(self) -> (A, B, A, D) { let s = self.s(); (s.0, s.1, s.0, s.3) }
553	#[inline(always)] fn rggr(self) -> (A, B, B, A) { let s = self.s(); (s.0, s.1, s.1, s.0) }
554	#[inline(always)] fn rggg(self) -> (A, B, B, B) { let s = self.s(); (s.0, s.1, s.1, s.1) }
555	#[inline(always)] fn rggb(self) -> (A, B, B, C) { let s = self.s(); (s.0, s.1, s.1, s.2) }
556	#[inline(always)] fn rgga(self) -> (A, B, B, D) { let s = self.s(); (s.0, s.1, s.1, s.3) }
557	#[inline(always)] fn rgbr(self) -> (A, B, C, A) { let s = self.s(); (s.0, s.1, s.2, s.0) }
558	#[inline(always)] fn rgbg(self) -> (A, B, C, B) { let s = self.s(); (s.0, s.1, s.2, s.1) }
559	#[inline(always)] fn rgbb(self) -> (A, B, C, C) { let s = self.s(); (s.0, s.1, s.2, s.2) }
560	#[inline(always)] fn rgba(self) -> (A, B, C, D) { let s = self.s(); (s.0, s.1, s.2, s.3) }
561	#[inline(always)] fn rgar(self) -> (A, B, D, A) { let s = self.s(); (s.0, s.1, s.3, s.0) }
562	#[inline(always)] fn rgag(self) -> (A, B, D, B) { let s = self.s(); (s.0, s.1, s.3, s.1) }
563	#[inline(always)] fn rgab(self) -> (A, B, D, C) { let s = self.s(); (s.0, s.1, s.3, s.2) }
564	#[inline(always)] fn rgaa(self) -> (A, B, D, D) { let s = self.s(); (s.0, s.1, s.3, s.3) }
565	#[inline(always)] fn rbrr(self) -> (A, C, A, A) { let s = self.s(); (s.0, s.2, s.0, s.0) }
566	#[inline(always)] fn rbrg(self) -> (A, C, A, B) { let s = self.s(); (s.0, s.2, s.0, s.1) }
567	#[inline(always)] fn rbrb(self) -> (A, C, A, C) { let s = self.s(); (s.0, s.2, s.0, s.2) }
568	#[inline(always)] fn rbra(self) -> (A, C, A, D) { let s = self.s(); (s.0, s.2, s.0, s.3) }
569	#[inline(always)] fn rbgr(self) -> (A, C, B, A) { let s = self.s(); (s.0, s.2, s.1, s.0) }
570	#[inline(always)] fn rbgg(self) -> (A, C, B, B) { let s = self.s(); (s.0, s.2, s.1, s.1) }
571	#[inline(always)] fn rbgb(self) -> (A, C, B, C) { let s = self.s(); (s.0, s.2, s.1, s.2) }
572	#[inline(always)] fn rbga(self) -> (A, C, B, D) { let s = self.s(); (s.0, s.2, s.1, s.3) }
573	#[inline(always)] fn rbbr(self) -> (A, C, C, A) { let s = self.s(); (s.0, s.2, s.2, s.0) }
574	#[inline(always)] fn rbbg(self) -> (A, C, C, B) { let s = self.s(); (s.0, s.2, s.2, s.1) }
575	#[inline(always)] fn rbbb(self) -> (A, C, C, C) { let s = self.s(); (s.0, s.2, s.2, s.2) }
576	#[inline(always)] fn rbba(self) -> (A, C, C, D) { let s = self.s(); (s.0, s.2, s.2, s.3) }
577	#[inline(always)] fn rbar(self) -> (A, C, D, A) { let s = self.s(); (s.0, s.2, s.3, s.0) }
578	#[inline(always)] fn rbag(self) -> (A, C, D, B) { let s = self.s(); (s.0, s.2, s.3, s.1) }
579	#[inline(always)] fn rbab(self) -> (A, C, D, C) { let s = self.s(); (s.0, s.2, s.3, s.2) }
580	#[inline(always)] fn rbaa(self) -> (A, C, D, D) { let s = self.s(); (s.0, s.2, s.3, s.3) }
581	#[inline(always)] fn rarr(self) -> (A, D, A, A) { let s = self.s(); (s.0, s.3, s.0, s.0) }
582	#[inline(always)] fn rarg(self) -> (A, D, A, B) { let s = self.s(); (s.0, s.3, s.0, s.1) }
583	#[inline(always)] fn rarb(self) -> (A, D, A, C) { let s = self.s(); (s.0, s.3, s.0, s.2) }
584	#[inline(always)] fn rara(self) -> (A, D, A, D) { let s = self.s(); (s.0, s.3, s.0, s.3) }
585	#[inline(always)] fn ragr(self) -> (A, D, B, A) { let s = self.s(); (s.0, s.3, s.1, s.0) }
586	#[inline(always)] fn ragg(self) -> (A, D, B, B) { let s = self.s(); (s.0, s.3, s.1, s.1) }
587	#[inline(always)] fn ragb(self) -> (A, D, B, C) { let s = self.s(); (s.0, s.3, s.1, s.2) }
588	#[inline(always)] fn raga(self) -> (A, D, B, D) { let s = self.s(); (s.0, s.3, s.1, s.3) }
589	#[inline(always)] fn rabr(self) -> (A, D, C, A) { let s = self.s(); (s.0, s.3, s.2, s.0) }
590	#[inline(always)] fn rabg(self) -> (A, D, C, B) { let s = self.s(); (s.0, s.3, s.2, s.1) }
591	#[inline(always)] fn rabb(self) -> (A, D, C, C) { let s = self.s(); (s.0, s.3, s.2, s.2) }
592	#[inline(always)] fn raba(self) -> (A, D, C, D) { let s = self.s(); (s.0, s.3, s.2, s.3) }
593	#[inline(always)] fn raar(self) -> (A, D, D, A) { let s = self.s(); (s.0, s.3, s.3, s.0) }
594	#[inline(always)] fn raag(self) -> (A, D, D, B) { let s = self.s(); (s.0, s.3, s.3, s.1) }
595	#[inline(always)] fn raab(self) -> (A, D, D, C) { let s = self.s(); (s.0, s.3, s.3, s.2) }
596	#[inline(always)] fn raaa(self) -> (A, D, D, D) { let s = self.s(); (s.0, s.3, s.3, s.3) }
597
598	#[inline(always)] fn grrr(self) -> (B, A, A, A) { let s = self.s(); (s.1, s.0, s.0, s.0) }
599	#[inline(always)] fn grrg(self) -> (B, A, A, B) { let s = self.s(); (s.1, s.0, s.0, s.1) }
600	#[inline(always)] fn grrb(self) -> (B, A, A, C) { let s = self.s(); (s.1, s.0, s.0, s.2) }
601	#[inline(always)] fn grra(self) -> (B, A, A, D) { let s = self.s(); (s.1, s.0, s.0, s.3) }
602	#[inline(always)] fn grgr(self) -> (B, A, B, A) { let s = self.s(); (s.1, s.0, s.1, s.0) }
603	#[inline(always)] fn grgg(self) -> (B, A, B, B) { let s = self.s(); (s.1, s.0, s.1, s.1) }
604	#[inline(always)] fn grgb(self) -> (B, A, B, C) { let s = self.s(); (s.1, s.0, s.1, s.2) }
605	#[inline(always)] fn grga(self) -> (B, A, B, D) { let s = self.s(); (s.1, s.0, s.1, s.3) }
606	#[inline(always)] fn grbr(self) -> (B, A, C, A) { let s = self.s(); (s.1, s.0, s.2, s.0) }
607	#[inline(always)] fn grbg(self) -> (B, A, C, B) { let s = self.s(); (s.1, s.0, s.2, s.1) }
608	#[inline(always)] fn grbb(self) -> (B, A, C, C) { let s = self.s(); (s.1, s.0, s.2, s.2) }
609	#[inline(always)] fn grba(self) -> (B, A, C, D) { let s = self.s(); (s.1, s.0, s.2, s.3) }
610	#[inline(always)] fn grar(self) -> (B, A, D, A) { let s = self.s(); (s.1, s.0, s.3, s.0) }
611	#[inline(always)] fn grag(self) -> (B, A, D, B) { let s = self.s(); (s.1, s.0, s.3, s.1) }
612	#[inline(always)] fn grab(self) -> (B, A, D, C) { let s = self.s(); (s.1, s.0, s.3, s.2) }
613	#[inline(always)] fn graa(self) -> (B, A, D, D) { let s = self.s(); (s.1, s.0, s.3, s.3) }
614	#[inline(always)] fn ggrr(self) -> (B, B, A, A) { let s = self.s(); (s.1, s.1, s.0, s.0) }
615	#[inline(always)] fn ggrg(self) -> (B, B, A, B) { let s = self.s(); (s.1, s.1, s.0, s.1) }
616	#[inline(always)] fn ggrb(self) -> (B, B, A, C) { let s = self.s(); (s.1, s.1, s.0, s.2) }
617	#[inline(always)] fn ggra(self) -> (B, B, A, D) { let s = self.s(); (s.1, s.1, s.0, s.3) }
618	#[inline(always)] fn gggr(self) -> (B, B, B, A) { let s = self.s(); (s.1, s.1, s.1, s.0) }
619	#[inline(always)] fn gggg(self) -> (B, B, B, B) { let s = self.s(); (s.1, s.1, s.1, s.1) }
620	#[inline(always)] fn gggb(self) -> (B, B, B, C) { let s = self.s(); (s.1, s.1, s.1, s.2) }
621	#[inline(always)] fn ggga(self) -> (B, B, B, D) { let s = self.s(); (s.1, s.1, s.1, s.3) }
622	#[inline(always)] fn ggbr(self) -> (B, B, C, A) { let s = self.s(); (s.1, s.1, s.2, s.0) }
623	#[inline(always)] fn ggbg(self) -> (B, B, C, B) { let s = self.s(); (s.1, s.1, s.2, s.1) }
624	#[inline(always)] fn ggbb(self) -> (B, B, C, C) { let s = self.s(); (s.1, s.1, s.2, s.2) }
625	#[inline(always)] fn ggba(self) -> (B, B, C, D) { let s = self.s(); (s.1, s.1, s.2, s.3) }
626	#[inline(always)] fn ggar(self) -> (B, B, D, A) { let s = self.s(); (s.1, s.1, s.3, s.0) }
627	#[inline(always)] fn ggag(self) -> (B, B, D, B) { let s = self.s(); (s.1, s.1, s.3, s.1) }
628	#[inline(always)] fn ggab(self) -> (B, B, D, C) { let s = self.s(); (s.1, s.1, s.3, s.2) }
629	#[inline(always)] fn ggaa(self) -> (B, B, D, D) { let s = self.s(); (s.1, s.1, s.3, s.3) }
630	#[inline(always)] fn gbrr(self) -> (B, C, A, A) { let s = self.s(); (s.1, s.2, s.0, s.0) }
631	#[inline(always)] fn gbrg(self) -> (B, C, A, B) { let s = self.s(); (s.1, s.2, s.0, s.1) }
632	#[inline(always)] fn gbrb(self) -> (B, C, A, C) { let s = self.s(); (s.1, s.2, s.0, s.2) }
633	#[inline(always)] fn gbra(self) -> (B, C, A, D) { let s = self.s(); (s.1, s.2, s.0, s.3) }
634	#[inline(always)] fn gbgr(self) -> (B, C, B, A) { let s = self.s(); (s.1, s.2, s.1, s.0) }
635	#[inline(always)] fn gbgg(self) -> (B, C, B, B) { let s = self.s(); (s.1, s.2, s.1, s.1) }
636	#[inline(always)] fn gbgb(self) -> (B, C, B, C) { let s = self.s(); (s.1, s.2, s.1, s.2) }
637	#[inline(always)] fn gbga(self) -> (B, C, B, D) { let s = self.s(); (s.1, s.2, s.1, s.3) }
638	#[inline(always)] fn gbbr(self) -> (B, C, C, A) { let s = self.s(); (s.1, s.2, s.2, s.0) }
639	#[inline(always)] fn gbbg(self) -> (B, C, C, B) { let s = self.s(); (s.1, s.2, s.2, s.1) }
640	#[inline(always)] fn gbbb(self) -> (B, C, C, C) { let s = self.s(); (s.1, s.2, s.2, s.2) }
641	#[inline(always)] fn gbba(self) -> (B, C, C, D) { let s = self.s(); (s.1, s.2, s.2, s.3) }
642	#[inline(always)] fn gbar(self) -> (B, C, D, A) { let s = self.s(); (s.1, s.2, s.3, s.0) }
643	#[inline(always)] fn gbag(self) -> (B, C, D, B) { let s = self.s(); (s.1, s.2, s.3, s.1) }
644	#[inline(always)] fn gbab(self) -> (B, C, D, C) { let s = self.s(); (s.1, s.2, s.3, s.2) }
645	#[inline(always)] fn gbaa(self) -> (B, C, D, D) { let s = self.s(); (s.1, s.2, s.3, s.3) }
646	#[inline(always)] fn garr(self) -> (B, D, A, A) { let s = self.s(); (s.1, s.3, s.0, s.0) }
647	#[inline(always)] fn garg(self) -> (B, D, A, B) { let s = self.s(); (s.1, s.3, s.0, s.1) }
648	#[inline(always)] fn garb(self) -> (B, D, A, C) { let s = self.s(); (s.1, s.3, s.0, s.2) }
649	#[inline(always)] fn gara(self) -> (B, D, A, D) { let s = self.s(); (s.1, s.3, s.0, s.3) }
650	#[inline(always)] fn gagr(self) -> (B, D, B, A) { let s = self.s(); (s.1, s.3, s.1, s.0) }
651	#[inline(always)] fn gagg(self) -> (B, D, B, B) { let s = self.s(); (s.1, s.3, s.1, s.1) }
652	#[inline(always)] fn gagb(self) -> (B, D, B, C) { let s = self.s(); (s.1, s.3, s.1, s.2) }
653	#[inline(always)] fn gaga(self) -> (B, D, B, D) { let s = self.s(); (s.1, s.3, s.1, s.3) }
654	#[inline(always)] fn gabr(self) -> (B, D, C, A) { let s = self.s(); (s.1, s.3, s.2, s.0) }
655	#[inline(always)] fn gabg(self) -> (B, D, C, B) { let s = self.s(); (s.1, s.3, s.2, s.1) }
656	#[inline(always)] fn gabb(self) -> (B, D, C, C) { let s = self.s(); (s.1, s.3, s.2, s.2) }
657	#[inline(always)] fn gaba(self) -> (B, D, C, D) { let s = self.s(); (s.1, s.3, s.2, s.3) }
658	#[inline(always)] fn gaar(self) -> (B, D, D, A) { let s = self.s(); (s.1, s.3, s.3, s.0) }
659	#[inline(always)] fn gaag(self) -> (B, D, D, B) { let s = self.s(); (s.1, s.3, s.3, s.1) }
660	#[inline(always)] fn gaab(self) -> (B, D, D, C) { let s = self.s(); (s.1, s.3, s.3, s.2) }
661	#[inline(always)] fn gaaa(self) -> (B, D, D, D) { let s = self.s(); (s.1, s.3, s.3, s.3) }
662
663	#[inline(always)] fn brrr(self) -> (C, A, A, A) { let s = self.s(); (s.2, s.0, s.0, s.0) }
664	#[inline(always)] fn brrg(self) -> (C, A, A, B) { let s = self.s(); (s.2, s.0, s.0, s.1) }
665	#[inline(always)] fn brrb(self) -> (C, A, A, C) { let s = self.s(); (s.2, s.0, s.0, s.2) }
666	#[inline(always)] fn brra(self) -> (C, A, A, D) { let s = self.s(); (s.2, s.0, s.0, s.3) }
667	#[inline(always)] fn brgr(self) -> (C, A, B, A) { let s = self.s(); (s.2, s.0, s.1, s.0) }
668	#[inline(always)] fn brgg(self) -> (C, A, B, B) { let s = self.s(); (s.2, s.0, s.1, s.1) }
669	#[inline(always)] fn brgb(self) -> (C, A, B, C) { let s = self.s(); (s.2, s.0, s.1, s.2) }
670	#[inline(always)] fn brga(self) -> (C, A, B, D) { let s = self.s(); (s.2, s.0, s.1, s.3) }
671	#[inline(always)] fn brbr(self) -> (C, A, C, A) { let s = self.s(); (s.2, s.0, s.2, s.0) }
672	#[inline(always)] fn brbg(self) -> (C, A, C, B) { let s = self.s(); (s.2, s.0, s.2, s.1) }
673	#[inline(always)] fn brbb(self) -> (C, A, C, C) { let s = self.s(); (s.2, s.0, s.2, s.2) }
674	#[inline(always)] fn brba(self) -> (C, A, C, D) { let s = self.s(); (s.2, s.0, s.2, s.3) }
675	#[inline(always)] fn brar(self) -> (C, A, D, A) { let s = self.s(); (s.2, s.0, s.3, s.0) }
676	#[inline(always)] fn brag(self) -> (C, A, D, B) { let s = self.s(); (s.2, s.0, s.3, s.1) }
677	#[inline(always)] fn brab(self) -> (C, A, D, C) { let s = self.s(); (s.2, s.0, s.3, s.2) }
678	#[inline(always)] fn braa(self) -> (C, A, D, D) { let s = self.s(); (s.2, s.0, s.3, s.3) }
679	#[inline(always)] fn bgrr(self) -> (C, B, A, A) { let s = self.s(); (s.2, s.1, s.0, s.0) }
680	#[inline(always)] fn bgrg(self) -> (C, B, A, B) { let s = self.s(); (s.2, s.1, s.0, s.1) }
681	#[inline(always)] fn bgrb(self) -> (C, B, A, C) { let s = self.s(); (s.2, s.1, s.0, s.2) }
682	#[inline(always)] fn bgra(self) -> (C, B, A, D) { let s = self.s(); (s.2, s.1, s.0, s.3) }
683	#[inline(always)] fn bggr(self) -> (C, B, B, A) { let s = self.s(); (s.2, s.1, s.1, s.0) }
684	#[inline(always)] fn bggg(self) -> (C, B, B, B) { let s = self.s(); (s.2, s.1, s.1, s.1) }
685	#[inline(always)] fn bggb(self) -> (C, B, B, C) { let s = self.s(); (s.2, s.1, s.1, s.2) }
686	#[inline(always)] fn bgga(self) -> (C, B, B, D) { let s = self.s(); (s.2, s.1, s.1, s.3) }
687	#[inline(always)] fn bgbr(self) -> (C, B, C, A) { let s = self.s(); (s.2, s.1, s.2, s.0) }
688	#[inline(always)] fn bgbg(self) -> (C, B, C, B) { let s = self.s(); (s.2, s.1, s.2, s.1) }
689	#[inline(always)] fn bgbb(self) -> (C, B, C, C) { let s = self.s(); (s.2, s.1, s.2, s.2) }
690	#[inline(always)] fn bgba(self) -> (C, B, C, D) { let s = self.s(); (s.2, s.1, s.2, s.3) }
691	#[inline(always)] fn bgar(self) -> (C, B, D, A) { let s = self.s(); (s.2, s.1, s.3, s.0) }
692	#[inline(always)] fn bgag(self) -> (C, B, D, B) { let s = self.s(); (s.2, s.1, s.3, s.1) }
693	#[inline(always)] fn bgab(self) -> (C, B, D, C) { let s = self.s(); (s.2, s.1, s.3, s.2) }
694	#[inline(always)] fn bgaa(self) -> (C, B, D, D) { let s = self.s(); (s.2, s.1, s.3, s.3) }
695	#[inline(always)] fn bbrr(self) -> (C, C, A, A) { let s = self.s(); (s.2, s.2, s.0, s.0) }
696	#[inline(always)] fn bbrg(self) -> (C, C, A, B) { let s = self.s(); (s.2, s.2, s.0, s.1) }
697	#[inline(always)] fn bbrb(self) -> (C, C, A, C) { let s = self.s(); (s.2, s.2, s.0, s.2) }
698	#[inline(always)] fn bbra(self) -> (C, C, A, D) { let s = self.s(); (s.2, s.2, s.0, s.3) }
699	#[inline(always)] fn bbgr(self) -> (C, C, B, A) { let s = self.s(); (s.2, s.2, s.1, s.0) }
700	#[inline(always)] fn bbgg(self) -> (C, C, B, B) { let s = self.s(); (s.2, s.2, s.1, s.1) }
701	#[inline(always)] fn bbgb(self) -> (C, C, B, C) { let s = self.s(); (s.2, s.2, s.1, s.2) }
702	#[inline(always)] fn bbga(self) -> (C, C, B, D) { let s = self.s(); (s.2, s.2, s.1, s.3) }
703	#[inline(always)] fn bbbr(self) -> (C, C, C, A) { let s = self.s(); (s.2, s.2, s.2, s.0) }
704	#[inline(always)] fn bbbg(self) -> (C, C, C, B) { let s = self.s(); (s.2, s.2, s.2, s.1) }
705	#[inline(always)] fn bbbb(self) -> (C, C, C, C) { let s = self.s(); (s.2, s.2, s.2, s.2) }
706	#[inline(always)] fn bbba(self) -> (C, C, C, D) { let s = self.s(); (s.2, s.2, s.2, s.3) }
707	#[inline(always)] fn bbar(self) -> (C, C, D, A) { let s = self.s(); (s.2, s.2, s.3, s.0) }
708	#[inline(always)] fn bbag(self) -> (C, C, D, B) { let s = self.s(); (s.2, s.2, s.3, s.1) }
709	#[inline(always)] fn bbab(self) -> (C, C, D, C) { let s = self.s(); (s.2, s.2, s.3, s.2) }
710	#[inline(always)] fn bbaa(self) -> (C, C, D, D) { let s = self.s(); (s.2, s.2, s.3, s.3) }
711	#[inline(always)] fn barr(self) -> (C, D, A, A) { let s = self.s(); (s.2, s.3, s.0, s.0) }
712	#[inline(always)] fn barg(self) -> (C, D, A, B) { let s = self.s(); (s.2, s.3, s.0, s.1) }
713	#[inline(always)] fn barb(self) -> (C, D, A, C) { let s = self.s(); (s.2, s.3, s.0, s.2) }
714	#[inline(always)] fn bara(self) -> (C, D, A, D) { let s = self.s(); (s.2, s.3, s.0, s.3) }
715	#[inline(always)] fn bagr(self) -> (C, D, B, A) { let s = self.s(); (s.2, s.3, s.1, s.0) }
716	#[inline(always)] fn bagg(self) -> (C, D, B, B) { let s = self.s(); (s.2, s.3, s.1, s.1) }
717	#[inline(always)] fn bagb(self) -> (C, D, B, C) { let s = self.s(); (s.2, s.3, s.1, s.2) }
718	#[inline(always)] fn baga(self) -> (C, D, B, D) { let s = self.s(); (s.2, s.3, s.1, s.3) }
719	#[inline(always)] fn babr(self) -> (C, D, C, A) { let s = self.s(); (s.2, s.3, s.2, s.0) }
720	#[inline(always)] fn babg(self) -> (C, D, C, B) { let s = self.s(); (s.2, s.3, s.2, s.1) }
721	#[inline(always)] fn babb(self) -> (C, D, C, C) { let s = self.s(); (s.2, s.3, s.2, s.2) }
722	#[inline(always)] fn baba(self) -> (C, D, C, D) { let s = self.s(); (s.2, s.3, s.2, s.3) }
723	#[inline(always)] fn baar(self) -> (C, D, D, A) { let s = self.s(); (s.2, s.3, s.3, s.0) }
724	#[inline(always)] fn baag(self) -> (C, D, D, B) { let s = self.s(); (s.2, s.3, s.3, s.1) }
725	#[inline(always)] fn baab(self) -> (C, D, D, C) { let s = self.s(); (s.2, s.3, s.3, s.2) }
726	#[inline(always)] fn baaa(self) -> (C, D, D, D) { let s = self.s(); (s.2, s.3, s.3, s.3) }
727
728	#[inline(always)] fn arrr(self) -> (D, A, A, A) { let s = self.s(); (s.3, s.0, s.0, s.0) }
729	#[inline(always)] fn arrg(self) -> (D, A, A, B) { let s = self.s(); (s.3, s.0, s.0, s.1) }
730	#[inline(always)] fn arrb(self) -> (D, A, A, C) { let s = self.s(); (s.3, s.0, s.0, s.2) }
731	#[inline(always)] fn arra(self) -> (D, A, A, D) { let s = self.s(); (s.3, s.0, s.0, s.3) }
732	#[inline(always)] fn argr(self) -> (D, A, B, A) { let s = self.s(); (s.3, s.0, s.1, s.0) }
733	#[inline(always)] fn argg(self) -> (D, A, B, B) { let s = self.s(); (s.3, s.0, s.1, s.1) }
734	#[inline(always)] fn argb(self) -> (D, A, B, C) { let s = self.s(); (s.3, s.0, s.1, s.2) }
735	#[inline(always)] fn arga(self) -> (D, A, B, D) { let s = self.s(); (s.3, s.0, s.1, s.3) }
736	#[inline(always)] fn arbr(self) -> (D, A, C, A) { let s = self.s(); (s.3, s.0, s.2, s.0) }
737	#[inline(always)] fn arbg(self) -> (D, A, C, B) { let s = self.s(); (s.3, s.0, s.2, s.1) }
738	#[inline(always)] fn arbb(self) -> (D, A, C, C) { let s = self.s(); (s.3, s.0, s.2, s.2) }
739	#[inline(always)] fn arba(self) -> (D, A, C, D) { let s = self.s(); (s.3, s.0, s.2, s.3) }
740	#[inline(always)] fn arar(self) -> (D, A, D, A) { let s = self.s(); (s.3, s.0, s.3, s.0) }
741	#[inline(always)] fn arag(self) -> (D, A, D, B) { let s = self.s(); (s.3, s.0, s.3, s.1) }
742	#[inline(always)] fn arab(self) -> (D, A, D, C) { let s = self.s(); (s.3, s.0, s.3, s.2) }
743	#[inline(always)] fn araa(self) -> (D, A, D, D) { let s = self.s(); (s.3, s.0, s.3, s.3) }
744	#[inline(always)] fn agrr(self) -> (D, B, A, A) { let s = self.s(); (s.3, s.1, s.0, s.0) }
745	#[inline(always)] fn agrg(self) -> (D, B, A, B) { let s = self.s(); (s.3, s.1, s.0, s.1) }
746	#[inline(always)] fn agrb(self) -> (D, B, A, C) { let s = self.s(); (s.3, s.1, s.0, s.2) }
747	#[inline(always)] fn agra(self) -> (D, B, A, D) { let s = self.s(); (s.3, s.1, s.0, s.3) }
748	#[inline(always)] fn aggr(self) -> (D, B, B, A) { let s = self.s(); (s.3, s.1, s.1, s.0) }
749	#[inline(always)] fn aggg(self) -> (D, B, B, B) { let s = self.s(); (s.3, s.1, s.1, s.1) }
750	#[inline(always)] fn aggb(self) -> (D, B, B, C) { let s = self.s(); (s.3, s.1, s.1, s.2) }
751	#[inline(always)] fn agga(self) -> (D, B, B, D) { let s = self.s(); (s.3, s.1, s.1, s.3) }
752	#[inline(always)] fn agbr(self) -> (D, B, C, A) { let s = self.s(); (s.3, s.1, s.2, s.0) }
753	#[inline(always)] fn agbg(self) -> (D, B, C, B) { let s = self.s(); (s.3, s.1, s.2, s.1) }
754	#[inline(always)] fn agbb(self) -> (D, B, C, C) { let s = self.s(); (s.3, s.1, s.2, s.2) }
755	#[inline(always)] fn agba(self) -> (D, B, C, D) { let s = self.s(); (s.3, s.1, s.2, s.3) }
756	#[inline(always)] fn agar(self) -> (D, B, D, A) { let s = self.s(); (s.3, s.1, s.3, s.0) }
757	#[inline(always)] fn agag(self) -> (D, B, D, B) { let s = self.s(); (s.3, s.1, s.3, s.1) }
758	#[inline(always)] fn agab(self) -> (D, B, D, C) { let s = self.s(); (s.3, s.1, s.3, s.2) }
759	#[inline(always)] fn agaa(self) -> (D, B, D, D) { let s = self.s(); (s.3, s.1, s.3, s.3) }
760	#[inline(always)] fn abrr(self) -> (D, C, A, A) { let s = self.s(); (s.3, s.2, s.0, s.0) }
761	#[inline(always)] fn abrg(self) -> (D, C, A, B) { let s = self.s(); (s.3, s.2, s.0, s.1) }
762	#[inline(always)] fn abrb(self) -> (D, C, A, C) { let s = self.s(); (s.3, s.2, s.0, s.2) }
763	#[inline(always)] fn abra(self) -> (D, C, A, D) { let s = self.s(); (s.3, s.2, s.0, s.3) }
764	#[inline(always)] fn abgr(self) -> (D, C, B, A) { let s = self.s(); (s.3, s.2, s.1, s.0) }
765	#[inline(always)] fn abgg(self) -> (D, C, B, B) { let s = self.s(); (s.3, s.2, s.1, s.1) }
766	#[inline(always)] fn abgb(self) -> (D, C, B, C) { let s = self.s(); (s.3, s.2, s.1, s.2) }
767	#[inline(always)] fn abga(self) -> (D, C, B, D) { let s = self.s(); (s.3, s.2, s.1, s.3) }
768	#[inline(always)] fn abbr(self) -> (D, C, C, A) { let s = self.s(); (s.3, s.2, s.2, s.0) }
769	#[inline(always)] fn abbg(self) -> (D, C, C, B) { let s = self.s(); (s.3, s.2, s.2, s.1) }
770	#[inline(always)] fn abbb(self) -> (D, C, C, C) { let s = self.s(); (s.3, s.2, s.2, s.2) }
771	#[inline(always)] fn abba(self) -> (D, C, C, D) { let s = self.s(); (s.3, s.2, s.2, s.3) }
772	#[inline(always)] fn abar(self) -> (D, C, D, A) { let s = self.s(); (s.3, s.2, s.3, s.0) }
773	#[inline(always)] fn abag(self) -> (D, C, D, B) { let s = self.s(); (s.3, s.2, s.3, s.1) }
774	#[inline(always)] fn abab(self) -> (D, C, D, C) { let s = self.s(); (s.3, s.2, s.3, s.2) }
775	#[inline(always)] fn abaa(self) -> (D, C, D, D) { let s = self.s(); (s.3, s.2, s.3, s.3) }
776	#[inline(always)] fn aarr(self) -> (D, D, A, A) { let s = self.s(); (s.3, s.3, s.0, s.0) }
777	#[inline(always)] fn aarg(self) -> (D, D, A, B) { let s = self.s(); (s.3, s.3, s.0, s.1) }
778	#[inline(always)] fn aarb(self) -> (D, D, A, C) { let s = self.s(); (s.3, s.3, s.0, s.2) }
779	#[inline(always)] fn aara(self) -> (D, D, A, D) { let s = self.s(); (s.3, s.3, s.0, s.3) }
780	#[inline(always)] fn aagr(self) -> (D, D, B, A) { let s = self.s(); (s.3, s.3, s.1, s.0) }
781	#[inline(always)] fn aagg(self) -> (D, D, B, B) { let s = self.s(); (s.3, s.3, s.1, s.1) }
782	#[inline(always)] fn aagb(self) -> (D, D, B, C) { let s = self.s(); (s.3, s.3, s.1, s.2) }
783	#[inline(always)] fn aaga(self) -> (D, D, B, D) { let s = self.s(); (s.3, s.3, s.1, s.3) }
784	#[inline(always)] fn aabr(self) -> (D, D, C, A) { let s = self.s(); (s.3, s.3, s.2, s.0) }
785	#[inline(always)] fn aabg(self) -> (D, D, C, B) { let s = self.s(); (s.3, s.3, s.2, s.1) }
786	#[inline(always)] fn aabb(self) -> (D, D, C, C) { let s = self.s(); (s.3, s.3, s.2, s.2) }
787	#[inline(always)] fn aaba(self) -> (D, D, C, D) { let s = self.s(); (s.3, s.3, s.2, s.3) }
788	#[inline(always)] fn aaar(self) -> (D, D, D, A) { let s = self.s(); (s.3, s.3, s.3, s.0) }
789	#[inline(always)] fn aaag(self) -> (D, D, D, B) { let s = self.s(); (s.3, s.3, s.3, s.1) }
790	#[inline(always)] fn aaab(self) -> (D, D, D, C) { let s = self.s(); (s.3, s.3, s.3, s.2) }
791	#[inline(always)] fn aaaa(self) -> (D, D, D, D) { let s = self.s(); (s.3, s.3, s.3, s.3) }
792}
793}
794use s::*;
795
796impl<A: Copy, B: Copy> TupleSwizzle2<A, B> for (A, B) {
797	#[inline(always)]
798	fn s(self) -> (A, B) {
799		self
800	}
801}
802impl<T: Copy> TupleSwizzle2<T, T> for [T; 2] {
803	#[inline(always)]
804	fn s(self) -> (T, T) {
805		(self[0], self[1])
806	}
807}
808
809impl<A: Copy, B: Copy, C: Copy> TupleSwizzle3<A, B, C> for (A, B, C) {
810	#[inline(always)]
811	fn s(self) -> (A, B, C) {
812		self
813	}
814}
815impl<T: Copy> TupleSwizzle3<T, T, T> for [T; 3] {
816	#[inline(always)]
817	fn s(self) -> (T, T, T) {
818		(self[0], self[1], self[2])
819	}
820}
821
822impl<A: Copy, B: Copy, C: Copy, D: Copy> TupleSwizzle4<A, B, C, D> for (A, B, C, D) {
823	#[inline(always)]
824	fn s(self) -> (A, B, C, D) {
825		self
826	}
827}
828impl<T: Copy> TupleSwizzle4<T, T, T, T> for [T; 4] {
829	#[inline(always)]
830	fn s(self) -> (T, T, T, T) {
831		(self[0], self[1], self[2], self[3])
832	}
833}