2#include <muda/ext/eigen/eigen_core_cxx20.h>
3#include <vector_types.h>
8 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<float, 2, 1>> as_eigen(float2& val)
10 return Eigen::Map<Eigen::Matrix<float, 2, 1>>(
reinterpret_cast<float*
>(&val));
12 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<float, 2, 1>> as_eigen(
const float2& val)
14 return Eigen::Map<const Eigen::Matrix<float, 2, 1>>(
15 reinterpret_cast<const float*
>(&val));
18 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<float, 3, 1>> as_eigen(float3& val)
20 return Eigen::Map<Eigen::Matrix<float, 3, 1>>(
reinterpret_cast<float*
>(&val));
22 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<float, 3, 1>> as_eigen(
const float3& val)
24 return Eigen::Map<const Eigen::Matrix<float, 3, 1>>(
25 reinterpret_cast<const float*
>(&val));
28 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<float, 4, 1>> as_eigen(float4& val)
30 return Eigen::Map<Eigen::Matrix<float, 4, 1>>(
reinterpret_cast<float*
>(&val));
33 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<float, 4, 1>> as_eigen(
const float4& val)
35 return Eigen::Map<const Eigen::Matrix<float, 4, 1>>(
36 reinterpret_cast<const float*
>(&val));
39 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<double, 2, 1>> as_eigen(double2& val)
41 return Eigen::Map<Eigen::Matrix<double, 2, 1>>(
reinterpret_cast<double*
>(&val));
43 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<double, 2, 1>> as_eigen(
const double2& val)
45 return Eigen::Map<const Eigen::Matrix<double, 2, 1>>(
46 reinterpret_cast<const double*
>(&val));
49 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<double, 3, 1>> as_eigen(double3& val)
51 return Eigen::Map<Eigen::Matrix<double, 3, 1>>(
reinterpret_cast<double*
>(&val));
53 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<double, 3, 1>> as_eigen(
const double3& val)
55 return Eigen::Map<const Eigen::Matrix<double, 3, 1>>(
56 reinterpret_cast<const double*
>(&val));
59 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<double, 4, 1>> as_eigen(double4& val)
61 return Eigen::Map<Eigen::Matrix<double, 4, 1>>(
reinterpret_cast<double*
>(&val));
63 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<double, 4, 1>> as_eigen(
const double4& val)
65 return Eigen::Map<const Eigen::Matrix<double, 4, 1>>(
66 reinterpret_cast<const double*
>(&val));
69 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<int, 2, 1>> as_eigen(int2& val)
71 return Eigen::Map<Eigen::Matrix<int, 2, 1>>(
reinterpret_cast<int*
>(&val));
73 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<int, 2, 1>> as_eigen(
const int2& val)
75 return Eigen::Map<const Eigen::Matrix<int, 2, 1>>(
76 reinterpret_cast<const int*
>(&val));
79 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<int, 3, 1>> as_eigen(int3& val)
81 return Eigen::Map<Eigen::Matrix<int, 3, 1>>(
reinterpret_cast<int*
>(&val));
83 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<int, 3, 1>> as_eigen(
const int3& val)
85 return Eigen::Map<const Eigen::Matrix<int, 3, 1>>(
86 reinterpret_cast<const int*
>(&val));
89 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<int, 4, 1>> as_eigen(int4& val)
91 return Eigen::Map<Eigen::Matrix<int, 4, 1>>(
reinterpret_cast<int*
>(&val));
93 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<int, 4, 1>> as_eigen(
const int4& val)
95 return Eigen::Map<const Eigen::Matrix<int, 4, 1>>(
96 reinterpret_cast<const int*
>(&val));
99 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned int, 2, 1>> as_eigen(uint2& val)
101 return Eigen::Map<Eigen::Matrix<unsigned int, 2, 1>>(
102 reinterpret_cast<unsigned int*
>(&val));
104 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned int, 2, 1>> as_eigen(
const uint2& val)
106 return Eigen::Map<const Eigen::Matrix<unsigned int, 2, 1>>(
107 reinterpret_cast<const unsigned int*
>(&val));
110 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned int, 3, 1>> as_eigen(uint3& val)
112 return Eigen::Map<Eigen::Matrix<unsigned int, 3, 1>>(
113 reinterpret_cast<unsigned int*
>(&val));
115 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned int, 3, 1>> as_eigen(
const uint3& val)
117 return Eigen::Map<const Eigen::Matrix<unsigned int, 3, 1>>(
118 reinterpret_cast<const unsigned int*
>(&val));
121 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned int, 4, 1>> as_eigen(uint4& val)
123 return Eigen::Map<Eigen::Matrix<unsigned int, 4, 1>>(
124 reinterpret_cast<unsigned int*
>(&val));
126 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned int, 4, 1>> as_eigen(
const uint4& val)
128 return Eigen::Map<const Eigen::Matrix<unsigned int, 4, 1>>(
129 reinterpret_cast<const unsigned int*
>(&val));
132 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<short, 2, 1>> as_eigen(short2& val)
134 return Eigen::Map<Eigen::Matrix<short, 2, 1>>(
reinterpret_cast<short*
>(&val));
136 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<short, 2, 1>> as_eigen(
const short2& val)
138 return Eigen::Map<const Eigen::Matrix<short, 2, 1>>(
139 reinterpret_cast<const short*
>(&val));
142 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<short, 3, 1>> as_eigen(short3& val)
144 return Eigen::Map<Eigen::Matrix<short, 3, 1>>(
reinterpret_cast<short*
>(&val));
146 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<short, 3, 1>> as_eigen(
const short3& val)
148 return Eigen::Map<const Eigen::Matrix<short, 3, 1>>(
149 reinterpret_cast<const short*
>(&val));
152 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<short, 4, 1>> as_eigen(short4& val)
154 return Eigen::Map<Eigen::Matrix<short, 4, 1>>(
reinterpret_cast<short*
>(&val));
156 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<short, 4, 1>> as_eigen(
const short4& val)
158 return Eigen::Map<const Eigen::Matrix<short, 4, 1>>(
159 reinterpret_cast<const short*
>(&val));
162 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned short, 2, 1>> as_eigen(ushort2& val)
164 return Eigen::Map<Eigen::Matrix<unsigned short, 2, 1>>(
165 reinterpret_cast<unsigned short*
>(&val));
167 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned short, 2, 1>> as_eigen(
const ushort2& val)
169 return Eigen::Map<const Eigen::Matrix<unsigned short, 2, 1>>(
170 reinterpret_cast<const unsigned short*
>(&val));
173 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned short, 3, 1>> as_eigen(ushort3& val)
175 return Eigen::Map<Eigen::Matrix<unsigned short, 3, 1>>(
176 reinterpret_cast<unsigned short*
>(&val));
178 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned short, 3, 1>> as_eigen(
const ushort3& val)
180 return Eigen::Map<const Eigen::Matrix<unsigned short, 3, 1>>(
181 reinterpret_cast<const unsigned short*
>(&val));
184 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned short, 4, 1>> as_eigen(ushort4& val)
186 return Eigen::Map<Eigen::Matrix<unsigned short, 4, 1>>(
187 reinterpret_cast<unsigned short*
>(&val));
189 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned short, 4, 1>> as_eigen(
const ushort4& val)
191 return Eigen::Map<const Eigen::Matrix<unsigned short, 4, 1>>(
192 reinterpret_cast<const unsigned short*
>(&val));
195 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<char, 2, 1>> as_eigen(char2& val)
197 return Eigen::Map<Eigen::Matrix<char, 2, 1>>(
reinterpret_cast<char*
>(&val));
199 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<char, 2, 1>> as_eigen(
const char2& val)
201 return Eigen::Map<const Eigen::Matrix<char, 2, 1>>(
202 reinterpret_cast<const char*
>(&val));
205 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<char, 3, 1>> as_eigen(char3& val)
207 return Eigen::Map<Eigen::Matrix<char, 3, 1>>(
reinterpret_cast<char*
>(&val));
209 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<char, 3, 1>> as_eigen(
const char3& val)
211 return Eigen::Map<const Eigen::Matrix<char, 3, 1>>(
212 reinterpret_cast<const char*
>(&val));
215 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<char, 4, 1>> as_eigen(char4& val)
217 return Eigen::Map<Eigen::Matrix<char, 4, 1>>(
reinterpret_cast<char*
>(&val));
219 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<char, 4, 1>> as_eigen(
const char4& val)
221 return Eigen::Map<const Eigen::Matrix<char, 4, 1>>(
222 reinterpret_cast<const char*
>(&val));
225 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned char, 2, 1>> as_eigen(uchar2& val)
227 return Eigen::Map<Eigen::Matrix<unsigned char, 2, 1>>(
228 reinterpret_cast<unsigned char*
>(&val));
230 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned char, 2, 1>> as_eigen(
const uchar2& val)
232 return Eigen::Map<const Eigen::Matrix<unsigned char, 2, 1>>(
233 reinterpret_cast<const unsigned char*
>(&val));
236 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned char, 3, 1>> as_eigen(uchar3& val)
238 return Eigen::Map<Eigen::Matrix<unsigned char, 3, 1>>(
239 reinterpret_cast<unsigned char*
>(&val));
241 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned char, 3, 1>> as_eigen(
const uchar3& val)
243 return Eigen::Map<const Eigen::Matrix<unsigned char, 3, 1>>(
244 reinterpret_cast<const unsigned char*
>(&val));
247 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned char, 4, 1>> as_eigen(uchar4& val)
249 return Eigen::Map<Eigen::Matrix<unsigned char, 4, 1>>(
250 reinterpret_cast<unsigned char*
>(&val));
252 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned char, 4, 1>> as_eigen(
const uchar4& val)
254 return Eigen::Map<const Eigen::Matrix<unsigned char, 4, 1>>(
255 reinterpret_cast<const unsigned char*
>(&val));
258 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<long int, 2, 1>> as_eigen(long2& val)
260 return Eigen::Map<Eigen::Matrix<long int, 2, 1>>(
reinterpret_cast<long int*
>(&val));
262 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<long int, 2, 1>> as_eigen(
const long2& val)
264 return Eigen::Map<const Eigen::Matrix<long int, 2, 1>>(
265 reinterpret_cast<const long int*
>(&val));
268 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<long int, 3, 1>> as_eigen(long3& val)
270 return Eigen::Map<Eigen::Matrix<long int, 3, 1>>(
reinterpret_cast<long int*
>(&val));
272 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<long int, 3, 1>> as_eigen(
const long3& val)
274 return Eigen::Map<const Eigen::Matrix<long int, 3, 1>>(
275 reinterpret_cast<const long int*
>(&val));
278 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<long int, 4, 1>> as_eigen(long4& val)
280 return Eigen::Map<Eigen::Matrix<long int, 4, 1>>(
reinterpret_cast<long int*
>(&val));
282 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<long int, 4, 1>> as_eigen(
const long4& val)
284 return Eigen::Map<const Eigen::Matrix<long int, 4, 1>>(
285 reinterpret_cast<const long int*
>(&val));
288 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned long int, 2, 1>> as_eigen(ulong2& val)
290 return Eigen::Map<Eigen::Matrix<unsigned long int, 2, 1>>(
291 reinterpret_cast<unsigned long int*
>(&val));
293 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned long int, 2, 1>> as_eigen(
const ulong2& val)
295 return Eigen::Map<const Eigen::Matrix<unsigned long int, 2, 1>>(
296 reinterpret_cast<const unsigned long int*
>(&val));
299 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned long int, 3, 1>> as_eigen(ulong3& val)
301 return Eigen::Map<Eigen::Matrix<unsigned long int, 3, 1>>(
302 reinterpret_cast<unsigned long int*
>(&val));
304 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned long int, 3, 1>> as_eigen(
const ulong3& val)
306 return Eigen::Map<const Eigen::Matrix<unsigned long int, 3, 1>>(
307 reinterpret_cast<const unsigned long int*
>(&val));
310 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned long int, 4, 1>> as_eigen(ulong4& val)
312 return Eigen::Map<Eigen::Matrix<unsigned long int, 4, 1>>(
313 reinterpret_cast<unsigned long int*
>(&val));
315 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned long int, 4, 1>> as_eigen(
const ulong4& val)
317 return Eigen::Map<const Eigen::Matrix<unsigned long int, 4, 1>>(
318 reinterpret_cast<const unsigned long int*
>(&val));
321 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<long long int, 2, 1>> as_eigen(longlong2& val)
323 return Eigen::Map<Eigen::Matrix<long long int, 2, 1>>(
324 reinterpret_cast<long long int*
>(&val));
326 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<long long int, 2, 1>> as_eigen(
const longlong2& val)
328 return Eigen::Map<const Eigen::Matrix<long long int, 2, 1>>(
329 reinterpret_cast<const long long int*
>(&val));
332 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<long long int, 3, 1>> as_eigen(longlong3& val)
334 return Eigen::Map<Eigen::Matrix<long long int, 3, 1>>(
335 reinterpret_cast<long long int*
>(&val));
337 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<long long int, 3, 1>> as_eigen(
const longlong3& val)
339 return Eigen::Map<const Eigen::Matrix<long long int, 3, 1>>(
340 reinterpret_cast<const long long int*
>(&val));
343 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<long long int, 4, 1>> as_eigen(longlong4& val)
345 return Eigen::Map<Eigen::Matrix<long long int, 4, 1>>(
346 reinterpret_cast<long long int*
>(&val));
348 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<long long int, 4, 1>> as_eigen(
const longlong4& val)
350 return Eigen::Map<const Eigen::Matrix<long long int, 4, 1>>(
351 reinterpret_cast<const long long int*
>(&val));
354 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned long long int, 2, 1>> as_eigen(ulonglong2& val)
356 return Eigen::Map<Eigen::Matrix<unsigned long long int, 2, 1>>(
357 reinterpret_cast<unsigned long long int*
>(&val));
359 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned long long int, 2, 1>> as_eigen(
360 const ulonglong2& val)
362 return Eigen::Map<const Eigen::Matrix<unsigned long long int, 2, 1>>(
363 reinterpret_cast<const unsigned long long int*
>(&val));
366 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned long long int, 3, 1>> as_eigen(ulonglong3& val)
368 return Eigen::Map<Eigen::Matrix<unsigned long long int, 3, 1>>(
369 reinterpret_cast<unsigned long long int*
>(&val));
371 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned long long int, 3, 1>> as_eigen(
372 const ulonglong3& val)
374 return Eigen::Map<const Eigen::Matrix<unsigned long long int, 3, 1>>(
375 reinterpret_cast<const unsigned long long int*
>(&val));
378 MUDA_INLINE MUDA_GENERIC Eigen::Map<Eigen::Matrix<unsigned long long int, 4, 1>> as_eigen(ulonglong4& val)
380 return Eigen::Map<Eigen::Matrix<unsigned long long int, 4, 1>>(
381 reinterpret_cast<unsigned long long int*
>(&val));
383 MUDA_INLINE MUDA_GENERIC Eigen::Map<const Eigen::Matrix<unsigned long long int, 4, 1>> as_eigen(
384 const ulonglong4& val)
386 return Eigen::Map<const Eigen::Matrix<unsigned long long int, 4, 1>>(
387 reinterpret_cast<const unsigned long long int*
>(&val));