1 /* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
5 typedef int V
__attribute__((vector_size (4)));
6 unsigned int a
[N
* 2] __attribute__((aligned
));
7 unsigned int b
[N
* 2] __attribute__((aligned
));
10 __attribute__((noinline
, noclone
)) unsigned int
11 foo (unsigned int *a
, unsigned int *b
)
15 for (i
= 0; i
< N
; i
++)
17 unsigned int x
= a
[i
], y
= b
[i
];
35 __attribute__((noinline
, noclone
)) unsigned int
36 bar (unsigned int *a
, unsigned int *b
)
40 for (i
= 0; i
< N
; i
++)
42 unsigned int x
= a
[i
], y
= b
[i
];
62 baz (unsigned int *a
, unsigned int *b
,
63 unsigned int (*fn
) (unsigned int *, unsigned int *))
66 for (i
= -64; i
< 0; i
++)
76 for (; i
< N
+ 64; i
++)
81 if (fn (a
, b
) != -512U - (N
- 32) * 16U + 32 * 127U)
84 for (i
= -64; i
< 0; i
++)
85 if (a
[i
] != 19 || b
[i
] != 17)
89 if (a
[i
] != (i
- 512U < 32U ? i
- 512U + 127 : i
- 512U - 16)
90 || b
[i
] != (i
- 512U < 32U ? i
* 2U : i
+ 1U))
93 for (; i
< N
+ 64; i
++)
94 if (a
[i
] != 27 || b
[i
] != 19)
103 baz (a
+ 512, b
+ 512, foo
);
104 baz (a
+ 512, b
+ 512, bar
);
105 baz (a
+ 512 + 1, b
+ 512 + 1, foo
);
106 baz (a
+ 512 + 1, b
+ 512 + 1, bar
);
107 baz (a
+ 512 + 31, b
+ 512 + 31, foo
);
108 baz (a
+ 512 + 31, b
+ 512 + 31, bar
);
109 baz (a
+ 512 + 1, b
+ 512, foo
);
110 baz (a
+ 512 + 1, b
+ 512, bar
);
111 baz (a
+ 512 + 31, b
+ 512, foo
);
112 baz (a
+ 512 + 31, b
+ 512, bar
);
113 baz (a
+ 512, b
+ 512 + 1, foo
);
114 baz (a
+ 512, b
+ 512 + 1, bar
);
115 baz (a
+ 512, b
+ 512 + 31, foo
);
116 baz (a
+ 512, b
+ 512 + 31, bar
);
120 /* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */