MUDA
Loading...
Searching...
No Matches
as_eigen.h
1#pragma once
2#include <muda/ext/eigen/eigen_core_cxx20.h>
3#include <vector_types.h>
4namespace muda
5{
6namespace eigen
7{
8 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<float, 2, 1>> as_eigen(float2& val)
9 {
10 return Eigen::Map<Eigen::Matrix<float, 2, 1>>(reinterpret_cast<float*>(&val));
11 }
12 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<float, 2, 1>> as_eigen(const float2& val)
13 {
14 return Eigen::Map<const Eigen::Matrix<float, 2, 1>>(
15 reinterpret_cast<const float*>(&val));
16 }
17
18 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<float, 3, 1>> as_eigen(float3& val)
19 {
20 return Eigen::Map<Eigen::Matrix<float, 3, 1>>(reinterpret_cast<float*>(&val));
21 }
22 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<float, 3, 1>> as_eigen(const float3& val)
23 {
24 return Eigen::Map<const Eigen::Matrix<float, 3, 1>>(
25 reinterpret_cast<const float*>(&val));
26 }
27
28 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<float, 4, 1>> as_eigen(float4& val)
29 {
30 return Eigen::Map<Eigen::Matrix<float, 4, 1>>(reinterpret_cast<float*>(&val));
31 }
32
33 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<float, 4, 1>> as_eigen(const float4& val)
34 {
35 return Eigen::Map<const Eigen::Matrix<float, 4, 1>>(
36 reinterpret_cast<const float*>(&val));
37 }
38
39 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<double, 2, 1>> as_eigen(double2& val)
40 {
41 return Eigen::Map<Eigen::Matrix<double, 2, 1>>(reinterpret_cast<double*>(&val));
42 }
43 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<double, 2, 1>> as_eigen(const double2& val)
44 {
45 return Eigen::Map<const Eigen::Matrix<double, 2, 1>>(
46 reinterpret_cast<const double*>(&val));
47 }
48
49 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<double, 3, 1>> as_eigen(double3& val)
50 {
51 return Eigen::Map<Eigen::Matrix<double, 3, 1>>(reinterpret_cast<double*>(&val));
52 }
53 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<double, 3, 1>> as_eigen(const double3& val)
54 {
55 return Eigen::Map<const Eigen::Matrix<double, 3, 1>>(
56 reinterpret_cast<const double*>(&val));
57 }
58
59 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<double, 4, 1>> as_eigen(double4& val)
60 {
61 return Eigen::Map<Eigen::Matrix<double, 4, 1>>(reinterpret_cast<double*>(&val));
62 }
63 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<double, 4, 1>> as_eigen(const double4& val)
64 {
65 return Eigen::Map<const Eigen::Matrix<double, 4, 1>>(
66 reinterpret_cast<const double*>(&val));
67 }
68
69 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<int, 2, 1>> as_eigen(int2& val)
70 {
71 return Eigen::Map<Eigen::Matrix<int, 2, 1>>(reinterpret_cast<int*>(&val));
72 }
73 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<int, 2, 1>> as_eigen(const int2& val)
74 {
75 return Eigen::Map<const Eigen::Matrix<int, 2, 1>>(
76 reinterpret_cast<const int*>(&val));
77 }
78
79 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<int, 3, 1>> as_eigen(int3& val)
80 {
81 return Eigen::Map<Eigen::Matrix<int, 3, 1>>(reinterpret_cast<int*>(&val));
82 }
83 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<int, 3, 1>> as_eigen(const int3& val)
84 {
85 return Eigen::Map<const Eigen::Matrix<int, 3, 1>>(
86 reinterpret_cast<const int*>(&val));
87 }
88
89 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<int, 4, 1>> as_eigen(int4& val)
90 {
91 return Eigen::Map<Eigen::Matrix<int, 4, 1>>(reinterpret_cast<int*>(&val));
92 }
93 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<int, 4, 1>> as_eigen(const int4& val)
94 {
95 return Eigen::Map<const Eigen::Matrix<int, 4, 1>>(
96 reinterpret_cast<const int*>(&val));
97 }
98
99 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned int, 2, 1>> as_eigen(uint2& val)
100 {
101 return Eigen::Map<Eigen::Matrix<unsigned int, 2, 1>>(
102 reinterpret_cast<unsigned int*>(&val));
103 }
104 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned int, 2, 1>> as_eigen(const uint2& val)
105 {
106 return Eigen::Map<const Eigen::Matrix<unsigned int, 2, 1>>(
107 reinterpret_cast<const unsigned int*>(&val));
108 }
109
110 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned int, 3, 1>> as_eigen(uint3& val)
111 {
112 return Eigen::Map<Eigen::Matrix<unsigned int, 3, 1>>(
113 reinterpret_cast<unsigned int*>(&val));
114 }
115 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned int, 3, 1>> as_eigen(const uint3& val)
116 {
117 return Eigen::Map<const Eigen::Matrix<unsigned int, 3, 1>>(
118 reinterpret_cast<const unsigned int*>(&val));
119 }
120
121 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned int, 4, 1>> as_eigen(uint4& val)
122 {
123 return Eigen::Map<Eigen::Matrix<unsigned int, 4, 1>>(
124 reinterpret_cast<unsigned int*>(&val));
125 }
126 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned int, 4, 1>> as_eigen(const uint4& val)
127 {
128 return Eigen::Map<const Eigen::Matrix<unsigned int, 4, 1>>(
129 reinterpret_cast<const unsigned int*>(&val));
130 }
131
132 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<short, 2, 1>> as_eigen(short2& val)
133 {
134 return Eigen::Map<Eigen::Matrix<short, 2, 1>>(reinterpret_cast<short*>(&val));
135 }
136 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<short, 2, 1>> as_eigen(const short2& val)
137 {
138 return Eigen::Map<const Eigen::Matrix<short, 2, 1>>(
139 reinterpret_cast<const short*>(&val));
140 }
141
142 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<short, 3, 1>> as_eigen(short3& val)
143 {
144 return Eigen::Map<Eigen::Matrix<short, 3, 1>>(reinterpret_cast<short*>(&val));
145 }
146 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<short, 3, 1>> as_eigen(const short3& val)
147 {
148 return Eigen::Map<const Eigen::Matrix<short, 3, 1>>(
149 reinterpret_cast<const short*>(&val));
150 }
151
152 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<short, 4, 1>> as_eigen(short4& val)
153 {
154 return Eigen::Map<Eigen::Matrix<short, 4, 1>>(reinterpret_cast<short*>(&val));
155 }
156 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<short, 4, 1>> as_eigen(const short4& val)
157 {
158 return Eigen::Map<const Eigen::Matrix<short, 4, 1>>(
159 reinterpret_cast<const short*>(&val));
160 }
161
162 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned short, 2, 1>> as_eigen(ushort2& val)
163 {
164 return Eigen::Map<Eigen::Matrix<unsigned short, 2, 1>>(
165 reinterpret_cast<unsigned short*>(&val));
166 }
167 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned short, 2, 1>> as_eigen(const ushort2& val)
168 {
169 return Eigen::Map<const Eigen::Matrix<unsigned short, 2, 1>>(
170 reinterpret_cast<const unsigned short*>(&val));
171 }
172
173 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned short, 3, 1>> as_eigen(ushort3& val)
174 {
175 return Eigen::Map<Eigen::Matrix<unsigned short, 3, 1>>(
176 reinterpret_cast<unsigned short*>(&val));
177 }
178 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned short, 3, 1>> as_eigen(const ushort3& val)
179 {
180 return Eigen::Map<const Eigen::Matrix<unsigned short, 3, 1>>(
181 reinterpret_cast<const unsigned short*>(&val));
182 }
183
184 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned short, 4, 1>> as_eigen(ushort4& val)
185 {
186 return Eigen::Map<Eigen::Matrix<unsigned short, 4, 1>>(
187 reinterpret_cast<unsigned short*>(&val));
188 }
189 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned short, 4, 1>> as_eigen(const ushort4& val)
190 {
191 return Eigen::Map<const Eigen::Matrix<unsigned short, 4, 1>>(
192 reinterpret_cast<const unsigned short*>(&val));
193 }
194
195 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<char, 2, 1>> as_eigen(char2& val)
196 {
197 return Eigen::Map<Eigen::Matrix<char, 2, 1>>(reinterpret_cast<char*>(&val));
198 }
199 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<char, 2, 1>> as_eigen(const char2& val)
200 {
201 return Eigen::Map<const Eigen::Matrix<char, 2, 1>>(
202 reinterpret_cast<const char*>(&val));
203 }
204
205 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<char, 3, 1>> as_eigen(char3& val)
206 {
207 return Eigen::Map<Eigen::Matrix<char, 3, 1>>(reinterpret_cast<char*>(&val));
208 }
209 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<char, 3, 1>> as_eigen(const char3& val)
210 {
211 return Eigen::Map<const Eigen::Matrix<char, 3, 1>>(
212 reinterpret_cast<const char*>(&val));
213 }
214
215 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<char, 4, 1>> as_eigen(char4& val)
216 {
217 return Eigen::Map<Eigen::Matrix<char, 4, 1>>(reinterpret_cast<char*>(&val));
218 }
219 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<char, 4, 1>> as_eigen(const char4& val)
220 {
221 return Eigen::Map<const Eigen::Matrix<char, 4, 1>>(
222 reinterpret_cast<const char*>(&val));
223 }
224
225 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned char, 2, 1>> as_eigen(uchar2& val)
226 {
227 return Eigen::Map<Eigen::Matrix<unsigned char, 2, 1>>(
228 reinterpret_cast<unsigned char*>(&val));
229 }
230 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned char, 2, 1>> as_eigen(const uchar2& val)
231 {
232 return Eigen::Map<const Eigen::Matrix<unsigned char, 2, 1>>(
233 reinterpret_cast<const unsigned char*>(&val));
234 }
235
236 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned char, 3, 1>> as_eigen(uchar3& val)
237 {
238 return Eigen::Map<Eigen::Matrix<unsigned char, 3, 1>>(
239 reinterpret_cast<unsigned char*>(&val));
240 }
241 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned char, 3, 1>> as_eigen(const uchar3& val)
242 {
243 return Eigen::Map<const Eigen::Matrix<unsigned char, 3, 1>>(
244 reinterpret_cast<const unsigned char*>(&val));
245 }
246
247 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned char, 4, 1>> as_eigen(uchar4& val)
248 {
249 return Eigen::Map<Eigen::Matrix<unsigned char, 4, 1>>(
250 reinterpret_cast<unsigned char*>(&val));
251 }
252 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned char, 4, 1>> as_eigen(const uchar4& val)
253 {
254 return Eigen::Map<const Eigen::Matrix<unsigned char, 4, 1>>(
255 reinterpret_cast<const unsigned char*>(&val));
256 }
257
258 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<long int, 2, 1>> as_eigen(long2& val)
259 {
260 return Eigen::Map<Eigen::Matrix<long int, 2, 1>>(reinterpret_cast<long int*>(&val));
261 }
262 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<long int, 2, 1>> as_eigen(const long2& val)
263 {
264 return Eigen::Map<const Eigen::Matrix<long int, 2, 1>>(
265 reinterpret_cast<const long int*>(&val));
266 }
267
268 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<long int, 3, 1>> as_eigen(long3& val)
269 {
270 return Eigen::Map<Eigen::Matrix<long int, 3, 1>>(reinterpret_cast<long int*>(&val));
271 }
272 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<long int, 3, 1>> as_eigen(const long3& val)
273 {
274 return Eigen::Map<const Eigen::Matrix<long int, 3, 1>>(
275 reinterpret_cast<const long int*>(&val));
276 }
277
278 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<long int, 4, 1>> as_eigen(long4& val)
279 {
280 return Eigen::Map<Eigen::Matrix<long int, 4, 1>>(reinterpret_cast<long int*>(&val));
281 }
282 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<long int, 4, 1>> as_eigen(const long4& val)
283 {
284 return Eigen::Map<const Eigen::Matrix<long int, 4, 1>>(
285 reinterpret_cast<const long int*>(&val));
286 }
287
288 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned long int, 2, 1>> as_eigen(ulong2& val)
289 {
290 return Eigen::Map<Eigen::Matrix<unsigned long int, 2, 1>>(
291 reinterpret_cast<unsigned long int*>(&val));
292 }
293 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned long int, 2, 1>> as_eigen(const ulong2& val)
294 {
295 return Eigen::Map<const Eigen::Matrix<unsigned long int, 2, 1>>(
296 reinterpret_cast<const unsigned long int*>(&val));
297 }
298
299 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned long int, 3, 1>> as_eigen(ulong3& val)
300 {
301 return Eigen::Map<Eigen::Matrix<unsigned long int, 3, 1>>(
302 reinterpret_cast<unsigned long int*>(&val));
303 }
304 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned long int, 3, 1>> as_eigen(const ulong3& val)
305 {
306 return Eigen::Map<const Eigen::Matrix<unsigned long int, 3, 1>>(
307 reinterpret_cast<const unsigned long int*>(&val));
308 }
309
310 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned long int, 4, 1>> as_eigen(ulong4& val)
311 {
312 return Eigen::Map<Eigen::Matrix<unsigned long int, 4, 1>>(
313 reinterpret_cast<unsigned long int*>(&val));
314 }
315 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned long int, 4, 1>> as_eigen(const ulong4& val)
316 {
317 return Eigen::Map<const Eigen::Matrix<unsigned long int, 4, 1>>(
318 reinterpret_cast<const unsigned long int*>(&val));
319 }
320
321 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<long long int, 2, 1>> as_eigen(longlong2& val)
322 {
323 return Eigen::Map<Eigen::Matrix<long long int, 2, 1>>(
324 reinterpret_cast<long long int*>(&val));
325 }
326 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<long long int, 2, 1>> as_eigen(const longlong2& val)
327 {
328 return Eigen::Map<const Eigen::Matrix<long long int, 2, 1>>(
329 reinterpret_cast<const long long int*>(&val));
330 }
331
332 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<long long int, 3, 1>> as_eigen(longlong3& val)
333 {
334 return Eigen::Map<Eigen::Matrix<long long int, 3, 1>>(
335 reinterpret_cast<long long int*>(&val));
336 }
337 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<long long int, 3, 1>> as_eigen(const longlong3& val)
338 {
339 return Eigen::Map<const Eigen::Matrix<long long int, 3, 1>>(
340 reinterpret_cast<const long long int*>(&val));
341 }
342
343 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<long long int, 4, 1>> as_eigen(longlong4& val)
344 {
345 return Eigen::Map<Eigen::Matrix<long long int, 4, 1>>(
346 reinterpret_cast<long long int*>(&val));
347 }
348 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<long long int, 4, 1>> as_eigen(const longlong4& val)
349 {
350 return Eigen::Map<const Eigen::Matrix<long long int, 4, 1>>(
351 reinterpret_cast<const long long int*>(&val));
352 }
353
354 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned long long int, 2, 1>> as_eigen(ulonglong2& val)
355 {
356 return Eigen::Map<Eigen::Matrix<unsigned long long int, 2, 1>>(
357 reinterpret_cast<unsigned long long int*>(&val));
358 }
359 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned long long int, 2, 1>> as_eigen(
360 const ulonglong2& val)
361 {
362 return Eigen::Map<const Eigen::Matrix<unsigned long long int, 2, 1>>(
363 reinterpret_cast<const unsigned long long int*>(&val));
364 }
365
366 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned long long int, 3, 1>> as_eigen(ulonglong3& val)
367 {
368 return Eigen::Map<Eigen::Matrix<unsigned long long int, 3, 1>>(
369 reinterpret_cast<unsigned long long int*>(&val));
370 }
371 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned long long int, 3, 1>> as_eigen(
372 const ulonglong3& val)
373 {
374 return Eigen::Map<const Eigen::Matrix<unsigned long long int, 3, 1>>(
375 reinterpret_cast<const unsigned long long int*>(&val));
376 }
377
378 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned long long int, 4, 1>> as_eigen(ulonglong4& val)
379 {
380 return Eigen::Map<Eigen::Matrix<unsigned long long int, 4, 1>>(
381 reinterpret_cast<unsigned long long int*>(&val));
382 }
383 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned long long int, 4, 1>> as_eigen(
384 const ulonglong4& val)
385 {
386 return Eigen::Map<const Eigen::Matrix<unsigned long long int, 4, 1>>(
387 reinterpret_cast<const unsigned long long int*>(&val));
388 }
389} // namespace eigen
390} // namespace muda