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