3 /* { dg-options "-O2 -mavx -mno-accumulate-outgoing-args" } */
4 /* { dg-require-effective-target avx } */
6 #define CHECK_H "avx-check.h"
11 typedef double V
__attribute__ ((vector_size (32)));
13 __attribute__((noinline
, noclone
)) void
18 asm volatile ("" : : "r" (p
) : "memory");
21 __attribute__((noinline
, noclone
)) V
22 foo (double *x
, int a
, int b
, int c
, int d
, int e
, int f
, unsigned *y
)
24 bar (__builtin_alloca (a
+ b
+ c
+ d
+ e
+ f
));
25 V r
= { x
[y
[0]], x
[y
[1]], x
[y
[2]], x
[y
[3]] };
33 unsigned b
[4] = { 5, 0, 15, 7 };
35 for (i
= 0; i
< 16; i
++)
37 V v
= foo (a
, 0, 30, 0, 0, 8, 0, b
);
38 if (v
[0] != 5.5 || v
[1] != 0.5 || v
[2] != 15.5 || v
[3] != 7.5)