(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
fold-vec-extract-double.p9.c
       1  /* Verify that overloaded built-ins for vec_extract() with
       2     double inputs produce the right code.  */
       3  
       4  /* { dg-do compile { target { p9vector_hw } } } */
       5  /* { dg-require-effective-target p9vector_hw } */
       6  /* { dg-options "-mdejagnu-cpu=power9 -O2 " } */
       7  
       8  /* { dg-final { scan-assembler-times {\mxxlor\M} 2 { target lp64} } } */
       9  /* { dg-final { scan-assembler-times {\mrldic\M} 1 { target lp64} } } */
      10  /* { dg-final { scan-assembler-times {\mmtvsrdd\M} 1 { target lp64} } } */
      11  /* { dg-final { scan-assembler-times {\mvslo\M} 1 { target lp64} } } */
      12  
      13  #include <altivec.h>
      14  
      15  double
      16  testd_var (vector double vd2, signed int si)
      17  {
      18    return vec_extract (vd2, si);
      19  }
      20  
      21  #ifdef __BIG_ENDIAN__
      22  #define LEFTMOST_ELEMENT_INDEX 0
      23  #else
      24  #define LEFTMOST_ELEMENT_INDEX 1
      25  #endif
      26  
      27  double
      28  testd_cst (vector double vd2)
      29  {
      30    return vec_extract (vd2, LEFTMOST_ELEMENT_INDEX);
      31  }
      32