(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
swaps-p8-3.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 4096
      11  signed char ca[N] __attribute__((aligned(16)));
      12  signed char cb[N] __attribute__((aligned(16)));
      13  signed char cc[N] __attribute__((aligned(16)));
      14  
      15  __attribute__((noinline)) void foo ()
      16  {
      17    int i;
      18    for (i = 0; i < N; i++) {
      19      ca[i] = cb[i] - cc[i];
      20    }
      21  }
      22  
      23  __attribute__((noinline)) void init ()
      24  {
      25    int i, ii;
      26    for (i = 0, ii = 0; i < N; ++i, ii = (ii + 1) % 128) {
      27      cb[i] = ii - 128;
      28      cc[i] = ii/2 - 64;
      29    }
      30  }
      31  
      32  int main ()
      33  {
      34    int i, ii;
      35    init ();
      36    foo ();
      37    for (i = 0; i < N; ++i) {
      38      ii = i % 128;
      39      if (ca[i] != ii - ii/2 - 64)
      40        abort ();
      41    }
      42    return 0;
      43  }