(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
swaps-p8-10.c
       1  /* { dg-do run } */
       2  /* { dg-require-effective-target p8vector_hw } */
       3  /* { dg-options "-mdejagnu-cpu=power8 -O3" } */
       4  
       5  void abort ();
       6  
       7  #define N 4096
       8  int ca[N] __attribute__((aligned(16)));
       9  int cb[N] __attribute__((aligned(16)));
      10  int cc[N] __attribute__((aligned(16)));
      11  int cd[N] __attribute__((aligned(16)));
      12  
      13  __attribute__((noinline)) void foo ()
      14  {
      15    int i;
      16    for (i = 0; i < N; i++) {
      17      ca[i] = ((cb[i] + cc[i]) * cd[i]) >> 3;
      18    }
      19  }
      20  
      21  __attribute__((noinline)) void init ()
      22  {
      23    int i;
      24    for (i = 0; i < N; ++i) {
      25      cb[i] = 3 * i - 2048;
      26      cc[i] = -5 * i + 93;
      27      cd[i] = i % 2 ? 1 : -1;
      28    }
      29  }
      30  
      31  int main ()
      32  {
      33    int i;
      34    init ();
      35    foo ();
      36    for (i = 0; i < N; ++i)
      37      if (i % 2 == 1 && ca[i] != (-2 * i - 1955) >> 3)
      38        abort ();
      39      else if (i % 2 == 0 && ca[i] != (1955 + 2 * i) >> 3)
      40        abort ();
      41    return 0;
      42  }