]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/qvm/test/swizzle4_test.cpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / qvm / test / swizzle4_test.cpp
1 //Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.
2
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 #include <boost/qvm/vec_operations.hpp>
7 #include <boost/qvm/vec.hpp>
8 #include <boost/qvm/swizzle.hpp>
9 #include "test_qvm_vector.hpp"
10
11 int
12 main()
13 {
14 using namespace boost::qvm;
15 test_qvm::vector<V1,4> v1;
16 v1.a[0]=42.0f;
17 v1.a[1]=43.0f;
18 v1.a[2]=44.0f;
19 v1.a[3]=45.0f;
20 XXXX(v1) + XXXX(v1);
21 -XXXX(v1);
22 {
23 test_qvm::vector<V2,4> r;
24 r.a[0]=v1.a[0];
25 r.a[1]=v1.a[0];
26 r.a[2]=v1.a[0];
27 r.a[3]=v1.a[0];
28 test_qvm::vector<V2,4> v2=XXXX(v1);
29 BOOST_QVM_TEST_EQ(v2,r);
30 }
31 {
32 test_qvm::vector<V2,4> r;
33 r.a[0]=v1.a[0];
34 r.a[1]=v1.a[0];
35 r.a[2]=v1.a[0];
36 r.a[3]=v1.a[1];
37 test_qvm::vector<V2,4> v2=XXXY(v1);
38 BOOST_QVM_TEST_EQ(v2,r);
39 }
40 {
41 test_qvm::vector<V2,4> r;
42 r.a[0]=v1.a[0];
43 r.a[1]=v1.a[0];
44 r.a[2]=v1.a[0];
45 r.a[3]=v1.a[2];
46 test_qvm::vector<V2,4> v2=XXXZ(v1);
47 BOOST_QVM_TEST_EQ(v2,r);
48 }
49 {
50 test_qvm::vector<V2,4> r;
51 r.a[0]=v1.a[0];
52 r.a[1]=v1.a[0];
53 r.a[2]=v1.a[0];
54 r.a[3]=v1.a[3];
55 test_qvm::vector<V2,4> v2=XXXW(v1);
56 BOOST_QVM_TEST_EQ(v2,r);
57 }
58 {
59 test_qvm::vector<V2,4> r;
60 r.a[0]=v1.a[0];
61 r.a[1]=v1.a[0];
62 r.a[2]=v1.a[0];
63 r.a[3]=0;
64 test_qvm::vector<V2,4> v2=XXX0(v1);
65 BOOST_QVM_TEST_EQ(v2,r);
66 }
67 {
68 test_qvm::vector<V2,4> r;
69 r.a[0]=v1.a[0];
70 r.a[1]=v1.a[0];
71 r.a[2]=v1.a[0];
72 r.a[3]=1;
73 test_qvm::vector<V2,4> v2=XXX1(v1);
74 BOOST_QVM_TEST_EQ(v2,r);
75 }
76 {
77 test_qvm::vector<V2,4> v2=XYZW(v1);
78 XYZW(v1) *= 2;
79 v2 *= 2;
80 test_qvm::vector<V2,4> v3=XYZW(v1);
81 BOOST_QVM_TEST_EQ(v2,v3);
82 }
83 {
84 test_qvm::vector<V2,4> v2=XYZW(v1);
85 test_qvm::vector<V3,4> v3;
86 XYZW(v3)=XYZW(v2);
87 BOOST_QVM_TEST_EQ(v2,v3);
88 }
89 {
90 test_qvm::vector<V1,4> v=_0000();
91 BOOST_TEST(v.a[0]==0);
92 BOOST_TEST(v.a[1]==0);
93 BOOST_TEST(v.a[2]==0);
94 BOOST_TEST(v.a[3]==0);
95 }
96 {
97 test_qvm::vector<V1,4> v=_0001();
98 BOOST_TEST(v.a[0]==0);
99 BOOST_TEST(v.a[1]==0);
100 BOOST_TEST(v.a[2]==0);
101 BOOST_TEST(v.a[3]==1);
102 }
103 {
104 test_qvm::vector<V1,4> v=_0010();
105 BOOST_TEST(v.a[0]==0);
106 BOOST_TEST(v.a[1]==0);
107 BOOST_TEST(v.a[2]==1);
108 BOOST_TEST(v.a[3]==0);
109 }
110 {
111 test_qvm::vector<V1,4> v=_0011();
112 BOOST_TEST(v.a[0]==0);
113 BOOST_TEST(v.a[1]==0);
114 BOOST_TEST(v.a[2]==1);
115 BOOST_TEST(v.a[3]==1);
116 }
117 {
118 test_qvm::vector<V1,4> v=_0100();
119 BOOST_TEST(v.a[0]==0);
120 BOOST_TEST(v.a[1]==1);
121 BOOST_TEST(v.a[2]==0);
122 BOOST_TEST(v.a[3]==0);
123 }
124 {
125 test_qvm::vector<V1,4> v=_0101();
126 BOOST_TEST(v.a[0]==0);
127 BOOST_TEST(v.a[1]==1);
128 BOOST_TEST(v.a[2]==0);
129 BOOST_TEST(v.a[3]==1);
130 }
131 {
132 test_qvm::vector<V1,4> v=_0110();
133 BOOST_TEST(v.a[0]==0);
134 BOOST_TEST(v.a[1]==1);
135 BOOST_TEST(v.a[2]==1);
136 BOOST_TEST(v.a[3]==0);
137 }
138 {
139 test_qvm::vector<V1,4> v=_0111();
140 BOOST_TEST(v.a[0]==0);
141 BOOST_TEST(v.a[1]==1);
142 BOOST_TEST(v.a[2]==1);
143 BOOST_TEST(v.a[3]==1);
144 }
145 {
146 test_qvm::vector<V1,4> v=_1000();
147 BOOST_TEST(v.a[0]==1);
148 BOOST_TEST(v.a[1]==0);
149 BOOST_TEST(v.a[2]==0);
150 BOOST_TEST(v.a[3]==0);
151 }
152 {
153 test_qvm::vector<V1,4> v=_1001();
154 BOOST_TEST(v.a[0]==1);
155 BOOST_TEST(v.a[1]==0);
156 BOOST_TEST(v.a[2]==0);
157 BOOST_TEST(v.a[3]==1);
158 }
159 {
160 test_qvm::vector<V1,4> v=_1010();
161 BOOST_TEST(v.a[0]==1);
162 BOOST_TEST(v.a[1]==0);
163 BOOST_TEST(v.a[2]==1);
164 BOOST_TEST(v.a[3]==0);
165 }
166 {
167 test_qvm::vector<V1,4> v=_1011();
168 BOOST_TEST(v.a[0]==1);
169 BOOST_TEST(v.a[1]==0);
170 BOOST_TEST(v.a[2]==1);
171 BOOST_TEST(v.a[3]==1);
172 }
173 {
174 test_qvm::vector<V1,4> v=_1100();
175 BOOST_TEST(v.a[0]==1);
176 BOOST_TEST(v.a[1]==1);
177 BOOST_TEST(v.a[2]==0);
178 BOOST_TEST(v.a[3]==0);
179 }
180 {
181 test_qvm::vector<V1,4> v=_1101();
182 BOOST_TEST(v.a[0]==1);
183 BOOST_TEST(v.a[1]==1);
184 BOOST_TEST(v.a[2]==0);
185 BOOST_TEST(v.a[3]==1);
186 }
187 {
188 test_qvm::vector<V1,4> v=_1110();
189 BOOST_TEST(v.a[0]==1);
190 BOOST_TEST(v.a[1]==1);
191 BOOST_TEST(v.a[2]==1);
192 BOOST_TEST(v.a[3]==0);
193 }
194 {
195 test_qvm::vector<V1,4> v=_1111();
196 BOOST_TEST(v.a[0]==1);
197 BOOST_TEST(v.a[1]==1);
198 BOOST_TEST(v.a[2]==1);
199 BOOST_TEST(v.a[3]==1);
200 }
201 return boost::report_errors();
202 }