]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/qvm/test/swizzle4_test.cpp
1 // Copyright 2008-2022 Emil Dotchevski and Reverge Studios, Inc.
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)
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
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>
18 #include "test_qvm_vector.hpp"
23 using namespace boost::qvm
;
24 test_qvm::vector
<V1
,4> v1
;
31 XXXX(42.0f
) + XXXX(42.0f
);
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);
45 BOOST_TEST(&X(X101(s
))==&s
);
48 test_qvm::vector
<V2
,4> r
;
53 test_qvm::vector
<V2
,4> v2
=XXXX(v1
);
54 BOOST_QVM_TEST_EQ(v2
,r
);
57 test_qvm::vector
<V2
,4> r
;
62 test_qvm::vector
<V2
,4> v2
=XXXY(v1
);
63 BOOST_QVM_TEST_EQ(v2
,r
);
66 test_qvm::vector
<V2
,4> r
;
71 test_qvm::vector
<V2
,4> v2
=XXXZ(v1
);
72 BOOST_QVM_TEST_EQ(v2
,r
);
75 test_qvm::vector
<V2
,4> r
;
80 test_qvm::vector
<V2
,4> v2
=XXXW(v1
);
81 BOOST_QVM_TEST_EQ(v2
,r
);
84 test_qvm::vector
<V2
,4> r
;
89 test_qvm::vector
<V2
,4> v2
=XXX0(v1
);
90 BOOST_QVM_TEST_EQ(v2
,r
);
93 test_qvm::vector
<V2
,4> r
;
98 test_qvm::vector
<V2
,4> v2
=XXX1(v1
);
99 BOOST_QVM_TEST_EQ(v2
,r
);
102 test_qvm::vector
<V2
,4> v2
=XYZW(v1
);
105 test_qvm::vector
<V2
,4> v3
=XYZW(v1
);
106 BOOST_QVM_TEST_EQ(v2
,v3
);
109 test_qvm::vector
<V2
,4> v2
=XYZW(v1
);
110 test_qvm::vector
<V3
,4> v3
;
112 BOOST_QVM_TEST_EQ(v2
,v3
);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
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);
226 return boost::report_errors();