Merge from mainline (167278:168000).
[official-gcc/graphite-test-results.git] / gcc / testsuite / gcc.dg / vect / slp-12b.c
blob863652a5b8ad01cd4da4b8b6852f22027e1680cb
1 /* { dg-require-effective-target vect_uintfloat_cvt } */
3 #include <stdarg.h>
4 #include "tree-vect.h"
6 #define N 64
8 unsigned int in[N*8] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
10 int
11 main1 ()
13 int i;
14 float out2[N*8], fa[N*4];
16 for (i = 0; i < N; i++)
18 out2[i*2] = (float) (in[i*2] * 2 + 11) ;
19 out2[i*2 + 1] = (float) (in[i*2 + 1] * 3 + 7);
21 fa[i] = (float) in[i*2+1];
24 /* check results: */
25 for (i = 0; i < N; i++)
27 if (out2[i*2] != (float) (in[i*2] * 2 + 11)
28 || out2[i*2 + 1] != (float) (in[i*2 + 1] * 3 + 7)
29 || fa[i] != (float) in[i*2+1])
30 abort ();
34 return 0;
37 int main (void)
39 check_vect ();
41 main1 ();
43 return 0;
46 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" {target { vect_strided_wide && vect_int_mult } } } } */
47 /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" {target { { ! { vect_int_mult }} || { ! {vect_strided_wide}}} } } } */
48 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" {target { vect_strided_wide && vect_int_mult } } } } */
49 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" {target { { ! { vect_int_mult }} || { ! {vect_strided_wide}}} } } } */
50 /* { dg-final { cleanup-tree-dump "vect" } } */