(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
vsx-extract-5.c
       1  /* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
       2  /* { dg-skip-if "" { powerpc*-*-darwin* } } */
       3  /* { dg-require-effective-target powerpc_p8vector_ok } */
       4  /* { dg-options "-O2 -mdejagnu-cpu=power8" } */
       5  
       6  /* { dg-final { scan-assembler-times "vspltw"      6 } } */
       7  /* { dg-final { scan-assembler-times "xvcvsxwdp"   4 } } */
       8  /* { dg-final { scan-assembler-times "xvcvuxwdp"   4 } } */
       9  /* { dg-final { scan-assembler-times "frsp\|xsrsp" 8 } } */
      10  /* { dg-final { scan-assembler-not   "mtvsrd"        } } */
      11  /* { dg-final { scan-assembler-not   "mtvsrwa"       } } */
      12  /* { dg-final { scan-assembler-not   "mtvsrwz"       } } */
      13  /* { dg-final { scan-assembler-not   "mfvsrd"        } } */
      14  /* { dg-final { scan-assembler-not   "mfvsrwz"       } } */
      15  
      16  #include <altivec.h>
      17  
      18  #ifndef TYPE
      19  #define TYPE float
      20  #endif
      21  
      22  TYPE
      23  foo_0s (vector int v)
      24  {
      25    int c = 0;
      26    int i = vec_extract (v, c);
      27    return (TYPE) i;
      28  }
      29  
      30  TYPE
      31  foo_1s (vector int v)
      32  {
      33    int c = 1;
      34    int i = vec_extract (v, c);
      35    return (TYPE) i;
      36  }
      37  
      38  TYPE
      39  foo_2s (vector int v)
      40  {
      41    int c = 2;
      42    int i = vec_extract (v, c);
      43    return (TYPE) i;
      44  }
      45  
      46  TYPE
      47  foo_3s (vector int v)
      48  {
      49    int c = 3;
      50    int i = vec_extract (v, c);
      51    return (TYPE) i;
      52  }
      53  
      54  TYPE
      55  foo_0u (vector unsigned int v)
      56  {
      57    int c = 0;
      58    unsigned int u = vec_extract (v, c);
      59    return (TYPE) u;
      60  }
      61  
      62  TYPE
      63  foo_1u (vector unsigned int v)
      64  {
      65    int c = 1;
      66    unsigned int u = vec_extract (v, c);
      67    return (TYPE) u;
      68  }
      69  
      70  TYPE
      71  foo_2u (vector unsigned int v)
      72  {
      73    int c = 2;
      74    unsigned int u = vec_extract (v, c);
      75    return (TYPE) u;
      76  }
      77  
      78  TYPE
      79  foo_3u (vector unsigned int v)
      80  {
      81    int c = 3;
      82    unsigned int u = vec_extract (v, c);
      83    return (TYPE) u;
      84  }