1 2 typedef signed char *__restrict__ pRSINT8; 3 typedef signed short *__restrict__ pRSINT16; 4 typedef signed int *__restrict__ pRSINT32; 5 typedef signed long long *__restrict__ pRSINT64; 6 7 typedef unsigned char *__restrict__ pRUINT8; 8 typedef unsigned short *__restrict__ pRUINT16; 9 typedef unsigned int *__restrict__ pRUINT32; 10 typedef unsigned long long *__restrict__ pRUINT64; 11 12 typedef signed short SH; 13 typedef unsigned short UH; 14 typedef signed int SS; 15 typedef unsigned int US; 16 typedef signed long long SLL; 17 typedef unsigned long long ULL; 18 19 #define DEF_MULLB(sign) \ 20 void widen_mult_##sign##b (pR##sign##INT##16 a, \ 21 pR##sign##INT##8 b, \ 22 pR##sign##INT##8 c) \ 23 { \ 24 int i; \ 25 for (i=0; i<N; i++) \ 26 a[i] = (sign##H)b[i] * c[i]; \ 27 } 28 29 #define DEF_MULLH(sign) \ 30 void widen_mult_##sign##h (pR##sign##INT##32 a, \ 31 pR##sign##INT##16 b, \ 32 pR##sign##INT##16 c) \ 33 { \ 34 int i; \ 35 for (i=0; i<N; i++) \ 36 a[i] = (sign##S)b[i] * c[i]; \ 37 } 38 #define DEF_MULLS(sign) \ 39 void widen_mult_##sign##s (pR##sign##INT##64 a, \ 40 pR##sign##INT##32 b, \ 41 pR##sign##INT##32 c) \ 42 { \ 43 int i; \ 44 for (i=0; i<N; i++) \ 45 a[i] = (sign##LL)b[i] * c[i]; \ 46 } 47 48 #define DEF_MULL2(x) x (S) \ 49 x (U) 50