[RS6000] Tests that use int128_t and -m32
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / mma-builtin-2.c
blob0230d727657f1f935ad3dcbbfad44a17e4a78418
1 /* { dg-do compile } */
2 /* { dg-require-effective-target power10_ok } */
3 /* { dg-options "-Wno-psabi -mdejagnu-cpu=power10 -O2" } */
5 typedef unsigned char vec_t __attribute__((vector_size(16)));
7 void
8 foo0 (__vector_quad *dst, vec_t *vec, __vector_pair *pvecp)
10 __vector_quad acc;
11 __vector_pair vecp0 = *pvecp;
12 vec_t vec1 = vec[1];
14 __builtin_mma_xvf64ger (&acc, vecp0, vec1);
15 __builtin_mma_xvf64gerpp (&acc, vecp0, vec1);
16 __builtin_mma_xvf64gerpn (&acc, vecp0, vec1);
17 dst[0] = acc;
20 void
21 foo1 (__vector_quad *dst, __vector_quad *src, vec_t *vec, __vector_pair *pvecp)
23 __vector_quad acc;
24 __vector_pair vecp0 = *pvecp;
25 vec_t vec1 = vec[1];
27 acc = src[0];
28 __builtin_mma_xvf64gernp (&acc, vecp0, vec1);
29 __builtin_mma_xvf64gernn (&acc, vecp0, vec1);
30 dst[0] = acc;
33 void
34 foo2 (__vector_quad *dst, vec_t *vec, __vector_pair *pvecp)
36 __vector_quad acc;
37 __vector_pair vecp0 = *pvecp;
38 vec_t vec1 = vec[1];
39 __builtin_mma_pmxvf64ger (&acc, vecp0, vec1, 15, 3);
40 __builtin_mma_pmxvf64gerpp (&acc, vecp0, vec1, 15, 3);
41 __builtin_mma_pmxvf64gerpn (&acc, vecp0, vec1, 15, 3);
42 dst[1] = acc;
45 void
46 foo3 (__vector_quad *dst, __vector_quad *src, vec_t *vec, __vector_pair *pvecp)
48 __vector_quad acc;
49 __vector_pair vecp0 = *pvecp;
50 vec_t vec1 = vec[1];
52 acc = src[0];
53 __builtin_mma_pmxvf64gernp (&acc, vecp0, vec1, 15, 3);
54 __builtin_mma_pmxvf64gernn (&acc, vecp0, vec1, 15, 3);
55 dst[1] = acc;
58 /* { dg-final { scan-assembler-times {\mxxmfacc\M} 4 } } */
59 /* { dg-final { scan-assembler-times {\mxxmtacc\M} 2 } } */
60 /* { dg-final { scan-assembler-times {\mlxv\M} 4 } } */
61 /* { dg-final { scan-assembler-times {\mlxvp\M} 8 } } */
62 /* { dg-final { scan-assembler-times {\mstxvp\M} 8 } } */
63 /* { dg-final { scan-assembler-times {\mxvf64ger\M} 1 } } */
64 /* { dg-final { scan-assembler-times {\mxvf64gerpp\M} 1 } } */
65 /* { dg-final { scan-assembler-times {\mxvf64gerpn\M} 1 } } */
66 /* { dg-final { scan-assembler-times {\mxvf64gernp\M} 1 } } */
67 /* { dg-final { scan-assembler-times {\mxvf64gernn\M} 1 } } */
68 /* { dg-final { scan-assembler-times {\mpmxvf64ger\M} 1 } } */
69 /* { dg-final { scan-assembler-times {\mpmxvf64gerpp\M} 1 } } */
70 /* { dg-final { scan-assembler-times {\mpmxvf64gerpn\M} 1 } } */
71 /* { dg-final { scan-assembler-times {\mpmxvf64gernp\M} 1 } } */
72 /* { dg-final { scan-assembler-times {\mpmxvf64gernn\M} 1 } } */