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