(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
mma-builtin-2.c
       1  /* { dg-do compile } */
       2  /* { dg-require-effective-target power10_ok } */
       3  /* { dg-options "-Wno-psabi -mdejagnu-cpu=power10 -O2" } */
       4  
       5  typedef unsigned char  vec_t __attribute__((vector_size(16)));
       6  
       7  void
       8  foo0 (__vector_quad *dst, vec_t *vec, __vector_pair *pvecp)
       9  {
      10    __vector_quad acc;
      11    __vector_pair vecp0 = *pvecp;
      12    vec_t vec1 = vec[1];
      13  
      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;
      18  }
      19  
      20  void
      21  foo1 (__vector_quad *dst, __vector_quad *src, vec_t *vec, __vector_pair *pvecp)
      22  {
      23    __vector_quad acc;
      24    __vector_pair vecp0 = *pvecp;
      25    vec_t vec1 = vec[1];
      26  
      27    acc = src[0];
      28    __builtin_mma_xvf64gernp (&acc, vecp0, vec1);
      29    __builtin_mma_xvf64gernn (&acc, vecp0, vec1);
      30    dst[0] = acc;
      31  }
      32  
      33  void
      34  foo2 (__vector_quad *dst, vec_t *vec, __vector_pair *pvecp)
      35  {
      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;
      43  }
      44  
      45  void
      46  foo3 (__vector_quad *dst, __vector_quad *src, vec_t *vec, __vector_pair *pvecp)
      47  {
      48    __vector_quad acc;
      49    __vector_pair vecp0 = *pvecp;
      50    vec_t vec1 = vec[1];
      51  
      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;
      56  }
      57  
      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 } } */