]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/qvm/test/swizzle4_test.cpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / libs / qvm / test / swizzle4_test.cpp
CommitLineData
1e59de90 1// Copyright 2008-2022 Emil Dotchevski and Reverge Studios, Inc.
92f5a8d4 2
1e59de90
TL
3// Distributed under the Boost Software License, Version 1.0. (See accompanying
4// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6#ifdef BOOST_QVM_TEST_SINGLE_HEADER
7# include BOOST_QVM_TEST_SINGLE_HEADER
8# ifdef BOOST_QVM_TEST_SINGLE_HEADER_SWIZZLE
9# include BOOST_QVM_TEST_SINGLE_HEADER_SWIZZLE
10# endif
11#else
12# include <boost/qvm/vec_operations.hpp>
13# include <boost/qvm/vec_access.hpp>
14# include <boost/qvm/vec.hpp>
15# include <boost/qvm/swizzle.hpp>
16#endif
92f5a8d4 17
92f5a8d4
TL
18#include "test_qvm_vector.hpp"
19
20int
21main()
1e59de90 22 {
92f5a8d4
TL
23 using namespace boost::qvm;
24 test_qvm::vector<V1,4> v1;
25 v1.a[0]=42.0f;
26 v1.a[1]=43.0f;
27 v1.a[2]=44.0f;
28 v1.a[3]=45.0f;
29 XXXX(v1) + XXXX(v1);
30 -XXXX(v1);
31 XXXX(42.0f) + XXXX(42.0f);
32 -XXXX(42.0f);
33 {
34 test_qvm::vector<V2,4> v0=X001(42.0f);
35 BOOST_TEST(v0.a[0]==42);
36 BOOST_TEST(v0.a[1]==0);
37 BOOST_TEST(v0.a[2]==0);
38 BOOST_TEST(v0.a[3]==1);
39 test_qvm::vector<V2,4> v2=_100X(42.0f);
40 BOOST_TEST(v2.a[0]==1);
41 BOOST_TEST(v2.a[1]==0);
42 BOOST_TEST(v2.a[2]==0);
43 BOOST_TEST(v2.a[3]==42);
44 float s=42.0f;
45 BOOST_TEST(&X(X101(s))==&s);
46 }
47 {
48 test_qvm::vector<V2,4> r;
49 r.a[0]=v1.a[0];
50 r.a[1]=v1.a[0];
51 r.a[2]=v1.a[0];
52 r.a[3]=v1.a[0];
53 test_qvm::vector<V2,4> v2=XXXX(v1);
54 BOOST_QVM_TEST_EQ(v2,r);
55 }
56 {
57 test_qvm::vector<V2,4> r;
58 r.a[0]=v1.a[0];
59 r.a[1]=v1.a[0];
60 r.a[2]=v1.a[0];
61 r.a[3]=v1.a[1];
62 test_qvm::vector<V2,4> v2=XXXY(v1);
63 BOOST_QVM_TEST_EQ(v2,r);
64 }
65 {
66 test_qvm::vector<V2,4> r;
67 r.a[0]=v1.a[0];
68 r.a[1]=v1.a[0];
69 r.a[2]=v1.a[0];
70 r.a[3]=v1.a[2];
71 test_qvm::vector<V2,4> v2=XXXZ(v1);
72 BOOST_QVM_TEST_EQ(v2,r);
73 }
74 {
75 test_qvm::vector<V2,4> r;
76 r.a[0]=v1.a[0];
77 r.a[1]=v1.a[0];
78 r.a[2]=v1.a[0];
79 r.a[3]=v1.a[3];
80 test_qvm::vector<V2,4> v2=XXXW(v1);
81 BOOST_QVM_TEST_EQ(v2,r);
82 }
83 {
84 test_qvm::vector<V2,4> r;
85 r.a[0]=v1.a[0];
86 r.a[1]=v1.a[0];
87 r.a[2]=v1.a[0];
88 r.a[3]=0;
89 test_qvm::vector<V2,4> v2=XXX0(v1);
90 BOOST_QVM_TEST_EQ(v2,r);
91 }
92 {
93 test_qvm::vector<V2,4> r;
94 r.a[0]=v1.a[0];
95 r.a[1]=v1.a[0];
96 r.a[2]=v1.a[0];
97 r.a[3]=1;
98 test_qvm::vector<V2,4> v2=XXX1(v1);
99 BOOST_QVM_TEST_EQ(v2,r);
100 }
101 {
102 test_qvm::vector<V2,4> v2=XYZW(v1);
103 XYZW(v1) *= 2;
104 v2 *= 2;
105 test_qvm::vector<V2,4> v3=XYZW(v1);
106 BOOST_QVM_TEST_EQ(v2,v3);
107 }
108 {
109 test_qvm::vector<V2,4> v2=XYZW(v1);
110 test_qvm::vector<V3,4> v3;
111 XYZW(v3)=XYZW(v2);
112 BOOST_QVM_TEST_EQ(v2,v3);
113 }
114 {
115 test_qvm::vector<V1,4> v=_0000();
116 BOOST_TEST(v.a[0]==0);
117 BOOST_TEST(v.a[1]==0);
118 BOOST_TEST(v.a[2]==0);
119 BOOST_TEST(v.a[3]==0);
120 }
121 {
122 test_qvm::vector<V1,4> v=_0001();
123 BOOST_TEST(v.a[0]==0);
124 BOOST_TEST(v.a[1]==0);
125 BOOST_TEST(v.a[2]==0);
126 BOOST_TEST(v.a[3]==1);
127 }
128 {
129 test_qvm::vector<V1,4> v=_0010();
130 BOOST_TEST(v.a[0]==0);
131 BOOST_TEST(v.a[1]==0);
132 BOOST_TEST(v.a[2]==1);
133 BOOST_TEST(v.a[3]==0);
134 }
135 {
136 test_qvm::vector<V1,4> v=_0011();
137 BOOST_TEST(v.a[0]==0);
138 BOOST_TEST(v.a[1]==0);
139 BOOST_TEST(v.a[2]==1);
140 BOOST_TEST(v.a[3]==1);
141 }
142 {
143 test_qvm::vector<V1,4> v=_0100();
144 BOOST_TEST(v.a[0]==0);
145 BOOST_TEST(v.a[1]==1);
146 BOOST_TEST(v.a[2]==0);
147 BOOST_TEST(v.a[3]==0);
148 }
149 {
150 test_qvm::vector<V1,4> v=_0101();
151 BOOST_TEST(v.a[0]==0);
152 BOOST_TEST(v.a[1]==1);
153 BOOST_TEST(v.a[2]==0);
154 BOOST_TEST(v.a[3]==1);
155 }
156 {
157 test_qvm::vector<V1,4> v=_0110();
158 BOOST_TEST(v.a[0]==0);
159 BOOST_TEST(v.a[1]==1);
160 BOOST_TEST(v.a[2]==1);
161 BOOST_TEST(v.a[3]==0);
162 }
163 {
164 test_qvm::vector<V1,4> v=_0111();
165 BOOST_TEST(v.a[0]==0);
166 BOOST_TEST(v.a[1]==1);
167 BOOST_TEST(v.a[2]==1);
168 BOOST_TEST(v.a[3]==1);
169 }
170 {
171 test_qvm::vector<V1,4> v=_1000();
172 BOOST_TEST(v.a[0]==1);
173 BOOST_TEST(v.a[1]==0);
174 BOOST_TEST(v.a[2]==0);
175 BOOST_TEST(v.a[3]==0);
176 }
177 {
178 test_qvm::vector<V1,4> v=_1001();
179 BOOST_TEST(v.a[0]==1);
180 BOOST_TEST(v.a[1]==0);
181 BOOST_TEST(v.a[2]==0);
182 BOOST_TEST(v.a[3]==1);
183 }
184 {
185 test_qvm::vector<V1,4> v=_1010();
186 BOOST_TEST(v.a[0]==1);
187 BOOST_TEST(v.a[1]==0);
188 BOOST_TEST(v.a[2]==1);
189 BOOST_TEST(v.a[3]==0);
190 }
191 {
192 test_qvm::vector<V1,4> v=_1011();
193 BOOST_TEST(v.a[0]==1);
194 BOOST_TEST(v.a[1]==0);
195 BOOST_TEST(v.a[2]==1);
196 BOOST_TEST(v.a[3]==1);
197 }
198 {
199 test_qvm::vector<V1,4> v=_1100();
200 BOOST_TEST(v.a[0]==1);
201 BOOST_TEST(v.a[1]==1);
202 BOOST_TEST(v.a[2]==0);
203 BOOST_TEST(v.a[3]==0);
204 }
205 {
206 test_qvm::vector<V1,4> v=_1101();
207 BOOST_TEST(v.a[0]==1);
208 BOOST_TEST(v.a[1]==1);
209 BOOST_TEST(v.a[2]==0);
210 BOOST_TEST(v.a[3]==1);
211 }
212 {
213 test_qvm::vector<V1,4> v=_1110();
214 BOOST_TEST(v.a[0]==1);
215 BOOST_TEST(v.a[1]==1);
216 BOOST_TEST(v.a[2]==1);
217 BOOST_TEST(v.a[3]==0);
218 }
219 {
220 test_qvm::vector<V1,4> v=_1111();
221 BOOST_TEST(v.a[0]==1);
222 BOOST_TEST(v.a[1]==1);
223 BOOST_TEST(v.a[2]==1);
224 BOOST_TEST(v.a[3]==1);
225 }
226 return boost::report_errors();
227 }