(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
swaps-p8-1.c
       1  /* { dg-do compile { target le } } */
       2  /* { dg-require-effective-target powerpc_p8vector_ok } */
       3  /* { dg-options "-mdejagnu-cpu=power8 -O3" } */
       4  /* { dg-final { scan-assembler "lxvd2x" } } */
       5  /* { dg-final { scan-assembler "stxvd2x" } } */
       6  /* { dg-final { scan-assembler-not "xxpermdi" } } */
       7  
       8  void abort();
       9  
      10  #define N 16
      11  
      12  signed char ca[N] __attribute__((aligned(16)));
      13  signed char cb[] __attribute__((aligned(16)))
      14    = {8, 7, 6, 5, 4, 3, 2,  1,  0, -1, -2, -3, -4, -5, -6, -7};
      15  signed char cc[] __attribute__((aligned(16)))
      16    = {1, 1, 2, 2, 3, 3, 2,  2,  1,  1,  0,  0, -1, -1, -2, -2};
      17  
      18  __attribute__((noinline)) void foo ()
      19  {
      20    int i;
      21    for (i = 0; i < N; i++) {
      22      ca[i] = cb[i] - cc[i];
      23    }
      24  }
      25  
      26  int main ()
      27  {
      28    signed char cd[] = {7, 6, 4, 3, 1, 0, 0, -1, -1, -2, -2, -3, -3, -4, -4, -5};
      29    int i;
      30    foo ();
      31    for (i = 0; i < N; ++i)
      32      if (ca[i] != cd[i])
      33        abort ();
      34    return 0;
      35  }