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)));
8 foo0 (__vector_quad
*dst
, vec_t
*vec
, __vector_pair
*pvecp
)
11 __vector_pair vecp0
= *pvecp
;
14 __builtin_mma_xvf64ger (&acc
, vecp0
, vec1
);
15 __builtin_mma_xvf64gerpp (&acc
, vecp0
, vec1
);
16 __builtin_mma_xvf64gerpn (&acc
, vecp0
, vec1
);
21 foo1 (__vector_quad
*dst
, __vector_quad
*src
, vec_t
*vec
, __vector_pair
*pvecp
)
24 __vector_pair vecp0
= *pvecp
;
28 __builtin_mma_xvf64gernp (&acc
, vecp0
, vec1
);
29 __builtin_mma_xvf64gernn (&acc
, vecp0
, vec1
);
34 foo2 (__vector_quad
*dst
, vec_t
*vec
, __vector_pair
*pvecp
)
37 __vector_pair vecp0
= *pvecp
;
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);
46 foo3 (__vector_quad
*dst
, __vector_quad
*src
, vec_t
*vec
, __vector_pair
*pvecp
)
49 __vector_pair vecp0
= *pvecp
;
53 __builtin_mma_pmxvf64gernp (&acc
, vecp0
, vec1
, 15, 3);
54 __builtin_mma_pmxvf64gernn (&acc
, vecp0
, vec1
, 15, 3);
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 } } */