1 /* { dg-do compile { target { powerpc64le-*-* } } } */ 2 /* { dg-options "-mdejagnu-cpu=power8 -O3" } */ 3 /* { dg-final { scan-assembler "lxvd2x" } } */ 4 /* { dg-final { scan-assembler "stxvd2x" } } */ 5 /* { dg-final { scan-assembler-not "xxpermdi" } } */ 6 7 void abort (); 8 9 #define N 4096 10 int ca[N] __attribute__((aligned(16))); 11 int cb[N] __attribute__((aligned(16))); 12 int cc[N] __attribute__((aligned(16))); 13 int cd[N] __attribute__((aligned(16))); 14 foo()15__attribute__((noinline)) void foo () 16 { 17 int i; 18 for (i = 0; i < N; i++) { 19 ca[i] = (cb[i] + cc[i]) * cd[i]; 20 } 21 } 22 init()23__attribute__((noinline)) void init () 24 { 25 int i; 26 for (i = 0; i < N; ++i) { 27 cb[i] = 3 * i - 2048; 28 cc[i] = -5 * i + 93; 29 cd[i] = i % 2 ? 1 : -1; 30 } 31 } 32 main()33int main () 34 { 35 int i; 36 init (); 37 foo (); 38 for (i = 0; i < N; ++i) 39 if (i % 2 == 1 && ca[i] != -2 * i - 1955) 40 abort (); 41 else if (i % 2 == 0 && ca[i] != 1955 + 2 * i) 42 abort (); 43 return 0; 44 } 45