diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.target/aarch64/vect-mull.x')
-rw-r--r-- | gcc-4.9/gcc/testsuite/gcc.target/aarch64/vect-mull.x | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vect-mull.x b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vect-mull.x new file mode 100644 index 000000000..39ec43d77 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vect-mull.x @@ -0,0 +1,49 @@ + +typedef signed char *__restrict__ pRSINT8; +typedef signed short *__restrict__ pRSINT16; +typedef signed int *__restrict__ pRSINT32; +typedef signed long long *__restrict__ pRSINT64; + +typedef unsigned char *__restrict__ pRUINT8; +typedef unsigned short *__restrict__ pRUINT16; +typedef unsigned int *__restrict__ pRUINT32; +typedef unsigned long long *__restrict__ pRUINT64; + +typedef signed short SH; +typedef unsigned short UH; +typedef signed int SS; +typedef unsigned int US; +typedef signed long long SLL; +typedef unsigned long long ULL; + +#define DEF_MULLB(sign) \ + void widen_mult_##sign##b (pR##sign##INT##16 a, \ + pR##sign##INT##8 b, \ + pR##sign##INT##8 c) \ + { \ + int i; \ + for (i=0; i<N; i++) \ + a[i] = (sign##H)b[i] * c[i]; \ + } + +#define DEF_MULLH(sign) \ + void widen_mult_##sign##h (pR##sign##INT##32 a, \ + pR##sign##INT##16 b, \ + pR##sign##INT##16 c) \ + { \ + int i; \ + for (i=0; i<N; i++) \ + a[i] = (sign##S)b[i] * c[i]; \ + } +#define DEF_MULLS(sign) \ + void widen_mult_##sign##s (pR##sign##INT##64 a, \ + pR##sign##INT##32 b, \ + pR##sign##INT##32 c) \ + { \ + int i; \ + for (i=0; i<N; i++) \ + a[i] = (sign##LL)b[i] * c[i]; \ + } + +#define DEF_MULL2(x) x (S) \ + x (U) |