1 /* { dg-xfail-run-if "" { { i?86-*-* x86_64-*-* } && ia32 } } */
2 /* { dg-require-effective-target vect_double } */
3 /* { dg-add-options ieee } */
4 /* { dg-additional-options "-fno-fast-math" } */
8 #define N (VECTOR_BITS * 17)
10 double __attribute__ ((noinline
, noclone
))
11 reduc_plus_double (double *a
)
17 for (int i
= 0; i
< N
; i
+= 4)
24 return r1
* r2
* r3
* r4
;
27 int __attribute__ ((optimize (1)))
32 for (int i
= 0; i
< N
; i
++)
34 a
[i
] = (i
* 0.1) * (i
& 1 ? 1 : -1);
36 asm volatile ("" ::: "memory");
38 double res
= reduc_plus_double (a
);
39 if (res
!= r
[0] * r
[1] * r
[2] * r
[3])
44 /* { dg-final { scan-tree-dump-times "VECT_PERM_EXPR" 0 "vect" } } */