HIP: Heterogenous-computing Interface for Portability
hip_vector_types.h
Go to the documentation of this file.
1 /*
2 Copyright (c) 2015 - present Advanced Micro Devices, Inc. All rights reserved.
3 
4 Permission is hereby granted, free of charge, to any person obtaining a copy
5 of this software and associated documentation files (the "Software"), to deal
6 in the Software without restriction, including without limitation the rights
7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 copies of the Software, and to permit persons to whom the Software is
9 furnished to do so, subject to the following conditions:
10 
11 The above copyright notice and this permission notice shall be included in
12 all copies or substantial portions of the Software.
13 
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 THE SOFTWARE.
21 */
22 
28 #ifndef HIP_INCLUDE_HIP_HCC_DETAIL_HIP_VECTOR_TYPES_H
29 #define HIP_INCLUDE_HIP_HCC_DETAIL_HIP_VECTOR_TYPES_H
30 
31 #if defined(__HCC__) && (__hcc_workweek__ < 16032)
32 #error("This version of HIP requires a newer version of HCC.");
33 #endif
34 
36 
37 #define MAKE_DEFAULT_CONSTRUCTOR_ONE_COMPONENT(type) \
38  __device__ __host__ type() {} \
39  __device__ __host__ type(const type& val) : x(val.x) {} \
40  __device__ __host__ ~type() {}
41 
42 #define MAKE_DEFAULT_CONSTRUCTOR_TWO_COMPONENT(type) \
43  __device__ __host__ type() {} \
44  __device__ __host__ type(const type& val) : x(val.x), y(val.y) {} \
45  __device__ __host__ ~type() {}
46 
47 #define MAKE_DEFAULT_CONSTRUCTOR_THREE_COMPONENT(type) \
48  __device__ __host__ type() {} \
49  __device__ __host__ type(const type& val) : x(val.x), y(val.y), z(val.z) {} \
50  __device__ __host__ ~type() {}
51 
52 #define MAKE_DEFAULT_CONSTRUCTOR_FOUR_COMPONENT(type) \
53  __device__ __host__ type() {} \
54  __device__ __host__ type(const type& val) : x(val.x), y(val.y), z(val.z), w(val.w) {} \
55  __device__ __host__ ~type() {}
56 
57 #define MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(type, type1) \
58  __device__ __host__ type(type1 val) : x(val) {}
59 
60 #define MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(type, type1) \
61  __device__ __host__ type(type1 val) : x(val), y(val) {} \
62  __device__ __host__ type(type1 val1, type1 val2) : x(val1), y(val2) {}
63 
64 #define MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(type, type1) \
65  __device__ __host__ type(type1 val) : x(val), y(val), z(val) {} \
66  __device__ __host__ type(type1 val1, type1 val2, type1 val3) : x(val1), y(val2), z(val3) {}
67 
68 #define MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(type, type1) \
69  __device__ __host__ type(type1 val) : x(val), y(val), z(val), w(val) {} \
70  __device__ __host__ type(type1 val1, type1 val2, type1 val3, type1 val4) \
71  : x(val1), y(val2), z(val3), w(val4) {}
72 
73 struct uchar1 {
74 #ifdef __cplusplus
75  public:
76  MAKE_DEFAULT_CONSTRUCTOR_ONE_COMPONENT(uchar1)
77  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uchar1, unsigned char)
78  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uchar1, signed char)
79  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uchar1, unsigned short)
80  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uchar1, signed short)
81  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uchar1, unsigned int)
82  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uchar1, signed int)
83  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uchar1, float)
84  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uchar1, double)
85  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uchar1, unsigned long)
86  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uchar1, signed long)
87  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uchar1, unsigned long long)
88  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uchar1, signed long long)
89 
90 #endif
91  unsigned char x;
92 
93 } __attribute__((aligned(1)));
94 
95 struct uchar2 {
96 #ifdef __cplusplus
97  public:
98  MAKE_DEFAULT_CONSTRUCTOR_TWO_COMPONENT(uchar2)
99 
100  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uchar2, unsigned char)
101  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uchar2, signed char)
102  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uchar2, unsigned short)
103  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uchar2, signed short)
104  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uchar2, unsigned int)
105  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uchar2, signed int)
106  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uchar2, float)
107  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uchar2, double)
108  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uchar2, unsigned long)
109  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uchar2, signed long)
110  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uchar2, unsigned long long)
111  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uchar2, signed long long)
112 #endif
113  union {
114  struct {
115  unsigned char x, y;
116  };
117  unsigned short a;
118  };
119 } __attribute__((aligned(2)));
120 
121 struct uchar3 {
122 #ifdef __cplusplus
123  public:
124  MAKE_DEFAULT_CONSTRUCTOR_THREE_COMPONENT(uchar3)
125 
126  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uchar3, unsigned char)
127  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uchar3, signed char)
128  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uchar3, unsigned short)
129  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uchar3, signed short)
130  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uchar3, unsigned int)
131  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uchar3, signed int)
132  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uchar3, float)
133  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uchar3, double)
134  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uchar3, unsigned long)
135  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uchar3, signed long)
136  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uchar3, unsigned long long)
137  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uchar3, signed long long)
138 #endif
139  unsigned char x, y, z;
140 };
141 
142 struct uchar4 {
143 #ifdef __cplusplus
144  public:
145  MAKE_DEFAULT_CONSTRUCTOR_FOUR_COMPONENT(uchar4)
146 
147  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uchar4, unsigned char)
148  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uchar4, signed char)
149  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uchar4, unsigned short)
150  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uchar4, signed short)
151  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uchar4, unsigned int)
152  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uchar4, signed int)
153  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uchar4, float)
154  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uchar4, double)
155  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uchar4, unsigned long)
156  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uchar4, signed long)
157  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uchar4, unsigned long long)
158  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uchar4, signed long long)
159 #endif
160  union {
161  struct {
162  unsigned char x, y, z, w;
163  };
164  unsigned int a;
165  };
166 } __attribute__((aligned(4)));
167 
168 
169 struct char1 {
170 #ifdef __cplusplus
171  public:
172  MAKE_DEFAULT_CONSTRUCTOR_ONE_COMPONENT(char1)
173 
174  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(char1, unsigned char)
175  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(char1, signed char)
176  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(char1, unsigned short)
177  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(char1, signed short)
178  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(char1, unsigned int)
179  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(char1, signed int)
180  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(char1, float)
181  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(char1, double)
182  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(char1, unsigned long)
183  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(char1, signed long)
184  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(char1, unsigned long long)
185  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(char1, signed long long)
186 #endif
187  signed char x;
188 } __attribute__((aligned(1)));
189 
190 struct char2 {
191 #ifdef __cplusplus
192  public:
193  MAKE_DEFAULT_CONSTRUCTOR_TWO_COMPONENT(char2)
194 
195  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(char2, unsigned char)
196  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(char2, signed char)
197  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(char2, unsigned short)
198  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(char2, signed short)
199  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(char2, unsigned int)
200  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(char2, signed int)
201  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(char2, float)
202  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(char2, double)
203  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(char2, unsigned long)
204  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(char2, signed long)
205  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(char2, unsigned long long)
206  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(char2, signed long long)
207 #endif
208  union {
209  struct {
210  signed char x, y;
211  };
212  unsigned short a;
213  };
214 } __attribute__((aligned(2)));
215 
216 struct char3 {
217 #ifdef __cplusplus
218  public:
219  MAKE_DEFAULT_CONSTRUCTOR_THREE_COMPONENT(char3)
220  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(char3, unsigned char)
221  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(char3, signed char)
222  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(char3, unsigned short)
223  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(char3, signed short)
224  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(char3, unsigned int)
225  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(char3, signed int)
226  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(char3, float)
227  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(char3, double)
228  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(char3, unsigned long)
229  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(char3, signed long)
230  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(char3, unsigned long long)
231  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(char3, signed long long)
232 #endif
233  signed char x, y, z;
234 };
235 
236 struct char4 {
237 #ifdef __cplusplus
238  public:
239  MAKE_DEFAULT_CONSTRUCTOR_FOUR_COMPONENT(char4)
240 
241  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(char4, unsigned char)
242  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(char4, signed char)
243  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(char4, unsigned short)
244  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(char4, signed short)
245  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(char4, unsigned int)
246  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(char4, signed int)
247  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(char4, float)
248  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(char4, double)
249  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(char4, unsigned long)
250  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(char4, signed long)
251  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(char4, unsigned long long)
252  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(char4, signed long long)
253 #endif
254  union {
255  struct {
256  signed char x, y, z, w;
257  };
258  unsigned int a;
259  };
260 } __attribute__((aligned(4)));
261 
262 
263 struct ushort1 {
264 #ifdef __cplusplus
265  public:
266  MAKE_DEFAULT_CONSTRUCTOR_ONE_COMPONENT(ushort1)
267 
268  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ushort1, unsigned char)
269  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ushort1, signed char)
270  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ushort1, unsigned short)
271  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ushort1, signed short)
272  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ushort1, unsigned int)
273  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ushort1, signed int)
274  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ushort1, float)
275  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ushort1, double)
276  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ushort1, unsigned long)
277  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ushort1, signed long)
278  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ushort1, unsigned long long)
279  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ushort1, signed long long)
280 #endif
281  unsigned short x;
282 } __attribute__((aligned(2)));
283 
284 struct ushort2 {
285 #ifdef __cplusplus
286  public:
287  MAKE_DEFAULT_CONSTRUCTOR_TWO_COMPONENT(ushort2)
288 
289  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ushort2, unsigned char)
290  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ushort2, signed char)
291  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ushort2, unsigned short)
292  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ushort2, signed short)
293  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ushort2, unsigned int)
294  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ushort2, signed int)
295  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ushort2, float)
296  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ushort2, double)
297  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ushort2, unsigned long)
298  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ushort2, signed long)
299  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ushort2, unsigned long long)
300  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ushort2, signed long long)
301 #endif
302  union {
303  struct {
304  unsigned short x, y;
305  };
306  unsigned int a;
307  };
308 } __attribute__((aligned(4)));
309 
310 struct ushort3 {
311 #ifdef __cplusplus
312  public:
313  MAKE_DEFAULT_CONSTRUCTOR_THREE_COMPONENT(ushort3)
314 
315  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ushort3, unsigned char)
316  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ushort3, signed char)
317  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ushort3, unsigned short)
318  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ushort3, signed short)
319  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ushort3, unsigned int)
320  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ushort3, signed int)
321  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ushort3, float)
322  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ushort3, double)
323  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ushort3, unsigned long)
324  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ushort3, signed long)
325  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ushort3, unsigned long long)
326  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ushort3, signed long long)
327 #endif
328  unsigned short x, y, z;
329 };
330 
331 struct ushort4 {
332 #ifdef __cplusplus
333  public:
334  MAKE_DEFAULT_CONSTRUCTOR_FOUR_COMPONENT(ushort4)
335 
336  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ushort4, unsigned char)
337  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ushort4, signed char)
338  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ushort4, unsigned short)
339  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ushort4, signed short)
340  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ushort4, unsigned int)
341  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ushort4, signed int)
342  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ushort4, float)
343  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ushort4, double)
344  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ushort4, unsigned long)
345  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ushort4, signed long)
346  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ushort4, unsigned long long)
347  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ushort4, signed long long)
348 #endif
349  union {
350  struct {
351  unsigned short x, y, z, w;
352  };
353  unsigned int a, b;
354  };
355 } __attribute__((aligned(8)));
356 
357 struct short1 {
358 #ifdef __cplusplus
359  public:
360  MAKE_DEFAULT_CONSTRUCTOR_ONE_COMPONENT(short1)
361 
362  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(short1, unsigned char)
363  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(short1, signed char)
364  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(short1, unsigned short)
365  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(short1, signed short)
366  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(short1, unsigned int)
367  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(short1, signed int)
368  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(short1, float)
369  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(short1, double)
370  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(short1, unsigned long)
371  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(short1, signed long)
372  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(short1, unsigned long long)
373  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(short1, signed long long)
374 #endif
375  signed short x;
376 } __attribute__((aligned(2)));
377 
378 struct short2 {
379 #ifdef __cplusplus
380  public:
381  MAKE_DEFAULT_CONSTRUCTOR_TWO_COMPONENT(short2)
382 
383  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(short2, unsigned char)
384  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(short2, signed char)
385  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(short2, unsigned short)
386  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(short2, signed short)
387  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(short2, unsigned int)
388  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(short2, signed int)
389  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(short2, float)
390  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(short2, double)
391  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(short2, unsigned long)
392  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(short2, signed long)
393  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(short2, unsigned long long)
394  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(short2, signed long long)
395 #endif
396  union {
397  struct {
398  signed short x, y;
399  };
400  unsigned int a;
401  };
402 
403 } __attribute__((aligned(4)));
404 
405 struct short3 {
406 #ifdef __cplusplus
407  public:
408  MAKE_DEFAULT_CONSTRUCTOR_THREE_COMPONENT(short3)
409 
410  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(short3, unsigned char)
411  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(short3, signed char)
412  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(short3, unsigned short)
413  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(short3, signed short)
414  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(short3, unsigned int)
415  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(short3, signed int)
416  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(short3, float)
417  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(short3, double)
418  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(short3, unsigned long)
419  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(short3, signed long)
420  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(short3, unsigned long long)
421  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(short3, signed long long)
422 #endif
423  signed short x, y, z;
424 };
425 
426 struct short4 {
427 #ifdef __cplusplus
428  public:
429  MAKE_DEFAULT_CONSTRUCTOR_FOUR_COMPONENT(short4)
430 
431  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(short4, unsigned char)
432  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(short4, signed char)
433  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(short4, unsigned short)
434  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(short4, signed short)
435  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(short4, unsigned int)
436  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(short4, signed int)
437  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(short4, float)
438  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(short4, double)
439  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(short4, unsigned long)
440  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(short4, signed long)
441  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(short4, unsigned long long)
442  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(short4, signed long long)
443 #endif
444  union {
445  struct {
446  signed short x, y, z, w;
447  };
448  unsigned int a, b;
449  };
450 } __attribute__((aligned(8)));
451 
452 
453 struct uint1 {
454 #ifdef __cplusplus
455  public:
456  MAKE_DEFAULT_CONSTRUCTOR_ONE_COMPONENT(uint1)
457 
458  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uint1, unsigned char)
459  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uint1, signed char)
460  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uint1, unsigned short)
461  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uint1, signed short)
462  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uint1, unsigned int)
463  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uint1, signed int)
464  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uint1, float)
465  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uint1, double)
466  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uint1, unsigned long)
467  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uint1, signed long)
468  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uint1, unsigned long long)
469  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(uint1, signed long long)
470 #endif
471  unsigned int x;
472 } __attribute__((aligned(4)));
473 
474 struct uint2 {
475 #ifdef __cplusplus
476  public:
477  MAKE_DEFAULT_CONSTRUCTOR_TWO_COMPONENT(uint2)
478 
479  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uint2, unsigned char)
480  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uint2, signed char)
481  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uint2, unsigned short)
482  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uint2, signed short)
483  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uint2, unsigned int)
484  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uint2, signed int)
485  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uint2, float)
486  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uint2, double)
487  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uint2, unsigned long)
488  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uint2, signed long)
489  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uint2, unsigned long long)
490  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(uint2, signed long long)
491 #endif
492  unsigned int x, y;
493 } __attribute__((aligned(8)));
494 
495 struct uint3 {
496 #ifdef __cplusplus
497  public:
498  MAKE_DEFAULT_CONSTRUCTOR_THREE_COMPONENT(uint3)
499 
500  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uint3, unsigned char)
501  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uint3, signed char)
502  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uint3, unsigned short)
503  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uint3, signed short)
504  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uint3, unsigned int)
505  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uint3, signed int)
506  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uint3, float)
507  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uint3, double)
508  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uint3, unsigned long)
509  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uint3, signed long)
510  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uint3, unsigned long long)
511  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(uint3, signed long long)
512 #endif
513  unsigned int x, y, z;
514 };
515 
516 struct uint4 {
517 #ifdef __cplusplus
518  public:
519  MAKE_DEFAULT_CONSTRUCTOR_FOUR_COMPONENT(uint4)
520 
521  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uint4, unsigned char)
522  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uint4, signed char)
523  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uint4, unsigned short)
524  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uint4, signed short)
525  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uint4, unsigned int)
526  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uint4, signed int)
527  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uint4, float)
528  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uint4, double)
529  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uint4, unsigned long)
530  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uint4, signed long)
531  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uint4, unsigned long long)
532  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(uint4, signed long long)
533 #endif
534  unsigned int x, y, z, w;
535 } __attribute__((aligned(16)));
536 
537 struct int1 {
538 #ifdef __cplusplus
539  public:
540  MAKE_DEFAULT_CONSTRUCTOR_ONE_COMPONENT(int1)
541 
542  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(int1, unsigned char)
543  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(int1, signed char)
544  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(int1, unsigned short)
545  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(int1, signed short)
546  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(int1, unsigned int)
547  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(int1, signed int)
548  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(int1, float)
549  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(int1, double)
550  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(int1, unsigned long)
551  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(int1, signed long)
552  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(int1, unsigned long long)
553  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(int1, signed long long)
554 #endif
555  signed int x;
556 } __attribute__((aligned(4)));
557 
558 struct int2 {
559 #ifdef __cplusplus
560  public:
561  MAKE_DEFAULT_CONSTRUCTOR_TWO_COMPONENT(int2)
562 
563  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(int2, unsigned char)
564  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(int2, signed char)
565  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(int2, unsigned short)
566  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(int2, signed short)
567  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(int2, unsigned int)
568  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(int2, signed int)
569  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(int2, float)
570  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(int2, double)
571  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(int2, unsigned long)
572  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(int2, signed long)
573  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(int2, unsigned long long)
574  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(int2, signed long long)
575 #endif
576  signed int x, y;
577 } __attribute__((aligned(8)));
578 
579 struct int3 {
580 #ifdef __cplusplus
581  public:
582  MAKE_DEFAULT_CONSTRUCTOR_THREE_COMPONENT(int3)
583 
584  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(int3, unsigned char)
585  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(int3, signed char)
586  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(int3, unsigned short)
587  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(int3, signed short)
588  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(int3, unsigned int)
589  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(int3, signed int)
590  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(int3, float)
591  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(int3, double)
592  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(int3, unsigned long)
593  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(int3, signed long)
594  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(int3, unsigned long long)
595  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(int3, signed long long)
596 #endif
597  signed int x, y, z;
598 };
599 
600 struct int4 {
601 #ifdef __cplusplus
602  public:
603  MAKE_DEFAULT_CONSTRUCTOR_FOUR_COMPONENT(int4)
604 
605  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(int4, unsigned char)
606  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(int4, signed char)
607  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(int4, unsigned short)
608  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(int4, signed short)
609  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(int4, unsigned int)
610  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(int4, signed int)
611  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(int4, float)
612  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(int4, double)
613  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(int4, unsigned long)
614  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(int4, signed long)
615  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(int4, unsigned long long)
616  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(int4, signed long long)
617 #endif
618  signed int x, y, z, w;
619 } __attribute__((aligned(16)));
620 
621 
622 struct float1 {
623 #ifdef __cplusplus
624  public:
625  MAKE_DEFAULT_CONSTRUCTOR_ONE_COMPONENT(float1)
626 
627  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(float1, unsigned char)
628  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(float1, signed char)
629  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(float1, unsigned short)
630  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(float1, signed short)
631  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(float1, unsigned int)
632  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(float1, signed int)
633  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(float1, float)
634  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(float1, double)
635  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(float1, unsigned long)
636  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(float1, signed long)
637  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(float1, unsigned long long)
638  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(float1, signed long long)
639 #endif
640  float x;
641 } __attribute__((aligned(4)));
642 
643 struct float2 {
644 #ifdef __cplusplus
645  public:
646  MAKE_DEFAULT_CONSTRUCTOR_TWO_COMPONENT(float2)
647 
648  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(float2, unsigned char)
649  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(float2, signed char)
650  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(float2, unsigned short)
651  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(float2, signed short)
652  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(float2, unsigned int)
653  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(float2, signed int)
654  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(float2, float)
655  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(float2, double)
656  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(float2, unsigned long)
657  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(float2, signed long)
658  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(float2, unsigned long long)
659  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(float2, signed long long)
660 #endif
661  float x, y;
662 } __attribute__((aligned(8)));
663 
664 struct float3 {
665 #ifdef __cplusplus
666  public:
667  MAKE_DEFAULT_CONSTRUCTOR_THREE_COMPONENT(float3)
668 
669  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(float3, unsigned char)
670  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(float3, signed char)
671  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(float3, unsigned short)
672  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(float3, signed short)
673  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(float3, unsigned int)
674  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(float3, signed int)
675  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(float3, float)
676  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(float3, double)
677  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(float3, unsigned long)
678  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(float3, signed long)
679  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(float3, unsigned long long)
680  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(float3, signed long long)
681 #endif
682  float x, y, z;
683 };
684 
685 struct float4 {
686 #ifdef __cplusplus
687  public:
688  MAKE_DEFAULT_CONSTRUCTOR_FOUR_COMPONENT(float4)
689 
690  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(float4, unsigned char)
691  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(float4, signed char)
692  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(float4, unsigned short)
693  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(float4, signed short)
694  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(float4, unsigned int)
695  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(float4, signed int)
696  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(float4, float)
697  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(float4, double)
698  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(float4, unsigned long)
699  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(float4, signed long)
700  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(float4, unsigned long long)
701  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(float4, signed long long)
702 #endif
703  float x, y, z, w;
704 } __attribute__((aligned(16)));
705 
706 
707 struct double1 {
708 #ifdef __cplusplus
709  public:
710  MAKE_DEFAULT_CONSTRUCTOR_ONE_COMPONENT(double1)
711 
712  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(double1, unsigned char)
713  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(double1, signed char)
714  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(double1, unsigned short)
715  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(double1, signed short)
716  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(double1, unsigned int)
717  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(double1, signed int)
718  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(double1, float)
719  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(double1, double)
720  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(double1, unsigned long)
721  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(double1, signed long)
722  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(double1, unsigned long long)
723  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(double1, signed long long)
724 #endif
725  double x;
726 } __attribute__((aligned(8)));
727 
728 struct double2 {
729 #ifdef __cplusplus
730  public:
731  MAKE_DEFAULT_CONSTRUCTOR_TWO_COMPONENT(double2)
732 
733  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(double2, unsigned char)
734  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(double2, signed char)
735  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(double2, unsigned short)
736  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(double2, signed short)
737  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(double2, unsigned int)
738  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(double2, signed int)
739  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(double2, float)
740  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(double2, double)
741  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(double2, unsigned long)
742  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(double2, signed long)
743  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(double2, unsigned long long)
744  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(double2, signed long long)
745 #endif
746  double x, y;
747 } __attribute__((aligned(16)));
748 
749 struct double3 {
750 #ifdef __cplusplus
751  public:
752  MAKE_DEFAULT_CONSTRUCTOR_THREE_COMPONENT(double3)
753 
754  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(double3, unsigned char)
755  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(double3, signed char)
756  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(double3, unsigned short)
757  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(double3, signed short)
758  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(double3, unsigned int)
759  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(double3, signed int)
760  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(double3, float)
761  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(double3, double)
762  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(double3, unsigned long)
763  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(double3, signed long)
764  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(double3, unsigned long long)
765  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(double3, signed long long)
766 #endif
767  double x, y, z;
768 };
769 
770 struct double4 {
771 #ifdef __cplusplus
772  public:
773  MAKE_DEFAULT_CONSTRUCTOR_FOUR_COMPONENT(double4)
774 
775  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(double4, unsigned char)
776  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(double4, signed char)
777  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(double4, unsigned short)
778  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(double4, signed short)
779  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(double4, unsigned int)
780  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(double4, signed int)
781  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(double4, float)
782  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(double4, double)
783  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(double4, unsigned long)
784  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(double4, signed long)
785  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(double4, unsigned long long)
786  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(double4, signed long long)
787 #endif
788  double x, y, z, w;
789 } __attribute__((aligned(32)));
790 
791 
792 struct ulong1 {
793 #ifdef __cplusplus
794  public:
795  MAKE_DEFAULT_CONSTRUCTOR_ONE_COMPONENT(ulong1)
796 
797  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulong1, unsigned char)
798  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulong1, signed char)
799  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulong1, unsigned short)
800  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulong1, signed short)
801  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulong1, unsigned int)
802  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulong1, signed int)
803  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulong1, float)
804  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulong1, double)
805  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulong1, unsigned long)
806  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulong1, signed long)
807  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulong1, unsigned long long)
808  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulong1, signed long long)
809 #endif
810  unsigned long x;
811 } __attribute__((aligned(8)));
812 
813 struct ulong2 {
814 #ifdef __cplusplus
815  public:
816  MAKE_DEFAULT_CONSTRUCTOR_TWO_COMPONENT(ulong2)
817 
818  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulong2, unsigned char)
819  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulong2, signed char)
820  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulong2, unsigned short)
821  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulong2, signed short)
822  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulong2, unsigned int)
823  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulong2, signed int)
824  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulong2, float)
825  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulong2, double)
826  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulong2, unsigned long)
827  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulong2, signed long)
828  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulong2, unsigned long long)
829  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulong2, signed long long)
830 #endif
831  unsigned long x, y;
832 } __attribute__((aligned(16)));
833 
834 struct ulong3 {
835 #ifdef __cplusplus
836  public:
837  MAKE_DEFAULT_CONSTRUCTOR_THREE_COMPONENT(ulong3)
838 
839  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulong3, unsigned char)
840  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulong3, signed char)
841  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulong3, unsigned short)
842  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulong3, signed short)
843  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulong3, unsigned int)
844  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulong3, signed int)
845  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulong3, float)
846  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulong3, double)
847  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulong3, unsigned long)
848  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulong3, signed long)
849  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulong3, unsigned long long)
850  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulong3, signed long long)
851 #endif
852  unsigned long x, y, z;
853 };
854 
855 struct ulong4 {
856 #ifdef __cplusplus
857  public:
858  MAKE_DEFAULT_CONSTRUCTOR_FOUR_COMPONENT(ulong4)
859 
860  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulong4, unsigned char)
861  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulong4, signed char)
862  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulong4, unsigned short)
863  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulong4, signed short)
864  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulong4, unsigned int)
865  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulong4, signed int)
866  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulong4, float)
867  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulong4, double)
868  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulong4, unsigned long)
869  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulong4, signed long)
870  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulong4, unsigned long long)
871  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulong4, signed long long)
872 #endif
873  unsigned long x, y, z, w;
874 } __attribute__((aligned(32)));
875 
876 
877 struct long1 {
878 #ifdef __cplusplus
879  public:
880  MAKE_DEFAULT_CONSTRUCTOR_ONE_COMPONENT(long1)
881 
882  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(long1, unsigned char)
883  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(long1, signed char)
884  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(long1, unsigned short)
885  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(long1, signed short)
886  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(long1, unsigned int)
887  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(long1, signed int)
888  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(long1, float)
889  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(long1, double)
890  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(long1, unsigned long)
891  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(long1, signed long)
892  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(long1, unsigned long long)
893  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(long1, signed long long)
894 #endif
895  signed long x;
896 } __attribute__((aligned(8)));
897 
898 struct long2 {
899 #ifdef __cplusplus
900  public:
901  MAKE_DEFAULT_CONSTRUCTOR_TWO_COMPONENT(long2)
902 
903  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(long2, unsigned char)
904  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(long2, signed char)
905  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(long2, unsigned short)
906  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(long2, signed short)
907  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(long2, unsigned int)
908  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(long2, signed int)
909  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(long2, float)
910  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(long2, double)
911  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(long2, unsigned long)
912  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(long2, signed long)
913  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(long2, unsigned long long)
914  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(long2, signed long long)
915 #endif
916  signed long x, y;
917 } __attribute__((aligned(16)));
918 
919 struct long3 {
920 #ifdef __cplusplus
921  public:
922  MAKE_DEFAULT_CONSTRUCTOR_THREE_COMPONENT(long3)
923 
924  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(long3, unsigned char)
925  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(long3, signed char)
926  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(long3, unsigned short)
927  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(long3, signed short)
928  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(long3, unsigned int)
929  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(long3, signed int)
930  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(long3, float)
931  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(long3, double)
932  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(long3, unsigned long)
933  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(long3, signed long)
934  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(long3, unsigned long long)
935  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(long3, signed long long)
936 #endif
937  signed long x, y, z;
938 };
939 
940 struct long4 {
941 #ifdef __cplusplus
942  public:
943  MAKE_DEFAULT_CONSTRUCTOR_FOUR_COMPONENT(long4)
944 
945  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(long4, unsigned char)
946  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(long4, signed char)
947  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(long4, unsigned short)
948  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(long4, signed short)
949  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(long4, unsigned int)
950  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(long4, signed int)
951  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(long4, float)
952  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(long4, double)
953  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(long4, unsigned long)
954  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(long4, signed long)
955  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(long4, unsigned long long)
956  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(long4, signed long long)
957 #endif
958  signed long x, y, z, w;
959 } __attribute__((aligned(32)));
960 
961 
962 struct ulonglong1 {
963 #ifdef __cplusplus
964  public:
965  MAKE_DEFAULT_CONSTRUCTOR_ONE_COMPONENT(ulonglong1)
966 
967  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulonglong1, unsigned char)
968  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulonglong1, signed char)
969  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulonglong1, unsigned short)
970  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulonglong1, signed short)
971  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulonglong1, unsigned int)
972  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulonglong1, signed int)
973  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulonglong1, float)
974  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulonglong1, double)
975  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulonglong1, unsigned long)
976  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulonglong1, signed long)
977  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulonglong1, unsigned long long)
978  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(ulonglong1, signed long long)
979 #endif
980  unsigned long long x;
981 } __attribute__((aligned(8)));
982 
983 struct ulonglong2 {
984 #ifdef __cplusplus
985  public:
986  MAKE_DEFAULT_CONSTRUCTOR_TWO_COMPONENT(ulonglong2)
987 
988  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulonglong2, unsigned char)
989  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulonglong2, signed char)
990  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulonglong2, unsigned short)
991  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulonglong2, signed short)
992  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulonglong2, unsigned int)
993  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulonglong2, signed int)
994  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulonglong2, float)
995  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulonglong2, double)
996  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulonglong2, unsigned long)
997  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulonglong2, signed long)
998  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulonglong2, unsigned long long)
999  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(ulonglong2, signed long long)
1000 #endif
1001  unsigned long long x, y;
1002 } __attribute__((aligned(16)));
1003 
1004 struct ulonglong3 {
1005 #ifdef __cplusplus
1006  public:
1007  MAKE_DEFAULT_CONSTRUCTOR_THREE_COMPONENT(ulonglong3)
1008 
1009  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulonglong3, unsigned char)
1010  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulonglong3, signed char)
1011  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulonglong3, unsigned short)
1012  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulonglong3, signed short)
1013  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulonglong3, unsigned int)
1014  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulonglong3, signed int)
1015  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulonglong3, float)
1016  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulonglong3, double)
1017  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulonglong3, unsigned long)
1018  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulonglong3, signed long)
1019  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulonglong3, unsigned long long)
1020  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(ulonglong3, signed long long)
1021 #endif
1022  unsigned long long x, y, z;
1023 };
1024 
1025 struct ulonglong4 {
1026 #ifdef __cplusplus
1027  public:
1028  MAKE_DEFAULT_CONSTRUCTOR_FOUR_COMPONENT(ulonglong4)
1029 
1030  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulonglong4, unsigned char)
1031  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulonglong4, signed char)
1032  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulonglong4, unsigned short)
1033  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulonglong4, signed short)
1034  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulonglong4, unsigned int)
1035  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulonglong4, signed int)
1036  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulonglong4, float)
1037  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulonglong4, double)
1038  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulonglong4, unsigned long)
1039  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulonglong4, signed long)
1040  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulonglong4, unsigned long long)
1041  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(ulonglong4, signed long long)
1042 #endif
1043  unsigned long long x, y, z, w;
1044 } __attribute__((aligned(32)));
1045 
1046 
1047 struct longlong1 {
1048 #ifdef __cplusplus
1049  public:
1050  MAKE_DEFAULT_CONSTRUCTOR_ONE_COMPONENT(longlong1)
1051 
1052  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(longlong1, unsigned char)
1053  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(longlong1, signed char)
1054  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(longlong1, unsigned short)
1055  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(longlong1, signed short)
1056  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(longlong1, unsigned int)
1057  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(longlong1, signed int)
1058  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(longlong1, float)
1059  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(longlong1, double)
1060  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(longlong1, unsigned long)
1061  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(longlong1, signed long)
1062  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(longlong1, unsigned long long)
1063  MAKE_COMPONENT_CONSTRUCTOR_ONE_COMPONENT(longlong1, signed long long)
1064 #endif
1065  signed long long x;
1066 } __attribute__((aligned(8)));
1067 
1068 struct longlong2 {
1069 #ifdef __cplusplus
1070  public:
1071  MAKE_DEFAULT_CONSTRUCTOR_TWO_COMPONENT(longlong2)
1072 
1073  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(longlong2, unsigned char)
1074  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(longlong2, signed char)
1075  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(longlong2, unsigned short)
1076  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(longlong2, signed short)
1077  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(longlong2, unsigned int)
1078  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(longlong2, signed int)
1079  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(longlong2, float)
1080  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(longlong2, double)
1081  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(longlong2, unsigned long)
1082  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(longlong2, signed long)
1083  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(longlong2, unsigned long long)
1084  MAKE_COMPONENT_CONSTRUCTOR_TWO_COMPONENT(longlong2, signed long long)
1085 #endif
1086  signed long long x, y;
1087 } __attribute__((aligned(16)));
1088 
1089 struct longlong3 {
1090 #ifdef __cplusplus
1091  public:
1092  MAKE_DEFAULT_CONSTRUCTOR_THREE_COMPONENT(longlong3)
1093 
1094  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(longlong3, unsigned char)
1095  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(longlong3, signed char)
1096  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(longlong3, unsigned short)
1097  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(longlong3, signed short)
1098  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(longlong3, unsigned int)
1099  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(longlong3, signed int)
1100  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(longlong3, float)
1101  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(longlong3, double)
1102  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(longlong3, unsigned long)
1103  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(longlong3, signed long)
1104  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(longlong3, unsigned long long)
1105  MAKE_COMPONENT_CONSTRUCTOR_THREE_COMPONENT(longlong3, signed long long)
1106 #endif
1107  signed long long x, y, z;
1108 };
1109 
1110 struct longlong4 {
1111 #ifdef __cplusplus
1112  public:
1113  MAKE_DEFAULT_CONSTRUCTOR_FOUR_COMPONENT(longlong4)
1114 
1115  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(longlong4, unsigned char)
1116  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(longlong4, signed char)
1117  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(longlong4, unsigned short)
1118  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(longlong4, signed short)
1119  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(longlong4, unsigned int)
1120  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(longlong4, signed int)
1121  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(longlong4, float)
1122  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(longlong4, double)
1123  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(longlong4, unsigned long)
1124  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(longlong4, signed long)
1125  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(longlong4, unsigned long long)
1126  MAKE_COMPONENT_CONSTRUCTOR_FOUR_COMPONENT(longlong4, signed long long)
1127 #endif
1128  signed long x, y, z, w;
1129 } __attribute__((aligned(32)));
1130 
1131 #define DECLOP_MAKE_ONE_COMPONENT(comp, type) \
1132  __device__ __host__ static inline struct type make_##type(comp x) { \
1133  struct type ret; \
1134  ret.x = x; \
1135  return ret; \
1136  }
1137 
1138 #define DECLOP_MAKE_TWO_COMPONENT(comp, type) \
1139  __device__ __host__ static inline struct type make_##type(comp x, comp y) { \
1140  struct type ret; \
1141  ret.x = x; \
1142  ret.y = y; \
1143  return ret; \
1144  }
1145 
1146 #define DECLOP_MAKE_THREE_COMPONENT(comp, type) \
1147  __device__ __host__ static inline struct type make_##type(comp x, comp y, comp z) { \
1148  struct type ret; \
1149  ret.x = x; \
1150  ret.y = y; \
1151  ret.z = z; \
1152  return ret; \
1153  }
1154 
1155 #define DECLOP_MAKE_FOUR_COMPONENT(comp, type) \
1156  __device__ __host__ static inline struct type make_##type(comp x, comp y, comp z, comp w) { \
1157  struct type ret; \
1158  ret.x = x; \
1159  ret.y = y; \
1160  ret.z = z; \
1161  ret.w = w; \
1162  return ret; \
1163  }
1164 
1165 DECLOP_MAKE_ONE_COMPONENT(unsigned char, uchar1);
1166 DECLOP_MAKE_TWO_COMPONENT(unsigned char, uchar2);
1167 DECLOP_MAKE_THREE_COMPONENT(unsigned char, uchar3);
1168 DECLOP_MAKE_FOUR_COMPONENT(unsigned char, uchar4);
1169 
1170 DECLOP_MAKE_ONE_COMPONENT(signed char, char1);
1171 DECLOP_MAKE_TWO_COMPONENT(signed char, char2);
1172 DECLOP_MAKE_THREE_COMPONENT(signed char, char3);
1173 DECLOP_MAKE_FOUR_COMPONENT(signed char, char4);
1174 
1175 DECLOP_MAKE_ONE_COMPONENT(unsigned short, ushort1);
1176 DECLOP_MAKE_TWO_COMPONENT(unsigned short, ushort2);
1177 DECLOP_MAKE_THREE_COMPONENT(unsigned short, ushort3);
1178 DECLOP_MAKE_FOUR_COMPONENT(unsigned short, ushort4);
1179 
1180 DECLOP_MAKE_ONE_COMPONENT(signed short, short1);
1181 DECLOP_MAKE_TWO_COMPONENT(signed short, short2);
1182 DECLOP_MAKE_THREE_COMPONENT(signed short, short3);
1183 DECLOP_MAKE_FOUR_COMPONENT(signed short, short4);
1184 
1185 DECLOP_MAKE_ONE_COMPONENT(unsigned int, uint1);
1186 DECLOP_MAKE_TWO_COMPONENT(unsigned int, uint2);
1187 DECLOP_MAKE_THREE_COMPONENT(unsigned int, uint3);
1188 DECLOP_MAKE_FOUR_COMPONENT(unsigned int, uint4);
1189 
1190 DECLOP_MAKE_ONE_COMPONENT(signed int, int1);
1191 DECLOP_MAKE_TWO_COMPONENT(signed int, int2);
1192 DECLOP_MAKE_THREE_COMPONENT(signed int, int3);
1193 DECLOP_MAKE_FOUR_COMPONENT(signed int, int4);
1194 
1195 DECLOP_MAKE_ONE_COMPONENT(float, float1);
1196 DECLOP_MAKE_TWO_COMPONENT(float, float2);
1197 DECLOP_MAKE_THREE_COMPONENT(float, float3);
1198 DECLOP_MAKE_FOUR_COMPONENT(float, float4);
1199 
1200 DECLOP_MAKE_ONE_COMPONENT(double, double1);
1201 DECLOP_MAKE_TWO_COMPONENT(double, double2);
1202 DECLOP_MAKE_THREE_COMPONENT(double, double3);
1203 DECLOP_MAKE_FOUR_COMPONENT(double, double4);
1204 
1205 DECLOP_MAKE_ONE_COMPONENT(unsigned long, ulong1);
1206 DECLOP_MAKE_TWO_COMPONENT(unsigned long, ulong2);
1207 DECLOP_MAKE_THREE_COMPONENT(unsigned long, ulong3);
1208 DECLOP_MAKE_FOUR_COMPONENT(unsigned long, ulong4);
1209 
1210 DECLOP_MAKE_ONE_COMPONENT(signed long, long1);
1211 DECLOP_MAKE_TWO_COMPONENT(signed long, long2);
1212 DECLOP_MAKE_THREE_COMPONENT(signed long, long3);
1213 DECLOP_MAKE_FOUR_COMPONENT(signed long, long4);
1214 
1215 DECLOP_MAKE_ONE_COMPONENT(unsigned long, ulonglong1);
1216 DECLOP_MAKE_TWO_COMPONENT(unsigned long, ulonglong2);
1217 DECLOP_MAKE_THREE_COMPONENT(unsigned long, ulonglong3);
1218 DECLOP_MAKE_FOUR_COMPONENT(unsigned long, ulonglong4);
1219 
1220 DECLOP_MAKE_ONE_COMPONENT(signed long, longlong1);
1221 DECLOP_MAKE_TWO_COMPONENT(signed long, longlong2);
1222 DECLOP_MAKE_THREE_COMPONENT(signed long, longlong3);
1223 DECLOP_MAKE_FOUR_COMPONENT(signed long, longlong4);
1224 
1225 
1226 #if __cplusplus
1227 
1228 #define DECLOP_1VAR_2IN_1OUT(type, op) \
1229  __device__ __host__ static inline type operator op(const type& lhs, const type& rhs) { \
1230  type ret; \
1231  ret.x = lhs.x op rhs.x; \
1232  return ret; \
1233  }
1234 
1235 #define DECLOP_1VAR_SCALE_PRODUCT(type, type1) \
1236  __device__ __host__ static inline type operator*(const type& lhs, type1 rhs) { \
1237  type ret; \
1238  ret.x = lhs.x * rhs; \
1239  return ret; \
1240  } \
1241  \
1242  __device__ __host__ static inline type operator*(type1 lhs, const type& rhs) { \
1243  type ret; \
1244  ret.x = lhs * rhs.x; \
1245  return ret; \
1246  }
1247 
1248 #define DECLOP_1VAR_ASSIGN(type, op) \
1249  __device__ __host__ static inline type& operator op(type& lhs, const type& rhs) { \
1250  lhs.x op rhs.x; \
1251  return lhs; \
1252  }
1253 
1254 #define DECLOP_1VAR_PREOP(type, op) \
1255  __device__ __host__ static inline type& operator op(type& val) { \
1256  op val.x; \
1257  return val; \
1258  }
1259 
1260 #define DECLOP_1VAR_POSTOP(type, op) \
1261  __device__ __host__ static inline type operator op(type& val, int) { \
1262  type ret; \
1263  ret.x = val.x; \
1264  val.x op; \
1265  return ret; \
1266  }
1267 
1268 #define DECLOP_1VAR_COMP(type, op) \
1269  __device__ __host__ static inline bool operator op(type& lhs, type& rhs) { \
1270  return lhs.x op rhs.x; \
1271  } \
1272  __device__ __host__ static inline bool operator op(const type& lhs, type& rhs) { \
1273  return lhs.x op rhs.x; \
1274  } \
1275  __device__ __host__ static inline bool operator op(type& lhs, const type& rhs) { \
1276  return lhs.x op rhs.x; \
1277  } \
1278  __device__ __host__ static inline bool operator op(const type& lhs, const type& rhs) { \
1279  return lhs.x op rhs.x; \
1280  }
1281 
1282 #define DECLOP_1VAR_1IN_1OUT(type, op) \
1283  __device__ __host__ static inline type operator op(type& rhs) { \
1284  type ret; \
1285  ret.x = op rhs.x; \
1286  return ret; \
1287  }
1288 
1289 #define DECLOP_1VAR_1IN_BOOLOUT(type, op) \
1290  __device__ __host__ static inline bool operator op(type& rhs) { return op rhs.x; }
1291 
1292 /*
1293  Two Element Access
1294 */
1295 
1296 #define DECLOP_2VAR_2IN_1OUT(type, op) \
1297  __device__ __host__ static inline type operator op(const type& lhs, const type& rhs) { \
1298  type ret; \
1299  ret.x = lhs.x op rhs.x; \
1300  ret.y = lhs.y op rhs.y; \
1301  return ret; \
1302  }
1303 
1304 #define DECLOP_2VAR_SCALE_PRODUCT(type, type1) \
1305  __device__ __host__ static inline type operator*(const type& lhs, type1 rhs) { \
1306  type ret; \
1307  ret.x = lhs.x * rhs; \
1308  ret.y = lhs.y * rhs; \
1309  return ret; \
1310  } \
1311  \
1312  __device__ __host__ static inline type operator*(type1 lhs, const type& rhs) { \
1313  type ret; \
1314  ret.x = lhs * rhs.x; \
1315  ret.y = lhs * rhs.y; \
1316  return ret; \
1317  }
1318 
1319 #define DECLOP_2VAR_ASSIGN(type, op) \
1320  __device__ __host__ static inline type& operator op(type& lhs, const type& rhs) { \
1321  lhs.x op rhs.x; \
1322  lhs.y op rhs.y; \
1323  return lhs; \
1324  }
1325 
1326 #define DECLOP_2VAR_PREOP(type, op) \
1327  __device__ __host__ static inline type& operator op(type& val) { \
1328  op val.x; \
1329  op val.y; \
1330  return val; \
1331  }
1332 
1333 #define DECLOP_2VAR_POSTOP(type, op) \
1334  __device__ __host__ static inline type operator op(type& val, int) { \
1335  type ret; \
1336  ret.x = val.x; \
1337  ret.y = val.y; \
1338  val.x op; \
1339  val.y op; \
1340  return ret; \
1341  }
1342 
1343 #define DECLOP_2VAR_COMP(type, op) \
1344  __device__ __host__ static inline bool operator op(type& lhs, type& rhs) { \
1345  return (lhs.x op rhs.x) && (lhs.y op rhs.y); \
1346  } \
1347  __device__ __host__ static inline bool operator op(const type& lhs, type& rhs) { \
1348  return (lhs.x op rhs.x) && (lhs.y op rhs.y); \
1349  } \
1350  __device__ __host__ static inline bool operator op(type& lhs, const type& rhs) { \
1351  return (lhs.x op rhs.x) && (lhs.y op rhs.y); \
1352  } \
1353  __device__ __host__ static inline bool operator op(const type& lhs, const type& rhs) { \
1354  return (lhs.x op rhs.x) && (lhs.y op rhs.y); \
1355  }
1356 
1357 #define DECLOP_2VAR_1IN_1OUT(type, op) \
1358  __device__ __host__ static inline type operator op(type& rhs) { \
1359  type ret; \
1360  ret.x = op rhs.x; \
1361  ret.y = op rhs.y; \
1362  return ret; \
1363  }
1364 
1365 #define DECLOP_2VAR_1IN_BOOLOUT(type, op) \
1366  __device__ __host__ static inline bool operator op(type& rhs) { \
1367  return (op rhs.x) && (op rhs.y); \
1368  }
1369 
1370 
1371 /*
1372  Three Element Access
1373 */
1374 
1375 #define DECLOP_3VAR_2IN_1OUT(type, op) \
1376  __device__ __host__ static inline type operator op(const type& lhs, const type& rhs) { \
1377  type ret; \
1378  ret.x = lhs.x op rhs.x; \
1379  ret.y = lhs.y op rhs.y; \
1380  ret.z = lhs.z op rhs.z; \
1381  return ret; \
1382  }
1383 
1384 #define DECLOP_3VAR_SCALE_PRODUCT(type, type1) \
1385  __device__ __host__ static inline type operator*(const type& lhs, type1 rhs) { \
1386  type ret; \
1387  ret.x = lhs.x * rhs; \
1388  ret.y = lhs.y * rhs; \
1389  ret.z = lhs.z * rhs; \
1390  return ret; \
1391  } \
1392  \
1393  __device__ __host__ static inline type operator*(type1 lhs, const type& rhs) { \
1394  type ret; \
1395  ret.x = lhs * rhs.x; \
1396  ret.y = lhs * rhs.y; \
1397  ret.z = lhs * rhs.z; \
1398  return ret; \
1399  }
1400 
1401 #define DECLOP_3VAR_ASSIGN(type, op) \
1402  __device__ __host__ static inline type& operator op(type& lhs, const type& rhs) { \
1403  lhs.x op rhs.x; \
1404  lhs.y op rhs.y; \
1405  lhs.z op rhs.z; \
1406  return lhs; \
1407  }
1408 
1409 #define DECLOP_3VAR_PREOP(type, op) \
1410  __device__ __host__ static inline type& operator op(type& val) { \
1411  op val.x; \
1412  op val.y; \
1413  op val.z; \
1414  return val; \
1415  }
1416 
1417 #define DECLOP_3VAR_POSTOP(type, op) \
1418  __device__ __host__ static inline type operator op(type& val, int) { \
1419  type ret; \
1420  ret.x = val.x; \
1421  ret.y = val.y; \
1422  ret.z = val.z; \
1423  val.x op; \
1424  val.y op; \
1425  val.z op; \
1426  return ret; \
1427  }
1428 
1429 #define DECLOP_3VAR_COMP(type, op) \
1430  __device__ __host__ static inline bool operator op(type& lhs, type& rhs) { \
1431  return (lhs.x op rhs.x) && (lhs.y op rhs.y) && (lhs.z op rhs.z); \
1432  } \
1433  __device__ __host__ static inline bool operator op(const type& lhs, type& rhs) { \
1434  return (lhs.x op rhs.x) && (lhs.y op rhs.y) && (lhs.z op rhs.z); \
1435  } \
1436  __device__ __host__ static inline bool operator op(type& lhs, const type& rhs) { \
1437  return (lhs.x op rhs.x) && (lhs.y op rhs.y) && (lhs.z op rhs.z); \
1438  } \
1439  __device__ __host__ static inline bool operator op(const type& lhs, const type& rhs) { \
1440  return (lhs.x op rhs.x) && (lhs.y op rhs.y) && (lhs.z op rhs.z); \
1441  }
1442 
1443 #define DECLOP_3VAR_1IN_1OUT(type, op) \
1444  __device__ __host__ static inline type operator op(type& rhs) { \
1445  type ret; \
1446  ret.x = op rhs.x; \
1447  ret.y = op rhs.y; \
1448  ret.z = op rhs.z; \
1449  return ret; \
1450  }
1451 
1452 #define DECLOP_3VAR_1IN_BOOLOUT(type, op) \
1453  __device__ __host__ static inline bool operator op(type& rhs) { \
1454  return (op rhs.x) && (op rhs.y) && (op rhs.z); \
1455  }
1456 
1457 
1458 /*
1459  Four Element Access
1460 */
1461 
1462 #define DECLOP_4VAR_2IN_1OUT(type, op) \
1463  __device__ __host__ static inline type operator op(const type& lhs, const type& rhs) { \
1464  type ret; \
1465  ret.x = lhs.x op rhs.x; \
1466  ret.y = lhs.y op rhs.y; \
1467  ret.z = lhs.z op rhs.z; \
1468  ret.w = lhs.w op rhs.w; \
1469  return ret; \
1470  }
1471 
1472 #define DECLOP_4VAR_SCALE_PRODUCT(type, type1) \
1473  __device__ __host__ static inline type operator*(const type& lhs, type1 rhs) { \
1474  type ret; \
1475  ret.x = lhs.x * rhs; \
1476  ret.y = lhs.y * rhs; \
1477  ret.z = lhs.z * rhs; \
1478  ret.w = lhs.w * rhs; \
1479  return ret; \
1480  } \
1481  \
1482  __device__ __host__ static inline type operator*(type1 lhs, const type& rhs) { \
1483  type ret; \
1484  ret.x = lhs * rhs.x; \
1485  ret.y = lhs * rhs.y; \
1486  ret.z = lhs * rhs.z; \
1487  ret.w = lhs * rhs.w; \
1488  return ret; \
1489  }
1490 
1491 #define DECLOP_4VAR_ASSIGN(type, op) \
1492  __device__ __host__ static inline type& operator op(type& lhs, const type& rhs) { \
1493  lhs.x op rhs.x; \
1494  lhs.y op rhs.y; \
1495  lhs.z op rhs.z; \
1496  lhs.w op rhs.w; \
1497  return lhs; \
1498  }
1499 
1500 #define DECLOP_4VAR_PREOP(type, op) \
1501  __device__ __host__ static inline type& operator op(type& val) { \
1502  op val.x; \
1503  op val.y; \
1504  op val.z; \
1505  op val.w; \
1506  return val; \
1507  }
1508 
1509 #define DECLOP_4VAR_POSTOP(type, op) \
1510  __device__ __host__ static inline type operator op(type& val, int) { \
1511  type ret; \
1512  ret.x = val.x; \
1513  ret.y = val.y; \
1514  ret.z = val.z; \
1515  ret.w = val.w; \
1516  val.x op; \
1517  val.y op; \
1518  val.z op; \
1519  val.w op; \
1520  return ret; \
1521  }
1522 
1523 #define DECLOP_4VAR_COMP(type, op) \
1524  __device__ __host__ static inline bool operator op(type& lhs, type& rhs) { \
1525  return (lhs.x op rhs.x) && (lhs.y op rhs.y) && (lhs.z op rhs.z) && (lhs.w op rhs.w); \
1526  } \
1527  __device__ __host__ static inline bool operator op(const type& lhs, type& rhs) { \
1528  return (lhs.x op rhs.x) && (lhs.y op rhs.y) && (lhs.z op rhs.z) && (lhs.w op rhs.w); \
1529  } \
1530  __device__ __host__ static inline bool operator op(type& lhs, const type& rhs) { \
1531  return (lhs.x op rhs.x) && (lhs.y op rhs.y) && (lhs.z op rhs.z) && (lhs.w op rhs.w); \
1532  } \
1533  __device__ __host__ static inline bool operator op(const type& lhs, const type& rhs) { \
1534  return (lhs.x op rhs.x) && (lhs.y op rhs.y) && (lhs.z op rhs.z) && (lhs.w op rhs.w); \
1535  }
1536 
1537 #define DECLOP_4VAR_1IN_1OUT(type, op) \
1538  __device__ __host__ static inline type operator op(type& rhs) { \
1539  type ret; \
1540  ret.x = op rhs.x; \
1541  ret.y = op rhs.y; \
1542  ret.z = op rhs.z; \
1543  ret.w = op rhs.w; \
1544  return ret; \
1545  }
1546 
1547 #define DECLOP_4VAR_1IN_BOOLOUT(type, op) \
1548  __device__ __host__ static inline bool operator op(type& rhs) { \
1549  return (op rhs.x) && (op rhs.y) && (op rhs.z) && (op rhs.w); \
1550  }
1551 
1552 
1553 /*
1554 Overloading operators
1555 */
1556 
1557 // UNSIGNED CHAR1
1558 
1559 DECLOP_1VAR_2IN_1OUT(uchar1, +)
1560 DECLOP_1VAR_2IN_1OUT(uchar1, -)
1561 DECLOP_1VAR_2IN_1OUT(uchar1, *)
1562 DECLOP_1VAR_2IN_1OUT(uchar1, /)
1563 DECLOP_1VAR_2IN_1OUT(uchar1, %)
1564 DECLOP_1VAR_2IN_1OUT(uchar1, &)
1565 DECLOP_1VAR_2IN_1OUT(uchar1, |)
1566 DECLOP_1VAR_2IN_1OUT(uchar1, ^)
1567 DECLOP_1VAR_2IN_1OUT(uchar1, <<)
1568 DECLOP_1VAR_2IN_1OUT(uchar1, >>)
1569 
1570 
1571 DECLOP_1VAR_ASSIGN(uchar1, +=)
1572 DECLOP_1VAR_ASSIGN(uchar1, -=)
1573 DECLOP_1VAR_ASSIGN(uchar1, *=)
1574 DECLOP_1VAR_ASSIGN(uchar1, /=)
1575 DECLOP_1VAR_ASSIGN(uchar1, %=)
1576 DECLOP_1VAR_ASSIGN(uchar1, &=)
1577 DECLOP_1VAR_ASSIGN(uchar1, |=)
1578 DECLOP_1VAR_ASSIGN(uchar1, ^=)
1579 DECLOP_1VAR_ASSIGN(uchar1, <<=)
1580 DECLOP_1VAR_ASSIGN(uchar1, >>=)
1581 
1582 DECLOP_1VAR_PREOP(uchar1, ++)
1583 DECLOP_1VAR_PREOP(uchar1, --)
1584 
1585 DECLOP_1VAR_POSTOP(uchar1, ++)
1586 DECLOP_1VAR_POSTOP(uchar1, --)
1587 
1588 DECLOP_1VAR_COMP(uchar1, ==)
1589 DECLOP_1VAR_COMP(uchar1, !=)
1590 DECLOP_1VAR_COMP(uchar1, <)
1591 DECLOP_1VAR_COMP(uchar1, >)
1592 DECLOP_1VAR_COMP(uchar1, <=)
1593 DECLOP_1VAR_COMP(uchar1, >=)
1594 
1595 DECLOP_1VAR_COMP(uchar1, &&)
1596 DECLOP_1VAR_COMP(uchar1, ||)
1597 
1598 DECLOP_1VAR_1IN_1OUT(uchar1, ~)
1599 DECLOP_1VAR_1IN_BOOLOUT(uchar1, !)
1600 
1601 DECLOP_1VAR_SCALE_PRODUCT(uchar1, unsigned char)
1602 DECLOP_1VAR_SCALE_PRODUCT(uchar1, signed char)
1603 DECLOP_1VAR_SCALE_PRODUCT(uchar1, unsigned short)
1604 DECLOP_1VAR_SCALE_PRODUCT(uchar1, signed short)
1605 DECLOP_1VAR_SCALE_PRODUCT(uchar1, unsigned int)
1606 DECLOP_1VAR_SCALE_PRODUCT(uchar1, signed int)
1607 DECLOP_1VAR_SCALE_PRODUCT(uchar1, float)
1608 DECLOP_1VAR_SCALE_PRODUCT(uchar1, unsigned long)
1609 DECLOP_1VAR_SCALE_PRODUCT(uchar1, signed long)
1610 DECLOP_1VAR_SCALE_PRODUCT(uchar1, double)
1611 DECLOP_1VAR_SCALE_PRODUCT(uchar1, unsigned long long)
1612 DECLOP_1VAR_SCALE_PRODUCT(uchar1, signed long long)
1613 
1614 // UNSIGNED CHAR2
1615 
1616 DECLOP_2VAR_2IN_1OUT(uchar2, +)
1617 DECLOP_2VAR_2IN_1OUT(uchar2, -)
1618 DECLOP_2VAR_2IN_1OUT(uchar2, *)
1619 DECLOP_2VAR_2IN_1OUT(uchar2, /)
1620 DECLOP_2VAR_2IN_1OUT(uchar2, %)
1621 DECLOP_2VAR_2IN_1OUT(uchar2, &)
1622 DECLOP_2VAR_2IN_1OUT(uchar2, |)
1623 DECLOP_2VAR_2IN_1OUT(uchar2, ^)
1624 DECLOP_2VAR_2IN_1OUT(uchar2, <<)
1625 DECLOP_2VAR_2IN_1OUT(uchar2, >>)
1626 
1627 DECLOP_2VAR_ASSIGN(uchar2, +=)
1628 DECLOP_2VAR_ASSIGN(uchar2, -=)
1629 DECLOP_2VAR_ASSIGN(uchar2, *=)
1630 DECLOP_2VAR_ASSIGN(uchar2, /=)
1631 DECLOP_2VAR_ASSIGN(uchar2, %=)
1632 DECLOP_2VAR_ASSIGN(uchar2, &=)
1633 DECLOP_2VAR_ASSIGN(uchar2, |=)
1634 DECLOP_2VAR_ASSIGN(uchar2, ^=)
1635 DECLOP_2VAR_ASSIGN(uchar2, <<=)
1636 DECLOP_2VAR_ASSIGN(uchar2, >>=)
1637 
1638 DECLOP_2VAR_PREOP(uchar2, ++)
1639 DECLOP_2VAR_PREOP(uchar2, --)
1640 
1641 DECLOP_2VAR_POSTOP(uchar2, ++)
1642 DECLOP_2VAR_POSTOP(uchar2, --)
1643 
1644 DECLOP_2VAR_COMP(uchar2, ==)
1645 DECLOP_2VAR_COMP(uchar2, !=)
1646 DECLOP_2VAR_COMP(uchar2, <)
1647 DECLOP_2VAR_COMP(uchar2, >)
1648 DECLOP_2VAR_COMP(uchar2, <=)
1649 DECLOP_2VAR_COMP(uchar2, >=)
1650 
1651 DECLOP_2VAR_COMP(uchar2, &&)
1652 DECLOP_2VAR_COMP(uchar2, ||)
1653 
1654 DECLOP_2VAR_1IN_1OUT(uchar2, ~)
1655 DECLOP_2VAR_1IN_BOOLOUT(uchar2, !)
1656 
1657 DECLOP_2VAR_SCALE_PRODUCT(uchar2, unsigned char)
1658 DECLOP_2VAR_SCALE_PRODUCT(uchar2, signed char)
1659 DECLOP_2VAR_SCALE_PRODUCT(uchar2, unsigned short)
1660 DECLOP_2VAR_SCALE_PRODUCT(uchar2, signed short)
1661 DECLOP_2VAR_SCALE_PRODUCT(uchar2, unsigned int)
1662 DECLOP_2VAR_SCALE_PRODUCT(uchar2, signed int)
1663 DECLOP_2VAR_SCALE_PRODUCT(uchar2, float)
1664 DECLOP_2VAR_SCALE_PRODUCT(uchar2, unsigned long)
1665 DECLOP_2VAR_SCALE_PRODUCT(uchar2, signed long)
1666 DECLOP_2VAR_SCALE_PRODUCT(uchar2, double)
1667 DECLOP_2VAR_SCALE_PRODUCT(uchar2, unsigned long long)
1668 DECLOP_2VAR_SCALE_PRODUCT(uchar2, signed long long)
1669 
1670 // UNSIGNED CHAR3
1671 
1672 DECLOP_3VAR_2IN_1OUT(uchar3, +)
1673 DECLOP_3VAR_2IN_1OUT(uchar3, -)
1674 DECLOP_3VAR_2IN_1OUT(uchar3, *)
1675 DECLOP_3VAR_2IN_1OUT(uchar3, /)
1676 DECLOP_3VAR_2IN_1OUT(uchar3, %)
1677 DECLOP_3VAR_2IN_1OUT(uchar3, &)
1678 DECLOP_3VAR_2IN_1OUT(uchar3, |)
1679 DECLOP_3VAR_2IN_1OUT(uchar3, ^)
1680 DECLOP_3VAR_2IN_1OUT(uchar3, <<)
1681 DECLOP_3VAR_2IN_1OUT(uchar3, >>)
1682 
1683 DECLOP_3VAR_ASSIGN(uchar3, +=)
1684 DECLOP_3VAR_ASSIGN(uchar3, -=)
1685 DECLOP_3VAR_ASSIGN(uchar3, *=)
1686 DECLOP_3VAR_ASSIGN(uchar3, /=)
1687 DECLOP_3VAR_ASSIGN(uchar3, %=)
1688 DECLOP_3VAR_ASSIGN(uchar3, &=)
1689 DECLOP_3VAR_ASSIGN(uchar3, |=)
1690 DECLOP_3VAR_ASSIGN(uchar3, ^=)
1691 DECLOP_3VAR_ASSIGN(uchar3, <<=)
1692 DECLOP_3VAR_ASSIGN(uchar3, >>=)
1693 
1694 DECLOP_3VAR_PREOP(uchar3, ++)
1695 DECLOP_3VAR_PREOP(uchar3, --)
1696 
1697 DECLOP_3VAR_POSTOP(uchar3, ++)
1698 DECLOP_3VAR_POSTOP(uchar3, --)
1699 
1700 DECLOP_3VAR_COMP(uchar3, ==)
1701 DECLOP_3VAR_COMP(uchar3, !=)
1702 DECLOP_3VAR_COMP(uchar3, <)
1703 DECLOP_3VAR_COMP(uchar3, >)
1704 DECLOP_3VAR_COMP(uchar3, <=)
1705 DECLOP_3VAR_COMP(uchar3, >=)
1706 
1707 DECLOP_3VAR_COMP(uchar3, &&)
1708 DECLOP_3VAR_COMP(uchar3, ||)
1709 
1710 DECLOP_3VAR_1IN_1OUT(uchar3, ~)
1711 DECLOP_3VAR_1IN_BOOLOUT(uchar3, !)
1712 
1713 DECLOP_3VAR_SCALE_PRODUCT(uchar3, unsigned char)
1714 DECLOP_3VAR_SCALE_PRODUCT(uchar3, signed char)
1715 DECLOP_3VAR_SCALE_PRODUCT(uchar3, unsigned short)
1716 DECLOP_3VAR_SCALE_PRODUCT(uchar3, signed short)
1717 DECLOP_3VAR_SCALE_PRODUCT(uchar3, unsigned int)
1718 DECLOP_3VAR_SCALE_PRODUCT(uchar3, signed int)
1719 DECLOP_3VAR_SCALE_PRODUCT(uchar3, float)
1720 DECLOP_3VAR_SCALE_PRODUCT(uchar3, unsigned long)
1721 DECLOP_3VAR_SCALE_PRODUCT(uchar3, signed long)
1722 DECLOP_3VAR_SCALE_PRODUCT(uchar3, double)
1723 DECLOP_3VAR_SCALE_PRODUCT(uchar3, unsigned long long)
1724 DECLOP_3VAR_SCALE_PRODUCT(uchar3, signed long long)
1725 
1726 // UNSIGNED CHAR4
1727 
1728 DECLOP_4VAR_2IN_1OUT(uchar4, +)
1729 DECLOP_4VAR_2IN_1OUT(uchar4, -)
1730 DECLOP_4VAR_2IN_1OUT(uchar4, *)
1731 DECLOP_4VAR_2IN_1OUT(uchar4, /)
1732 DECLOP_4VAR_2IN_1OUT(uchar4, %)
1733 DECLOP_4VAR_2IN_1OUT(uchar4, &)
1734 DECLOP_4VAR_2IN_1OUT(uchar4, |)
1735 DECLOP_4VAR_2IN_1OUT(uchar4, ^)
1736 DECLOP_4VAR_2IN_1OUT(uchar4, <<)
1737 DECLOP_4VAR_2IN_1OUT(uchar4, >>)
1738 
1739 DECLOP_4VAR_ASSIGN(uchar4, +=)
1740 DECLOP_4VAR_ASSIGN(uchar4, -=)
1741 DECLOP_4VAR_ASSIGN(uchar4, *=)
1742 DECLOP_4VAR_ASSIGN(uchar4, /=)
1743 DECLOP_4VAR_ASSIGN(uchar4, %=)
1744 DECLOP_4VAR_ASSIGN(uchar4, &=)
1745 DECLOP_4VAR_ASSIGN(uchar4, |=)
1746 DECLOP_4VAR_ASSIGN(uchar4, ^=)
1747 DECLOP_4VAR_ASSIGN(uchar4, <<=)
1748 DECLOP_4VAR_ASSIGN(uchar4, >>=)
1749 
1750 DECLOP_4VAR_PREOP(uchar4, ++)
1751 DECLOP_4VAR_PREOP(uchar4, --)
1752 
1753 DECLOP_4VAR_POSTOP(uchar4, ++)
1754 DECLOP_4VAR_POSTOP(uchar4, --)
1755 
1756 DECLOP_4VAR_COMP(uchar4, ==)
1757 DECLOP_4VAR_COMP(uchar4, !=)
1758 DECLOP_4VAR_COMP(uchar4, <)
1759 DECLOP_4VAR_COMP(uchar4, >)
1760 DECLOP_4VAR_COMP(uchar4, <=)
1761 DECLOP_4VAR_COMP(uchar4, >=)
1762 
1763 DECLOP_4VAR_COMP(uchar4, &&)
1764 DECLOP_4VAR_COMP(uchar4, ||)
1765 
1766 DECLOP_4VAR_1IN_1OUT(uchar4, ~)
1767 DECLOP_4VAR_1IN_BOOLOUT(uchar4, !)
1768 
1769 DECLOP_4VAR_SCALE_PRODUCT(uchar4, unsigned char)
1770 DECLOP_4VAR_SCALE_PRODUCT(uchar4, signed char)
1771 DECLOP_4VAR_SCALE_PRODUCT(uchar4, unsigned short)
1772 DECLOP_4VAR_SCALE_PRODUCT(uchar4, signed short)
1773 DECLOP_4VAR_SCALE_PRODUCT(uchar4, unsigned int)
1774 DECLOP_4VAR_SCALE_PRODUCT(uchar4, signed int)
1775 DECLOP_4VAR_SCALE_PRODUCT(uchar4, float)
1776 DECLOP_4VAR_SCALE_PRODUCT(uchar4, unsigned long)
1777 DECLOP_4VAR_SCALE_PRODUCT(uchar4, signed long)
1778 DECLOP_4VAR_SCALE_PRODUCT(uchar4, double)
1779 DECLOP_4VAR_SCALE_PRODUCT(uchar4, unsigned long long)
1780 DECLOP_4VAR_SCALE_PRODUCT(uchar4, signed long long)
1781 
1782 // SIGNED CHAR1
1783 
1784 DECLOP_1VAR_2IN_1OUT(char1, +)
1785 DECLOP_1VAR_2IN_1OUT(char1, -)
1786 DECLOP_1VAR_2IN_1OUT(char1, *)
1787 DECLOP_1VAR_2IN_1OUT(char1, /)
1788 DECLOP_1VAR_2IN_1OUT(char1, %)
1789 DECLOP_1VAR_2IN_1OUT(char1, &)
1790 DECLOP_1VAR_2IN_1OUT(char1, |)
1791 DECLOP_1VAR_2IN_1OUT(char1, ^)
1792 DECLOP_1VAR_2IN_1OUT(char1, <<)
1793 DECLOP_1VAR_2IN_1OUT(char1, >>)
1794 
1795 
1796 DECLOP_1VAR_ASSIGN(char1, +=)
1797 DECLOP_1VAR_ASSIGN(char1, -=)
1798 DECLOP_1VAR_ASSIGN(char1, *=)
1799 DECLOP_1VAR_ASSIGN(char1, /=)
1800 DECLOP_1VAR_ASSIGN(char1, %=)
1801 DECLOP_1VAR_ASSIGN(char1, &=)
1802 DECLOP_1VAR_ASSIGN(char1, |=)
1803 DECLOP_1VAR_ASSIGN(char1, ^=)
1804 DECLOP_1VAR_ASSIGN(char1, <<=)
1805 DECLOP_1VAR_ASSIGN(char1, >>=)
1806 
1807 DECLOP_1VAR_PREOP(char1, ++)
1808 DECLOP_1VAR_PREOP(char1, --)
1809 
1810 DECLOP_1VAR_POSTOP(char1, ++)
1811 DECLOP_1VAR_POSTOP(char1, --)
1812 
1813 DECLOP_1VAR_COMP(char1, ==)
1814 DECLOP_1VAR_COMP(char1, !=)
1815 DECLOP_1VAR_COMP(char1, <)
1816 DECLOP_1VAR_COMP(char1, >)
1817 DECLOP_1VAR_COMP(char1, <=)
1818 DECLOP_1VAR_COMP(char1, >=)
1819 
1820 DECLOP_1VAR_COMP(char1, &&)
1821 DECLOP_1VAR_COMP(char1, ||)
1822 
1823 DECLOP_1VAR_1IN_1OUT(char1, ~)
1824 DECLOP_1VAR_1IN_BOOLOUT(char1, !)
1825 
1826 DECLOP_1VAR_SCALE_PRODUCT(char1, unsigned char)
1827 DECLOP_1VAR_SCALE_PRODUCT(char1, signed char)
1828 DECLOP_1VAR_SCALE_PRODUCT(char1, unsigned short)
1829 DECLOP_1VAR_SCALE_PRODUCT(char1, signed short)
1830 DECLOP_1VAR_SCALE_PRODUCT(char1, unsigned int)
1831 DECLOP_1VAR_SCALE_PRODUCT(char1, signed int)
1832 DECLOP_1VAR_SCALE_PRODUCT(char1, float)
1833 DECLOP_1VAR_SCALE_PRODUCT(char1, unsigned long)
1834 DECLOP_1VAR_SCALE_PRODUCT(char1, signed long)
1835 DECLOP_1VAR_SCALE_PRODUCT(char1, double)
1836 DECLOP_1VAR_SCALE_PRODUCT(char1, unsigned long long)
1837 DECLOP_1VAR_SCALE_PRODUCT(char1, signed long long)
1838 
1839 // SIGNED CHAR2
1840 
1841 DECLOP_2VAR_2IN_1OUT(char2, +)
1842 DECLOP_2VAR_2IN_1OUT(char2, -)
1843 DECLOP_2VAR_2IN_1OUT(char2, *)
1844 DECLOP_2VAR_2IN_1OUT(char2, /)
1845 DECLOP_2VAR_2IN_1OUT(char2, %)
1846 DECLOP_2VAR_2IN_1OUT(char2, &)
1847 DECLOP_2VAR_2IN_1OUT(char2, |)
1848 DECLOP_2VAR_2IN_1OUT(char2, ^)
1849 DECLOP_2VAR_2IN_1OUT(char2, <<)
1850 DECLOP_2VAR_2IN_1OUT(char2, >>)
1851 
1852 DECLOP_2VAR_ASSIGN(char2, +=)
1853 DECLOP_2VAR_ASSIGN(char2, -=)
1854 DECLOP_2VAR_ASSIGN(char2, *=)
1855 DECLOP_2VAR_ASSIGN(char2, /=)
1856 DECLOP_2VAR_ASSIGN(char2, %=)
1857 DECLOP_2VAR_ASSIGN(char2, &=)
1858 DECLOP_2VAR_ASSIGN(char2, |=)
1859 DECLOP_2VAR_ASSIGN(char2, ^=)
1860 DECLOP_2VAR_ASSIGN(char2, <<=)
1861 DECLOP_2VAR_ASSIGN(char2, >>=)
1862 
1863 DECLOP_2VAR_PREOP(char2, ++)
1864 DECLOP_2VAR_PREOP(char2, --)
1865 
1866 DECLOP_2VAR_POSTOP(char2, ++)
1867 DECLOP_2VAR_POSTOP(char2, --)
1868 
1869 DECLOP_2VAR_COMP(char2, ==)
1870 DECLOP_2VAR_COMP(char2, !=)
1871 DECLOP_2VAR_COMP(char2, <)
1872 DECLOP_2VAR_COMP(char2, >)
1873 DECLOP_2VAR_COMP(char2, <=)
1874 DECLOP_2VAR_COMP(char2, >=)
1875 
1876 DECLOP_2VAR_COMP(char2, &&)
1877 DECLOP_2VAR_COMP(char2, ||)
1878 
1879 DECLOP_2VAR_1IN_1OUT(char2, ~)
1880 DECLOP_2VAR_1IN_BOOLOUT(char2, !)
1881 
1882 DECLOP_2VAR_SCALE_PRODUCT(char2, unsigned char)
1883 DECLOP_2VAR_SCALE_PRODUCT(char2, signed char)
1884 DECLOP_2VAR_SCALE_PRODUCT(char2, unsigned short)
1885 DECLOP_2VAR_SCALE_PRODUCT(char2, signed short)
1886 DECLOP_2VAR_SCALE_PRODUCT(char2, unsigned int)
1887 DECLOP_2VAR_SCALE_PRODUCT(char2, signed int)
1888 DECLOP_2VAR_SCALE_PRODUCT(char2, float)
1889 DECLOP_2VAR_SCALE_PRODUCT(char2, unsigned long)
1890 DECLOP_2VAR_SCALE_PRODUCT(char2, signed long)
1891 DECLOP_2VAR_SCALE_PRODUCT(char2, double)
1892 DECLOP_2VAR_SCALE_PRODUCT(char2, unsigned long long)
1893 DECLOP_2VAR_SCALE_PRODUCT(char2, signed long long)
1894 
1895 // SIGNED CHAR3
1896 
1897 DECLOP_3VAR_2IN_1OUT(char3, +)
1898 DECLOP_3VAR_2IN_1OUT(char3, -)
1899 DECLOP_3VAR_2IN_1OUT(char3, *)
1900 DECLOP_3VAR_2IN_1OUT(char3, /)
1901 DECLOP_3VAR_2IN_1OUT(char3, %)
1902 DECLOP_3VAR_2IN_1OUT(char3, &)
1903 DECLOP_3VAR_2IN_1OUT(char3, |)
1904 DECLOP_3VAR_2IN_1OUT(char3, ^)
1905 DECLOP_3VAR_2IN_1OUT(char3, <<)
1906 DECLOP_3VAR_2IN_1OUT(char3, >>)
1907 
1908 DECLOP_3VAR_ASSIGN(char3, +=)
1909 DECLOP_3VAR_ASSIGN(char3, -=)
1910 DECLOP_3VAR_ASSIGN(char3, *=)
1911 DECLOP_3VAR_ASSIGN(char3, /=)
1912 DECLOP_3VAR_ASSIGN(char3, %=)
1913 DECLOP_3VAR_ASSIGN(char3, &=)
1914 DECLOP_3VAR_ASSIGN(char3, |=)
1915 DECLOP_3VAR_ASSIGN(char3, ^=)
1916 DECLOP_3VAR_ASSIGN(char3, <<=)
1917 DECLOP_3VAR_ASSIGN(char3, >>=)
1918 
1919 DECLOP_3VAR_PREOP(char3, ++)
1920 DECLOP_3VAR_PREOP(char3, --)
1921 
1922 DECLOP_3VAR_POSTOP(char3, ++)
1923 DECLOP_3VAR_POSTOP(char3, --)
1924 
1925 DECLOP_3VAR_COMP(char3, ==)
1926 DECLOP_3VAR_COMP(char3, !=)
1927 DECLOP_3VAR_COMP(char3, <)
1928 DECLOP_3VAR_COMP(char3, >)
1929 DECLOP_3VAR_COMP(char3, <=)
1930 DECLOP_3VAR_COMP(char3, >=)
1931 
1932 DECLOP_3VAR_COMP(char3, &&)
1933 DECLOP_3VAR_COMP(char3, ||)
1934 
1935 DECLOP_3VAR_1IN_1OUT(char3, ~)
1936 DECLOP_3VAR_1IN_BOOLOUT(char3, !)
1937 
1938 DECLOP_3VAR_SCALE_PRODUCT(char3, unsigned char)
1939 DECLOP_3VAR_SCALE_PRODUCT(char3, signed char)
1940 DECLOP_3VAR_SCALE_PRODUCT(char3, unsigned short)
1941 DECLOP_3VAR_SCALE_PRODUCT(char3, signed short)
1942 DECLOP_3VAR_SCALE_PRODUCT(char3, unsigned int)
1943 DECLOP_3VAR_SCALE_PRODUCT(char3, signed int)
1944 DECLOP_3VAR_SCALE_PRODUCT(char3, float)
1945 DECLOP_3VAR_SCALE_PRODUCT(char3, unsigned long)
1946 DECLOP_3VAR_SCALE_PRODUCT(char3, signed long)
1947 DECLOP_3VAR_SCALE_PRODUCT(char3, double)
1948 DECLOP_3VAR_SCALE_PRODUCT(char3, unsigned long long)
1949 DECLOP_3VAR_SCALE_PRODUCT(char3, signed long long)
1950 
1951 // SIGNED CHAR4
1952 
1953 DECLOP_4VAR_2IN_1OUT(char4, +)
1954 DECLOP_4VAR_2IN_1OUT(char4, -)
1955 DECLOP_4VAR_2IN_1OUT(char4, *)
1956 DECLOP_4VAR_2IN_1OUT(char4, /)
1957 DECLOP_4VAR_2IN_1OUT(char4, %)
1958 DECLOP_4VAR_2IN_1OUT(char4, &)
1959 DECLOP_4VAR_2IN_1OUT(char4, |)
1960 DECLOP_4VAR_2IN_1OUT(char4, ^)
1961 DECLOP_4VAR_2IN_1OUT(char4, <<)
1962 DECLOP_4VAR_2IN_1OUT(char4, >>)
1963 
1964 DECLOP_4VAR_ASSIGN(char4, +=)
1965 DECLOP_4VAR_ASSIGN(char4, -=)
1966 DECLOP_4VAR_ASSIGN(char4, *=)
1967 DECLOP_4VAR_ASSIGN(char4, /=)
1968 DECLOP_4VAR_ASSIGN(char4, %=)
1969 DECLOP_4VAR_ASSIGN(char4, &=)
1970 DECLOP_4VAR_ASSIGN(char4, |=)
1971 DECLOP_4VAR_ASSIGN(char4, ^=)
1972 DECLOP_4VAR_ASSIGN(char4, <<=)
1973 DECLOP_4VAR_ASSIGN(char4, >>=)
1974 
1975 DECLOP_4VAR_PREOP(char4, ++)
1976 DECLOP_4VAR_PREOP(char4, --)
1977 
1978 DECLOP_4VAR_POSTOP(char4, ++)
1979 DECLOP_4VAR_POSTOP(char4, --)
1980 
1981 DECLOP_4VAR_COMP(char4, ==)
1982 DECLOP_4VAR_COMP(char4, !=)
1983 DECLOP_4VAR_COMP(char4, <)
1984 DECLOP_4VAR_COMP(char4, >)
1985 DECLOP_4VAR_COMP(char4, <=)
1986 DECLOP_4VAR_COMP(char4, >=)
1987 
1988 DECLOP_4VAR_COMP(char4, &&)
1989 DECLOP_4VAR_COMP(char4, ||)
1990 
1991 DECLOP_4VAR_1IN_1OUT(char4, ~)
1992 DECLOP_4VAR_1IN_BOOLOUT(char4, !)
1993 
1994 DECLOP_4VAR_SCALE_PRODUCT(char4, unsigned char)
1995 DECLOP_4VAR_SCALE_PRODUCT(char4, signed char)
1996 DECLOP_4VAR_SCALE_PRODUCT(char4, unsigned short)
1997 DECLOP_4VAR_SCALE_PRODUCT(char4, signed short)
1998 DECLOP_4VAR_SCALE_PRODUCT(char4, unsigned int)
1999 DECLOP_4VAR_SCALE_PRODUCT(char4, signed int)
2000 DECLOP_4VAR_SCALE_PRODUCT(char4, float)
2001 DECLOP_4VAR_SCALE_PRODUCT(char4, unsigned long)
2002 DECLOP_4VAR_SCALE_PRODUCT(char4, signed long)
2003 DECLOP_4VAR_SCALE_PRODUCT(char4, double)
2004 DECLOP_4VAR_SCALE_PRODUCT(char4, unsigned long long)
2005 DECLOP_4VAR_SCALE_PRODUCT(char4, signed long long)
2006 
2007 // UNSIGNED SHORT1
2008 
2009 DECLOP_1VAR_2IN_1OUT(ushort1, +)
2010 DECLOP_1VAR_2IN_1OUT(ushort1, -)
2011 DECLOP_1VAR_2IN_1OUT(ushort1, *)
2012 DECLOP_1VAR_2IN_1OUT(ushort1, /)
2013 DECLOP_1VAR_2IN_1OUT(ushort1, %)
2014 DECLOP_1VAR_2IN_1OUT(ushort1, &)
2015 DECLOP_1VAR_2IN_1OUT(ushort1, |)
2016 DECLOP_1VAR_2IN_1OUT(ushort1, ^)
2017 DECLOP_1VAR_2IN_1OUT(ushort1, <<)
2018 DECLOP_1VAR_2IN_1OUT(ushort1, >>)
2019 
2020 
2021 DECLOP_1VAR_ASSIGN(ushort1, +=)
2022 DECLOP_1VAR_ASSIGN(ushort1, -=)
2023 DECLOP_1VAR_ASSIGN(ushort1, *=)
2024 DECLOP_1VAR_ASSIGN(ushort1, /=)
2025 DECLOP_1VAR_ASSIGN(ushort1, %=)
2026 DECLOP_1VAR_ASSIGN(ushort1, &=)
2027 DECLOP_1VAR_ASSIGN(ushort1, |=)
2028 DECLOP_1VAR_ASSIGN(ushort1, ^=)
2029 DECLOP_1VAR_ASSIGN(ushort1, <<=)
2030 DECLOP_1VAR_ASSIGN(ushort1, >>=)
2031 
2032 DECLOP_1VAR_PREOP(ushort1, ++)
2033 DECLOP_1VAR_PREOP(ushort1, --)
2034 
2035 DECLOP_1VAR_POSTOP(ushort1, ++)
2036 DECLOP_1VAR_POSTOP(ushort1, --)
2037 
2038 DECLOP_1VAR_COMP(ushort1, ==)
2039 DECLOP_1VAR_COMP(ushort1, !=)
2040 DECLOP_1VAR_COMP(ushort1, <)
2041 DECLOP_1VAR_COMP(ushort1, >)
2042 DECLOP_1VAR_COMP(ushort1, <=)
2043 DECLOP_1VAR_COMP(ushort1, >=)
2044 
2045 DECLOP_1VAR_COMP(ushort1, &&)
2046 DECLOP_1VAR_COMP(ushort1, ||)
2047 
2048 DECLOP_1VAR_1IN_1OUT(ushort1, ~)
2049 DECLOP_1VAR_1IN_BOOLOUT(ushort1, !)
2050 
2051 DECLOP_1VAR_SCALE_PRODUCT(ushort1, unsigned char)
2052 DECLOP_1VAR_SCALE_PRODUCT(ushort1, signed char)
2053 DECLOP_1VAR_SCALE_PRODUCT(ushort1, unsigned short)
2054 DECLOP_1VAR_SCALE_PRODUCT(ushort1, signed short)
2055 DECLOP_1VAR_SCALE_PRODUCT(ushort1, unsigned int)
2056 DECLOP_1VAR_SCALE_PRODUCT(ushort1, signed int)
2057 DECLOP_1VAR_SCALE_PRODUCT(ushort1, float)
2058 DECLOP_1VAR_SCALE_PRODUCT(ushort1, unsigned long)
2059 DECLOP_1VAR_SCALE_PRODUCT(ushort1, signed long)
2060 DECLOP_1VAR_SCALE_PRODUCT(ushort1, double)
2061 DECLOP_1VAR_SCALE_PRODUCT(ushort1, unsigned long long)
2062 DECLOP_1VAR_SCALE_PRODUCT(ushort1, signed long long)
2063 
2064 // UNSIGNED SHORT2
2065 
2066 DECLOP_2VAR_2IN_1OUT(ushort2, +)
2067 DECLOP_2VAR_2IN_1OUT(ushort2, -)
2068 DECLOP_2VAR_2IN_1OUT(ushort2, *)
2069 DECLOP_2VAR_2IN_1OUT(ushort2, /)
2070 DECLOP_2VAR_2IN_1OUT(ushort2, %)
2071 DECLOP_2VAR_2IN_1OUT(ushort2, &)
2072 DECLOP_2VAR_2IN_1OUT(ushort2, |)
2073 DECLOP_2VAR_2IN_1OUT(ushort2, ^)
2074 DECLOP_2VAR_2IN_1OUT(ushort2, <<)
2075 DECLOP_2VAR_2IN_1OUT(ushort2, >>)
2076 
2077 DECLOP_2VAR_ASSIGN(ushort2, +=)
2078 DECLOP_2VAR_ASSIGN(ushort2, -=)
2079 DECLOP_2VAR_ASSIGN(ushort2, *=)
2080 DECLOP_2VAR_ASSIGN(ushort2, /=)
2081 DECLOP_2VAR_ASSIGN(ushort2, %=)
2082 DECLOP_2VAR_ASSIGN(ushort2, &=)
2083 DECLOP_2VAR_ASSIGN(ushort2, |=)
2084 DECLOP_2VAR_ASSIGN(ushort2, ^=)
2085 DECLOP_2VAR_ASSIGN(ushort2, <<=)
2086 DECLOP_2VAR_ASSIGN(ushort2, >>=)
2087 
2088 DECLOP_2VAR_PREOP(ushort2, ++)
2089 DECLOP_2VAR_PREOP(ushort2, --)
2090 
2091 DECLOP_2VAR_POSTOP(ushort2, ++)
2092 DECLOP_2VAR_POSTOP(ushort2, --)
2093 
2094 DECLOP_2VAR_COMP(ushort2, ==)
2095 DECLOP_2VAR_COMP(ushort2, !=)
2096 DECLOP_2VAR_COMP(ushort2, <)
2097 DECLOP_2VAR_COMP(ushort2, >)
2098 DECLOP_2VAR_COMP(ushort2, <=)
2099 DECLOP_2VAR_COMP(ushort2, >=)
2100 
2101 DECLOP_2VAR_COMP(ushort2, &&)
2102 DECLOP_2VAR_COMP(ushort2, ||)
2103 
2104 DECLOP_2VAR_1IN_1OUT(ushort2, ~)
2105 DECLOP_2VAR_1IN_BOOLOUT(ushort2, !)
2106 
2107 DECLOP_2VAR_SCALE_PRODUCT(ushort2, unsigned char)
2108 DECLOP_2VAR_SCALE_PRODUCT(ushort2, signed char)
2109 DECLOP_2VAR_SCALE_PRODUCT(ushort2, unsigned short)
2110 DECLOP_2VAR_SCALE_PRODUCT(ushort2, signed short)
2111 DECLOP_2VAR_SCALE_PRODUCT(ushort2, unsigned int)
2112 DECLOP_2VAR_SCALE_PRODUCT(ushort2, signed int)
2113 DECLOP_2VAR_SCALE_PRODUCT(ushort2, float)
2114 DECLOP_2VAR_SCALE_PRODUCT(ushort2, unsigned long)
2115 DECLOP_2VAR_SCALE_PRODUCT(ushort2, signed long)
2116 DECLOP_2VAR_SCALE_PRODUCT(ushort2, double)
2117 DECLOP_2VAR_SCALE_PRODUCT(ushort2, unsigned long long)
2118 DECLOP_2VAR_SCALE_PRODUCT(ushort2, signed long long)
2119 
2120 // UNSIGNED SHORT3
2121 
2122 DECLOP_3VAR_2IN_1OUT(ushort3, +)
2123 DECLOP_3VAR_2IN_1OUT(ushort3, -)
2124 DECLOP_3VAR_2IN_1OUT(ushort3, *)
2125 DECLOP_3VAR_2IN_1OUT(ushort3, /)
2126 DECLOP_3VAR_2IN_1OUT(ushort3, %)
2127 DECLOP_3VAR_2IN_1OUT(ushort3, &)
2128 DECLOP_3VAR_2IN_1OUT(ushort3, |)
2129 DECLOP_3VAR_2IN_1OUT(ushort3, ^)
2130 DECLOP_3VAR_2IN_1OUT(ushort3, <<)
2131 DECLOP_3VAR_2IN_1OUT(ushort3, >>)
2132 
2133 DECLOP_3VAR_ASSIGN(ushort3, +=)
2134 DECLOP_3VAR_ASSIGN(ushort3, -=)
2135 DECLOP_3VAR_ASSIGN(ushort3, *=)
2136 DECLOP_3VAR_ASSIGN(ushort3, /=)
2137 DECLOP_3VAR_ASSIGN(ushort3, %=)
2138 DECLOP_3VAR_ASSIGN(ushort3, &=)
2139 DECLOP_3VAR_ASSIGN(ushort3, |=)
2140 DECLOP_3VAR_ASSIGN(ushort3, ^=)
2141 DECLOP_3VAR_ASSIGN(ushort3, <<=)
2142 DECLOP_3VAR_ASSIGN(ushort3, >>=)
2143 
2144 DECLOP_3VAR_PREOP(ushort3, ++)
2145 DECLOP_3VAR_PREOP(ushort3, --)
2146 
2147 DECLOP_3VAR_POSTOP(ushort3, ++)
2148 DECLOP_3VAR_POSTOP(ushort3, --)
2149 
2150 DECLOP_3VAR_COMP(ushort3, ==)
2151 DECLOP_3VAR_COMP(ushort3, !=)
2152 DECLOP_3VAR_COMP(ushort3, <)
2153 DECLOP_3VAR_COMP(ushort3, >)
2154 DECLOP_3VAR_COMP(ushort3, <=)
2155 DECLOP_3VAR_COMP(ushort3, >=)
2156 
2157 DECLOP_3VAR_COMP(ushort3, &&)
2158 DECLOP_3VAR_COMP(ushort3, ||)
2159 
2160 DECLOP_3VAR_1IN_1OUT(ushort3, ~)
2161 DECLOP_3VAR_1IN_BOOLOUT(ushort3, !)
2162 
2163 DECLOP_3VAR_SCALE_PRODUCT(ushort3, unsigned char)
2164 DECLOP_3VAR_SCALE_PRODUCT(ushort3, signed char)
2165 DECLOP_3VAR_SCALE_PRODUCT(ushort3, unsigned short)
2166 DECLOP_3VAR_SCALE_PRODUCT(ushort3, signed short)
2167 DECLOP_3VAR_SCALE_PRODUCT(ushort3, unsigned int)
2168 DECLOP_3VAR_SCALE_PRODUCT(ushort3, signed int)
2169 DECLOP_3VAR_SCALE_PRODUCT(ushort3, float)
2170 DECLOP_3VAR_SCALE_PRODUCT(ushort3, unsigned long)
2171 DECLOP_3VAR_SCALE_PRODUCT(ushort3, signed long)
2172 DECLOP_3VAR_SCALE_PRODUCT(ushort3, double)
2173 DECLOP_3VAR_SCALE_PRODUCT(ushort3, unsigned long long)
2174 DECLOP_3VAR_SCALE_PRODUCT(ushort3, signed long long)
2175 
2176 // UNSIGNED SHORT4
2177 
2178 DECLOP_4VAR_2IN_1OUT(ushort4, +)
2179 DECLOP_4VAR_2IN_1OUT(ushort4, -)
2180 DECLOP_4VAR_2IN_1OUT(ushort4, *)
2181 DECLOP_4VAR_2IN_1OUT(ushort4, /)
2182 DECLOP_4VAR_2IN_1OUT(ushort4, %)
2183 DECLOP_4VAR_2IN_1OUT(ushort4, &)
2184 DECLOP_4VAR_2IN_1OUT(ushort4, |)
2185 DECLOP_4VAR_2IN_1OUT(ushort4, ^)
2186 DECLOP_4VAR_2IN_1OUT(ushort4, <<)
2187 DECLOP_4VAR_2IN_1OUT(ushort4, >>)
2188 
2189 DECLOP_4VAR_ASSIGN(ushort4, +=)
2190 DECLOP_4VAR_ASSIGN(ushort4, -=)
2191 DECLOP_4VAR_ASSIGN(ushort4, *=)
2192 DECLOP_4VAR_ASSIGN(ushort4, /=)
2193 DECLOP_4VAR_ASSIGN(ushort4, %=)
2194 DECLOP_4VAR_ASSIGN(ushort4, &=)
2195 DECLOP_4VAR_ASSIGN(ushort4, |=)
2196 DECLOP_4VAR_ASSIGN(ushort4, ^=)
2197 DECLOP_4VAR_ASSIGN(ushort4, <<=)
2198 DECLOP_4VAR_ASSIGN(ushort4, >>=)
2199 
2200 DECLOP_4VAR_PREOP(ushort4, ++)
2201 DECLOP_4VAR_PREOP(ushort4, --)
2202 
2203 DECLOP_4VAR_POSTOP(ushort4, ++)
2204 DECLOP_4VAR_POSTOP(ushort4, --)
2205 
2206 DECLOP_4VAR_COMP(ushort4, ==)
2207 DECLOP_4VAR_COMP(ushort4, !=)
2208 DECLOP_4VAR_COMP(ushort4, <)
2209 DECLOP_4VAR_COMP(ushort4, >)
2210 DECLOP_4VAR_COMP(ushort4, <=)
2211 DECLOP_4VAR_COMP(ushort4, >=)
2212 
2213 DECLOP_4VAR_COMP(ushort4, &&)
2214 DECLOP_4VAR_COMP(ushort4, ||)
2215 
2216 DECLOP_4VAR_1IN_1OUT(ushort4, ~)
2217 DECLOP_4VAR_1IN_BOOLOUT(ushort4, !)
2218 
2219 DECLOP_4VAR_SCALE_PRODUCT(ushort4, unsigned char)
2220 DECLOP_4VAR_SCALE_PRODUCT(ushort4, signed char)
2221 DECLOP_4VAR_SCALE_PRODUCT(ushort4, unsigned short)
2222 DECLOP_4VAR_SCALE_PRODUCT(ushort4, signed short)
2223 DECLOP_4VAR_SCALE_PRODUCT(ushort4, unsigned int)
2224 DECLOP_4VAR_SCALE_PRODUCT(ushort4, signed int)
2225 DECLOP_4VAR_SCALE_PRODUCT(ushort4, float)
2226 DECLOP_4VAR_SCALE_PRODUCT(ushort4, unsigned long)
2227 DECLOP_4VAR_SCALE_PRODUCT(ushort4, signed long)
2228 DECLOP_4VAR_SCALE_PRODUCT(ushort4, double)
2229 DECLOP_4VAR_SCALE_PRODUCT(ushort4, unsigned long long)
2230 DECLOP_4VAR_SCALE_PRODUCT(ushort4, signed long long)
2231 
2232 // SIGNED SHORT1
2233 
2234 DECLOP_1VAR_2IN_1OUT(short1, +)
2235 DECLOP_1VAR_2IN_1OUT(short1, -)
2236 DECLOP_1VAR_2IN_1OUT(short1, *)
2237 DECLOP_1VAR_2IN_1OUT(short1, /)
2238 DECLOP_1VAR_2IN_1OUT(short1, %)
2239 DECLOP_1VAR_2IN_1OUT(short1, &)
2240 DECLOP_1VAR_2IN_1OUT(short1, |)
2241 DECLOP_1VAR_2IN_1OUT(short1, ^)
2242 DECLOP_1VAR_2IN_1OUT(short1, <<)
2243 DECLOP_1VAR_2IN_1OUT(short1, >>)
2244 
2245 
2246 DECLOP_1VAR_ASSIGN(short1, +=)
2247 DECLOP_1VAR_ASSIGN(short1, -=)
2248 DECLOP_1VAR_ASSIGN(short1, *=)
2249 DECLOP_1VAR_ASSIGN(short1, /=)
2250 DECLOP_1VAR_ASSIGN(short1, %=)
2251 DECLOP_1VAR_ASSIGN(short1, &=)
2252 DECLOP_1VAR_ASSIGN(short1, |=)
2253 DECLOP_1VAR_ASSIGN(short1, ^=)
2254 DECLOP_1VAR_ASSIGN(short1, <<=)
2255 DECLOP_1VAR_ASSIGN(short1, >>=)
2256 
2257 DECLOP_1VAR_PREOP(short1, ++)
2258 DECLOP_1VAR_PREOP(short1, --)
2259 
2260 DECLOP_1VAR_POSTOP(short1, ++)
2261 DECLOP_1VAR_POSTOP(short1, --)
2262 
2263 DECLOP_1VAR_COMP(short1, ==)
2264 DECLOP_1VAR_COMP(short1, !=)
2265 DECLOP_1VAR_COMP(short1, <)
2266 DECLOP_1VAR_COMP(short1, >)
2267 DECLOP_1VAR_COMP(short1, <=)
2268 DECLOP_1VAR_COMP(short1, >=)
2269 
2270 DECLOP_1VAR_COMP(short1, &&)
2271 DECLOP_1VAR_COMP(short1, ||)
2272 
2273 DECLOP_1VAR_1IN_1OUT(short1, ~)
2274 DECLOP_1VAR_1IN_BOOLOUT(short1, !)
2275 
2276 DECLOP_1VAR_SCALE_PRODUCT(short1, unsigned char)
2277 DECLOP_1VAR_SCALE_PRODUCT(short1, signed char)
2278 DECLOP_1VAR_SCALE_PRODUCT(short1, unsigned short)
2279 DECLOP_1VAR_SCALE_PRODUCT(short1, signed short)
2280 DECLOP_1VAR_SCALE_PRODUCT(short1, unsigned int)
2281 DECLOP_1VAR_SCALE_PRODUCT(short1, signed int)
2282 DECLOP_1VAR_SCALE_PRODUCT(short1, float)
2283 DECLOP_1VAR_SCALE_PRODUCT(short1, unsigned long)
2284 DECLOP_1VAR_SCALE_PRODUCT(short1, signed long)
2285 DECLOP_1VAR_SCALE_PRODUCT(short1, double)
2286 DECLOP_1VAR_SCALE_PRODUCT(short1, unsigned long long)
2287 DECLOP_1VAR_SCALE_PRODUCT(short1, signed long long)
2288 
2289 // SIGNED SHORT2
2290 
2291 DECLOP_2VAR_2IN_1OUT(short2, +)
2292 DECLOP_2VAR_2IN_1OUT(short2, -)
2293 DECLOP_2VAR_2IN_1OUT(short2, *)
2294 DECLOP_2VAR_2IN_1OUT(short2, /)
2295 DECLOP_2VAR_2IN_1OUT(short2, %)
2296 DECLOP_2VAR_2IN_1OUT(short2, &)
2297 DECLOP_2VAR_2IN_1OUT(short2, |)
2298 DECLOP_2VAR_2IN_1OUT(short2, ^)
2299 DECLOP_2VAR_2IN_1OUT(short2, <<)
2300 DECLOP_2VAR_2IN_1OUT(short2, >>)
2301 
2302 DECLOP_2VAR_ASSIGN(short2, +=)
2303 DECLOP_2VAR_ASSIGN(short2, -=)
2304 DECLOP_2VAR_ASSIGN(short2, *=)
2305 DECLOP_2VAR_ASSIGN(short2, /=)
2306 DECLOP_2VAR_ASSIGN(short2, %=)
2307 DECLOP_2VAR_ASSIGN(short2, &=)
2308 DECLOP_2VAR_ASSIGN(short2, |=)
2309 DECLOP_2VAR_ASSIGN(short2, ^=)
2310 DECLOP_2VAR_ASSIGN(short2, <<=)
2311 DECLOP_2VAR_ASSIGN(short2, >>=)
2312 
2313 DECLOP_2VAR_PREOP(short2, ++)
2314 DECLOP_2VAR_PREOP(short2, --)
2315 
2316 DECLOP_2VAR_POSTOP(short2, ++)
2317 DECLOP_2VAR_POSTOP(short2, --)
2318 
2319 DECLOP_2VAR_COMP(short2, ==)
2320 DECLOP_2VAR_COMP(short2, !=)
2321 DECLOP_2VAR_COMP(short2, <)
2322 DECLOP_2VAR_COMP(short2, >)
2323 DECLOP_2VAR_COMP(short2, <=)
2324 DECLOP_2VAR_COMP(short2, >=)
2325 
2326 DECLOP_2VAR_COMP(short2, &&)
2327 DECLOP_2VAR_COMP(short2, ||)
2328 
2329 DECLOP_2VAR_1IN_1OUT(short2, ~)
2330 DECLOP_2VAR_1IN_BOOLOUT(short2, !)
2331 
2332 DECLOP_2VAR_SCALE_PRODUCT(short2, unsigned char)
2333 DECLOP_2VAR_SCALE_PRODUCT(short2, signed char)
2334 DECLOP_2VAR_SCALE_PRODUCT(short2, unsigned short)
2335 DECLOP_2VAR_SCALE_PRODUCT(short2, signed short)
2336 DECLOP_2VAR_SCALE_PRODUCT(short2, unsigned int)
2337 DECLOP_2VAR_SCALE_PRODUCT(short2, signed int)
2338 DECLOP_2VAR_SCALE_PRODUCT(short2, float)
2339 DECLOP_2VAR_SCALE_PRODUCT(short2, unsigned long)
2340 DECLOP_2VAR_SCALE_PRODUCT(short2, signed long)
2341 DECLOP_2VAR_SCALE_PRODUCT(short2, double)
2342 DECLOP_2VAR_SCALE_PRODUCT(short2, unsigned long long)
2343 DECLOP_2VAR_SCALE_PRODUCT(short2, signed long long)
2344 
2345 // SIGNED SHORT3
2346 
2347 DECLOP_3VAR_2IN_1OUT(short3, +)
2348 DECLOP_3VAR_2IN_1OUT(short3, -)
2349 DECLOP_3VAR_2IN_1OUT(short3, *)
2350 DECLOP_3VAR_2IN_1OUT(short3, /)
2351 DECLOP_3VAR_2IN_1OUT(short3, %)
2352 DECLOP_3VAR_2IN_1OUT(short3, &)
2353 DECLOP_3VAR_2IN_1OUT(short3, |)
2354 DECLOP_3VAR_2IN_1OUT(short3, ^)
2355 DECLOP_3VAR_2IN_1OUT(short3, <<)
2356 DECLOP_3VAR_2IN_1OUT(short3, >>)
2357 
2358 DECLOP_3VAR_ASSIGN(short3, +=)
2359 DECLOP_3VAR_ASSIGN(short3, -=)
2360 DECLOP_3VAR_ASSIGN(short3, *=)
2361 DECLOP_3VAR_ASSIGN(short3, /=)
2362 DECLOP_3VAR_ASSIGN(short3, %=)
2363 DECLOP_3VAR_ASSIGN(short3, &=)
2364 DECLOP_3VAR_ASSIGN(short3, |=)
2365 DECLOP_3VAR_ASSIGN(short3, ^=)
2366 DECLOP_3VAR_ASSIGN(short3, <<=)
2367 DECLOP_3VAR_ASSIGN(short3, >>=)
2368 
2369 DECLOP_3VAR_PREOP(short3, ++)
2370 DECLOP_3VAR_PREOP(short3, --)
2371 
2372 DECLOP_3VAR_POSTOP(short3, ++)
2373 DECLOP_3VAR_POSTOP(short3, --)
2374 
2375 DECLOP_3VAR_COMP(short3, ==)
2376 DECLOP_3VAR_COMP(short3, !=)
2377 DECLOP_3VAR_COMP(short3, <)
2378 DECLOP_3VAR_COMP(short3, >)
2379 DECLOP_3VAR_COMP(short3, <=)
2380 DECLOP_3VAR_COMP(short3, >=)
2381 
2382 DECLOP_3VAR_COMP(short3, &&)
2383 DECLOP_3VAR_COMP(short3, ||)
2384 
2385 DECLOP_3VAR_1IN_1OUT(short3, ~)
2386 DECLOP_3VAR_1IN_BOOLOUT(short3, !)
2387 
2388 DECLOP_3VAR_SCALE_PRODUCT(short3, unsigned char)
2389 DECLOP_3VAR_SCALE_PRODUCT(short3, signed char)
2390 DECLOP_3VAR_SCALE_PRODUCT(short3, unsigned short)
2391 DECLOP_3VAR_SCALE_PRODUCT(short3, signed short)
2392 DECLOP_3VAR_SCALE_PRODUCT(short3, unsigned int)
2393 DECLOP_3VAR_SCALE_PRODUCT(short3, signed int)
2394 DECLOP_3VAR_SCALE_PRODUCT(short3, float)
2395 DECLOP_3VAR_SCALE_PRODUCT(short3, unsigned long)
2396 DECLOP_3VAR_SCALE_PRODUCT(short3, signed long)
2397 DECLOP_3VAR_SCALE_PRODUCT(short3, double)
2398 DECLOP_3VAR_SCALE_PRODUCT(short3, unsigned long long)
2399 DECLOP_3VAR_SCALE_PRODUCT(short3, signed long long)
2400 
2401 // SIGNED SHORT4
2402 
2403 DECLOP_4VAR_2IN_1OUT(short4, +)
2404 DECLOP_4VAR_2IN_1OUT(short4, -)
2405 DECLOP_4VAR_2IN_1OUT(short4, *)
2406 DECLOP_4VAR_2IN_1OUT(short4, /)
2407 DECLOP_4VAR_2IN_1OUT(short4, %)
2408 DECLOP_4VAR_2IN_1OUT(short4, &)
2409 DECLOP_4VAR_2IN_1OUT(short4, |)
2410 DECLOP_4VAR_2IN_1OUT(short4, ^)
2411 DECLOP_4VAR_2IN_1OUT(short4, <<)
2412 DECLOP_4VAR_2IN_1OUT(short4, >>)
2413 
2414 DECLOP_4VAR_ASSIGN(short4, +=)
2415 DECLOP_4VAR_ASSIGN(short4, -=)
2416 DECLOP_4VAR_ASSIGN(short4, *=)
2417 DECLOP_4VAR_ASSIGN(short4, /=)
2418 DECLOP_4VAR_ASSIGN(short4, %=)
2419 DECLOP_4VAR_ASSIGN(short4, &=)
2420 DECLOP_4VAR_ASSIGN(short4, |=)
2421 DECLOP_4VAR_ASSIGN(short4, ^=)
2422 DECLOP_4VAR_ASSIGN(short4, <<=)
2423 DECLOP_4VAR_ASSIGN(short4, >>=)
2424 
2425 DECLOP_4VAR_PREOP(short4, ++)
2426 DECLOP_4VAR_PREOP(short4, --)
2427 
2428 DECLOP_4VAR_POSTOP(short4, ++)
2429 DECLOP_4VAR_POSTOP(short4, --)
2430 
2431 DECLOP_4VAR_COMP(short4, ==)
2432 DECLOP_4VAR_COMP(short4, !=)
2433 DECLOP_4VAR_COMP(short4, <)
2434 DECLOP_4VAR_COMP(short4, >)
2435 DECLOP_4VAR_COMP(short4, <=)
2436 DECLOP_4VAR_COMP(short4, >=)
2437 
2438 DECLOP_4VAR_COMP(short4, &&)
2439 DECLOP_4VAR_COMP(short4, ||)
2440 
2441 DECLOP_4VAR_1IN_1OUT(short4, ~)
2442 DECLOP_4VAR_1IN_BOOLOUT(short4, !)
2443 
2444 DECLOP_4VAR_SCALE_PRODUCT(short4, unsigned char)
2445 DECLOP_4VAR_SCALE_PRODUCT(short4, signed char)
2446 DECLOP_4VAR_SCALE_PRODUCT(short4, unsigned short)
2447 DECLOP_4VAR_SCALE_PRODUCT(short4, signed short)
2448 DECLOP_4VAR_SCALE_PRODUCT(short4, unsigned int)
2449 DECLOP_4VAR_SCALE_PRODUCT(short4, signed int)
2450 DECLOP_4VAR_SCALE_PRODUCT(short4, float)
2451 DECLOP_4VAR_SCALE_PRODUCT(short4, unsigned long)
2452 DECLOP_4VAR_SCALE_PRODUCT(short4, signed long)
2453 DECLOP_4VAR_SCALE_PRODUCT(short4, double)
2454 DECLOP_4VAR_SCALE_PRODUCT(short4, unsigned long long)
2455 DECLOP_4VAR_SCALE_PRODUCT(short4, signed long long)
2456 
2457 // UNSIGNED INT1
2458 
2459 DECLOP_1VAR_2IN_1OUT(uint1, +)
2460 DECLOP_1VAR_2IN_1OUT(uint1, -)
2461 DECLOP_1VAR_2IN_1OUT(uint1, *)
2462 DECLOP_1VAR_2IN_1OUT(uint1, /)
2463 DECLOP_1VAR_2IN_1OUT(uint1, %)
2464 DECLOP_1VAR_2IN_1OUT(uint1, &)
2465 DECLOP_1VAR_2IN_1OUT(uint1, |)
2466 DECLOP_1VAR_2IN_1OUT(uint1, ^)
2467 DECLOP_1VAR_2IN_1OUT(uint1, <<)
2468 DECLOP_1VAR_2IN_1OUT(uint1, >>)
2469 
2470 
2471 DECLOP_1VAR_ASSIGN(uint1, +=)
2472 DECLOP_1VAR_ASSIGN(uint1, -=)
2473 DECLOP_1VAR_ASSIGN(uint1, *=)
2474 DECLOP_1VAR_ASSIGN(uint1, /=)
2475 DECLOP_1VAR_ASSIGN(uint1, %=)
2476 DECLOP_1VAR_ASSIGN(uint1, &=)
2477 DECLOP_1VAR_ASSIGN(uint1, |=)
2478 DECLOP_1VAR_ASSIGN(uint1, ^=)
2479 DECLOP_1VAR_ASSIGN(uint1, <<=)
2480 DECLOP_1VAR_ASSIGN(uint1, >>=)
2481 
2482 DECLOP_1VAR_PREOP(uint1, ++)
2483 DECLOP_1VAR_PREOP(uint1, --)
2484 
2485 DECLOP_1VAR_POSTOP(uint1, ++)
2486 DECLOP_1VAR_POSTOP(uint1, --)
2487 
2488 DECLOP_1VAR_COMP(uint1, ==)
2489 DECLOP_1VAR_COMP(uint1, !=)
2490 DECLOP_1VAR_COMP(uint1, <)
2491 DECLOP_1VAR_COMP(uint1, >)
2492 DECLOP_1VAR_COMP(uint1, <=)
2493 DECLOP_1VAR_COMP(uint1, >=)
2494 
2495 DECLOP_1VAR_COMP(uint1, &&)
2496 DECLOP_1VAR_COMP(uint1, ||)
2497 
2498 DECLOP_1VAR_1IN_1OUT(uint1, ~)
2499 DECLOP_1VAR_1IN_BOOLOUT(uint1, !)
2500 
2501 DECLOP_1VAR_SCALE_PRODUCT(uint1, unsigned char)
2502 DECLOP_1VAR_SCALE_PRODUCT(uint1, signed char)
2503 DECLOP_1VAR_SCALE_PRODUCT(uint1, unsigned short)
2504 DECLOP_1VAR_SCALE_PRODUCT(uint1, signed short)
2505 DECLOP_1VAR_SCALE_PRODUCT(uint1, unsigned int)
2506 DECLOP_1VAR_SCALE_PRODUCT(uint1, signed int)
2507 DECLOP_1VAR_SCALE_PRODUCT(uint1, float)
2508 DECLOP_1VAR_SCALE_PRODUCT(uint1, unsigned long)
2509 DECLOP_1VAR_SCALE_PRODUCT(uint1, signed long)
2510 DECLOP_1VAR_SCALE_PRODUCT(uint1, double)
2511 DECLOP_1VAR_SCALE_PRODUCT(uint1, unsigned long long)
2512 DECLOP_1VAR_SCALE_PRODUCT(uint1, signed long long)
2513 
2514 // UNSIGNED INT2
2515 
2516 DECLOP_2VAR_2IN_1OUT(uint2, +)
2517 DECLOP_2VAR_2IN_1OUT(uint2, -)
2518 DECLOP_2VAR_2IN_1OUT(uint2, *)
2519 DECLOP_2VAR_2IN_1OUT(uint2, /)
2520 DECLOP_2VAR_2IN_1OUT(uint2, %)
2521 DECLOP_2VAR_2IN_1OUT(uint2, &)
2522 DECLOP_2VAR_2IN_1OUT(uint2, |)
2523 DECLOP_2VAR_2IN_1OUT(uint2, ^)
2524 DECLOP_2VAR_2IN_1OUT(uint2, <<)
2525 DECLOP_2VAR_2IN_1OUT(uint2, >>)
2526 
2527 DECLOP_2VAR_ASSIGN(uint2, +=)
2528 DECLOP_2VAR_ASSIGN(uint2, -=)
2529 DECLOP_2VAR_ASSIGN(uint2, *=)
2530 DECLOP_2VAR_ASSIGN(uint2, /=)
2531 DECLOP_2VAR_ASSIGN(uint2, %=)
2532 DECLOP_2VAR_ASSIGN(uint2, &=)
2533 DECLOP_2VAR_ASSIGN(uint2, |=)
2534 DECLOP_2VAR_ASSIGN(uint2, ^=)
2535 DECLOP_2VAR_ASSIGN(uint2, <<=)
2536 DECLOP_2VAR_ASSIGN(uint2, >>=)
2537 
2538 DECLOP_2VAR_PREOP(uint2, ++)
2539 DECLOP_2VAR_PREOP(uint2, --)
2540 
2541 DECLOP_2VAR_POSTOP(uint2, ++)
2542 DECLOP_2VAR_POSTOP(uint2, --)
2543 
2544 DECLOP_2VAR_COMP(uint2, ==)
2545 DECLOP_2VAR_COMP(uint2, !=)
2546 DECLOP_2VAR_COMP(uint2, <)
2547 DECLOP_2VAR_COMP(uint2, >)
2548 DECLOP_2VAR_COMP(uint2, <=)
2549 DECLOP_2VAR_COMP(uint2, >=)
2550 
2551 DECLOP_2VAR_COMP(uint2, &&)
2552 DECLOP_2VAR_COMP(uint2, ||)
2553 
2554 DECLOP_2VAR_1IN_1OUT(uint2, ~)
2555 DECLOP_2VAR_1IN_BOOLOUT(uint2, !)
2556 
2557 DECLOP_2VAR_SCALE_PRODUCT(uint2, unsigned char)
2558 DECLOP_2VAR_SCALE_PRODUCT(uint2, signed char)
2559 DECLOP_2VAR_SCALE_PRODUCT(uint2, unsigned short)
2560 DECLOP_2VAR_SCALE_PRODUCT(uint2, signed short)
2561 DECLOP_2VAR_SCALE_PRODUCT(uint2, unsigned int)
2562 DECLOP_2VAR_SCALE_PRODUCT(uint2, signed int)
2563 DECLOP_2VAR_SCALE_PRODUCT(uint2, float)
2564 DECLOP_2VAR_SCALE_PRODUCT(uint2, unsigned long)
2565 DECLOP_2VAR_SCALE_PRODUCT(uint2, signed long)
2566 DECLOP_2VAR_SCALE_PRODUCT(uint2, double)
2567 DECLOP_2VAR_SCALE_PRODUCT(uint2, unsigned long long)
2568 DECLOP_2VAR_SCALE_PRODUCT(uint2, signed long long)
2569 
2570 // UNSIGNED INT3
2571 
2572 DECLOP_3VAR_2IN_1OUT(uint3, +)
2573 DECLOP_3VAR_2IN_1OUT(uint3, -)
2574 DECLOP_3VAR_2IN_1OUT(uint3, *)
2575 DECLOP_3VAR_2IN_1OUT(uint3, /)
2576 DECLOP_3VAR_2IN_1OUT(uint3, %)
2577 DECLOP_3VAR_2IN_1OUT(uint3, &)
2578 DECLOP_3VAR_2IN_1OUT(uint3, |)
2579 DECLOP_3VAR_2IN_1OUT(uint3, ^)
2580 DECLOP_3VAR_2IN_1OUT(uint3, <<)
2581 DECLOP_3VAR_2IN_1OUT(uint3, >>)
2582 
2583 DECLOP_3VAR_ASSIGN(uint3, +=)
2584 DECLOP_3VAR_ASSIGN(uint3, -=)
2585 DECLOP_3VAR_ASSIGN(uint3, *=)
2586 DECLOP_3VAR_ASSIGN(uint3, /=)
2587 DECLOP_3VAR_ASSIGN(uint3, %=)
2588 DECLOP_3VAR_ASSIGN(uint3, &=)
2589 DECLOP_3VAR_ASSIGN(uint3, |=)
2590 DECLOP_3VAR_ASSIGN(uint3, ^=)
2591 DECLOP_3VAR_ASSIGN(uint3, <<=)
2592 DECLOP_3VAR_ASSIGN(uint3, >>=)
2593 
2594 DECLOP_3VAR_PREOP(uint3, ++)
2595 DECLOP_3VAR_PREOP(uint3, --)
2596 
2597 DECLOP_3VAR_POSTOP(uint3, ++)
2598 DECLOP_3VAR_POSTOP(uint3, --)
2599 
2600 DECLOP_3VAR_COMP(uint3, ==)
2601 DECLOP_3VAR_COMP(uint3, !=)
2602 DECLOP_3VAR_COMP(uint3, <)
2603 DECLOP_3VAR_COMP(uint3, >)
2604 DECLOP_3VAR_COMP(uint3, <=)
2605 DECLOP_3VAR_COMP(uint3, >=)
2606 
2607 DECLOP_3VAR_COMP(uint3, &&)
2608 DECLOP_3VAR_COMP(uint3, ||)
2609 
2610 DECLOP_3VAR_1IN_1OUT(uint3, ~)
2611 DECLOP_3VAR_1IN_BOOLOUT(uint3, !)
2612 
2613 DECLOP_3VAR_SCALE_PRODUCT(uint3, unsigned char)
2614 DECLOP_3VAR_SCALE_PRODUCT(uint3, signed char)
2615 DECLOP_3VAR_SCALE_PRODUCT(uint3, unsigned short)
2616 DECLOP_3VAR_SCALE_PRODUCT(uint3, signed short)
2617 DECLOP_3VAR_SCALE_PRODUCT(uint3, unsigned int)
2618 DECLOP_3VAR_SCALE_PRODUCT(uint3, signed int)
2619 DECLOP_3VAR_SCALE_PRODUCT(uint3, float)
2620 DECLOP_3VAR_SCALE_PRODUCT(uint3, unsigned long)
2621 DECLOP_3VAR_SCALE_PRODUCT(uint3, signed long)
2622 DECLOP_3VAR_SCALE_PRODUCT(uint3, double)
2623 DECLOP_3VAR_SCALE_PRODUCT(uint3, unsigned long long)
2624 DECLOP_3VAR_SCALE_PRODUCT(uint3, signed long long)
2625 
2626 // UNSIGNED INT4
2627 
2628 DECLOP_4VAR_2IN_1OUT(uint4, +)
2629 DECLOP_4VAR_2IN_1OUT(uint4, -)
2630 DECLOP_4VAR_2IN_1OUT(uint4, *)
2631 DECLOP_4VAR_2IN_1OUT(uint4, /)
2632 DECLOP_4VAR_2IN_1OUT(uint4, %)
2633 DECLOP_4VAR_2IN_1OUT(uint4, &)
2634 DECLOP_4VAR_2IN_1OUT(uint4, |)
2635 DECLOP_4VAR_2IN_1OUT(uint4, ^)
2636 DECLOP_4VAR_2IN_1OUT(uint4, <<)
2637 DECLOP_4VAR_2IN_1OUT(uint4, >>)
2638 
2639 DECLOP_4VAR_ASSIGN(uint4, +=)
2640 DECLOP_4VAR_ASSIGN(uint4, -=)
2641 DECLOP_4VAR_ASSIGN(uint4, *=)
2642 DECLOP_4VAR_ASSIGN(uint4, /=)
2643 DECLOP_4VAR_ASSIGN(uint4, %=)
2644 DECLOP_4VAR_ASSIGN(uint4, &=)
2645 DECLOP_4VAR_ASSIGN(uint4, |=)
2646 DECLOP_4VAR_ASSIGN(uint4, ^=)
2647 DECLOP_4VAR_ASSIGN(uint4, <<=)
2648 DECLOP_4VAR_ASSIGN(uint4, >>=)
2649 
2650 DECLOP_4VAR_PREOP(uint4, ++)
2651 DECLOP_4VAR_PREOP(uint4, --)
2652 
2653 DECLOP_4VAR_POSTOP(uint4, ++)
2654 DECLOP_4VAR_POSTOP(uint4, --)
2655 
2656 DECLOP_4VAR_COMP(uint4, ==)
2657 DECLOP_4VAR_COMP(uint4, !=)
2658 DECLOP_4VAR_COMP(uint4, <)
2659 DECLOP_4VAR_COMP(uint4, >)
2660 DECLOP_4VAR_COMP(uint4, <=)
2661 DECLOP_4VAR_COMP(uint4, >=)
2662 
2663 DECLOP_4VAR_COMP(uint4, &&)
2664 DECLOP_4VAR_COMP(uint4, ||)
2665 
2666 DECLOP_4VAR_1IN_1OUT(uint4, ~)
2667 DECLOP_4VAR_1IN_BOOLOUT(uint4, !)
2668 
2669 DECLOP_4VAR_SCALE_PRODUCT(uint4, unsigned char)
2670 DECLOP_4VAR_SCALE_PRODUCT(uint4, signed char)
2671 DECLOP_4VAR_SCALE_PRODUCT(uint4, unsigned short)
2672 DECLOP_4VAR_SCALE_PRODUCT(uint4, signed short)
2673 DECLOP_4VAR_SCALE_PRODUCT(uint4, unsigned int)
2674 DECLOP_4VAR_SCALE_PRODUCT(uint4, signed int)
2675 DECLOP_4VAR_SCALE_PRODUCT(uint4, float)
2676 DECLOP_4VAR_SCALE_PRODUCT(uint4, unsigned long)
2677 DECLOP_4VAR_SCALE_PRODUCT(uint4, signed long)
2678 DECLOP_4VAR_SCALE_PRODUCT(uint4, double)
2679 DECLOP_4VAR_SCALE_PRODUCT(uint4, unsigned long long)
2680 DECLOP_4VAR_SCALE_PRODUCT(uint4, signed long long)
2681 
2682 // SIGNED INT1
2683 
2684 DECLOP_1VAR_2IN_1OUT(int1, +)
2685 DECLOP_1VAR_2IN_1OUT(int1, -)
2686 DECLOP_1VAR_2IN_1OUT(int1, *)
2687 DECLOP_1VAR_2IN_1OUT(int1, /)
2688 DECLOP_1VAR_2IN_1OUT(int1, %)
2689 DECLOP_1VAR_2IN_1OUT(int1, &)
2690 DECLOP_1VAR_2IN_1OUT(int1, |)
2691 DECLOP_1VAR_2IN_1OUT(int1, ^)
2692 DECLOP_1VAR_2IN_1OUT(int1, <<)
2693 DECLOP_1VAR_2IN_1OUT(int1, >>)
2694 
2695 
2696 DECLOP_1VAR_ASSIGN(int1, +=)
2697 DECLOP_1VAR_ASSIGN(int1, -=)
2698 DECLOP_1VAR_ASSIGN(int1, *=)
2699 DECLOP_1VAR_ASSIGN(int1, /=)
2700 DECLOP_1VAR_ASSIGN(int1, %=)
2701 DECLOP_1VAR_ASSIGN(int1, &=)
2702 DECLOP_1VAR_ASSIGN(int1, |=)
2703 DECLOP_1VAR_ASSIGN(int1, ^=)
2704 DECLOP_1VAR_ASSIGN(int1, <<=)
2705 DECLOP_1VAR_ASSIGN(int1, >>=)
2706 
2707 DECLOP_1VAR_PREOP(int1, ++)
2708 DECLOP_1VAR_PREOP(int1, --)
2709 
2710 DECLOP_1VAR_POSTOP(int1, ++)
2711 DECLOP_1VAR_POSTOP(int1, --)
2712 
2713 DECLOP_1VAR_COMP(int1, ==)
2714 DECLOP_1VAR_COMP(int1, !=)
2715 DECLOP_1VAR_COMP(int1, <)
2716 DECLOP_1VAR_COMP(int1, >)
2717 DECLOP_1VAR_COMP(int1, <=)
2718 DECLOP_1VAR_COMP(int1, >=)
2719 
2720 DECLOP_1VAR_COMP(int1, &&)
2721 DECLOP_1VAR_COMP(int1, ||)
2722 
2723 DECLOP_1VAR_1IN_1OUT(int1, ~)
2724 DECLOP_1VAR_1IN_BOOLOUT(int1, !)
2725 
2726 DECLOP_1VAR_SCALE_PRODUCT(int1, unsigned char)
2727 DECLOP_1VAR_SCALE_PRODUCT(int1, signed char)
2728 DECLOP_1VAR_SCALE_PRODUCT(int1, unsigned short)
2729 DECLOP_1VAR_SCALE_PRODUCT(int1, signed short)
2730 DECLOP_1VAR_SCALE_PRODUCT(int1, unsigned int)
2731 DECLOP_1VAR_SCALE_PRODUCT(int1, signed int)
2732 DECLOP_1VAR_SCALE_PRODUCT(int1, float)
2733 DECLOP_1VAR_SCALE_PRODUCT(int1, unsigned long)
2734 DECLOP_1VAR_SCALE_PRODUCT(int1, signed long)
2735 DECLOP_1VAR_SCALE_PRODUCT(int1, double)
2736 DECLOP_1VAR_SCALE_PRODUCT(int1, unsigned long long)
2737 DECLOP_1VAR_SCALE_PRODUCT(int1, signed long long)
2738 
2739 // SIGNED INT2
2740 
2741 DECLOP_2VAR_2IN_1OUT(int2, +)
2742 DECLOP_2VAR_2IN_1OUT(int2, -)
2743 DECLOP_2VAR_2IN_1OUT(int2, *)
2744 DECLOP_2VAR_2IN_1OUT(int2, /)
2745 DECLOP_2VAR_2IN_1OUT(int2, %)
2746 DECLOP_2VAR_2IN_1OUT(int2, &)
2747 DECLOP_2VAR_2IN_1OUT(int2, |)
2748 DECLOP_2VAR_2IN_1OUT(int2, ^)
2749 DECLOP_2VAR_2IN_1OUT(int2, <<)
2750 DECLOP_2VAR_2IN_1OUT(int2, >>)
2751 
2752 DECLOP_2VAR_ASSIGN(int2, +=)
2753 DECLOP_2VAR_ASSIGN(int2, -=)
2754 DECLOP_2VAR_ASSIGN(int2, *=)
2755 DECLOP_2VAR_ASSIGN(int2, /=)
2756 DECLOP_2VAR_ASSIGN(int2, %=)
2757 DECLOP_2VAR_ASSIGN(int2, &=)
2758 DECLOP_2VAR_ASSIGN(int2, |=)
2759 DECLOP_2VAR_ASSIGN(int2, ^=)
2760 DECLOP_2VAR_ASSIGN(int2, <<=)
2761 DECLOP_2VAR_ASSIGN(int2, >>=)
2762 
2763 DECLOP_2VAR_PREOP(int2, ++)
2764 DECLOP_2VAR_PREOP(int2, --)
2765 
2766 DECLOP_2VAR_POSTOP(int2, ++)
2767 DECLOP_2VAR_POSTOP(int2, --)
2768 
2769 DECLOP_2VAR_COMP(int2, ==)
2770 DECLOP_2VAR_COMP(int2, !=)
2771 DECLOP_2VAR_COMP(int2, <)
2772 DECLOP_2VAR_COMP(int2, >)
2773 DECLOP_2VAR_COMP(int2, <=)
2774 DECLOP_2VAR_COMP(int2, >=)
2775 
2776 DECLOP_2VAR_COMP(int2, &&)
2777 DECLOP_2VAR_COMP(int2, ||)
2778 
2779 DECLOP_2VAR_1IN_1OUT(int2, ~)
2780 DECLOP_2VAR_1IN_BOOLOUT(int2, !)
2781 
2782 DECLOP_2VAR_SCALE_PRODUCT(int2, unsigned char)
2783 DECLOP_2VAR_SCALE_PRODUCT(int2, signed char)
2784 DECLOP_2VAR_SCALE_PRODUCT(int2, unsigned short)
2785 DECLOP_2VAR_SCALE_PRODUCT(int2, signed short)
2786 DECLOP_2VAR_SCALE_PRODUCT(int2, unsigned int)
2787 DECLOP_2VAR_SCALE_PRODUCT(int2, signed int)
2788 DECLOP_2VAR_SCALE_PRODUCT(int2, float)
2789 DECLOP_2VAR_SCALE_PRODUCT(int2, unsigned long)
2790 DECLOP_2VAR_SCALE_PRODUCT(int2, signed long)
2791 DECLOP_2VAR_SCALE_PRODUCT(int2, double)
2792 DECLOP_2VAR_SCALE_PRODUCT(int2, unsigned long long)
2793 DECLOP_2VAR_SCALE_PRODUCT(int2, signed long long)
2794 
2795 // SIGNED INT3
2796 
2797 DECLOP_3VAR_2IN_1OUT(int3, +)
2798 DECLOP_3VAR_2IN_1OUT(int3, -)
2799 DECLOP_3VAR_2IN_1OUT(int3, *)
2800 DECLOP_3VAR_2IN_1OUT(int3, /)
2801 DECLOP_3VAR_2IN_1OUT(int3, %)
2802 DECLOP_3VAR_2IN_1OUT(int3, &)
2803 DECLOP_3VAR_2IN_1OUT(int3, |)
2804 DECLOP_3VAR_2IN_1OUT(int3, ^)
2805 DECLOP_3VAR_2IN_1OUT(int3, <<)
2806 DECLOP_3VAR_2IN_1OUT(int3, >>)
2807 
2808 DECLOP_3VAR_ASSIGN(int3, +=)
2809 DECLOP_3VAR_ASSIGN(int3, -=)
2810 DECLOP_3VAR_ASSIGN(int3, *=)
2811 DECLOP_3VAR_ASSIGN(int3, /=)
2812 DECLOP_3VAR_ASSIGN(int3, %=)
2813 DECLOP_3VAR_ASSIGN(int3, &=)
2814 DECLOP_3VAR_ASSIGN(int3, |=)
2815 DECLOP_3VAR_ASSIGN(int3, ^=)
2816 DECLOP_3VAR_ASSIGN(int3, <<=)
2817 DECLOP_3VAR_ASSIGN(int3, >>=)
2818 
2819 DECLOP_3VAR_PREOP(int3, ++)
2820 DECLOP_3VAR_PREOP(int3, --)
2821 
2822 DECLOP_3VAR_POSTOP(int3, ++)
2823 DECLOP_3VAR_POSTOP(int3, --)
2824 
2825 DECLOP_3VAR_COMP(int3, ==)
2826 DECLOP_3VAR_COMP(int3, !=)
2827 DECLOP_3VAR_COMP(int3, <)
2828 DECLOP_3VAR_COMP(int3, >)
2829 DECLOP_3VAR_COMP(int3, <=)
2830 DECLOP_3VAR_COMP(int3, >=)
2831 
2832 DECLOP_3VAR_COMP(int3, &&)
2833 DECLOP_3VAR_COMP(int3, ||)
2834 
2835 DECLOP_3VAR_1IN_1OUT(int3, ~)
2836 DECLOP_3VAR_1IN_BOOLOUT(int3, !)
2837 
2838 DECLOP_3VAR_SCALE_PRODUCT(int3, unsigned char)
2839 DECLOP_3VAR_SCALE_PRODUCT(int3, signed char)
2840 DECLOP_3VAR_SCALE_PRODUCT(int3, unsigned short)
2841 DECLOP_3VAR_SCALE_PRODUCT(int3, signed short)
2842 DECLOP_3VAR_SCALE_PRODUCT(int3, unsigned int)
2843 DECLOP_3VAR_SCALE_PRODUCT(int3, signed int)
2844 DECLOP_3VAR_SCALE_PRODUCT(int3, float)
2845 DECLOP_3VAR_SCALE_PRODUCT(int3, unsigned long)
2846 DECLOP_3VAR_SCALE_PRODUCT(int3, signed long)
2847 DECLOP_3VAR_SCALE_PRODUCT(int3, double)
2848 DECLOP_3VAR_SCALE_PRODUCT(int3, unsigned long long)
2849 DECLOP_3VAR_SCALE_PRODUCT(int3, signed long long)
2850 
2851 // SIGNED INT4
2852 
2853 DECLOP_4VAR_2IN_1OUT(int4, +)
2854 DECLOP_4VAR_2IN_1OUT(int4, -)
2855 DECLOP_4VAR_2IN_1OUT(int4, *)
2856 DECLOP_4VAR_2IN_1OUT(int4, /)
2857 DECLOP_4VAR_2IN_1OUT(int4, %)
2858 DECLOP_4VAR_2IN_1OUT(int4, &)
2859 DECLOP_4VAR_2IN_1OUT(int4, |)
2860 DECLOP_4VAR_2IN_1OUT(int4, ^)
2861 DECLOP_4VAR_2IN_1OUT(int4, <<)
2862 DECLOP_4VAR_2IN_1OUT(int4, >>)
2863 
2864 DECLOP_4VAR_ASSIGN(int4, +=)
2865 DECLOP_4VAR_ASSIGN(int4, -=)
2866 DECLOP_4VAR_ASSIGN(int4, *=)
2867 DECLOP_4VAR_ASSIGN(int4, /=)
2868 DECLOP_4VAR_ASSIGN(int4, %=)
2869 DECLOP_4VAR_ASSIGN(int4, &=)
2870 DECLOP_4VAR_ASSIGN(int4, |=)
2871 DECLOP_4VAR_ASSIGN(int4, ^=)
2872 DECLOP_4VAR_ASSIGN(int4, <<=)
2873 DECLOP_4VAR_ASSIGN(int4, >>=)
2874 
2875 DECLOP_4VAR_PREOP(int4, ++)
2876 DECLOP_4VAR_PREOP(int4, --)
2877 
2878 DECLOP_4VAR_POSTOP(int4, ++)
2879 DECLOP_4VAR_POSTOP(int4, --)
2880 
2881 DECLOP_4VAR_COMP(int4, ==)
2882 DECLOP_4VAR_COMP(int4, !=)
2883 DECLOP_4VAR_COMP(int4, <)
2884 DECLOP_4VAR_COMP(int4, >)
2885 DECLOP_4VAR_COMP(int4, <=)
2886 DECLOP_4VAR_COMP(int4, >=)
2887 
2888 DECLOP_4VAR_COMP(int4, &&)
2889 DECLOP_4VAR_COMP(int4, ||)
2890 
2891 DECLOP_4VAR_1IN_1OUT(int4, ~)
2892 DECLOP_4VAR_1IN_BOOLOUT(int4, !)
2893 
2894 DECLOP_4VAR_SCALE_PRODUCT(int4, unsigned char)
2895 DECLOP_4VAR_SCALE_PRODUCT(int4, signed char)
2896 DECLOP_4VAR_SCALE_PRODUCT(int4, unsigned short)
2897 DECLOP_4VAR_SCALE_PRODUCT(int4, signed short)
2898 DECLOP_4VAR_SCALE_PRODUCT(int4, unsigned int)
2899 DECLOP_4VAR_SCALE_PRODUCT(int4, signed int)
2900 DECLOP_4VAR_SCALE_PRODUCT(int4, float)
2901 DECLOP_4VAR_SCALE_PRODUCT(int4, unsigned long)
2902 DECLOP_4VAR_SCALE_PRODUCT(int4, signed long)
2903 DECLOP_4VAR_SCALE_PRODUCT(int4, double)
2904 DECLOP_4VAR_SCALE_PRODUCT(int4, unsigned long long)
2905 DECLOP_4VAR_SCALE_PRODUCT(int4, signed long long)
2906 
2907 // FLOAT1
2908 
2909 DECLOP_1VAR_2IN_1OUT(float1, +)
2910 DECLOP_1VAR_2IN_1OUT(float1, -)
2911 DECLOP_1VAR_2IN_1OUT(float1, *)
2912 DECLOP_1VAR_2IN_1OUT(float1, /)
2913 
2914 DECLOP_1VAR_ASSIGN(float1, +=)
2915 DECLOP_1VAR_ASSIGN(float1, -=)
2916 DECLOP_1VAR_ASSIGN(float1, *=)
2917 DECLOP_1VAR_ASSIGN(float1, /=)
2918 
2919 DECLOP_1VAR_PREOP(float1, ++)
2920 DECLOP_1VAR_PREOP(float1, --)
2921 
2922 DECLOP_1VAR_POSTOP(float1, ++)
2923 DECLOP_1VAR_POSTOP(float1, --)
2924 
2925 DECLOP_1VAR_COMP(float1, ==)
2926 DECLOP_1VAR_COMP(float1, !=)
2927 DECLOP_1VAR_COMP(float1, <)
2928 DECLOP_1VAR_COMP(float1, >)
2929 DECLOP_1VAR_COMP(float1, <=)
2930 DECLOP_1VAR_COMP(float1, >=)
2931 
2932 DECLOP_1VAR_SCALE_PRODUCT(float1, unsigned char)
2933 DECLOP_1VAR_SCALE_PRODUCT(float1, signed char)
2934 DECLOP_1VAR_SCALE_PRODUCT(float1, unsigned short)
2935 DECLOP_1VAR_SCALE_PRODUCT(float1, signed short)
2936 DECLOP_1VAR_SCALE_PRODUCT(float1, unsigned int)
2937 DECLOP_1VAR_SCALE_PRODUCT(float1, signed int)
2938 DECLOP_1VAR_SCALE_PRODUCT(float1, float)
2939 DECLOP_1VAR_SCALE_PRODUCT(float1, unsigned long)
2940 DECLOP_1VAR_SCALE_PRODUCT(float1, signed long)
2941 DECLOP_1VAR_SCALE_PRODUCT(float1, double)
2942 DECLOP_1VAR_SCALE_PRODUCT(float1, unsigned long long)
2943 DECLOP_1VAR_SCALE_PRODUCT(float1, signed long long)
2944 
2945 // FLOAT2
2946 
2947 DECLOP_2VAR_2IN_1OUT(float2, +)
2948 DECLOP_2VAR_2IN_1OUT(float2, -)
2949 DECLOP_2VAR_2IN_1OUT(float2, *)
2950 DECLOP_2VAR_2IN_1OUT(float2, /)
2951 
2952 DECLOP_2VAR_ASSIGN(float2, +=)
2953 DECLOP_2VAR_ASSIGN(float2, -=)
2954 DECLOP_2VAR_ASSIGN(float2, *=)
2955 DECLOP_2VAR_ASSIGN(float2, /=)
2956 
2957 DECLOP_2VAR_PREOP(float2, ++)
2958 DECLOP_2VAR_PREOP(float2, --)
2959 
2960 DECLOP_2VAR_POSTOP(float2, ++)
2961 DECLOP_2VAR_POSTOP(float2, --)
2962 
2963 DECLOP_2VAR_COMP(float2, ==)
2964 DECLOP_2VAR_COMP(float2, !=)
2965 DECLOP_2VAR_COMP(float2, <)
2966 DECLOP_2VAR_COMP(float2, >)
2967 DECLOP_2VAR_COMP(float2, <=)
2968 DECLOP_2VAR_COMP(float2, >=)
2969 
2970 DECLOP_2VAR_SCALE_PRODUCT(float2, unsigned char)
2971 DECLOP_2VAR_SCALE_PRODUCT(float2, signed char)
2972 DECLOP_2VAR_SCALE_PRODUCT(float2, unsigned short)
2973 DECLOP_2VAR_SCALE_PRODUCT(float2, signed short)
2974 DECLOP_2VAR_SCALE_PRODUCT(float2, unsigned int)
2975 DECLOP_2VAR_SCALE_PRODUCT(float2, signed int)
2976 DECLOP_2VAR_SCALE_PRODUCT(float2, float)
2977 DECLOP_2VAR_SCALE_PRODUCT(float2, unsigned long)
2978 DECLOP_2VAR_SCALE_PRODUCT(float2, signed long)
2979 DECLOP_2VAR_SCALE_PRODUCT(float2, double)
2980 DECLOP_2VAR_SCALE_PRODUCT(float2, unsigned long long)
2981 DECLOP_2VAR_SCALE_PRODUCT(float2, signed long long)
2982 
2983 // FLOAT3
2984 
2985 DECLOP_3VAR_2IN_1OUT(float3, +)
2986 DECLOP_3VAR_2IN_1OUT(float3, -)
2987 DECLOP_3VAR_2IN_1OUT(float3, *)
2988 DECLOP_3VAR_2IN_1OUT(float3, /)
2989 
2990 DECLOP_3VAR_ASSIGN(float3, +=)
2991 DECLOP_3VAR_ASSIGN(float3, -=)
2992 DECLOP_3VAR_ASSIGN(float3, *=)
2993 DECLOP_3VAR_ASSIGN(float3, /=)
2994 
2995 DECLOP_3VAR_PREOP(float3, ++)
2996 DECLOP_3VAR_PREOP(float3, --)
2997 
2998 DECLOP_3VAR_POSTOP(float3, ++)
2999 DECLOP_3VAR_POSTOP(float3, --)
3000 
3001 DECLOP_3VAR_COMP(float3, ==)
3002 DECLOP_3VAR_COMP(float3, !=)
3003 DECLOP_3VAR_COMP(float3, <)
3004 DECLOP_3VAR_COMP(float3, >)
3005 DECLOP_3VAR_COMP(float3, <=)
3006 DECLOP_3VAR_COMP(float3, >=)
3007 
3008 DECLOP_3VAR_SCALE_PRODUCT(float3, unsigned char)
3009 DECLOP_3VAR_SCALE_PRODUCT(float3, signed char)
3010 DECLOP_3VAR_SCALE_PRODUCT(float3, unsigned short)
3011 DECLOP_3VAR_SCALE_PRODUCT(float3, signed short)
3012 DECLOP_3VAR_SCALE_PRODUCT(float3, unsigned int)
3013 DECLOP_3VAR_SCALE_PRODUCT(float3, signed int)
3014 DECLOP_3VAR_SCALE_PRODUCT(float3, float)
3015 DECLOP_3VAR_SCALE_PRODUCT(float3, unsigned long)
3016 DECLOP_3VAR_SCALE_PRODUCT(float3, signed long)
3017 DECLOP_3VAR_SCALE_PRODUCT(float3, double)
3018 DECLOP_3VAR_SCALE_PRODUCT(float3, unsigned long long)
3019 DECLOP_3VAR_SCALE_PRODUCT(float3, signed long long)
3020 
3021 // FLOAT4
3022 
3023 DECLOP_4VAR_2IN_1OUT(float4, +)
3024 DECLOP_4VAR_2IN_1OUT(float4, -)
3025 DECLOP_4VAR_2IN_1OUT(float4, *)
3026 DECLOP_4VAR_2IN_1OUT(float4, /)
3027 
3028 DECLOP_4VAR_ASSIGN(float4, +=)
3029 DECLOP_4VAR_ASSIGN(float4, -=)
3030 DECLOP_4VAR_ASSIGN(float4, *=)
3031 DECLOP_4VAR_ASSIGN(float4, /=)
3032 
3033 DECLOP_4VAR_PREOP(float4, ++)
3034 DECLOP_4VAR_PREOP(float4, --)
3035 
3036 DECLOP_4VAR_POSTOP(float4, ++)
3037 DECLOP_4VAR_POSTOP(float4, --)
3038 
3039 DECLOP_4VAR_COMP(float4, ==)
3040 DECLOP_4VAR_COMP(float4, !=)
3041 DECLOP_4VAR_COMP(float4, <)
3042 DECLOP_4VAR_COMP(float4, >)
3043 DECLOP_4VAR_COMP(float4, <=)
3044 DECLOP_4VAR_COMP(float4, >=)
3045 
3046 DECLOP_4VAR_SCALE_PRODUCT(float4, unsigned char)
3047 DECLOP_4VAR_SCALE_PRODUCT(float4, signed char)
3048 DECLOP_4VAR_SCALE_PRODUCT(float4, unsigned short)
3049 DECLOP_4VAR_SCALE_PRODUCT(float4, signed short)
3050 DECLOP_4VAR_SCALE_PRODUCT(float4, unsigned int)
3051 DECLOP_4VAR_SCALE_PRODUCT(float4, signed int)
3052 DECLOP_4VAR_SCALE_PRODUCT(float4, float)
3053 DECLOP_4VAR_SCALE_PRODUCT(float4, unsigned long)
3054 DECLOP_4VAR_SCALE_PRODUCT(float4, signed long)
3055 DECLOP_4VAR_SCALE_PRODUCT(float4, double)
3056 DECLOP_4VAR_SCALE_PRODUCT(float4, unsigned long long)
3057 DECLOP_4VAR_SCALE_PRODUCT(float4, signed long long)
3058 
3059 // DOUBLE1
3060 
3061 DECLOP_1VAR_2IN_1OUT(double1, +)
3062 DECLOP_1VAR_2IN_1OUT(double1, -)
3063 DECLOP_1VAR_2IN_1OUT(double1, *)
3064 DECLOP_1VAR_2IN_1OUT(double1, /)
3065 
3066 DECLOP_1VAR_ASSIGN(double1, +=)
3067 DECLOP_1VAR_ASSIGN(double1, -=)
3068 DECLOP_1VAR_ASSIGN(double1, *=)
3069 DECLOP_1VAR_ASSIGN(double1, /=)
3070 
3071 DECLOP_1VAR_PREOP(double1, ++)
3072 DECLOP_1VAR_PREOP(double1, --)
3073 
3074 DECLOP_1VAR_POSTOP(double1, ++)
3075 DECLOP_1VAR_POSTOP(double1, --)
3076 
3077 DECLOP_1VAR_COMP(double1, ==)
3078 DECLOP_1VAR_COMP(double1, !=)
3079 DECLOP_1VAR_COMP(double1, <)
3080 DECLOP_1VAR_COMP(double1, >)
3081 DECLOP_1VAR_COMP(double1, <=)
3082 DECLOP_1VAR_COMP(double1, >=)
3083 
3084 DECLOP_1VAR_SCALE_PRODUCT(double1, unsigned char)
3085 DECLOP_1VAR_SCALE_PRODUCT(double1, signed char)
3086 DECLOP_1VAR_SCALE_PRODUCT(double1, unsigned short)
3087 DECLOP_1VAR_SCALE_PRODUCT(double1, signed short)
3088 DECLOP_1VAR_SCALE_PRODUCT(double1, unsigned int)
3089 DECLOP_1VAR_SCALE_PRODUCT(double1, signed int)
3090 DECLOP_1VAR_SCALE_PRODUCT(double1, float)
3091 DECLOP_1VAR_SCALE_PRODUCT(double1, unsigned long)
3092 DECLOP_1VAR_SCALE_PRODUCT(double1, signed long)
3093 DECLOP_1VAR_SCALE_PRODUCT(double1, double)
3094 DECLOP_1VAR_SCALE_PRODUCT(double1, unsigned long long)
3095 DECLOP_1VAR_SCALE_PRODUCT(double1, signed long long)
3096 
3097 // DOUBLE2
3098 
3099 DECLOP_2VAR_2IN_1OUT(double2, +)
3100 DECLOP_2VAR_2IN_1OUT(double2, -)
3101 DECLOP_2VAR_2IN_1OUT(double2, *)
3102 DECLOP_2VAR_2IN_1OUT(double2, /)
3103 
3104 DECLOP_2VAR_ASSIGN(double2, +=)
3105 DECLOP_2VAR_ASSIGN(double2, -=)
3106 DECLOP_2VAR_ASSIGN(double2, *=)
3107 DECLOP_2VAR_ASSIGN(double2, /=)
3108 
3109 DECLOP_2VAR_PREOP(double2, ++)
3110 DECLOP_2VAR_PREOP(double2, --)
3111 
3112 DECLOP_2VAR_POSTOP(double2, ++)
3113 DECLOP_2VAR_POSTOP(double2, --)
3114 
3115 DECLOP_2VAR_COMP(double2, ==)
3116 DECLOP_2VAR_COMP(double2, !=)
3117 DECLOP_2VAR_COMP(double2, <)
3118 DECLOP_2VAR_COMP(double2, >)
3119 DECLOP_2VAR_COMP(double2, <=)
3120 DECLOP_2VAR_COMP(double2, >=)
3121 
3122 DECLOP_2VAR_SCALE_PRODUCT(double2, unsigned char)
3123 DECLOP_2VAR_SCALE_PRODUCT(double2, signed char)
3124 DECLOP_2VAR_SCALE_PRODUCT(double2, unsigned short)
3125 DECLOP_2VAR_SCALE_PRODUCT(double2, signed short)
3126 DECLOP_2VAR_SCALE_PRODUCT(double2, unsigned int)
3127 DECLOP_2VAR_SCALE_PRODUCT(double2, signed int)
3128 DECLOP_2VAR_SCALE_PRODUCT(double2, float)
3129 DECLOP_2VAR_SCALE_PRODUCT(double2, unsigned long)
3130 DECLOP_2VAR_SCALE_PRODUCT(double2, signed long)
3131 DECLOP_2VAR_SCALE_PRODUCT(double2, double)
3132 DECLOP_2VAR_SCALE_PRODUCT(double2, unsigned long long)
3133 DECLOP_2VAR_SCALE_PRODUCT(double2, signed long long)
3134 
3135 // DOUBLE3
3136 
3137 DECLOP_3VAR_2IN_1OUT(double3, +)
3138 DECLOP_3VAR_2IN_1OUT(double3, -)
3139 DECLOP_3VAR_2IN_1OUT(double3, *)
3140 DECLOP_3VAR_2IN_1OUT(double3, /)
3141 
3142 DECLOP_3VAR_ASSIGN(double3, +=)
3143 DECLOP_3VAR_ASSIGN(double3, -=)
3144 DECLOP_3VAR_ASSIGN(double3, *=)
3145 DECLOP_3VAR_ASSIGN(double3, /=)
3146 
3147 DECLOP_3VAR_PREOP(double3, ++)
3148 DECLOP_3VAR_PREOP(double3, --)
3149 
3150 DECLOP_3VAR_POSTOP(double3, ++)
3151 DECLOP_3VAR_POSTOP(double3, --)
3152 
3153 DECLOP_3VAR_COMP(double3, ==)
3154 DECLOP_3VAR_COMP(double3, !=)
3155 DECLOP_3VAR_COMP(double3, <)
3156 DECLOP_3VAR_COMP(double3, >)
3157 DECLOP_3VAR_COMP(double3, <=)
3158 DECLOP_3VAR_COMP(double3, >=)
3159 
3160 DECLOP_3VAR_SCALE_PRODUCT(double3, unsigned char)
3161 DECLOP_3VAR_SCALE_PRODUCT(double3, signed char)
3162 DECLOP_3VAR_SCALE_PRODUCT(double3, unsigned short)
3163 DECLOP_3VAR_SCALE_PRODUCT(double3, signed short)
3164 DECLOP_3VAR_SCALE_PRODUCT(double3, unsigned int)
3165 DECLOP_3VAR_SCALE_PRODUCT(double3, signed int)
3166 DECLOP_3VAR_SCALE_PRODUCT(double3, float)
3167 DECLOP_3VAR_SCALE_PRODUCT(double3, unsigned long)
3168 DECLOP_3VAR_SCALE_PRODUCT(double3, signed long)
3169 DECLOP_3VAR_SCALE_PRODUCT(double3, double)
3170 DECLOP_3VAR_SCALE_PRODUCT(double3, unsigned long long)
3171 DECLOP_3VAR_SCALE_PRODUCT(double3, signed long long)
3172 
3173 // DOUBLE4
3174 
3175 DECLOP_4VAR_2IN_1OUT(double4, +)
3176 DECLOP_4VAR_2IN_1OUT(double4, -)
3177 DECLOP_4VAR_2IN_1OUT(double4, *)
3178 DECLOP_4VAR_2IN_1OUT(double4, /)
3179 
3180 DECLOP_4VAR_ASSIGN(double4, +=)
3181 DECLOP_4VAR_ASSIGN(double4, -=)
3182 DECLOP_4VAR_ASSIGN(double4, *=)
3183 DECLOP_4VAR_ASSIGN(double4, /=)
3184 
3185 DECLOP_4VAR_PREOP(double4, ++)
3186 DECLOP_4VAR_PREOP(double4, --)
3187 
3188 DECLOP_4VAR_POSTOP(double4, ++)
3189 DECLOP_4VAR_POSTOP(double4, --)
3190 
3191 DECLOP_4VAR_COMP(double4, ==)
3192 DECLOP_4VAR_COMP(double4, !=)
3193 DECLOP_4VAR_COMP(double4, <)
3194 DECLOP_4VAR_COMP(double4, >)
3195 DECLOP_4VAR_COMP(double4, <=)
3196 DECLOP_4VAR_COMP(double4, >=)
3197 
3198 DECLOP_4VAR_SCALE_PRODUCT(double4, unsigned char)
3199 DECLOP_4VAR_SCALE_PRODUCT(double4, signed char)
3200 DECLOP_4VAR_SCALE_PRODUCT(double4, unsigned short)
3201 DECLOP_4VAR_SCALE_PRODUCT(double4, signed short)
3202 DECLOP_4VAR_SCALE_PRODUCT(double4, unsigned int)
3203 DECLOP_4VAR_SCALE_PRODUCT(double4, signed int)
3204 DECLOP_4VAR_SCALE_PRODUCT(double4, float)
3205 DECLOP_4VAR_SCALE_PRODUCT(double4, unsigned long)
3206 DECLOP_4VAR_SCALE_PRODUCT(double4, signed long)
3207 DECLOP_4VAR_SCALE_PRODUCT(double4, double)
3208 DECLOP_4VAR_SCALE_PRODUCT(double4, unsigned long long)
3209 DECLOP_4VAR_SCALE_PRODUCT(double4, signed long long)
3210 
3211 // UNSIGNED LONG1
3212 
3213 DECLOP_1VAR_2IN_1OUT(ulong1, +)
3214 DECLOP_1VAR_2IN_1OUT(ulong1, -)
3215 DECLOP_1VAR_2IN_1OUT(ulong1, *)
3216 DECLOP_1VAR_2IN_1OUT(ulong1, /)
3217 DECLOP_1VAR_2IN_1OUT(ulong1, %)
3218 DECLOP_1VAR_2IN_1OUT(ulong1, &)
3219 DECLOP_1VAR_2IN_1OUT(ulong1, |)
3220 DECLOP_1VAR_2IN_1OUT(ulong1, ^)
3221 DECLOP_1VAR_2IN_1OUT(ulong1, <<)
3222 DECLOP_1VAR_2IN_1OUT(ulong1, >>)
3223 
3224 
3225 DECLOP_1VAR_ASSIGN(ulong1, +=)
3226 DECLOP_1VAR_ASSIGN(ulong1, -=)
3227 DECLOP_1VAR_ASSIGN(ulong1, *=)
3228 DECLOP_1VAR_ASSIGN(ulong1, /=)
3229 DECLOP_1VAR_ASSIGN(ulong1, %=)
3230 DECLOP_1VAR_ASSIGN(ulong1, &=)
3231 DECLOP_1VAR_ASSIGN(ulong1, |=)
3232 DECLOP_1VAR_ASSIGN(ulong1, ^=)
3233 DECLOP_1VAR_ASSIGN(ulong1, <<=)
3234 DECLOP_1VAR_ASSIGN(ulong1, >>=)
3235 
3236 DECLOP_1VAR_PREOP(ulong1, ++)
3237 DECLOP_1VAR_PREOP(ulong1, --)
3238 
3239 DECLOP_1VAR_POSTOP(ulong1, ++)
3240 DECLOP_1VAR_POSTOP(ulong1, --)
3241 
3242 DECLOP_1VAR_COMP(ulong1, ==)
3243 DECLOP_1VAR_COMP(ulong1, !=)
3244 DECLOP_1VAR_COMP(ulong1, <)
3245 DECLOP_1VAR_COMP(ulong1, >)
3246 DECLOP_1VAR_COMP(ulong1, <=)
3247 DECLOP_1VAR_COMP(ulong1, >=)
3248 
3249 DECLOP_1VAR_COMP(ulong1, &&)
3250 DECLOP_1VAR_COMP(ulong1, ||)
3251 
3252 DECLOP_1VAR_1IN_1OUT(ulong1, ~)
3253 DECLOP_1VAR_1IN_BOOLOUT(ulong1, !)
3254 
3255 DECLOP_1VAR_SCALE_PRODUCT(ulong1, unsigned char)
3256 DECLOP_1VAR_SCALE_PRODUCT(ulong1, signed char)
3257 DECLOP_1VAR_SCALE_PRODUCT(ulong1, unsigned short)
3258 DECLOP_1VAR_SCALE_PRODUCT(ulong1, signed short)
3259 DECLOP_1VAR_SCALE_PRODUCT(ulong1, unsigned int)
3260 DECLOP_1VAR_SCALE_PRODUCT(ulong1, signed int)
3261 DECLOP_1VAR_SCALE_PRODUCT(ulong1, float)
3262 DECLOP_1VAR_SCALE_PRODUCT(ulong1, unsigned long)
3263 DECLOP_1VAR_SCALE_PRODUCT(ulong1, signed long)
3264 DECLOP_1VAR_SCALE_PRODUCT(ulong1, double)
3265 DECLOP_1VAR_SCALE_PRODUCT(ulong1, unsigned long long)
3266 DECLOP_1VAR_SCALE_PRODUCT(ulong1, signed long long)
3267 
3268 // UNSIGNED LONG2
3269 
3270 DECLOP_2VAR_2IN_1OUT(ulong2, +)
3271 DECLOP_2VAR_2IN_1OUT(ulong2, -)
3272 DECLOP_2VAR_2IN_1OUT(ulong2, *)
3273 DECLOP_2VAR_2IN_1OUT(ulong2, /)
3274 DECLOP_2VAR_2IN_1OUT(ulong2, %)
3275 DECLOP_2VAR_2IN_1OUT(ulong2, &)
3276 DECLOP_2VAR_2IN_1OUT(ulong2, |)
3277 DECLOP_2VAR_2IN_1OUT(ulong2, ^)
3278 DECLOP_2VAR_2IN_1OUT(ulong2, <<)
3279 DECLOP_2VAR_2IN_1OUT(ulong2, >>)
3280 
3281 DECLOP_2VAR_ASSIGN(ulong2, +=)
3282 DECLOP_2VAR_ASSIGN(ulong2, -=)
3283 DECLOP_2VAR_ASSIGN(ulong2, *=)
3284 DECLOP_2VAR_ASSIGN(ulong2, /=)
3285 DECLOP_2VAR_ASSIGN(ulong2, %=)
3286 DECLOP_2VAR_ASSIGN(ulong2, &=)
3287 DECLOP_2VAR_ASSIGN(ulong2, |=)
3288 DECLOP_2VAR_ASSIGN(ulong2, ^=)
3289 DECLOP_2VAR_ASSIGN(ulong2, <<=)
3290 DECLOP_2VAR_ASSIGN(ulong2, >>=)
3291 
3292 DECLOP_2VAR_PREOP(ulong2, ++)
3293 DECLOP_2VAR_PREOP(ulong2, --)
3294 
3295 DECLOP_2VAR_POSTOP(ulong2, ++)
3296 DECLOP_2VAR_POSTOP(ulong2, --)
3297 
3298 DECLOP_2VAR_COMP(ulong2, ==)
3299 DECLOP_2VAR_COMP(ulong2, !=)
3300 DECLOP_2VAR_COMP(ulong2, <)
3301 DECLOP_2VAR_COMP(ulong2, >)
3302 DECLOP_2VAR_COMP(ulong2, <=)
3303 DECLOP_2VAR_COMP(ulong2, >=)
3304 
3305 DECLOP_2VAR_COMP(ulong2, &&)
3306 DECLOP_2VAR_COMP(ulong2, ||)
3307 
3308 DECLOP_2VAR_1IN_1OUT(ulong2, ~)
3309 DECLOP_2VAR_1IN_BOOLOUT(ulong2, !)
3310 
3311 DECLOP_2VAR_SCALE_PRODUCT(ulong2, unsigned char)
3312 DECLOP_2VAR_SCALE_PRODUCT(ulong2, signed char)
3313 DECLOP_2VAR_SCALE_PRODUCT(ulong2, unsigned short)
3314 DECLOP_2VAR_SCALE_PRODUCT(ulong2, signed short)
3315 DECLOP_2VAR_SCALE_PRODUCT(ulong2, unsigned int)
3316 DECLOP_2VAR_SCALE_PRODUCT(ulong2, signed int)
3317 DECLOP_2VAR_SCALE_PRODUCT(ulong2, float)
3318 DECLOP_2VAR_SCALE_PRODUCT(ulong2, unsigned long)
3319 DECLOP_2VAR_SCALE_PRODUCT(ulong2, signed long)
3320 DECLOP_2VAR_SCALE_PRODUCT(ulong2, double)
3321 DECLOP_2VAR_SCALE_PRODUCT(ulong2, unsigned long long)
3322 DECLOP_2VAR_SCALE_PRODUCT(ulong2, signed long long)
3323 
3324 // UNSIGNED LONG3
3325 
3326 DECLOP_3VAR_2IN_1OUT(ulong3, +)
3327 DECLOP_3VAR_2IN_1OUT(ulong3, -)
3328 DECLOP_3VAR_2IN_1OUT(ulong3, *)
3329 DECLOP_3VAR_2IN_1OUT(ulong3, /)
3330 DECLOP_3VAR_2IN_1OUT(ulong3, %)
3331 DECLOP_3VAR_2IN_1OUT(ulong3, &)
3332 DECLOP_3VAR_2IN_1OUT(ulong3, |)
3333 DECLOP_3VAR_2IN_1OUT(ulong3, ^)
3334 DECLOP_3VAR_2IN_1OUT(ulong3, <<)
3335 DECLOP_3VAR_2IN_1OUT(ulong3, >>)
3336 
3337 DECLOP_3VAR_ASSIGN(ulong3, +=)
3338 DECLOP_3VAR_ASSIGN(ulong3, -=)
3339 DECLOP_3VAR_ASSIGN(ulong3, *=)
3340 DECLOP_3VAR_ASSIGN(ulong3, /=)
3341 DECLOP_3VAR_ASSIGN(ulong3, %=)
3342 DECLOP_3VAR_ASSIGN(ulong3, &=)
3343 DECLOP_3VAR_ASSIGN(ulong3, |=)
3344 DECLOP_3VAR_ASSIGN(ulong3, ^=)
3345 DECLOP_3VAR_ASSIGN(ulong3, <<=)
3346 DECLOP_3VAR_ASSIGN(ulong3, >>=)
3347 
3348 DECLOP_3VAR_PREOP(ulong3, ++)
3349 DECLOP_3VAR_PREOP(ulong3, --)
3350 
3351 DECLOP_3VAR_POSTOP(ulong3, ++)
3352 DECLOP_3VAR_POSTOP(ulong3, --)
3353 
3354 DECLOP_3VAR_COMP(ulong3, ==)
3355 DECLOP_3VAR_COMP(ulong3, !=)
3356 DECLOP_3VAR_COMP(ulong3, <)
3357 DECLOP_3VAR_COMP(ulong3, >)
3358 DECLOP_3VAR_COMP(ulong3, <=)
3359 DECLOP_3VAR_COMP(ulong3, >=)
3360 
3361 DECLOP_3VAR_COMP(ulong3, &&)
3362 DECLOP_3VAR_COMP(ulong3, ||)
3363 
3364 DECLOP_3VAR_1IN_1OUT(ulong3, ~)
3365 DECLOP_3VAR_1IN_BOOLOUT(ulong3, !)
3366 
3367 DECLOP_3VAR_SCALE_PRODUCT(ulong3, unsigned char)
3368 DECLOP_3VAR_SCALE_PRODUCT(ulong3, signed char)
3369 DECLOP_3VAR_SCALE_PRODUCT(ulong3, unsigned short)
3370 DECLOP_3VAR_SCALE_PRODUCT(ulong3, signed short)
3371 DECLOP_3VAR_SCALE_PRODUCT(ulong3, unsigned int)
3372 DECLOP_3VAR_SCALE_PRODUCT(ulong3, signed int)
3373 DECLOP_3VAR_SCALE_PRODUCT(ulong3, float)
3374 DECLOP_3VAR_SCALE_PRODUCT(ulong3, unsigned long)
3375 DECLOP_3VAR_SCALE_PRODUCT(ulong3, signed long)
3376 DECLOP_3VAR_SCALE_PRODUCT(ulong3, double)
3377 DECLOP_3VAR_SCALE_PRODUCT(ulong3, unsigned long long)
3378 DECLOP_3VAR_SCALE_PRODUCT(ulong3, signed long long)
3379 
3380 // UNSIGNED LONG4
3381 
3382 DECLOP_4VAR_2IN_1OUT(ulong4, +)
3383 DECLOP_4VAR_2IN_1OUT(ulong4, -)
3384 DECLOP_4VAR_2IN_1OUT(ulong4, *)
3385 DECLOP_4VAR_2IN_1OUT(ulong4, /)
3386 DECLOP_4VAR_2IN_1OUT(ulong4, %)
3387 DECLOP_4VAR_2IN_1OUT(ulong4, &)
3388 DECLOP_4VAR_2IN_1OUT(ulong4, |)
3389 DECLOP_4VAR_2IN_1OUT(ulong4, ^)
3390 DECLOP_4VAR_2IN_1OUT(ulong4, <<)
3391 DECLOP_4VAR_2IN_1OUT(ulong4, >>)
3392 
3393 DECLOP_4VAR_ASSIGN(ulong4, +=)
3394 DECLOP_4VAR_ASSIGN(ulong4, -=)
3395 DECLOP_4VAR_ASSIGN(ulong4, *=)
3396 DECLOP_4VAR_ASSIGN(ulong4, /=)
3397 DECLOP_4VAR_ASSIGN(ulong4, %=)
3398 DECLOP_4VAR_ASSIGN(ulong4, &=)
3399 DECLOP_4VAR_ASSIGN(ulong4, |=)
3400 DECLOP_4VAR_ASSIGN(ulong4, ^=)
3401 DECLOP_4VAR_ASSIGN(ulong4, <<=)
3402 DECLOP_4VAR_ASSIGN(ulong4, >>=)
3403 
3404 DECLOP_4VAR_PREOP(ulong4, ++)
3405 DECLOP_4VAR_PREOP(ulong4, --)
3406 
3407 DECLOP_4VAR_POSTOP(ulong4, ++)
3408 DECLOP_4VAR_POSTOP(ulong4, --)
3409 
3410 DECLOP_4VAR_COMP(ulong4, ==)
3411 DECLOP_4VAR_COMP(ulong4, !=)
3412 DECLOP_4VAR_COMP(ulong4, <)
3413 DECLOP_4VAR_COMP(ulong4, >)
3414 DECLOP_4VAR_COMP(ulong4, <=)
3415 DECLOP_4VAR_COMP(ulong4, >=)
3416 
3417 DECLOP_4VAR_COMP(ulong4, &&)
3418 DECLOP_4VAR_COMP(ulong4, ||)
3419 
3420 DECLOP_4VAR_1IN_1OUT(ulong4, ~)
3421 DECLOP_4VAR_1IN_BOOLOUT(ulong4, !)
3422 
3423 DECLOP_4VAR_SCALE_PRODUCT(ulong4, unsigned char)
3424 DECLOP_4VAR_SCALE_PRODUCT(ulong4, signed char)
3425 DECLOP_4VAR_SCALE_PRODUCT(ulong4, unsigned short)
3426 DECLOP_4VAR_SCALE_PRODUCT(ulong4, signed short)
3427 DECLOP_4VAR_SCALE_PRODUCT(ulong4, unsigned int)
3428 DECLOP_4VAR_SCALE_PRODUCT(ulong4, signed int)
3429 DECLOP_4VAR_SCALE_PRODUCT(ulong4, float)
3430 DECLOP_4VAR_SCALE_PRODUCT(ulong4, unsigned long)
3431 DECLOP_4VAR_SCALE_PRODUCT(ulong4, signed long)
3432 DECLOP_4VAR_SCALE_PRODUCT(ulong4, double)
3433 DECLOP_4VAR_SCALE_PRODUCT(ulong4, unsigned long long)
3434 DECLOP_4VAR_SCALE_PRODUCT(ulong4, signed long long)
3435 
3436 // SIGNED LONG1
3437 
3438 DECLOP_1VAR_2IN_1OUT(long1, +)
3439 DECLOP_1VAR_2IN_1OUT(long1, -)
3440 DECLOP_1VAR_2IN_1OUT(long1, *)
3441 DECLOP_1VAR_2IN_1OUT(long1, /)
3442 DECLOP_1VAR_2IN_1OUT(long1, %)
3443 DECLOP_1VAR_2IN_1OUT(long1, &)
3444 DECLOP_1VAR_2IN_1OUT(long1, |)
3445 DECLOP_1VAR_2IN_1OUT(long1, ^)
3446 DECLOP_1VAR_2IN_1OUT(long1, <<)
3447 DECLOP_1VAR_2IN_1OUT(long1, >>)
3448 
3449 
3450 DECLOP_1VAR_ASSIGN(long1, +=)
3451 DECLOP_1VAR_ASSIGN(long1, -=)
3452 DECLOP_1VAR_ASSIGN(long1, *=)
3453 DECLOP_1VAR_ASSIGN(long1, /=)
3454 DECLOP_1VAR_ASSIGN(long1, %=)
3455 DECLOP_1VAR_ASSIGN(long1, &=)
3456 DECLOP_1VAR_ASSIGN(long1, |=)
3457 DECLOP_1VAR_ASSIGN(long1, ^=)
3458 DECLOP_1VAR_ASSIGN(long1, <<=)
3459 DECLOP_1VAR_ASSIGN(long1, >>=)
3460 
3461 DECLOP_1VAR_PREOP(long1, ++)
3462 DECLOP_1VAR_PREOP(long1, --)
3463 
3464 DECLOP_1VAR_POSTOP(long1, ++)
3465 DECLOP_1VAR_POSTOP(long1, --)
3466 
3467 DECLOP_1VAR_COMP(long1, ==)
3468 DECLOP_1VAR_COMP(long1, !=)
3469 DECLOP_1VAR_COMP(long1, <)
3470 DECLOP_1VAR_COMP(long1, >)
3471 DECLOP_1VAR_COMP(long1, <=)
3472 DECLOP_1VAR_COMP(long1, >=)
3473 
3474 DECLOP_1VAR_COMP(long1, &&)
3475 DECLOP_1VAR_COMP(long1, ||)
3476 
3477 DECLOP_1VAR_1IN_1OUT(long1, ~)
3478 DECLOP_1VAR_1IN_BOOLOUT(long1, !)
3479 
3480 DECLOP_1VAR_SCALE_PRODUCT(long1, unsigned char)
3481 DECLOP_1VAR_SCALE_PRODUCT(long1, signed char)
3482 DECLOP_1VAR_SCALE_PRODUCT(long1, unsigned short)
3483 DECLOP_1VAR_SCALE_PRODUCT(long1, signed short)
3484 DECLOP_1VAR_SCALE_PRODUCT(long1, unsigned int)
3485 DECLOP_1VAR_SCALE_PRODUCT(long1, signed int)
3486 DECLOP_1VAR_SCALE_PRODUCT(long1, float)
3487 DECLOP_1VAR_SCALE_PRODUCT(long1, unsigned long)
3488 DECLOP_1VAR_SCALE_PRODUCT(long1, signed long)
3489 DECLOP_1VAR_SCALE_PRODUCT(long1, double)
3490 DECLOP_1VAR_SCALE_PRODUCT(long1, unsigned long long)
3491 DECLOP_1VAR_SCALE_PRODUCT(long1, signed long long)
3492 
3493 // SIGNED LONG2
3494 
3495 DECLOP_2VAR_2IN_1OUT(long2, +)
3496 DECLOP_2VAR_2IN_1OUT(long2, -)
3497 DECLOP_2VAR_2IN_1OUT(long2, *)
3498 DECLOP_2VAR_2IN_1OUT(long2, /)
3499 DECLOP_2VAR_2IN_1OUT(long2, %)
3500 DECLOP_2VAR_2IN_1OUT(long2, &)
3501 DECLOP_2VAR_2IN_1OUT(long2, |)
3502 DECLOP_2VAR_2IN_1OUT(long2, ^)
3503 DECLOP_2VAR_2IN_1OUT(long2, <<)
3504 DECLOP_2VAR_2IN_1OUT(long2, >>)
3505 
3506 DECLOP_2VAR_ASSIGN(long2, +=)
3507 DECLOP_2VAR_ASSIGN(long2, -=)
3508 DECLOP_2VAR_ASSIGN(long2, *=)
3509 DECLOP_2VAR_ASSIGN(long2, /=)
3510 DECLOP_2VAR_ASSIGN(long2, %=)
3511 DECLOP_2VAR_ASSIGN(long2, &=)
3512 DECLOP_2VAR_ASSIGN(long2, |=)
3513 DECLOP_2VAR_ASSIGN(long2, ^=)
3514 DECLOP_2VAR_ASSIGN(long2, <<=)
3515 DECLOP_2VAR_ASSIGN(long2, >>=)
3516 
3517 DECLOP_2VAR_PREOP(long2, ++)
3518 DECLOP_2VAR_PREOP(long2, --)
3519 
3520 DECLOP_2VAR_POSTOP(long2, ++)
3521 DECLOP_2VAR_POSTOP(long2, --)
3522 
3523 DECLOP_2VAR_COMP(long2, ==)
3524 DECLOP_2VAR_COMP(long2, !=)
3525 DECLOP_2VAR_COMP(long2, <)
3526 DECLOP_2VAR_COMP(long2, >)
3527 DECLOP_2VAR_COMP(long2, <=)
3528 DECLOP_2VAR_COMP(long2, >=)
3529 
3530 DECLOP_2VAR_COMP(long2, &&)
3531 DECLOP_2VAR_COMP(long2, ||)
3532 
3533 DECLOP_2VAR_1IN_1OUT(long2, ~)
3534 DECLOP_2VAR_1IN_BOOLOUT(long2, !)
3535 
3536 DECLOP_2VAR_SCALE_PRODUCT(long2, unsigned char)
3537 DECLOP_2VAR_SCALE_PRODUCT(long2, signed char)
3538 DECLOP_2VAR_SCALE_PRODUCT(long2, unsigned short)
3539 DECLOP_2VAR_SCALE_PRODUCT(long2, signed short)
3540 DECLOP_2VAR_SCALE_PRODUCT(long2, unsigned int)
3541 DECLOP_2VAR_SCALE_PRODUCT(long2, signed int)
3542 DECLOP_2VAR_SCALE_PRODUCT(long2, float)
3543 DECLOP_2VAR_SCALE_PRODUCT(long2, unsigned long)
3544 DECLOP_2VAR_SCALE_PRODUCT(long2, signed long)
3545 DECLOP_2VAR_SCALE_PRODUCT(long2, double)
3546 DECLOP_2VAR_SCALE_PRODUCT(long2, unsigned long long)
3547 DECLOP_2VAR_SCALE_PRODUCT(long2, signed long long)
3548 
3549 // SIGNED LONG3
3550 
3551 DECLOP_3VAR_2IN_1OUT(long3, +)
3552 DECLOP_3VAR_2IN_1OUT(long3, -)
3553 DECLOP_3VAR_2IN_1OUT(long3, *)
3554 DECLOP_3VAR_2IN_1OUT(long3, /)
3555 DECLOP_3VAR_2IN_1OUT(long3, %)
3556 DECLOP_3VAR_2IN_1OUT(long3, &)
3557 DECLOP_3VAR_2IN_1OUT(long3, |)
3558 DECLOP_3VAR_2IN_1OUT(long3, ^)
3559 DECLOP_3VAR_2IN_1OUT(long3, <<)
3560 DECLOP_3VAR_2IN_1OUT(long3, >>)
3561 
3562 DECLOP_3VAR_ASSIGN(long3, +=)
3563 DECLOP_3VAR_ASSIGN(long3, -=)
3564 DECLOP_3VAR_ASSIGN(long3, *=)
3565 DECLOP_3VAR_ASSIGN(long3, /=)
3566 DECLOP_3VAR_ASSIGN(long3, %=)
3567 DECLOP_3VAR_ASSIGN(long3, &=)
3568 DECLOP_3VAR_ASSIGN(long3, |=)
3569 DECLOP_3VAR_ASSIGN(long3, ^=)
3570 DECLOP_3VAR_ASSIGN(long3, <<=)
3571 DECLOP_3VAR_ASSIGN(long3, >>=)
3572 
3573 DECLOP_3VAR_PREOP(long3, ++)
3574 DECLOP_3VAR_PREOP(long3, --)
3575 
3576 DECLOP_3VAR_POSTOP(long3, ++)
3577 DECLOP_3VAR_POSTOP(long3, --)
3578 
3579 DECLOP_3VAR_COMP(long3, ==)
3580 DECLOP_3VAR_COMP(long3, !=)
3581 DECLOP_3VAR_COMP(long3, <)
3582 DECLOP_3VAR_COMP(long3, >)
3583 DECLOP_3VAR_COMP(long3, <=)
3584 DECLOP_3VAR_COMP(long3, >=)
3585 
3586 DECLOP_3VAR_COMP(long3, &&)
3587 DECLOP_3VAR_COMP(long3, ||)
3588 
3589 DECLOP_3VAR_1IN_1OUT(long3, ~)
3590 DECLOP_3VAR_1IN_BOOLOUT(long3, !)
3591 
3592 DECLOP_3VAR_SCALE_PRODUCT(long3, unsigned char)
3593 DECLOP_3VAR_SCALE_PRODUCT(long3, signed char)
3594 DECLOP_3VAR_SCALE_PRODUCT(long3, unsigned short)
3595 DECLOP_3VAR_SCALE_PRODUCT(long3, signed short)
3596 DECLOP_3VAR_SCALE_PRODUCT(long3, unsigned int)
3597 DECLOP_3VAR_SCALE_PRODUCT(long3, signed int)
3598 DECLOP_3VAR_SCALE_PRODUCT(long3, float)
3599 DECLOP_3VAR_SCALE_PRODUCT(long3, unsigned long)
3600 DECLOP_3VAR_SCALE_PRODUCT(long3, signed long)
3601 DECLOP_3VAR_SCALE_PRODUCT(long3, double)
3602 DECLOP_3VAR_SCALE_PRODUCT(long3, unsigned long long)
3603 DECLOP_3VAR_SCALE_PRODUCT(long3, signed long long)
3604 
3605 // SIGNED LONG4
3606 
3607 DECLOP_4VAR_2IN_1OUT(long4, +)
3608 DECLOP_4VAR_2IN_1OUT(long4, -)
3609 DECLOP_4VAR_2IN_1OUT(long4, *)
3610 DECLOP_4VAR_2IN_1OUT(long4, /)
3611 DECLOP_4VAR_2IN_1OUT(long4, %)
3612 DECLOP_4VAR_2IN_1OUT(long4, &)
3613 DECLOP_4VAR_2IN_1OUT(long4, |)
3614 DECLOP_4VAR_2IN_1OUT(long4, ^)
3615 DECLOP_4VAR_2IN_1OUT(long4, <<)
3616 DECLOP_4VAR_2IN_1OUT(long4, >>)
3617 
3618 DECLOP_4VAR_ASSIGN(long4, +=)
3619 DECLOP_4VAR_ASSIGN(long4, -=)
3620 DECLOP_4VAR_ASSIGN(long4, *=)
3621 DECLOP_4VAR_ASSIGN(long4, /=)
3622 DECLOP_4VAR_ASSIGN(long4, %=)
3623 DECLOP_4VAR_ASSIGN(long4, &=)
3624 DECLOP_4VAR_ASSIGN(long4, |=)
3625 DECLOP_4VAR_ASSIGN(long4, ^=)
3626 DECLOP_4VAR_ASSIGN(long4, <<=)
3627 DECLOP_4VAR_ASSIGN(long4, >>=)
3628 
3629 DECLOP_4VAR_PREOP(long4, ++)
3630 DECLOP_4VAR_PREOP(long4, --)
3631 
3632 DECLOP_4VAR_POSTOP(long4, ++)
3633 DECLOP_4VAR_POSTOP(long4, --)
3634 
3635 DECLOP_4VAR_COMP(long4, ==)
3636 DECLOP_4VAR_COMP(long4, !=)
3637 DECLOP_4VAR_COMP(long4, <)
3638 DECLOP_4VAR_COMP(long4, >)
3639 DECLOP_4VAR_COMP(long4, <=)
3640 DECLOP_4VAR_COMP(long4, >=)
3641 
3642 DECLOP_4VAR_COMP(long4, &&)
3643 DECLOP_4VAR_COMP(long4, ||)
3644 
3645 DECLOP_4VAR_1IN_1OUT(long4, ~)
3646 DECLOP_4VAR_1IN_BOOLOUT(long4, !)
3647 
3648 DECLOP_4VAR_SCALE_PRODUCT(long4, unsigned char)
3649 DECLOP_4VAR_SCALE_PRODUCT(long4, signed char)
3650 DECLOP_4VAR_SCALE_PRODUCT(long4, unsigned short)
3651 DECLOP_4VAR_SCALE_PRODUCT(long4, signed short)
3652 DECLOP_4VAR_SCALE_PRODUCT(long4, unsigned int)
3653 DECLOP_4VAR_SCALE_PRODUCT(long4, signed int)
3654 DECLOP_4VAR_SCALE_PRODUCT(long4, float)
3655 DECLOP_4VAR_SCALE_PRODUCT(long4, unsigned long)
3656 DECLOP_4VAR_SCALE_PRODUCT(long4, signed long)
3657 DECLOP_4VAR_SCALE_PRODUCT(long4, double)
3658 DECLOP_4VAR_SCALE_PRODUCT(long4, unsigned long long)
3659 DECLOP_4VAR_SCALE_PRODUCT(long4, signed long long)
3660 
3661 // UNSIGNED LONGLONG1
3662 
3663 DECLOP_1VAR_2IN_1OUT(ulonglong1, +)
3664 DECLOP_1VAR_2IN_1OUT(ulonglong1, -)
3665 DECLOP_1VAR_2IN_1OUT(ulonglong1, *)
3666 DECLOP_1VAR_2IN_1OUT(ulonglong1, /)
3667 DECLOP_1VAR_2IN_1OUT(ulonglong1, %)
3668 DECLOP_1VAR_2IN_1OUT(ulonglong1, &)
3669 DECLOP_1VAR_2IN_1OUT(ulonglong1, |)
3670 DECLOP_1VAR_2IN_1OUT(ulonglong1, ^)
3671 DECLOP_1VAR_2IN_1OUT(ulonglong1, <<)
3672 DECLOP_1VAR_2IN_1OUT(ulonglong1, >>)
3673 
3674 
3675 DECLOP_1VAR_ASSIGN(ulonglong1, +=)
3676 DECLOP_1VAR_ASSIGN(ulonglong1, -=)
3677 DECLOP_1VAR_ASSIGN(ulonglong1, *=)
3678 DECLOP_1VAR_ASSIGN(ulonglong1, /=)
3679 DECLOP_1VAR_ASSIGN(ulonglong1, %=)
3680 DECLOP_1VAR_ASSIGN(ulonglong1, &=)
3681 DECLOP_1VAR_ASSIGN(ulonglong1, |=)
3682 DECLOP_1VAR_ASSIGN(ulonglong1, ^=)
3683 DECLOP_1VAR_ASSIGN(ulonglong1, <<=)
3684 DECLOP_1VAR_ASSIGN(ulonglong1, >>=)
3685 
3686 DECLOP_1VAR_PREOP(ulonglong1, ++)
3687 DECLOP_1VAR_PREOP(ulonglong1, --)
3688 
3689 DECLOP_1VAR_POSTOP(ulonglong1, ++)
3690 DECLOP_1VAR_POSTOP(ulonglong1, --)
3691 
3692 DECLOP_1VAR_COMP(ulonglong1, ==)
3693 DECLOP_1VAR_COMP(ulonglong1, !=)
3694 DECLOP_1VAR_COMP(ulonglong1, <)
3695 DECLOP_1VAR_COMP(ulonglong1, >)
3696 DECLOP_1VAR_COMP(ulonglong1, <=)
3697 DECLOP_1VAR_COMP(ulonglong1, >=)
3698 
3699 DECLOP_1VAR_COMP(ulonglong1, &&)
3700 DECLOP_1VAR_COMP(ulonglong1, ||)
3701 
3702 DECLOP_1VAR_1IN_1OUT(ulonglong1, ~)
3703 DECLOP_1VAR_1IN_BOOLOUT(ulonglong1, !)
3704 
3705 DECLOP_1VAR_SCALE_PRODUCT(ulonglong1, unsigned char)
3706 DECLOP_1VAR_SCALE_PRODUCT(ulonglong1, signed char)
3707 DECLOP_1VAR_SCALE_PRODUCT(ulonglong1, unsigned short)
3708 DECLOP_1VAR_SCALE_PRODUCT(ulonglong1, signed short)
3709 DECLOP_1VAR_SCALE_PRODUCT(ulonglong1, unsigned int)
3710 DECLOP_1VAR_SCALE_PRODUCT(ulonglong1, signed int)
3711 DECLOP_1VAR_SCALE_PRODUCT(ulonglong1, float)
3712 DECLOP_1VAR_SCALE_PRODUCT(ulonglong1, unsigned long)
3713 DECLOP_1VAR_SCALE_PRODUCT(ulonglong1, signed long)
3714 DECLOP_1VAR_SCALE_PRODUCT(ulonglong1, double)
3715 DECLOP_1VAR_SCALE_PRODUCT(ulonglong1, unsigned long long)
3716 DECLOP_1VAR_SCALE_PRODUCT(ulonglong1, signed long long)
3717 
3718 // UNSIGNED LONGLONG2
3719 
3720 DECLOP_2VAR_2IN_1OUT(ulonglong2, +)
3721 DECLOP_2VAR_2IN_1OUT(ulonglong2, -)
3722 DECLOP_2VAR_2IN_1OUT(ulonglong2, *)
3723 DECLOP_2VAR_2IN_1OUT(ulonglong2, /)
3724 DECLOP_2VAR_2IN_1OUT(ulonglong2, %)
3725 DECLOP_2VAR_2IN_1OUT(ulonglong2, &)
3726 DECLOP_2VAR_2IN_1OUT(ulonglong2, |)
3727 DECLOP_2VAR_2IN_1OUT(ulonglong2, ^)
3728 DECLOP_2VAR_2IN_1OUT(ulonglong2, <<)
3729 DECLOP_2VAR_2IN_1OUT(ulonglong2, >>)
3730 
3731 DECLOP_2VAR_ASSIGN(ulonglong2, +=)
3732 DECLOP_2VAR_ASSIGN(ulonglong2, -=)
3733 DECLOP_2VAR_ASSIGN(ulonglong2, *=)
3734 DECLOP_2VAR_ASSIGN(ulonglong2, /=)
3735 DECLOP_2VAR_ASSIGN(ulonglong2, %=)
3736 DECLOP_2VAR_ASSIGN(ulonglong2, &=)
3737 DECLOP_2VAR_ASSIGN(ulonglong2, |=)
3738 DECLOP_2VAR_ASSIGN(ulonglong2, ^=)
3739 DECLOP_2VAR_ASSIGN(ulonglong2, <<=)
3740 DECLOP_2VAR_ASSIGN(ulonglong2, >>=)
3741 
3742 DECLOP_2VAR_PREOP(ulonglong2, ++)
3743 DECLOP_2VAR_PREOP(ulonglong2, --)
3744 
3745 DECLOP_2VAR_POSTOP(ulonglong2, ++)
3746 DECLOP_2VAR_POSTOP(ulonglong2, --)
3747 
3748 DECLOP_2VAR_COMP(ulonglong2, ==)
3749 DECLOP_2VAR_COMP(ulonglong2, !=)
3750 DECLOP_2VAR_COMP(ulonglong2, <)
3751 DECLOP_2VAR_COMP(ulonglong2, >)
3752 DECLOP_2VAR_COMP(ulonglong2, <=)
3753 DECLOP_2VAR_COMP(ulonglong2, >=)
3754 
3755 DECLOP_2VAR_COMP(ulonglong2, &&)
3756 DECLOP_2VAR_COMP(ulonglong2, ||)
3757 
3758 DECLOP_2VAR_1IN_1OUT(ulonglong2, ~)
3759 DECLOP_2VAR_1IN_BOOLOUT(ulonglong2, !)
3760 
3761 DECLOP_2VAR_SCALE_PRODUCT(ulonglong2, unsigned char)
3762 DECLOP_2VAR_SCALE_PRODUCT(ulonglong2, signed char)
3763 DECLOP_2VAR_SCALE_PRODUCT(ulonglong2, unsigned short)
3764 DECLOP_2VAR_SCALE_PRODUCT(ulonglong2, signed short)
3765 DECLOP_2VAR_SCALE_PRODUCT(ulonglong2, unsigned int)
3766 DECLOP_2VAR_SCALE_PRODUCT(ulonglong2, signed int)
3767 DECLOP_2VAR_SCALE_PRODUCT(ulonglong2, float)
3768 DECLOP_2VAR_SCALE_PRODUCT(ulonglong2, unsigned long)
3769 DECLOP_2VAR_SCALE_PRODUCT(ulonglong2, signed long)
3770 DECLOP_2VAR_SCALE_PRODUCT(ulonglong2, double)
3771 DECLOP_2VAR_SCALE_PRODUCT(ulonglong2, unsigned long long)
3772 DECLOP_2VAR_SCALE_PRODUCT(ulonglong2, signed long long)
3773 
3774 // UNSIGNED LONGLONG3
3775 
3776 DECLOP_3VAR_2IN_1OUT(ulonglong3, +)
3777 DECLOP_3VAR_2IN_1OUT(ulonglong3, -)
3778 DECLOP_3VAR_2IN_1OUT(ulonglong3, *)
3779 DECLOP_3VAR_2IN_1OUT(ulonglong3, /)
3780 DECLOP_3VAR_2IN_1OUT(ulonglong3, %)
3781 DECLOP_3VAR_2IN_1OUT(ulonglong3, &)
3782 DECLOP_3VAR_2IN_1OUT(ulonglong3, |)
3783 DECLOP_3VAR_2IN_1OUT(ulonglong3, ^)
3784 DECLOP_3VAR_2IN_1OUT(ulonglong3, <<)
3785 DECLOP_3VAR_2IN_1OUT(ulonglong3, >>)
3786 
3787 DECLOP_3VAR_ASSIGN(ulonglong3, +=)
3788 DECLOP_3VAR_ASSIGN(ulonglong3, -=)
3789 DECLOP_3VAR_ASSIGN(ulonglong3, *=)
3790 DECLOP_3VAR_ASSIGN(ulonglong3, /=)
3791 DECLOP_3VAR_ASSIGN(ulonglong3, %=)
3792 DECLOP_3VAR_ASSIGN(ulonglong3, &=)
3793 DECLOP_3VAR_ASSIGN(ulonglong3, |=)
3794 DECLOP_3VAR_ASSIGN(ulonglong3, ^=)
3795 DECLOP_3VAR_ASSIGN(ulonglong3, <<=)
3796 DECLOP_3VAR_ASSIGN(ulonglong3, >>=)
3797 
3798 DECLOP_3VAR_PREOP(ulonglong3, ++)
3799 DECLOP_3VAR_PREOP(ulonglong3, --)
3800 
3801 DECLOP_3VAR_POSTOP(ulonglong3, ++)
3802 DECLOP_3VAR_POSTOP(ulonglong3, --)
3803 
3804 DECLOP_3VAR_COMP(ulonglong3, ==)
3805 DECLOP_3VAR_COMP(ulonglong3, !=)
3806 DECLOP_3VAR_COMP(ulonglong3, <)
3807 DECLOP_3VAR_COMP(ulonglong3, >)
3808 DECLOP_3VAR_COMP(ulonglong3, <=)
3809 DECLOP_3VAR_COMP(ulonglong3, >=)
3810 
3811 DECLOP_3VAR_COMP(ulonglong3, &&)
3812 DECLOP_3VAR_COMP(ulonglong3, ||)
3813 
3814 DECLOP_3VAR_1IN_1OUT(ulonglong3, ~)
3815 DECLOP_3VAR_1IN_BOOLOUT(ulonglong3, !)
3816 
3817 DECLOP_3VAR_SCALE_PRODUCT(ulonglong3, unsigned char)
3818 DECLOP_3VAR_SCALE_PRODUCT(ulonglong3, signed char)
3819 DECLOP_3VAR_SCALE_PRODUCT(ulonglong3, unsigned short)
3820 DECLOP_3VAR_SCALE_PRODUCT(ulonglong3, signed short)
3821 DECLOP_3VAR_SCALE_PRODUCT(ulonglong3, unsigned int)
3822 DECLOP_3VAR_SCALE_PRODUCT(ulonglong3, signed int)
3823 DECLOP_3VAR_SCALE_PRODUCT(ulonglong3, float)
3824 DECLOP_3VAR_SCALE_PRODUCT(ulonglong3, unsigned long)
3825 DECLOP_3VAR_SCALE_PRODUCT(ulonglong3, signed long)
3826 DECLOP_3VAR_SCALE_PRODUCT(ulonglong3, double)
3827 DECLOP_3VAR_SCALE_PRODUCT(ulonglong3, unsigned long long)
3828 DECLOP_3VAR_SCALE_PRODUCT(ulonglong3, signed long long)
3829 
3830 // UNSIGNED LONGLONG4
3831 
3832 DECLOP_4VAR_2IN_1OUT(ulonglong4, +)
3833 DECLOP_4VAR_2IN_1OUT(ulonglong4, -)
3834 DECLOP_4VAR_2IN_1OUT(ulonglong4, *)
3835 DECLOP_4VAR_2IN_1OUT(ulonglong4, /)
3836 DECLOP_4VAR_2IN_1OUT(ulonglong4, %)
3837 DECLOP_4VAR_2IN_1OUT(ulonglong4, &)
3838 DECLOP_4VAR_2IN_1OUT(ulonglong4, |)
3839 DECLOP_4VAR_2IN_1OUT(ulonglong4, ^)
3840 DECLOP_4VAR_2IN_1OUT(ulonglong4, <<)
3841 DECLOP_4VAR_2IN_1OUT(ulonglong4, >>)
3842 
3843 DECLOP_4VAR_ASSIGN(ulonglong4, +=)
3844 DECLOP_4VAR_ASSIGN(ulonglong4, -=)
3845 DECLOP_4VAR_ASSIGN(ulonglong4, *=)
3846 DECLOP_4VAR_ASSIGN(ulonglong4, /=)
3847 DECLOP_4VAR_ASSIGN(ulonglong4, %=)
3848 DECLOP_4VAR_ASSIGN(ulonglong4, &=)
3849 DECLOP_4VAR_ASSIGN(ulonglong4, |=)
3850 DECLOP_4VAR_ASSIGN(ulonglong4, ^=)
3851 DECLOP_4VAR_ASSIGN(ulonglong4, <<=)
3852 DECLOP_4VAR_ASSIGN(ulonglong4, >>=)
3853 
3854 DECLOP_4VAR_PREOP(ulonglong4, ++)
3855 DECLOP_4VAR_PREOP(ulonglong4, --)
3856 
3857 DECLOP_4VAR_POSTOP(ulonglong4, ++)
3858 DECLOP_4VAR_POSTOP(ulonglong4, --)
3859 
3860 DECLOP_4VAR_COMP(ulonglong4, ==)
3861 DECLOP_4VAR_COMP(ulonglong4, !=)
3862 DECLOP_4VAR_COMP(ulonglong4, <)
3863 DECLOP_4VAR_COMP(ulonglong4, >)
3864 DECLOP_4VAR_COMP(ulonglong4, <=)
3865 DECLOP_4VAR_COMP(ulonglong4, >=)
3866 
3867 DECLOP_4VAR_COMP(ulonglong4, &&)
3868 DECLOP_4VAR_COMP(ulonglong4, ||)
3869 
3870 DECLOP_4VAR_1IN_1OUT(ulonglong4, ~)
3871 DECLOP_4VAR_1IN_BOOLOUT(ulonglong4, !)
3872 
3873 DECLOP_4VAR_SCALE_PRODUCT(ulonglong4, unsigned char)
3874 DECLOP_4VAR_SCALE_PRODUCT(ulonglong4, signed char)
3875 DECLOP_4VAR_SCALE_PRODUCT(ulonglong4, unsigned short)
3876 DECLOP_4VAR_SCALE_PRODUCT(ulonglong4, signed short)
3877 DECLOP_4VAR_SCALE_PRODUCT(ulonglong4, unsigned int)
3878 DECLOP_4VAR_SCALE_PRODUCT(ulonglong4, signed int)
3879 DECLOP_4VAR_SCALE_PRODUCT(ulonglong4, float)
3880 DECLOP_4VAR_SCALE_PRODUCT(ulonglong4, unsigned long)
3881 DECLOP_4VAR_SCALE_PRODUCT(ulonglong4, signed long)
3882 DECLOP_4VAR_SCALE_PRODUCT(ulonglong4, double)
3883 DECLOP_4VAR_SCALE_PRODUCT(ulonglong4, unsigned long long)
3884 DECLOP_4VAR_SCALE_PRODUCT(ulonglong4, signed long long)
3885 
3886 // SIGNED LONGLONG1
3887 
3888 DECLOP_1VAR_2IN_1OUT(longlong1, +)
3889 DECLOP_1VAR_2IN_1OUT(longlong1, -)
3890 DECLOP_1VAR_2IN_1OUT(longlong1, *)
3891 DECLOP_1VAR_2IN_1OUT(longlong1, /)
3892 DECLOP_1VAR_2IN_1OUT(longlong1, %)
3893 DECLOP_1VAR_2IN_1OUT(longlong1, &)
3894 DECLOP_1VAR_2IN_1OUT(longlong1, |)
3895 DECLOP_1VAR_2IN_1OUT(longlong1, ^)
3896 DECLOP_1VAR_2IN_1OUT(longlong1, <<)
3897 DECLOP_1VAR_2IN_1OUT(longlong1, >>)
3898 
3899 
3900 DECLOP_1VAR_ASSIGN(longlong1, +=)
3901 DECLOP_1VAR_ASSIGN(longlong1, -=)
3902 DECLOP_1VAR_ASSIGN(longlong1, *=)
3903 DECLOP_1VAR_ASSIGN(longlong1, /=)
3904 DECLOP_1VAR_ASSIGN(longlong1, %=)
3905 DECLOP_1VAR_ASSIGN(longlong1, &=)
3906 DECLOP_1VAR_ASSIGN(longlong1, |=)
3907 DECLOP_1VAR_ASSIGN(longlong1, ^=)
3908 DECLOP_1VAR_ASSIGN(longlong1, <<=)
3909 DECLOP_1VAR_ASSIGN(longlong1, >>=)
3910 
3911 DECLOP_1VAR_PREOP(longlong1, ++)
3912 DECLOP_1VAR_PREOP(longlong1, --)
3913 
3914 DECLOP_1VAR_POSTOP(longlong1, ++)
3915 DECLOP_1VAR_POSTOP(longlong1, --)
3916 
3917 DECLOP_1VAR_COMP(longlong1, ==)
3918 DECLOP_1VAR_COMP(longlong1, !=)
3919 DECLOP_1VAR_COMP(longlong1, <)
3920 DECLOP_1VAR_COMP(longlong1, >)
3921 DECLOP_1VAR_COMP(longlong1, <=)
3922 DECLOP_1VAR_COMP(longlong1, >=)
3923 
3924 DECLOP_1VAR_COMP(longlong1, &&)
3925 DECLOP_1VAR_COMP(longlong1, ||)
3926 
3927 DECLOP_1VAR_1IN_1OUT(longlong1, ~)
3928 DECLOP_1VAR_1IN_BOOLOUT(longlong1, !)
3929 
3930 DECLOP_1VAR_SCALE_PRODUCT(longlong1, unsigned char)
3931 DECLOP_1VAR_SCALE_PRODUCT(longlong1, signed char)
3932 DECLOP_1VAR_SCALE_PRODUCT(longlong1, unsigned short)
3933 DECLOP_1VAR_SCALE_PRODUCT(longlong1, signed short)
3934 DECLOP_1VAR_SCALE_PRODUCT(longlong1, unsigned int)
3935 DECLOP_1VAR_SCALE_PRODUCT(longlong1, signed int)
3936 DECLOP_1VAR_SCALE_PRODUCT(longlong1, float)
3937 DECLOP_1VAR_SCALE_PRODUCT(longlong1, unsigned long)
3938 DECLOP_1VAR_SCALE_PRODUCT(longlong1, signed long)
3939 DECLOP_1VAR_SCALE_PRODUCT(longlong1, double)
3940 DECLOP_1VAR_SCALE_PRODUCT(longlong1, unsigned long long)
3941 DECLOP_1VAR_SCALE_PRODUCT(longlong1, signed long long)
3942 
3943 // SIGNED LONGLONG2
3944 
3945 DECLOP_2VAR_2IN_1OUT(longlong2, +)
3946 DECLOP_2VAR_2IN_1OUT(longlong2, -)
3947 DECLOP_2VAR_2IN_1OUT(longlong2, *)
3948 DECLOP_2VAR_2IN_1OUT(longlong2, /)
3949 DECLOP_2VAR_2IN_1OUT(longlong2, %)
3950 DECLOP_2VAR_2IN_1OUT(longlong2, &)
3951 DECLOP_2VAR_2IN_1OUT(longlong2, |)
3952 DECLOP_2VAR_2IN_1OUT(longlong2, ^)
3953 DECLOP_2VAR_2IN_1OUT(longlong2, <<)
3954 DECLOP_2VAR_2IN_1OUT(longlong2, >>)
3955 
3956 DECLOP_2VAR_ASSIGN(longlong2, +=)
3957 DECLOP_2VAR_ASSIGN(longlong2, -=)
3958 DECLOP_2VAR_ASSIGN(longlong2, *=)
3959 DECLOP_2VAR_ASSIGN(longlong2, /=)
3960 DECLOP_2VAR_ASSIGN(longlong2, %=)
3961 DECLOP_2VAR_ASSIGN(longlong2, &=)
3962 DECLOP_2VAR_ASSIGN(longlong2, |=)
3963 DECLOP_2VAR_ASSIGN(longlong2, ^=)
3964 DECLOP_2VAR_ASSIGN(longlong2, <<=)
3965 DECLOP_2VAR_ASSIGN(longlong2, >>=)
3966 
3967 DECLOP_2VAR_PREOP(longlong2, ++)
3968 DECLOP_2VAR_PREOP(longlong2, --)
3969 
3970 DECLOP_2VAR_POSTOP(longlong2, ++)
3971 DECLOP_2VAR_POSTOP(longlong2, --)
3972 
3973 DECLOP_2VAR_COMP(longlong2, ==)
3974 DECLOP_2VAR_COMP(longlong2, !=)
3975 DECLOP_2VAR_COMP(longlong2, <)
3976 DECLOP_2VAR_COMP(longlong2, >)
3977 DECLOP_2VAR_COMP(longlong2, <=)
3978 DECLOP_2VAR_COMP(longlong2, >=)
3979 
3980 DECLOP_2VAR_COMP(longlong2, &&)
3981 DECLOP_2VAR_COMP(longlong2, ||)
3982 
3983 DECLOP_2VAR_1IN_1OUT(longlong2, ~)
3984 DECLOP_2VAR_1IN_BOOLOUT(longlong2, !)
3985 
3986 DECLOP_2VAR_SCALE_PRODUCT(longlong2, unsigned char)
3987 DECLOP_2VAR_SCALE_PRODUCT(longlong2, signed char)
3988 DECLOP_2VAR_SCALE_PRODUCT(longlong2, unsigned short)
3989 DECLOP_2VAR_SCALE_PRODUCT(longlong2, signed short)
3990 DECLOP_2VAR_SCALE_PRODUCT(longlong2, unsigned int)
3991 DECLOP_2VAR_SCALE_PRODUCT(longlong2, signed int)
3992 DECLOP_2VAR_SCALE_PRODUCT(longlong2, float)
3993 DECLOP_2VAR_SCALE_PRODUCT(longlong2, unsigned long)
3994 DECLOP_2VAR_SCALE_PRODUCT(longlong2, signed long)
3995 DECLOP_2VAR_SCALE_PRODUCT(longlong2, double)
3996 DECLOP_2VAR_SCALE_PRODUCT(longlong2, unsigned long long)
3997 DECLOP_2VAR_SCALE_PRODUCT(longlong2, signed long long)
3998 
3999 // SIGNED LONGLONG3
4000 
4001 DECLOP_3VAR_2IN_1OUT(longlong3, +)
4002 DECLOP_3VAR_2IN_1OUT(longlong3, -)
4003 DECLOP_3VAR_2IN_1OUT(longlong3, *)
4004 DECLOP_3VAR_2IN_1OUT(longlong3, /)
4005 DECLOP_3VAR_2IN_1OUT(longlong3, %)
4006 DECLOP_3VAR_2IN_1OUT(longlong3, &)
4007 DECLOP_3VAR_2IN_1OUT(longlong3, |)
4008 DECLOP_3VAR_2IN_1OUT(longlong3, ^)
4009 DECLOP_3VAR_2IN_1OUT(longlong3, <<)
4010 DECLOP_3VAR_2IN_1OUT(longlong3, >>)
4011 
4012 DECLOP_3VAR_ASSIGN(longlong3, +=)
4013 DECLOP_3VAR_ASSIGN(longlong3, -=)
4014 DECLOP_3VAR_ASSIGN(longlong3, *=)
4015 DECLOP_3VAR_ASSIGN(longlong3, /=)
4016 DECLOP_3VAR_ASSIGN(longlong3, %=)
4017 DECLOP_3VAR_ASSIGN(longlong3, &=)
4018 DECLOP_3VAR_ASSIGN(longlong3, |=)
4019 DECLOP_3VAR_ASSIGN(longlong3, ^=)
4020 DECLOP_3VAR_ASSIGN(longlong3, <<=)
4021 DECLOP_3VAR_ASSIGN(longlong3, >>=)
4022 
4023 DECLOP_3VAR_PREOP(longlong3, ++)
4024 DECLOP_3VAR_PREOP(longlong3, --)
4025 
4026 DECLOP_3VAR_POSTOP(longlong3, ++)
4027 DECLOP_3VAR_POSTOP(longlong3, --)
4028 
4029 DECLOP_3VAR_COMP(longlong3, ==)
4030 DECLOP_3VAR_COMP(longlong3, !=)
4031 DECLOP_3VAR_COMP(longlong3, <)
4032 DECLOP_3VAR_COMP(longlong3, >)
4033 DECLOP_3VAR_COMP(longlong3, <=)
4034 DECLOP_3VAR_COMP(longlong3, >=)
4035 
4036 DECLOP_3VAR_COMP(longlong3, &&)
4037 DECLOP_3VAR_COMP(longlong3, ||)
4038 
4039 DECLOP_3VAR_1IN_1OUT(longlong3, ~)
4040 DECLOP_3VAR_1IN_BOOLOUT(longlong3, !)
4041 
4042 DECLOP_3VAR_SCALE_PRODUCT(longlong3, unsigned char)
4043 DECLOP_3VAR_SCALE_PRODUCT(longlong3, signed char)
4044 DECLOP_3VAR_SCALE_PRODUCT(longlong3, unsigned short)
4045 DECLOP_3VAR_SCALE_PRODUCT(longlong3, signed short)
4046 DECLOP_3VAR_SCALE_PRODUCT(longlong3, unsigned int)
4047 DECLOP_3VAR_SCALE_PRODUCT(longlong3, signed int)
4048 DECLOP_3VAR_SCALE_PRODUCT(longlong3, float)
4049 DECLOP_3VAR_SCALE_PRODUCT(longlong3, unsigned long)
4050 DECLOP_3VAR_SCALE_PRODUCT(longlong3, signed long)
4051 DECLOP_3VAR_SCALE_PRODUCT(longlong3, double)
4052 DECLOP_3VAR_SCALE_PRODUCT(longlong3, unsigned long long)
4053 DECLOP_3VAR_SCALE_PRODUCT(longlong3, signed long long)
4054 
4055 // SIGNED LONGLONG4
4056 
4057 DECLOP_4VAR_2IN_1OUT(longlong4, +)
4058 DECLOP_4VAR_2IN_1OUT(longlong4, -)
4059 DECLOP_4VAR_2IN_1OUT(longlong4, *)
4060 DECLOP_4VAR_2IN_1OUT(longlong4, /)
4061 DECLOP_4VAR_2IN_1OUT(longlong4, %)
4062 DECLOP_4VAR_2IN_1OUT(longlong4, &)
4063 DECLOP_4VAR_2IN_1OUT(longlong4, |)
4064 DECLOP_4VAR_2IN_1OUT(longlong4, ^)
4065 DECLOP_4VAR_2IN_1OUT(longlong4, <<)
4066 DECLOP_4VAR_2IN_1OUT(longlong4, >>)
4067 
4068 DECLOP_4VAR_ASSIGN(longlong4, +=)
4069 DECLOP_4VAR_ASSIGN(longlong4, -=)
4070 DECLOP_4VAR_ASSIGN(longlong4, *=)
4071 DECLOP_4VAR_ASSIGN(longlong4, /=)
4072 DECLOP_4VAR_ASSIGN(longlong4, %=)
4073 DECLOP_4VAR_ASSIGN(longlong4, &=)
4074 DECLOP_4VAR_ASSIGN(longlong4, |=)
4075 DECLOP_4VAR_ASSIGN(longlong4, ^=)
4076 DECLOP_4VAR_ASSIGN(longlong4, <<=)
4077 DECLOP_4VAR_ASSIGN(longlong4, >>=)
4078 
4079 DECLOP_4VAR_PREOP(longlong4, ++)
4080 DECLOP_4VAR_PREOP(longlong4, --)
4081 
4082 DECLOP_4VAR_POSTOP(longlong4, ++)
4083 DECLOP_4VAR_POSTOP(longlong4, --)
4084 
4085 DECLOP_4VAR_COMP(longlong4, ==)
4086 DECLOP_4VAR_COMP(longlong4, !=)
4087 DECLOP_4VAR_COMP(longlong4, <)
4088 DECLOP_4VAR_COMP(longlong4, >)
4089 DECLOP_4VAR_COMP(longlong4, <=)
4090 DECLOP_4VAR_COMP(longlong4, >=)
4091 
4092 DECLOP_4VAR_COMP(longlong4, &&)
4093 DECLOP_4VAR_COMP(longlong4, ||)
4094 
4095 DECLOP_4VAR_1IN_1OUT(longlong4, ~)
4096 DECLOP_4VAR_1IN_BOOLOUT(longlong4, !)
4097 
4098 DECLOP_4VAR_SCALE_PRODUCT(longlong4, unsigned char)
4099 DECLOP_4VAR_SCALE_PRODUCT(longlong4, signed char)
4100 DECLOP_4VAR_SCALE_PRODUCT(longlong4, unsigned short)
4101 DECLOP_4VAR_SCALE_PRODUCT(longlong4, signed short)
4102 DECLOP_4VAR_SCALE_PRODUCT(longlong4, unsigned int)
4103 DECLOP_4VAR_SCALE_PRODUCT(longlong4, signed int)
4104 DECLOP_4VAR_SCALE_PRODUCT(longlong4, float)
4105 DECLOP_4VAR_SCALE_PRODUCT(longlong4, unsigned long)
4106 DECLOP_4VAR_SCALE_PRODUCT(longlong4, signed long)
4107 DECLOP_4VAR_SCALE_PRODUCT(longlong4, double)
4108 DECLOP_4VAR_SCALE_PRODUCT(longlong4, unsigned long long)
4109 DECLOP_4VAR_SCALE_PRODUCT(longlong4, signed long long)
4110 
4111 
4112 #endif
4113 
4114 
4115 #endif
Definition: hip_vector_types.h:121
Definition: hip_vector_types.h:495
Definition: hip_vector_types.h:834
Definition: hip_vector_types.h:537
Definition: hip_vector_types.h:643
Definition: hip_vector_types.h:1068
Definition: hip_vector_types.h:707
Definition: hip_vector_types.h:983
TODO-doc.
Definition: hip_vector_types.h:664
Definition: hip_vector_types.h:405
Definition: hip_vector_types.h:898
Definition: hip_vector_types.h:1089
Definition: hip_vector_types.h:579
Definition: hip_vector_types.h:558
Definition: hip_vector_types.h:728
Definition: hip_vector_types.h:1004
Definition: hip_vector_types.h:940
Definition: hip_vector_types.h:190
Definition: hip_vector_types.h:685
Definition: hip_vector_types.h:877
Definition: hip_vector_types.h:1110
Definition: hip_vector_types.h:600
Definition: hip_vector_types.h:331
Definition: hip_vector_types.h:95
Definition: hip_vector_types.h:284
Definition: hip_vector_types.h:813
Definition: hip_vector_types.h:236
Definition: hip_vector_types.h:1025
Definition: hip_vector_types.h:919
Definition: hip_vector_types.h:169
Definition: hip_vector_types.h:474
Definition: hip_vector_types.h:378
Definition: hip_vector_types.h:749
Definition: hip_vector_types.h:310
Definition: hip_vector_types.h:73
Definition: hip_vector_types.h:263
Definition: hip_vector_types.h:792
Definition: hip_vector_types.h:216
Definition: hip_vector_types.h:142
Definition: hip_vector_types.h:516
Definition: hip_vector_types.h:855
Definition: hip_vector_types.h:622
Definition: hip_vector_types.h:453
Definition: hip_vector_types.h:357
Definition: hip_vector_types.h:1047
Definition: hip_vector_types.h:770
Definition: hip_vector_types.h:962
Definition: hip_vector_types.h:426