(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
fold-vec-extract-longlong.p9.c
       1  /* Verify that overloaded built-ins for vec_extract() with long long
       2     inputs produce the right code for a P9 target.  */
       3  
       4  /* { dg-do compile { target lp64 } } */
       5  /* { dg-require-effective-target powerpc_p9vector_ok } */
       6  /* { dg-options "-mdejagnu-cpu=power9 -O2" } */
       7  
       8  // targeting P9 (LE), six tests.
       9  // p9 constants: mfvsrd
      10  // p9 vars:  xori, rldic, mtvsrdd, vslo, mfvsrd
      11  
      12  /* results. */
      13  /* { dg-final { scan-assembler-times {\mxori\M} 3 { target le } } } */
      14  /* { dg-final { scan-assembler-times {\mrldic\M} 3 } } */
      15  /* { dg-final { scan-assembler-times {\mmtvsrdd\M} 3 } } */
      16  /* { dg-final { scan-assembler-times {\mvslo\M} 3 } } */
      17  /* { dg-final { scan-assembler-times {\mmfvsrd\M} 6 { target le } } } */
      18  /* { dg-final { scan-assembler-times {\mmfvsrd\M} 3 { target be } } } */
      19  /* { dg-final { scan-assembler-times {\mmfvsrld\M} 3 { target be } } } */
      20  
      21  #include <altivec.h>
      22  
      23  unsigned long long
      24  testbl_var (vector bool long long vbl2, signed int si)
      25  {
      26    return vec_extract (vbl2, si);
      27  }
      28  
      29  signed long long
      30  testsl_var (vector signed long long vsl2, signed int si)
      31  {
      32    return vec_extract (vsl2, si);
      33  }
      34  
      35  unsigned long long
      36  testul_var (vector unsigned long long vul2, signed int si)
      37  {
      38    return vec_extract (vul2, si);
      39  }
      40  
      41  unsigned long long
      42  testbl_cst (vector bool long long vbl2)
      43  {
      44    return vec_extract (vbl2, 1);
      45  }
      46  
      47  signed long long
      48  testsl_cst (vector signed long long vsl2)
      49  {
      50    return vec_extract (vsl2, 1);
      51  }
      52  
      53  unsigned long long
      54  testul_cst (vector unsigned long vul2)
      55  {
      56    return vec_extract (vul2, 1);
      57  }
      58