OSDN Git Service

Add NIOS2 support. Code from SourceyG++.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / vect / bb-slp-17.c
1 /* { dg-require-effective-target vect_int } */
2
3 #include <stdarg.h>
4 #include <stdio.h>
5 #include "tree-vect.h"
6
7 #define N 16 
8
9 unsigned int b[N];
10 unsigned int out[N];
11 unsigned int in[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
12
13 __attribute__ ((noinline)) int
14 main1 (unsigned int x, unsigned int y)
15 {
16   int i;
17   unsigned int a0, a1, a2, a3;
18
19   if (x > y)
20     x = x + y;
21   else
22     y = x;
23
24   a0 = in[0] + 23;
25   a1 = in[1] + 142;
26   a2 = in[2] + 2;
27   a3 = in[3] + 31;
28  
29   b[0] = a0;
30   b[1] = a1;
31  
32   out[0] = a0 * x;
33   out[1] = a1 * y;
34   out[2] = a2 * x;
35   out[3] = a3 * y;
36
37   /* Check results.  */
38   if (out[0] != (in[0] + 23) * x
39       || out[1] != (in[1] + 142) * y
40       || out[2] != (in[2] + 2) * x
41       || out[3] != (in[3] + 31) * y
42       || b[0] != in[0] + 23
43       || b[1] != in[1] + 142)
44     abort();
45
46   return 0;
47 }
48
49 int main (void)
50 {
51   check_vect ();
52
53   main1 (2, 3);
54
55   return 0;
56 }
57
58 /* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 1 "slp" { target vect_int_mult } } } */
59 /* { dg-final { cleanup-tree-dump "slp" } } */
60