10#define HEXAGON_TYPES_H
16#pragma push_macro("B0")
20#define HEXAGON_Vect HEXAGON_Vect64
21#define HEXAGON_V_GET_D HEXAGON_V64_GET_D
22#define HEXAGON_V_GET_UD HEXAGON_V64_GET_UD
23#define HEXAGON_V_GET_W0 HEXAGON_V64_GET_W0
24#define HEXAGON_V_GET_W1 HEXAGON_V64_GET_W1
25#define HEXAGON_V_GET_UW0 HEXAGON_V64_GET_UW0
26#define HEXAGON_V_GET_UW1 HEXAGON_V64_GET_UW1
27#define HEXAGON_V_GET_H0 HEXAGON_V64_GET_H0
28#define HEXAGON_V_GET_H1 HEXAGON_V64_GET_H1
29#define HEXAGON_V_GET_H2 HEXAGON_V64_GET_H2
30#define HEXAGON_V_GET_H3 HEXAGON_V64_GET_H3
31#define HEXAGON_V_GET_UH0 HEXAGON_V64_GET_UH0
32#define HEXAGON_V_GET_UH1 HEXAGON_V64_GET_UH1
33#define HEXAGON_V_GET_UH2 HEXAGON_V64_GET_UH2
34#define HEXAGON_V_GET_UH3 HEXAGON_V64_GET_UH3
35#define HEXAGON_V_GET_B0 HEXAGON_V64_GET_B0
36#define HEXAGON_V_GET_B1 HEXAGON_V64_GET_B1
37#define HEXAGON_V_GET_B2 HEXAGON_V64_GET_B2
38#define HEXAGON_V_GET_B3 HEXAGON_V64_GET_B3
39#define HEXAGON_V_GET_B4 HEXAGON_V64_GET_B4
40#define HEXAGON_V_GET_B5 HEXAGON_V64_GET_B5
41#define HEXAGON_V_GET_B6 HEXAGON_V64_GET_B6
42#define HEXAGON_V_GET_B7 HEXAGON_V64_GET_B7
43#define HEXAGON_V_GET_UB0 HEXAGON_V64_GET_UB0
44#define HEXAGON_V_GET_UB1 HEXAGON_V64_GET_UB1
45#define HEXAGON_V_GET_UB2 HEXAGON_V64_GET_UB2
46#define HEXAGON_V_GET_UB3 HEXAGON_V64_GET_UB3
47#define HEXAGON_V_GET_UB4 HEXAGON_V64_GET_UB4
48#define HEXAGON_V_GET_UB5 HEXAGON_V64_GET_UB5
49#define HEXAGON_V_GET_UB6 HEXAGON_V64_GET_UB6
50#define HEXAGON_V_GET_UB7 HEXAGON_V64_GET_UB7
51#define HEXAGON_V_PUT_D HEXAGON_V64_PUT_D
52#define HEXAGON_V_PUT_W0 HEXAGON_V64_PUT_W0
53#define HEXAGON_V_PUT_W1 HEXAGON_V64_PUT_W1
54#define HEXAGON_V_PUT_H0 HEXAGON_V64_PUT_H0
55#define HEXAGON_V_PUT_H1 HEXAGON_V64_PUT_H1
56#define HEXAGON_V_PUT_H2 HEXAGON_V64_PUT_H2
57#define HEXAGON_V_PUT_H3 HEXAGON_V64_PUT_H3
58#define HEXAGON_V_PUT_B0 HEXAGON_V64_PUT_B0
59#define HEXAGON_V_PUT_B1 HEXAGON_V64_PUT_B1
60#define HEXAGON_V_PUT_B2 HEXAGON_V64_PUT_B2
61#define HEXAGON_V_PUT_B3 HEXAGON_V64_PUT_B3
62#define HEXAGON_V_PUT_B4 HEXAGON_V64_PUT_B4
63#define HEXAGON_V_PUT_B5 HEXAGON_V64_PUT_B5
64#define HEXAGON_V_PUT_B6 HEXAGON_V64_PUT_B6
65#define HEXAGON_V_PUT_B7 HEXAGON_V64_PUT_B7
66#define HEXAGON_V_CREATE_D HEXAGON_V64_CREATE_D
67#define HEXAGON_V_CREATE_W HEXAGON_V64_CREATE_W
68#define HEXAGON_V_CREATE_H HEXAGON_V64_CREATE_H
69#define HEXAGON_V_CREATE_B HEXAGON_V64_CREATE_B
72#define HEXAGON_VectC HEXAGON_Vect64C
81#define HEXAGON_V64_GET_D(v) (v)
82#define HEXAGON_V64_GET_UD(v) ((unsigned long long)(v))
86#define HEXAGON_V64_GET_W0(v) \
91 } _HEXAGON_V64_internal_union; \
92 _HEXAGON_V64_internal_union.d = (v); \
93 _HEXAGON_V64_internal_union.w[0]; \
95#define HEXAGON_V64_GET_W1(v) \
100 } _HEXAGON_V64_internal_union; \
101 _HEXAGON_V64_internal_union.d = (v); \
102 _HEXAGON_V64_internal_union.w[1]; \
104#define HEXAGON_V64_GET_UW0(v) \
108 unsigned int uw[2]; \
109 } _HEXAGON_V64_internal_union; \
110 _HEXAGON_V64_internal_union.d = (v); \
111 _HEXAGON_V64_internal_union.uw[0]; \
113#define HEXAGON_V64_GET_UW1(v) \
117 unsigned int uw[2]; \
118 } _HEXAGON_V64_internal_union; \
119 _HEXAGON_V64_internal_union.d = (v); \
120 _HEXAGON_V64_internal_union.uw[1]; \
125#define HEXAGON_V64_GET_H0(v) \
130 } _HEXAGON_V64_internal_union; \
131 _HEXAGON_V64_internal_union.d = (v); \
132 _HEXAGON_V64_internal_union.h[0]; \
134#define HEXAGON_V64_GET_H1(v) \
139 } _HEXAGON_V64_internal_union; \
140 _HEXAGON_V64_internal_union.d = (v); \
141 _HEXAGON_V64_internal_union.h[1]; \
143#define HEXAGON_V64_GET_H2(v) \
148 } _HEXAGON_V64_internal_union; \
149 _HEXAGON_V64_internal_union.d = (v); \
150 _HEXAGON_V64_internal_union.h[2]; \
152#define HEXAGON_V64_GET_H3(v) \
157 } _HEXAGON_V64_internal_union; \
158 _HEXAGON_V64_internal_union.d = (v); \
159 _HEXAGON_V64_internal_union.h[3]; \
161#define HEXAGON_V64_GET_UH0(v) \
165 unsigned short uh[4]; \
166 } _HEXAGON_V64_internal_union; \
167 _HEXAGON_V64_internal_union.d = (v); \
168 _HEXAGON_V64_internal_union.uh[0]; \
170#define HEXAGON_V64_GET_UH1(v) \
174 unsigned short uh[4]; \
175 } _HEXAGON_V64_internal_union; \
176 _HEXAGON_V64_internal_union.d = (v); \
177 _HEXAGON_V64_internal_union.uh[1]; \
179#define HEXAGON_V64_GET_UH2(v) \
183 unsigned short uh[4]; \
184 } _HEXAGON_V64_internal_union; \
185 _HEXAGON_V64_internal_union.d = (v); \
186 _HEXAGON_V64_internal_union.uh[2]; \
188#define HEXAGON_V64_GET_UH3(v) \
192 unsigned short uh[4]; \
193 } _HEXAGON_V64_internal_union; \
194 _HEXAGON_V64_internal_union.d = (v); \
195 _HEXAGON_V64_internal_union.uh[3]; \
200#define HEXAGON_V64_GET_B0(v) \
205 } _HEXAGON_V64_internal_union; \
206 _HEXAGON_V64_internal_union.d = (v); \
207 _HEXAGON_V64_internal_union.b[0]; \
209#define HEXAGON_V64_GET_B1(v) \
214 } _HEXAGON_V64_internal_union; \
215 _HEXAGON_V64_internal_union.d = (v); \
216 _HEXAGON_V64_internal_union.b[1]; \
218#define HEXAGON_V64_GET_B2(v) \
223 } _HEXAGON_V64_internal_union; \
224 _HEXAGON_V64_internal_union.d = (v); \
225 _HEXAGON_V64_internal_union.b[2]; \
227#define HEXAGON_V64_GET_B3(v) \
232 } _HEXAGON_V64_internal_union; \
233 _HEXAGON_V64_internal_union.d = (v); \
234 _HEXAGON_V64_internal_union.b[3]; \
236#define HEXAGON_V64_GET_B4(v) \
241 } _HEXAGON_V64_internal_union; \
242 _HEXAGON_V64_internal_union.d = (v); \
243 _HEXAGON_V64_internal_union.b[4]; \
245#define HEXAGON_V64_GET_B5(v) \
250 } _HEXAGON_V64_internal_union; \
251 _HEXAGON_V64_internal_union.d = (v); \
252 _HEXAGON_V64_internal_union.b[5]; \
254#define HEXAGON_V64_GET_B6(v) \
259 } _HEXAGON_V64_internal_union; \
260 _HEXAGON_V64_internal_union.d = (v); \
261 _HEXAGON_V64_internal_union.b[6]; \
263#define HEXAGON_V64_GET_B7(v) \
268 } _HEXAGON_V64_internal_union; \
269 _HEXAGON_V64_internal_union.d = (v); \
270 _HEXAGON_V64_internal_union.b[7]; \
272#define HEXAGON_V64_GET_UB0(v) \
276 unsigned char ub[8]; \
277 } _HEXAGON_V64_internal_union; \
278 _HEXAGON_V64_internal_union.d = (v); \
279 _HEXAGON_V64_internal_union.ub[0]; \
281#define HEXAGON_V64_GET_UB1(v) \
285 unsigned char ub[8]; \
286 } _HEXAGON_V64_internal_union; \
287 _HEXAGON_V64_internal_union.d = (v); \
288 _HEXAGON_V64_internal_union.ub[1]; \
290#define HEXAGON_V64_GET_UB2(v) \
294 unsigned char ub[8]; \
295 } _HEXAGON_V64_internal_union; \
296 _HEXAGON_V64_internal_union.d = (v); \
297 _HEXAGON_V64_internal_union.ub[2]; \
299#define HEXAGON_V64_GET_UB3(v) \
303 unsigned char ub[8]; \
304 } _HEXAGON_V64_internal_union; \
305 _HEXAGON_V64_internal_union.d = (v); \
306 _HEXAGON_V64_internal_union.ub[3]; \
308#define HEXAGON_V64_GET_UB4(v) \
312 unsigned char ub[8]; \
313 } _HEXAGON_V64_internal_union; \
314 _HEXAGON_V64_internal_union.d = (v); \
315 _HEXAGON_V64_internal_union.ub[4]; \
317#define HEXAGON_V64_GET_UB5(v) \
321 unsigned char ub[8]; \
322 } _HEXAGON_V64_internal_union; \
323 _HEXAGON_V64_internal_union.d = (v); \
324 _HEXAGON_V64_internal_union.ub[5]; \
326#define HEXAGON_V64_GET_UB6(v) \
330 unsigned char ub[8]; \
331 } _HEXAGON_V64_internal_union; \
332 _HEXAGON_V64_internal_union.d = (v); \
333 _HEXAGON_V64_internal_union.ub[6]; \
335#define HEXAGON_V64_GET_UB7(v) \
339 unsigned char ub[8]; \
340 } _HEXAGON_V64_internal_union; \
341 _HEXAGON_V64_internal_union.d = (v); \
342 _HEXAGON_V64_internal_union.ub[7]; \
349#define HEXAGON_V64_PUT_D(v, new) (new)
355#define HEXAGON_V64_PUT_W0(v, new) \
360 } _HEXAGON_V64_internal_union; \
361 _HEXAGON_V64_internal_union.d = (v); \
362 _HEXAGON_V64_internal_union.w[0] = (new); \
363 _HEXAGON_V64_internal_union.d; \
365#define HEXAGON_V64_PUT_W1(v, new) \
370 } _HEXAGON_V64_internal_union; \
371 _HEXAGON_V64_internal_union.d = (v); \
372 _HEXAGON_V64_internal_union.w[1] = (new); \
373 _HEXAGON_V64_internal_union.d; \
378#define HEXAGON_V64_PUT_W0(v, new) \
379 (((v) & 0xffffffff00000000LL) | ((HEXAGON_Vect64)((unsigned int)(new))))
380#define HEXAGON_V64_PUT_W1(v, new) \
381 (((v) & 0x00000000ffffffffLL) | (((HEXAGON_Vect64)(new)) << 32LL))
389#define HEXAGON_V64_PUT_H0(v, new) \
394 } _HEXAGON_V64_internal_union; \
395 _HEXAGON_V64_internal_union.d = (v); \
396 _HEXAGON_V64_internal_union.h[0] = (new); \
397 _HEXAGON_V64_internal_union.d; \
399#define HEXAGON_V64_PUT_H1(v, new) \
404 } _HEXAGON_V64_internal_union; \
405 _HEXAGON_V64_internal_union.d = (v); \
406 _HEXAGON_V64_internal_union.h[1] = (new); \
407 _HEXAGON_V64_internal_union.d; \
409#define HEXAGON_V64_PUT_H2(v, new) \
414 } _HEXAGON_V64_internal_union; \
415 _HEXAGON_V64_internal_union.d = (v); \
416 _HEXAGON_V64_internal_union.h[2] = (new); \
417 _HEXAGON_V64_internal_union.d; \
419#define HEXAGON_V64_PUT_H3(v, new) \
424 } _HEXAGON_V64_internal_union; \
425 _HEXAGON_V64_internal_union.d = (v); \
426 _HEXAGON_V64_internal_union.h[3] = (new); \
427 _HEXAGON_V64_internal_union.d; \
432#define HEXAGON_V64_PUT_H0(v, new) \
433 (((v) & 0xffffffffffff0000LL) | ((HEXAGON_Vect64)((unsigned short)(new))))
434#define HEXAGON_V64_PUT_H1(v, new) \
435 (((v) & 0xffffffff0000ffffLL) | (((HEXAGON_Vect64)((unsigned short)(new))) << 16LL))
436#define HEXAGON_V64_PUT_H2(v, new) \
437 (((v) & 0xffff0000ffffffffLL) | (((HEXAGON_Vect64)((unsigned short)(new))) << 32LL))
438#define HEXAGON_V64_PUT_H3(v, new) \
439 (((v) & 0x0000ffffffffffffLL) | (((HEXAGON_Vect64)(new)) << 48LL))
447#define HEXAGON_V64_PUT_B0(v, new) \
452 } _HEXAGON_V64_internal_union; \
453 _HEXAGON_V64_internal_union.d = (v); \
454 _HEXAGON_V64_internal_union.b[0] = (new); \
455 _HEXAGON_V64_internal_union.d; \
457#define HEXAGON_V64_PUT_B1(v, new) \
462 } _HEXAGON_V64_internal_union; \
463 _HEXAGON_V64_internal_union.d = (v); \
464 _HEXAGON_V64_internal_union.b[1] = (new); \
465 _HEXAGON_V64_internal_union.d; \
467#define HEXAGON_V64_PUT_B2(v, new) \
472 } _HEXAGON_V64_internal_union; \
473 _HEXAGON_V64_internal_union.d = (v); \
474 _HEXAGON_V64_internal_union.b[2] = (new); \
475 _HEXAGON_V64_internal_union.d; \
477#define HEXAGON_V64_PUT_B3(v, new) \
482 } _HEXAGON_V64_internal_union; \
483 _HEXAGON_V64_internal_union.d = (v); \
484 _HEXAGON_V64_internal_union.b[3] = (new); \
485 _HEXAGON_V64_internal_union.d; \
487#define HEXAGON_V64_PUT_B4(v, new) \
492 } _HEXAGON_V64_internal_union; \
493 _HEXAGON_V64_internal_union.d = (v); \
494 _HEXAGON_V64_internal_union.b[4] = (new); \
495 _HEXAGON_V64_internal_union.d; \
497#define HEXAGON_V64_PUT_B5(v, new) \
502 } _HEXAGON_V64_internal_union; \
503 _HEXAGON_V64_internal_union.d = (v); \
504 _HEXAGON_V64_internal_union.b[5] = (new); \
505 _HEXAGON_V64_internal_union.d; \
507#define HEXAGON_V64_PUT_B6(v, new) \
512 } _HEXAGON_V64_internal_union; \
513 _HEXAGON_V64_internal_union.d = (v); \
514 _HEXAGON_V64_internal_union.b[6] = (new); \
515 _HEXAGON_V64_internal_union.d; \
517#define HEXAGON_V64_PUT_B7(v, new) \
522 } _HEXAGON_V64_internal_union; \
523 _HEXAGON_V64_internal_union.d = (v); \
524 _HEXAGON_V64_internal_union.b[7] = (new); \
525 _HEXAGON_V64_internal_union.d; \
530#define HEXAGON_V64_PUT_B0(v, new) \
531 (((v) & 0xffffffffffffff00LL) | ((HEXAGON_Vect64)((unsigned char)(new))))
532#define HEXAGON_V64_PUT_B1(v, new) \
533 (((v) & 0xffffffffffff00ffLL) | (((HEXAGON_Vect64)((unsigned char)(new))) << 8LL))
534#define HEXAGON_V64_PUT_B2(v, new) \
535 (((v) & 0xffffffffff00ffffLL) | (((HEXAGON_Vect64)((unsigned char)(new))) << 16LL))
536#define HEXAGON_V64_PUT_B3(v, new) \
537 (((v) & 0xffffffff00ffffffLL) | (((HEXAGON_Vect64)((unsigned char)(new))) << 24LL))
538#define HEXAGON_V64_PUT_B4(v, new) \
539 (((v) & 0xffffff00ffffffffLL) | (((HEXAGON_Vect64)((unsigned char)(new))) << 32LL))
540#define HEXAGON_V64_PUT_B5(v, new) \
541 (((v) & 0xffff00ffffffffffLL) | (((HEXAGON_Vect64)((unsigned char)(new))) << 40LL))
542#define HEXAGON_V64_PUT_B6(v, new) \
543 (((v) & 0xff00ffffffffffffLL) | (((HEXAGON_Vect64)((unsigned char)(new))) << 48LL))
544#define HEXAGON_V64_PUT_B7(v, new) \
545 (((v) & 0x00ffffffffffffffLL) | (((HEXAGON_Vect64)(new)) << 56LL))
553#define HEXAGON_V64_CREATE_D(d) (d)
559#define HEXAGON_V64_CREATE_W(w1, w0) \
564 } _HEXAGON_V64_internal_union; \
565 _HEXAGON_V64_internal_union.w[0] = (w0); \
566 _HEXAGON_V64_internal_union.w[1] = (w1); \
567 _HEXAGON_V64_internal_union.d; \
572#define HEXAGON_V64_CREATE_W(w1, w0) \
573 ((((HEXAGON_Vect64)(w1)) << 32LL) | ((HEXAGON_Vect64)((w0) & 0xffffffff)))
581#define HEXAGON_V64_CREATE_H(h3, h2, h1, h0) \
586 } _HEXAGON_V64_internal_union; \
587 _HEXAGON_V64_internal_union.h[0] = (h0); \
588 _HEXAGON_V64_internal_union.h[1] = (h1); \
589 _HEXAGON_V64_internal_union.h[2] = (h2); \
590 _HEXAGON_V64_internal_union.h[3] = (h3); \
591 _HEXAGON_V64_internal_union.d; \
596#define HEXAGON_V64_CREATE_H(h3, h2, h1, h0) \
597 ((((HEXAGON_Vect64)(h3)) << 48LL) | (((HEXAGON_Vect64)((h2) & 0xffff)) << 32LL) | \
598 (((HEXAGON_Vect64)((h1) & 0xffff)) << 16LL) | ((HEXAGON_Vect64)((h0) & 0xffff)))
606#define HEXAGON_V64_CREATE_B(b7, b6, b5, b4, b3, b2, b1, b0) \
611 } _HEXAGON_V64_internal_union; \
612 _HEXAGON_V64_internal_union.b[0] = (b0); \
613 _HEXAGON_V64_internal_union.b[1] = (b1); \
614 _HEXAGON_V64_internal_union.b[2] = (b2); \
615 _HEXAGON_V64_internal_union.b[3] = (b3); \
616 _HEXAGON_V64_internal_union.b[4] = (b4); \
617 _HEXAGON_V64_internal_union.b[5] = (b5); \
618 _HEXAGON_V64_internal_union.b[6] = (b6); \
619 _HEXAGON_V64_internal_union.b[7] = (b7); \
620 _HEXAGON_V64_internal_union.d; \
625#define HEXAGON_V64_CREATE_B(b7, b6, b5, b4, b3, b2, b1, b0) \
626 ((((HEXAGON_Vect64)(b7)) << 56LL) | (((HEXAGON_Vect64)((b6) & 0xff)) << 48LL) | \
627 (((HEXAGON_Vect64)((b5) & 0xff)) << 40LL) | (((HEXAGON_Vect64)((b4) & 0xff)) << 32LL) | \
628 (((HEXAGON_Vect64)((b3) & 0xff)) << 24LL) | (((HEXAGON_Vect64)((b2) & 0xff)) << 16LL) | \
629 (((HEXAGON_Vect64)((b1) & 0xff)) << 8LL) | ((HEXAGON_Vect64)((b0) & 0xff)))
635class HEXAGON_Vect64C {
638 HEXAGON_Vect64C(
long long d = 0) : data(d) {};
640 HEXAGON_Vect64C(
short h3,
short h2,
short h1,
short h0)
642 HEXAGON_Vect64C(
signed char b7,
signed char b6,
signed char b5,
signed char b4,
643 signed char b3,
signed char b2,
signed char b1,
signed char b0)
645 HEXAGON_Vect64C(
const HEXAGON_Vect64C &v) : data(v.data) {};
647 HEXAGON_Vect64C &operator=(
const HEXAGON_Vect64C &v) {
652 operator long long() {
660 unsigned long long UD(
void) {
671 unsigned int UW0(
void) {
674 unsigned int UW1(
void) {
691 unsigned short UH0(
void) {
694 unsigned short UH1(
void) {
697 unsigned short UH2(
void) {
700 unsigned short UH3(
void) {
706 signed char B0(
void) {
return b0(); };
707 signed char B1(
void) {
710 signed char B2(
void) {
713 signed char B3(
void) {
716 signed char B4(
void) {
719 signed char B5(
void) {
722 signed char B6(
void) {
725 signed char B7(
void) {
728 unsigned char UB0(
void) {
731 unsigned char UB1(
void) {
734 unsigned char UB2(
void) {
737 unsigned char UB3(
void) {
740 unsigned char UB4(
void) {
743 unsigned char UB5(
void) {
746 unsigned char UB6(
void) {
749 unsigned char UB7(
void) {
756 HEXAGON_Vect64C D(
long long d) {
761 HEXAGON_Vect64C W0(
int w) {
764 HEXAGON_Vect64C W1(
int w) {
769 HEXAGON_Vect64C H0(
short h) {
772 HEXAGON_Vect64C H1(
short h) {
775 HEXAGON_Vect64C H2(
short h) {
778 HEXAGON_Vect64C H3(
short h) {
783 HEXAGON_Vect64C b0(
signed char b) {
786 HEXAGON_Vect64C B0(
signed char b) {
return b0(
b); };
787 HEXAGON_Vect64C B1(
signed char b) {
790 HEXAGON_Vect64C B2(
signed char b) {
793 HEXAGON_Vect64C B3(
signed char b) {
796 HEXAGON_Vect64C B4(
signed char b) {
799 HEXAGON_Vect64C B5(
signed char b) {
802 HEXAGON_Vect64C B6(
signed char b) {
805 HEXAGON_Vect64C B7(
signed char b) {
821#define HEXAGON_V32_GET_W(v) (v)
822#define HEXAGON_V32_GET_UW(v) ((unsigned int)(v))
826#define HEXAGON_V32_GET_H0(v) \
831 } _HEXAGON_V32_internal_union; \
832 _HEXAGON_V32_internal_union.w = (v); \
833 _HEXAGON_V32_internal_union.h[0]; \
835#define HEXAGON_V32_GET_H1(v) \
840 } _HEXAGON_V32_internal_union; \
841 _HEXAGON_V32_internal_union.w = (v); \
842 _HEXAGON_V32_internal_union.h[1]; \
844#define HEXAGON_V32_GET_UH0(v) \
848 unsigned short uh[2]; \
849 } _HEXAGON_V32_internal_union; \
850 _HEXAGON_V32_internal_union.w = (v); \
851 _HEXAGON_V32_internal_union.uh[0]; \
853#define HEXAGON_V32_GET_UH1(v) \
857 unsigned short uh[2]; \
858 } _HEXAGON_V32_internal_union; \
859 _HEXAGON_V32_internal_union.w = (v); \
860 _HEXAGON_V32_internal_union.uh[1]; \
865#define HEXAGON_V32_GET_B0(v) \
870 } _HEXAGON_V32_internal_union; \
871 _HEXAGON_V32_internal_union.w = (v); \
872 _HEXAGON_V32_internal_union.b[0]; \
874#define HEXAGON_V32_GET_B1(v) \
879 } _HEXAGON_V32_internal_union; \
880 _HEXAGON_V32_internal_union.w = (v); \
881 _HEXAGON_V32_internal_union.b[1]; \
883#define HEXAGON_V32_GET_B2(v) \
888 } _HEXAGON_V32_internal_union; \
889 _HEXAGON_V32_internal_union.w = (v); \
890 _HEXAGON_V32_internal_union.b[2]; \
892#define HEXAGON_V32_GET_B3(v) \
897 } _HEXAGON_V32_internal_union; \
898 _HEXAGON_V32_internal_union.w = (v); \
899 _HEXAGON_V32_internal_union.b[3]; \
901#define HEXAGON_V32_GET_UB0(v) \
905 unsigned char ub[4]; \
906 } _HEXAGON_V32_internal_union; \
907 _HEXAGON_V32_internal_union.w = (v); \
908 _HEXAGON_V32_internal_union.ub[0]; \
910#define HEXAGON_V32_GET_UB1(v) \
914 unsigned char ub[4]; \
915 } _HEXAGON_V32_internal_union; \
916 _HEXAGON_V32_internal_union.w = (v); \
917 _HEXAGON_V32_internal_union.ub[1]; \
919#define HEXAGON_V32_GET_UB2(v) \
923 unsigned char ub[4]; \
924 } _HEXAGON_V32_internal_union; \
925 _HEXAGON_V32_internal_union.w = (v); \
926 _HEXAGON_V32_internal_union.ub[2]; \
928#define HEXAGON_V32_GET_UB3(v) \
932 unsigned char ub[4]; \
933 } _HEXAGON_V32_internal_union; \
934 _HEXAGON_V32_internal_union.w = (v); \
935 _HEXAGON_V32_internal_union.ub[3]; \
942#define HEXAGON_V32_PUT_W(v, new) (new)
948#define HEXAGON_V32_PUT_H0(v, new) \
953 } _HEXAGON_V32_internal_union; \
954 _HEXAGON_V32_internal_union.w = (v); \
955 _HEXAGON_V32_internal_union.h[0] = (new); \
956 _HEXAGON_V32_internal_union.w; \
958#define HEXAGON_V32_PUT_H1(v, new) \
963 } _HEXAGON_V32_internal_union; \
964 _HEXAGON_V32_internal_union.w = (v); \
965 _HEXAGON_V32_internal_union.h[1] = (new); \
966 _HEXAGON_V32_internal_union.w; \
971#define HEXAGON_V32_PUT_H0(v, new) \
972 (((v) & 0xffff0000) | ((HEXAGON_Vect32)((unsigned short)(new))))
973#define HEXAGON_V32_PUT_H1(v, new) (((v) & 0x0000ffff) | (((HEXAGON_Vect32)(new)) << 16))
981#define HEXAGON_V32_PUT_B0(v, new) \
986 } _HEXAGON_V32_internal_union; \
987 _HEXAGON_V32_internal_union.w = (v); \
988 _HEXAGON_V32_internal_union.b[0] = (new); \
989 _HEXAGON_V32_internal_union.w; \
991#define HEXAGON_V32_PUT_B1(v, new) \
996 } _HEXAGON_V32_internal_union; \
997 _HEXAGON_V32_internal_union.w = (v); \
998 _HEXAGON_V32_internal_union.b[1] = (new); \
999 _HEXAGON_V32_internal_union.w; \
1001#define HEXAGON_V32_PUT_B2(v, new) \
1006 } _HEXAGON_V32_internal_union; \
1007 _HEXAGON_V32_internal_union.w = (v); \
1008 _HEXAGON_V32_internal_union.b[2] = (new); \
1009 _HEXAGON_V32_internal_union.w; \
1011#define HEXAGON_V32_PUT_B3(v, new) \
1016 } _HEXAGON_V32_internal_union; \
1017 _HEXAGON_V32_internal_union.w = (v); \
1018 _HEXAGON_V32_internal_union.b[3] = (new); \
1019 _HEXAGON_V32_internal_union.w; \
1024#define HEXAGON_V32_PUT_B0(v, new) \
1025 (((v) & 0xffffff00) | ((HEXAGON_Vect32)((unsigned char)(new))))
1026#define HEXAGON_V32_PUT_B1(v, new) \
1027 (((v) & 0xffff00ff) | (((HEXAGON_Vect32)((unsigned char)(new))) << 8))
1028#define HEXAGON_V32_PUT_B2(v, new) \
1029 (((v) & 0xff00ffff) | (((HEXAGON_Vect32)((unsigned char)(new))) << 16))
1030#define HEXAGON_V32_PUT_B3(v, new) (((v) & 0x00ffffff) | (((HEXAGON_Vect32)(new)) << 24))
1038#define HEXAGON_V32_CREATE_W(w) (w)
1044#define HEXAGON_V32_CREATE_H(h1, h0) \
1049 } _HEXAGON_V32_internal_union; \
1050 _HEXAGON_V32_internal_union.h[0] = (h0); \
1051 _HEXAGON_V32_internal_union.h[1] = (h1); \
1052 _HEXAGON_V32_internal_union.d; \
1057#define HEXAGON_V32_CREATE_H(h1, h0) \
1058 ((((HEXAGON_Vect32)(h1)) << 16) | ((HEXAGON_Vect32)((h0) & 0xffff)))
1065#define HEXAGON_V32_CREATE_B(b3, b2, b1, b0) \
1070 } _HEXAGON_V32_internal_union; \
1071 _HEXAGON_V32_internal_union.b[0] = (b0); \
1072 _HEXAGON_V32_internal_union.b[1] = (b1); \
1073 _HEXAGON_V32_internal_union.b[2] = (b2); \
1074 _HEXAGON_V32_internal_union.b[3] = (b3); \
1075 _HEXAGON_V32_internal_union.d; \
1080#define HEXAGON_V32_CREATE_B(b3, b2, b1, b0) \
1081 ((((HEXAGON_Vect32)(b3)) << 24) | (((HEXAGON_Vect32)((b2) & 0xff)) << 16) | \
1082 (((HEXAGON_Vect32)((b1) & 0xff)) << 8) | ((HEXAGON_Vect32)((b0) & 0xff)))
1088class HEXAGON_Vect32C {
1091 HEXAGON_Vect32C(
int w = 0) : data(w) {};
1093 HEXAGON_Vect32C(
signed char b3,
signed char b2,
signed char b1,
signed char b0)
1095 HEXAGON_Vect32C(
const HEXAGON_Vect32C &v) : data(v.data) {};
1097 HEXAGON_Vect32C &operator=(
const HEXAGON_Vect32C &v) {
1110 unsigned int UW(
void) {
1121 unsigned short UH0(
void) {
1124 unsigned short UH1(
void) {
1130 signed char B0(
void) {
return b0(); };
1131 signed char B1(
void) {
1134 signed char B2(
void) {
1137 signed char B3(
void) {
1140 unsigned char UB0(
void) {
1143 unsigned char UB1(
void) {
1146 unsigned char UB2(
void) {
1149 unsigned char UB3(
void) {
1156 HEXAGON_Vect32C W(
int w) {
1161 HEXAGON_Vect32C H0(
short h) {
1164 HEXAGON_Vect32C H1(
short h) {
1169 HEXAGON_Vect32C b0(
signed char b) {
1172 HEXAGON_Vect32C B0(
signed char b) {
return b0(
b); };
1173 HEXAGON_Vect32C B1(
signed char b) {
1176 HEXAGON_Vect32C B2(
signed char b) {
1179 HEXAGON_Vect32C B3(
signed char b) {
1190#if __HVX_ARCH__ >= 65
1191#if defined __HVX__ && (__HVX_LENGTH__ == 128)
1192 typedef long HEXAGON_VecPred128
__attribute__((__vector_size__(128)))
1195 typedef
long HEXAGON_Vect1024
__attribute__((__vector_size__(128)))
1198 typedef
long HEXAGON_Vect2048
__attribute__((__vector_size__(256)))
1201 typedef
long HEXAGON_UVect1024
__attribute__((__vector_size__(128)))
1204 typedef
long HEXAGON_UVect2048
__attribute__((__vector_size__(256)))
1207 #define HVX_VectorPred HEXAGON_VecPred128
1208 #define HVX_Vector HEXAGON_Vect1024
1209 #define HVX_VectorPair HEXAGON_Vect2048
1210 #define HVX_UVector HEXAGON_UVect1024
1211 #define HVX_UVectorPair HEXAGON_UVect2048
1213#if defined __HVX__ && (__HVX_LENGTH__ == 64)
1214 typedef long HEXAGON_VecPred64
__attribute__((__vector_size__(64)))
1217 typedef
long HEXAGON_Vect512
__attribute__((__vector_size__(64)))
1220 typedef
long HEXAGON_Vect1024
__attribute__((__vector_size__(128)))
1223 typedef
long HEXAGON_UVect512
__attribute__((__vector_size__(64)))
1226 typedef
long HEXAGON_UVect1024
__attribute__((__vector_size__(128)))
1229 #define HVX_VectorPred HEXAGON_VecPred64
1230 #define HVX_Vector HEXAGON_Vect512
1231 #define HVX_VectorPair HEXAGON_Vect1024
1232 #define HVX_UVector HEXAGON_UVect512
1233 #define HVX_UVectorPair HEXAGON_UVect1024
1247#define Q6Vect Q6Vect64
1248#define Q6V_GET_D Q6V64_GET_D
1249#define Q6V_GET_UD Q6V64_GET_UD
1250#define Q6V_GET_W0 Q6V64_GET_W0
1251#define Q6V_GET_W1 Q6V64_GET_W1
1252#define Q6V_GET_UW0 Q6V64_GET_UW0
1253#define Q6V_GET_UW1 Q6V64_GET_UW1
1254#define Q6V_GET_H0 Q6V64_GET_H0
1255#define Q6V_GET_H1 Q6V64_GET_H1
1256#define Q6V_GET_H2 Q6V64_GET_H2
1257#define Q6V_GET_H3 Q6V64_GET_H3
1258#define Q6V_GET_UH0 Q6V64_GET_UH0
1259#define Q6V_GET_UH1 Q6V64_GET_UH1
1260#define Q6V_GET_UH2 Q6V64_GET_UH2
1261#define Q6V_GET_UH3 Q6V64_GET_UH3
1262#define Q6V_GET_B0 Q6V64_GET_B0
1263#define Q6V_GET_B1 Q6V64_GET_B1
1264#define Q6V_GET_B2 Q6V64_GET_B2
1265#define Q6V_GET_B3 Q6V64_GET_B3
1266#define Q6V_GET_B4 Q6V64_GET_B4
1267#define Q6V_GET_B5 Q6V64_GET_B5
1268#define Q6V_GET_B6 Q6V64_GET_B6
1269#define Q6V_GET_B7 Q6V64_GET_B7
1270#define Q6V_GET_UB0 Q6V64_GET_UB0
1271#define Q6V_GET_UB1 Q6V64_GET_UB1
1272#define Q6V_GET_UB2 Q6V64_GET_UB2
1273#define Q6V_GET_UB3 Q6V64_GET_UB3
1274#define Q6V_GET_UB4 Q6V64_GET_UB4
1275#define Q6V_GET_UB5 Q6V64_GET_UB5
1276#define Q6V_GET_UB6 Q6V64_GET_UB6
1277#define Q6V_GET_UB7 Q6V64_GET_UB7
1278#define Q6V_PUT_D Q6V64_PUT_D
1279#define Q6V_PUT_W0 Q6V64_PUT_W0
1280#define Q6V_PUT_W1 Q6V64_PUT_W1
1281#define Q6V_PUT_H0 Q6V64_PUT_H0
1282#define Q6V_PUT_H1 Q6V64_PUT_H1
1283#define Q6V_PUT_H2 Q6V64_PUT_H2
1284#define Q6V_PUT_H3 Q6V64_PUT_H3
1285#define Q6V_PUT_B0 Q6V64_PUT_B0
1286#define Q6V_PUT_B1 Q6V64_PUT_B1
1287#define Q6V_PUT_B2 Q6V64_PUT_B2
1288#define Q6V_PUT_B3 Q6V64_PUT_B3
1289#define Q6V_PUT_B4 Q6V64_PUT_B4
1290#define Q6V_PUT_B5 Q6V64_PUT_B5
1291#define Q6V_PUT_B6 Q6V64_PUT_B6
1292#define Q6V_PUT_B7 Q6V64_PUT_B7
1293#define Q6V_CREATE_D Q6V64_CREATE_D
1294#define Q6V_CREATE_W Q6V64_CREATE_W
1295#define Q6V_CREATE_H Q6V64_CREATE_H
1296#define Q6V_CREATE_B Q6V64_CREATE_B
1299#define Q6VectC Q6Vect64C
1308#define Q6V64_GET_D(v) (v)
1309#define Q6V64_GET_UD(v) ((unsigned long long)(v))
1313#define Q6V64_GET_W0(v) \
1318 } _Q6V64_internal_union; \
1319 _Q6V64_internal_union.d = (v); \
1320 _Q6V64_internal_union.w[0]; \
1322#define Q6V64_GET_W1(v) \
1327 } _Q6V64_internal_union; \
1328 _Q6V64_internal_union.d = (v); \
1329 _Q6V64_internal_union.w[1]; \
1331#define Q6V64_GET_UW0(v) \
1335 unsigned int uw[2]; \
1336 } _Q6V64_internal_union; \
1337 _Q6V64_internal_union.d = (v); \
1338 _Q6V64_internal_union.uw[0]; \
1340#define Q6V64_GET_UW1(v) \
1344 unsigned int uw[2]; \
1345 } _Q6V64_internal_union; \
1346 _Q6V64_internal_union.d = (v); \
1347 _Q6V64_internal_union.uw[1]; \
1352#define Q6V64_GET_H0(v) \
1357 } _Q6V64_internal_union; \
1358 _Q6V64_internal_union.d = (v); \
1359 _Q6V64_internal_union.h[0]; \
1361#define Q6V64_GET_H1(v) \
1366 } _Q6V64_internal_union; \
1367 _Q6V64_internal_union.d = (v); \
1368 _Q6V64_internal_union.h[1]; \
1370#define Q6V64_GET_H2(v) \
1375 } _Q6V64_internal_union; \
1376 _Q6V64_internal_union.d = (v); \
1377 _Q6V64_internal_union.h[2]; \
1379#define Q6V64_GET_H3(v) \
1384 } _Q6V64_internal_union; \
1385 _Q6V64_internal_union.d = (v); \
1386 _Q6V64_internal_union.h[3]; \
1388#define Q6V64_GET_UH0(v) \
1392 unsigned short uh[4]; \
1393 } _Q6V64_internal_union; \
1394 _Q6V64_internal_union.d = (v); \
1395 _Q6V64_internal_union.uh[0]; \
1397#define Q6V64_GET_UH1(v) \
1401 unsigned short uh[4]; \
1402 } _Q6V64_internal_union; \
1403 _Q6V64_internal_union.d = (v); \
1404 _Q6V64_internal_union.uh[1]; \
1406#define Q6V64_GET_UH2(v) \
1410 unsigned short uh[4]; \
1411 } _Q6V64_internal_union; \
1412 _Q6V64_internal_union.d = (v); \
1413 _Q6V64_internal_union.uh[2]; \
1415#define Q6V64_GET_UH3(v) \
1419 unsigned short uh[4]; \
1420 } _Q6V64_internal_union; \
1421 _Q6V64_internal_union.d = (v); \
1422 _Q6V64_internal_union.uh[3]; \
1427#define Q6V64_GET_B0(v) \
1432 } _Q6V64_internal_union; \
1433 _Q6V64_internal_union.d = (v); \
1434 _Q6V64_internal_union.b[0]; \
1436#define Q6V64_GET_B1(v) \
1441 } _Q6V64_internal_union; \
1442 _Q6V64_internal_union.d = (v); \
1443 _Q6V64_internal_union.b[1]; \
1445#define Q6V64_GET_B2(v) \
1450 } _Q6V64_internal_union; \
1451 _Q6V64_internal_union.d = (v); \
1452 _Q6V64_internal_union.b[2]; \
1454#define Q6V64_GET_B3(v) \
1459 } _Q6V64_internal_union; \
1460 _Q6V64_internal_union.d = (v); \
1461 _Q6V64_internal_union.b[3]; \
1463#define Q6V64_GET_B4(v) \
1468 } _Q6V64_internal_union; \
1469 _Q6V64_internal_union.d = (v); \
1470 _Q6V64_internal_union.b[4]; \
1472#define Q6V64_GET_B5(v) \
1477 } _Q6V64_internal_union; \
1478 _Q6V64_internal_union.d = (v); \
1479 _Q6V64_internal_union.b[5]; \
1481#define Q6V64_GET_B6(v) \
1486 } _Q6V64_internal_union; \
1487 _Q6V64_internal_union.d = (v); \
1488 _Q6V64_internal_union.b[6]; \
1490#define Q6V64_GET_B7(v) \
1495 } _Q6V64_internal_union; \
1496 _Q6V64_internal_union.d = (v); \
1497 _Q6V64_internal_union.b[7]; \
1499#define Q6V64_GET_UB0(v) \
1503 unsigned char ub[8]; \
1504 } _Q6V64_internal_union; \
1505 _Q6V64_internal_union.d = (v); \
1506 _Q6V64_internal_union.ub[0]; \
1508#define Q6V64_GET_UB1(v) \
1512 unsigned char ub[8]; \
1513 } _Q6V64_internal_union; \
1514 _Q6V64_internal_union.d = (v); \
1515 _Q6V64_internal_union.ub[1]; \
1517#define Q6V64_GET_UB2(v) \
1521 unsigned char ub[8]; \
1522 } _Q6V64_internal_union; \
1523 _Q6V64_internal_union.d = (v); \
1524 _Q6V64_internal_union.ub[2]; \
1526#define Q6V64_GET_UB3(v) \
1530 unsigned char ub[8]; \
1531 } _Q6V64_internal_union; \
1532 _Q6V64_internal_union.d = (v); \
1533 _Q6V64_internal_union.ub[3]; \
1535#define Q6V64_GET_UB4(v) \
1539 unsigned char ub[8]; \
1540 } _Q6V64_internal_union; \
1541 _Q6V64_internal_union.d = (v); \
1542 _Q6V64_internal_union.ub[4]; \
1544#define Q6V64_GET_UB5(v) \
1548 unsigned char ub[8]; \
1549 } _Q6V64_internal_union; \
1550 _Q6V64_internal_union.d = (v); \
1551 _Q6V64_internal_union.ub[5]; \
1553#define Q6V64_GET_UB6(v) \
1557 unsigned char ub[8]; \
1558 } _Q6V64_internal_union; \
1559 _Q6V64_internal_union.d = (v); \
1560 _Q6V64_internal_union.ub[6]; \
1562#define Q6V64_GET_UB7(v) \
1566 unsigned char ub[8]; \
1567 } _Q6V64_internal_union; \
1568 _Q6V64_internal_union.d = (v); \
1569 _Q6V64_internal_union.ub[7]; \
1576#define Q6V64_PUT_D(v, new) (new)
1582#define Q6V64_PUT_W0(v, new) \
1587 } _Q6V64_internal_union; \
1588 _Q6V64_internal_union.d = (v); \
1589 _Q6V64_internal_union.w[0] = (new); \
1590 _Q6V64_internal_union.d; \
1592#define Q6V64_PUT_W1(v, new) \
1597 } _Q6V64_internal_union; \
1598 _Q6V64_internal_union.d = (v); \
1599 _Q6V64_internal_union.w[1] = (new); \
1600 _Q6V64_internal_union.d; \
1605#define Q6V64_PUT_W0(v, new) \
1606 (((v) & 0xffffffff00000000LL) | ((Q6Vect64)((unsigned int)(new))))
1607#define Q6V64_PUT_W1(v, new) \
1608 (((v) & 0x00000000ffffffffLL) | (((Q6Vect64)(new)) << 32LL))
1616#define Q6V64_PUT_H0(v, new) \
1621 } _Q6V64_internal_union; \
1622 _Q6V64_internal_union.d = (v); \
1623 _Q6V64_internal_union.h[0] = (new); \
1624 _Q6V64_internal_union.d; \
1626#define Q6V64_PUT_H1(v, new) \
1631 } _Q6V64_internal_union; \
1632 _Q6V64_internal_union.d = (v); \
1633 _Q6V64_internal_union.h[1] = (new); \
1634 _Q6V64_internal_union.d; \
1636#define Q6V64_PUT_H2(v, new) \
1641 } _Q6V64_internal_union; \
1642 _Q6V64_internal_union.d = (v); \
1643 _Q6V64_internal_union.h[2] = (new); \
1644 _Q6V64_internal_union.d; \
1646#define Q6V64_PUT_H3(v, new) \
1651 } _Q6V64_internal_union; \
1652 _Q6V64_internal_union.d = (v); \
1653 _Q6V64_internal_union.h[3] = (new); \
1654 _Q6V64_internal_union.d; \
1659#define Q6V64_PUT_H0(v, new) \
1660 (((v) & 0xffffffffffff0000LL) | ((Q6Vect64)((unsigned short)(new))))
1661#define Q6V64_PUT_H1(v, new) \
1662 (((v) & 0xffffffff0000ffffLL) | (((Q6Vect64)((unsigned short)(new))) << 16LL))
1663#define Q6V64_PUT_H2(v, new) \
1664 (((v) & 0xffff0000ffffffffLL) | (((Q6Vect64)((unsigned short)(new))) << 32LL))
1665#define Q6V64_PUT_H3(v, new) \
1666 (((v) & 0x0000ffffffffffffLL) | (((Q6Vect64)(new)) << 48LL))
1674#define Q6V64_PUT_B0(v, new) \
1679 } _Q6V64_internal_union; \
1680 _Q6V64_internal_union.d = (v); \
1681 _Q6V64_internal_union.b[0] = (new); \
1682 _Q6V64_internal_union.d; \
1684#define Q6V64_PUT_B1(v, new) \
1689 } _Q6V64_internal_union; \
1690 _Q6V64_internal_union.d = (v); \
1691 _Q6V64_internal_union.b[1] = (new); \
1692 _Q6V64_internal_union.d; \
1694#define Q6V64_PUT_B2(v, new) \
1699 } _Q6V64_internal_union; \
1700 _Q6V64_internal_union.d = (v); \
1701 _Q6V64_internal_union.b[2] = (new); \
1702 _Q6V64_internal_union.d; \
1704#define Q6V64_PUT_B3(v, new) \
1709 } _Q6V64_internal_union; \
1710 _Q6V64_internal_union.d = (v); \
1711 _Q6V64_internal_union.b[3] = (new); \
1712 _Q6V64_internal_union.d; \
1714#define Q6V64_PUT_B4(v, new) \
1719 } _Q6V64_internal_union; \
1720 _Q6V64_internal_union.d = (v); \
1721 _Q6V64_internal_union.b[4] = (new); \
1722 _Q6V64_internal_union.d; \
1724#define Q6V64_PUT_B5(v, new) \
1729 } _Q6V64_internal_union; \
1730 _Q6V64_internal_union.d = (v); \
1731 _Q6V64_internal_union.b[5] = (new); \
1732 _Q6V64_internal_union.d; \
1734#define Q6V64_PUT_B6(v, new) \
1739 } _Q6V64_internal_union; \
1740 _Q6V64_internal_union.d = (v); \
1741 _Q6V64_internal_union.b[6] = (new); \
1742 _Q6V64_internal_union.d; \
1744#define Q6V64_PUT_B7(v, new) \
1749 } _Q6V64_internal_union; \
1750 _Q6V64_internal_union.d = (v); \
1751 _Q6V64_internal_union.b[7] = (new); \
1752 _Q6V64_internal_union.d; \
1757#define Q6V64_PUT_B0(v, new) \
1758 (((v) & 0xffffffffffffff00LL) | ((Q6Vect64)((unsigned char)(new))))
1759#define Q6V64_PUT_B1(v, new) \
1760 (((v) & 0xffffffffffff00ffLL) | (((Q6Vect64)((unsigned char)(new))) << 8LL))
1761#define Q6V64_PUT_B2(v, new) \
1762 (((v) & 0xffffffffff00ffffLL) | (((Q6Vect64)((unsigned char)(new))) << 16LL))
1763#define Q6V64_PUT_B3(v, new) \
1764 (((v) & 0xffffffff00ffffffLL) | (((Q6Vect64)((unsigned char)(new))) << 24LL))
1765#define Q6V64_PUT_B4(v, new) \
1766 (((v) & 0xffffff00ffffffffLL) | (((Q6Vect64)((unsigned char)(new))) << 32LL))
1767#define Q6V64_PUT_B5(v, new) \
1768 (((v) & 0xffff00ffffffffffLL) | (((Q6Vect64)((unsigned char)(new))) << 40LL))
1769#define Q6V64_PUT_B6(v, new) \
1770 (((v) & 0xff00ffffffffffffLL) | (((Q6Vect64)((unsigned char)(new))) << 48LL))
1771#define Q6V64_PUT_B7(v, new) \
1772 (((v) & 0x00ffffffffffffffLL) | (((Q6Vect64)(new)) << 56LL))
1780#define Q6V64_CREATE_D(d) (d)
1786#define Q6V64_CREATE_W(w1, w0) \
1791 } _Q6V64_internal_union; \
1792 _Q6V64_internal_union.w[0] = (w0); \
1793 _Q6V64_internal_union.w[1] = (w1); \
1794 _Q6V64_internal_union.d; \
1799#define Q6V64_CREATE_W(w1, w0) \
1800 ((((Q6Vect64)(w1)) << 32LL) | ((Q6Vect64)((w0) & 0xffffffff)))
1808#define Q6V64_CREATE_H(h3, h2, h1, h0) \
1813 } _Q6V64_internal_union; \
1814 _Q6V64_internal_union.h[0] = (h0); \
1815 _Q6V64_internal_union.h[1] = (h1); \
1816 _Q6V64_internal_union.h[2] = (h2); \
1817 _Q6V64_internal_union.h[3] = (h3); \
1818 _Q6V64_internal_union.d; \
1823#define Q6V64_CREATE_H(h3, h2, h1, h0) \
1824 ((((Q6Vect64)(h3)) << 48LL) | (((Q6Vect64)((h2) & 0xffff)) << 32LL) | \
1825 (((Q6Vect64)((h1) & 0xffff)) << 16LL) | ((Q6Vect64)((h0) & 0xffff)))
1833#define Q6V64_CREATE_B(b7, b6, b5, b4, b3, b2, b1, b0) \
1838 } _Q6V64_internal_union; \
1839 _Q6V64_internal_union.b[0] = (b0); \
1840 _Q6V64_internal_union.b[1] = (b1); \
1841 _Q6V64_internal_union.b[2] = (b2); \
1842 _Q6V64_internal_union.b[3] = (b3); \
1843 _Q6V64_internal_union.b[4] = (b4); \
1844 _Q6V64_internal_union.b[5] = (b5); \
1845 _Q6V64_internal_union.b[6] = (b6); \
1846 _Q6V64_internal_union.b[7] = (b7); \
1847 _Q6V64_internal_union.d; \
1852#define Q6V64_CREATE_B(b7, b6, b5, b4, b3, b2, b1, b0) \
1853 ((((Q6Vect64)(b7)) << 56LL) | (((Q6Vect64)((b6) & 0xff)) << 48LL) | \
1854 (((Q6Vect64)((b5) & 0xff)) << 40LL) | (((Q6Vect64)((b4) & 0xff)) << 32LL) | \
1855 (((Q6Vect64)((b3) & 0xff)) << 24LL) | (((Q6Vect64)((b2) & 0xff)) << 16LL) | \
1856 (((Q6Vect64)((b1) & 0xff)) << 8LL) | ((Q6Vect64)((b0) & 0xff)))
1865 Q6Vect64C(
long long d = 0) : data(d) {};
1867 Q6Vect64C(
short h3,
short h2,
short h1,
short h0)
1869 Q6Vect64C(
signed char b7,
signed char b6,
signed char b5,
signed char b4,
1870 signed char b3,
signed char b2,
signed char b1,
signed char b0)
1872 Q6Vect64C(
const Q6Vect64C &v) : data(v.data) {};
1874 Q6Vect64C &operator=(
const Q6Vect64C &v) {
1879 operator long long() {
1887 unsigned long long UD(
void) {
1898 unsigned int UW0(
void) {
1901 unsigned int UW1(
void) {
1918 unsigned short UH0(
void) {
1921 unsigned short UH1(
void) {
1924 unsigned short UH2(
void) {
1927 unsigned short UH3(
void) {
1933 signed char B0(
void) {
return b0(); };
1934 signed char B1(
void) {
1937 signed char B2(
void) {
1940 signed char B3(
void) {
1943 signed char B4(
void) {
1946 signed char B5(
void) {
1949 signed char B6(
void) {
1952 signed char B7(
void) {
1955 unsigned char UB0(
void) {
1958 unsigned char UB1(
void) {
1961 unsigned char UB2(
void) {
1964 unsigned char UB3(
void) {
1967 unsigned char UB4(
void) {
1970 unsigned char UB5(
void) {
1973 unsigned char UB6(
void) {
1976 unsigned char UB7(
void) {
1983 Q6Vect64C D(
long long d) {
1988 Q6Vect64C W0(
int w) {
1991 Q6Vect64C W1(
int w) {
1996 Q6Vect64C H0(
short h) {
1999 Q6Vect64C H1(
short h) {
2002 Q6Vect64C H2(
short h) {
2005 Q6Vect64C H3(
short h) {
2010 Q6Vect64C b0(
signed char b) {
return Q6Vect64C(
Q6V64_PUT_B0(data,
b)); };
2011 Q6Vect64C B0(
signed char b) {
return b0(
b); };
2012 Q6Vect64C B1(
signed char b) {
2015 Q6Vect64C B2(
signed char b) {
2018 Q6Vect64C B3(
signed char b) {
2021 Q6Vect64C B4(
signed char b) {
2024 Q6Vect64C B5(
signed char b) {
2027 Q6Vect64C B6(
signed char b) {
2030 Q6Vect64C B7(
signed char b) {
2046#define Q6V32_GET_W(v) (v)
2047#define Q6V32_GET_UW(v) ((unsigned int)(v))
2051#define Q6V32_GET_H0(v) \
2056 } _Q6V32_internal_union; \
2057 _Q6V32_internal_union.w = (v); \
2058 _Q6V32_internal_union.h[0]; \
2060#define Q6V32_GET_H1(v) \
2065 } _Q6V32_internal_union; \
2066 _Q6V32_internal_union.w = (v); \
2067 _Q6V32_internal_union.h[1]; \
2069#define Q6V32_GET_UH0(v) \
2073 unsigned short uh[2]; \
2074 } _Q6V32_internal_union; \
2075 _Q6V32_internal_union.w = (v); \
2076 _Q6V32_internal_union.uh[0]; \
2078#define Q6V32_GET_UH1(v) \
2082 unsigned short uh[2]; \
2083 } _Q6V32_internal_union; \
2084 _Q6V32_internal_union.w = (v); \
2085 _Q6V32_internal_union.uh[1]; \
2090#define Q6V32_GET_B0(v) \
2095 } _Q6V32_internal_union; \
2096 _Q6V32_internal_union.w = (v); \
2097 _Q6V32_internal_union.b[0]; \
2099#define Q6V32_GET_B1(v) \
2104 } _Q6V32_internal_union; \
2105 _Q6V32_internal_union.w = (v); \
2106 _Q6V32_internal_union.b[1]; \
2108#define Q6V32_GET_B2(v) \
2113 } _Q6V32_internal_union; \
2114 _Q6V32_internal_union.w = (v); \
2115 _Q6V32_internal_union.b[2]; \
2117#define Q6V32_GET_B3(v) \
2122 } _Q6V32_internal_union; \
2123 _Q6V32_internal_union.w = (v); \
2124 _Q6V32_internal_union.b[3]; \
2126#define Q6V32_GET_UB0(v) \
2130 unsigned char ub[4]; \
2131 } _Q6V32_internal_union; \
2132 _Q6V32_internal_union.w = (v); \
2133 _Q6V32_internal_union.ub[0]; \
2135#define Q6V32_GET_UB1(v) \
2139 unsigned char ub[4]; \
2140 } _Q6V32_internal_union; \
2141 _Q6V32_internal_union.w = (v); \
2142 _Q6V32_internal_union.ub[1]; \
2144#define Q6V32_GET_UB2(v) \
2148 unsigned char ub[4]; \
2149 } _Q6V32_internal_union; \
2150 _Q6V32_internal_union.w = (v); \
2151 _Q6V32_internal_union.ub[2]; \
2153#define Q6V32_GET_UB3(v) \
2157 unsigned char ub[4]; \
2158 } _Q6V32_internal_union; \
2159 _Q6V32_internal_union.w = (v); \
2160 _Q6V32_internal_union.ub[3]; \
2167#define Q6V32_PUT_W(v, new) (new)
2173#define Q6V32_PUT_H0(v, new) \
2178 } _Q6V32_internal_union; \
2179 _Q6V32_internal_union.w = (v); \
2180 _Q6V32_internal_union.h[0] = (new); \
2181 _Q6V32_internal_union.w; \
2183#define Q6V32_PUT_H1(v, new) \
2188 } _Q6V32_internal_union; \
2189 _Q6V32_internal_union.w = (v); \
2190 _Q6V32_internal_union.h[1] = (new); \
2191 _Q6V32_internal_union.w; \
2196#define Q6V32_PUT_H0(v, new) \
2197 (((v) & 0xffff0000) | ((Q6Vect32)((unsigned short)(new))))
2198#define Q6V32_PUT_H1(v, new) (((v) & 0x0000ffff) | (((Q6Vect32)(new)) << 16))
2206#define Q6V32_PUT_B0(v, new) \
2211 } _Q6V32_internal_union; \
2212 _Q6V32_internal_union.w = (v); \
2213 _Q6V32_internal_union.b[0] = (new); \
2214 _Q6V32_internal_union.w; \
2216#define Q6V32_PUT_B1(v, new) \
2221 } _Q6V32_internal_union; \
2222 _Q6V32_internal_union.w = (v); \
2223 _Q6V32_internal_union.b[1] = (new); \
2224 _Q6V32_internal_union.w; \
2226#define Q6V32_PUT_B2(v, new) \
2231 } _Q6V32_internal_union; \
2232 _Q6V32_internal_union.w = (v); \
2233 _Q6V32_internal_union.b[2] = (new); \
2234 _Q6V32_internal_union.w; \
2236#define Q6V32_PUT_B3(v, new) \
2241 } _Q6V32_internal_union; \
2242 _Q6V32_internal_union.w = (v); \
2243 _Q6V32_internal_union.b[3] = (new); \
2244 _Q6V32_internal_union.w; \
2249#define Q6V32_PUT_B0(v, new) \
2250 (((v) & 0xffffff00) | ((Q6Vect32)((unsigned char)(new))))
2251#define Q6V32_PUT_B1(v, new) \
2252 (((v) & 0xffff00ff) | (((Q6Vect32)((unsigned char)(new))) << 8))
2253#define Q6V32_PUT_B2(v, new) \
2254 (((v) & 0xff00ffff) | (((Q6Vect32)((unsigned char)(new))) << 16))
2255#define Q6V32_PUT_B3(v, new) (((v) & 0x00ffffff) | (((Q6Vect32)(new)) << 24))
2263#define Q6V32_CREATE_W(w) (w)
2269#define Q6V32_CREATE_H(h1, h0) \
2274 } _Q6V32_internal_union; \
2275 _Q6V32_internal_union.h[0] = (h0); \
2276 _Q6V32_internal_union.h[1] = (h1); \
2277 _Q6V32_internal_union.d; \
2282#define Q6V32_CREATE_H(h1, h0) \
2283 ((((Q6Vect32)(h1)) << 16) | ((Q6Vect32)((h0) & 0xffff)))
2290#define Q6V32_CREATE_B(b3, b2, b1, b0) \
2295 } _Q6V32_internal_union; \
2296 _Q6V32_internal_union.b[0] = (b0); \
2297 _Q6V32_internal_union.b[1] = (b1); \
2298 _Q6V32_internal_union.b[2] = (b2); \
2299 _Q6V32_internal_union.b[3] = (b3); \
2300 _Q6V32_internal_union.d; \
2305#define Q6V32_CREATE_B(b3, b2, b1, b0) \
2306 ((((Q6Vect32)(b3)) << 24) | (((Q6Vect32)((b2) & 0xff)) << 16) | \
2307 (((Q6Vect32)((b1) & 0xff)) << 8) | ((Q6Vect32)((b0) & 0xff)))
2316 Q6Vect32C(
int w = 0) : data(w) {};
2318 Q6Vect32C(
signed char b3,
signed char b2,
signed char b1,
signed char b0)
2320 Q6Vect32C(
const Q6Vect32C &v) : data(v.data) {};
2322 Q6Vect32C &operator=(
const Q6Vect32C &v) {
2335 unsigned int UW(
void) {
2346 unsigned short UH0(
void) {
2349 unsigned short UH1(
void) {
2355 signed char B0(
void) {
return b0(); };
2356 signed char B1(
void) {
2359 signed char B2(
void) {
2362 signed char B3(
void) {
2365 unsigned char UB0(
void) {
2368 unsigned char UB1(
void) {
2371 unsigned char UB2(
void) {
2374 unsigned char UB3(
void) {
2381 Q6Vect32C W(
int w) {
2386 Q6Vect32C H0(
short h) {
2389 Q6Vect32C H1(
short h) {
2394 Q6Vect32C b0(
signed char b) {
return Q6Vect32C(
Q6V32_PUT_B0(data,
b)); };
2395 Q6Vect32C B0(
signed char b) {
return b0(
b); };
2396 Q6Vect32C B1(
signed char b) {
2399 Q6Vect32C B2(
signed char b) {
2402 Q6Vect32C B3(
signed char b) {
2413#if __HVX_ARCH__ >= 65
2414#if defined __HVX__ && (__HVX_LENGTH__ == 128)
2415typedef long Q6VecPred128
__attribute__((__vector_size__(128)))
2418typedef
long Q6Vect1024
__attribute__((__vector_size__(128)))
2421typedef
long Q6Vect2048
__attribute__((__vector_size__(256)))
2425#if defined __HVX__ && (__HVX_LENGTH__ == 64)
2426typedef long Q6VecPred64
__attribute__((__vector_size__(64)))
2432typedef
long Q6Vect1024
__attribute__((__vector_size__(128)))
2447#define HEXAGON_HVX_GET_W(v) (v)
2450#define HEXAGON_HVX_GET_V0(v) \
2455 } _HEXAGON_HVX_internal_union; \
2456 _HEXAGON_HVX_internal_union.W = (v); \
2457 _HEXAGON_HVX_internal_union.V[0]; \
2459#define HEXAGON_HVX_GET_V1(v) \
2464 } _HEXAGON_HVX_internal_union; \
2465 _HEXAGON_HVX_internal_union.W = (v); \
2466 _HEXAGON_HVX_internal_union.V[1]; \
2468#define HEXAGON_HVX_GET_P(v) \
2472 HVX_VectorPred P[2]; \
2473 } _HEXAGON_HVX_internal_union; \
2474 _HEXAGON_HVX_internal_union.W = (v); \
2475 _HEXAGON_HVX_internal_union.P[0]; \
2479#define HEXAGON_HVX_PUT_W(v, new) (new)
2482#define HEXAGON_HVX_PUT_V0(v, new) \
2487 } _HEXAGON_HVX_internal_union; \
2488 _HEXAGON_HVX_internal_union.W = (v); \
2489 _HEXAGON_HVX_internal_union.V[0] = (new); \
2490 _HEXAGON_HVX_internal_union.W; \
2493#define HEXAGON_HVX_PUT_V1(v, new) \
2498 } _HEXAGON_HVX_internal_union; \
2499 _HEXAGON_HVX_internal_union.W = (v); \
2500 _HEXAGON_HVX_internal_union.V[1] = (new); \
2501 _HEXAGON_HVX_internal_union.W; \
2504#define HEXAGON_HVX_PUT_P(v, new) \
2508 HVX_VectorPred P[2]; \
2509 } _HEXAGON_HVX_internal_union; \
2510 _HEXAGON_HVX_internal_union.W = (v); \
2511 _HEXAGON_HVX_internal_union.P[0] = (new); \
2512 _HEXAGON_HVX_internal_union.W; \
2516#define HEXAGON_HVX_CREATE_W(v1, v0) \
2521 } _HEXAGON_HVX_internal_union; \
2522 _HEXAGON_HVX_internal_union.V[0] = (v0); \
2523 _HEXAGON_HVX_internal_union.V[1] = (v1); \
2524 _HEXAGON_HVX_internal_union.W; \
2533 HVX_Vect() : data(Q6_W_vcombine_VV(Q6_V_vzero(), Q6_V_vzero())){};
2536 HVX_Vect(HVX_VectorPair W) : data(W){};
2537 HVX_Vect(HVX_Vector v1, HVX_Vector v0) : data(HEXAGON_HVX_CREATE_W(v1, v0)){};
2540 HVX_Vect(
const HVX_Vect &W) =
default;
2543 HVX_Vect(HVX_Vect &&W) =
default;
2546 HVX_Vect &operator=(
const HVX_Vect &W) =
default;
2548 operator HVX_VectorPair() {
return data; };
2551 HVX_VectorPair W(
void) {
return HEXAGON_HVX_GET_W(data); };
2554 HVX_Vector V0(
void) {
return HEXAGON_HVX_GET_V0(data); };
2555 HVX_Vector V1(
void) {
return HEXAGON_HVX_GET_V1(data); };
2556 HVX_VectorPred P(
void) {
return HEXAGON_HVX_GET_P(data); };
2560 HVX_Vect W(HVX_VectorPair w) {
return HVX_Vect(HEXAGON_HVX_PUT_W(data, w)); };
2563 HVX_Vect V0(HVX_Vector v) {
return HVX_Vect(HEXAGON_HVX_PUT_V0(data, v)); };
2564 HVX_Vect V1(HVX_Vector v) {
return HVX_Vect(HEXAGON_HVX_PUT_V1(data, v)); };
2565 HVX_Vect P(HVX_VectorPred p) {
return HVX_Vect(HEXAGON_HVX_PUT_P(data, p)); };
2568 HVX_VectorPair data;
2574#define HEXAGON_UDMA_DM0_STATUS_IDLE 0x00000000
2575#define HEXAGON_UDMA_DM0_STATUS_RUN 0x00000001
2576#define HEXAGON_UDMA_DM0_STATUS_ERROR 0x00000002
2577#define HEXAGON_UDMA_DESC_DSTATE_INCOMPLETE 0
2578#define HEXAGON_UDMA_DESC_DSTATE_COMPLETE 1
2579#define HEXAGON_UDMA_DESC_ORDER_NOORDER 0
2580#define HEXAGON_UDMA_DESC_ORDER_ORDER 1
2581#define HEXAGON_UDMA_DESC_BYPASS_OFF 0
2582#define HEXAGON_UDMA_DESC_BYPASS_ON 1
2583#define HEXAGON_UDMA_DESC_COMP_NONE 0
2584#define HEXAGON_UDMA_DESC_COMP_DLBC 1
2585#define HEXAGON_UDMA_DESC_DESCTYPE_TYPE0 0
2586#define HEXAGON_UDMA_DESC_DESCTYPE_TYPE1 1
2626#pragma pop_macro("B0")
_Float16 __2f16 __attribute__((ext_vector_type(2)))
Zeroes the upper 128 bits (bits 255:128) of all YMM registers.
#define HEXAGON_V64_PUT_H0(v, new)
#define HEXAGON_V32_GET_UH0(v)
#define Q6V64_PUT_H0(v, new)
#define Q6V64_PUT_W1(v, new)
#define HEXAGON_V64_GET_UB6(v)
#define HEXAGON_V32_GET_UW(v)
#define HEXAGON_V64_GET_UH3(v)
#define HEXAGON_V64_PUT_B0(v, new)
#define HEXAGON_V64_GET_B6(v)
#define Q6V64_PUT_B0(v, new)
#define HEXAGON_V32_GET_B2(v)
#define HEXAGON_V32_PUT_H1(v, new)
#define HEXAGON_V32_GET_B1(v)
#define Q6V32_PUT_H1(v, new)
#define HEXAGON_V64_PUT_B1(v, new)
#define HEXAGON_V32_PUT_B2(v, new)
#define HEXAGON_V64_PUT_B7(v, new)
#define HEXAGON_V32_PUT_B3(v, new)
#define HEXAGON_V32_GET_H0(v)
#define HEXAGON_V64_GET_B0(v)
#define Q6V64_PUT_B3(v, new)
#define HEXAGON_V64_GET_B5(v)
#define HEXAGON_V64_GET_UB7(v)
#define HEXAGON_V64_GET_UB5(v)
#define Q6V64_CREATE_H(h3, h2, h1, h0)
#define HEXAGON_V64_CREATE_W(w1, w0)
#define HEXAGON_V64_PUT_H2(v, new)
#define HEXAGON_V32_GET_H1(v)
#define HEXAGON_V32_GET_UB2(v)
#define HEXAGON_V32_PUT_B1(v, new)
#define HEXAGON_V64_GET_UB2(v)
#define Q6V32_PUT_W(v, new)
#define Q6V32_CREATE_H(h1, h0)
#define HEXAGON_V64_GET_B3(v)
#define HEXAGON_V64_GET_B2(v)
#define HEXAGON_V64_CREATE_H(h3, h2, h1, h0)
#define HEXAGON_V64_GET_UB1(v)
#define HEXAGON_V64_PUT_D(v, new)
#define Q6V64_PUT_H2(v, new)
#define HEXAGON_V64_GET_D(v)
#define Q6V64_CREATE_W(w1, w0)
#define HEXAGON_V64_GET_W1(v)
#define HEXAGON_V64_GET_B7(v)
#define HEXAGON_V64_GET_UW1(v)
#define HEXAGON_V64_PUT_B6(v, new)
#define Q6V64_PUT_H1(v, new)
#define Q6V64_PUT_W0(v, new)
#define HEXAGON_V32_PUT_H0(v, new)
#define HEXAGON_V64_GET_B4(v)
#define HEXAGON_V32_GET_UB1(v)
#define Q6V64_CREATE_B(b7, b6, b5, b4, b3, b2, b1, b0)
#define Q6V32_PUT_B1(v, new)
#define Q6V64_PUT_B2(v, new)
#define HEXAGON_V32_GET_W(v)
struct hexagon_udma_descriptor_type0_s hexagon_udma_descriptor_type0_t
#define HEXAGON_V64_PUT_B3(v, new)
#define HEXAGON_V64_PUT_B2(v, new)
#define HEXAGON_V64_GET_UH0(v)
#define HEXAGON_V64_GET_W0(v)
#define HEXAGON_V32_GET_B0(v)
#define HEXAGON_V32_PUT_W(v, new)
#define HEXAGON_V64_GET_H3(v)
#define HEXAGON_V64_GET_H2(v)
#define HEXAGON_V32_GET_UH1(v)
#define Q6V32_CREATE_B(b3, b2, b1, b0)
#define Q6V64_PUT_B1(v, new)
#define HEXAGON_V32_GET_UB3(v)
#define HEXAGON_V32_CREATE_B(b3, b2, b1, b0)
#define HEXAGON_V64_GET_UB4(v)
#define HEXAGON_V64_PUT_H3(v, new)
#define HEXAGON_V64_GET_H1(v)
#define HEXAGON_V32_GET_B3(v)
#define Q6V64_PUT_H3(v, new)
#define Q6V64_PUT_D(v, new)
#define HEXAGON_V32_GET_UB0(v)
#define Q6V32_PUT_B0(v, new)
#define Q6V64_PUT_B4(v, new)
#define HEXAGON_V64_GET_UW0(v)
#define HEXAGON_V64_PUT_H1(v, new)
#define HEXAGON_V64_GET_UH2(v)
#define Q6V32_PUT_H0(v, new)
#define Q6V32_PUT_B2(v, new)
#define Q6V64_PUT_B5(v, new)
#define HEXAGON_V64_PUT_W0(v, new)
#define HEXAGON_V64_PUT_B4(v, new)
struct hexagon_udma_descriptor_type1_s hexagon_udma_descriptor_type1_t
#define Q6V64_PUT_B7(v, new)
#define HEXAGON_V64_GET_UB0(v)
#define HEXAGON_V32_CREATE_H(h1, h0)
long long __attribute__((__may_alias__)) HEXAGON_Vect64
#define HEXAGON_V64_GET_UB3(v)
#define HEXAGON_V64_GET_H0(v)
#define HEXAGON_V64_GET_UD(v)
#define HEXAGON_V64_PUT_B5(v, new)
#define HEXAGON_V64_CREATE_B(b7, b6, b5, b4, b3, b2, b1, b0)
#define HEXAGON_V32_PUT_B0(v, new)
#define HEXAGON_V64_PUT_W1(v, new)
#define Q6V64_PUT_B6(v, new)
#define Q6V32_PUT_B3(v, new)
#define HEXAGON_V64_GET_UH1(v)
#define HEXAGON_V64_GET_B1(v)
unsigned int dstwidthoffset
unsigned int srcwidthoffset