OSDN Git Service

2007-12-06 Zdenek Dvorak <ook@ucw.cz>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / vect / vect-11a.c
1 /* { dg-require-effective-target vect_int } */
2 /* { dg-require-effective-target vect_int_mult } */
3
4 #include <stdarg.h>
5 #include "tree-vect.h"
6
7 extern void abort (void);
8
9 __attribute__ ((noinline))
10 void u ()
11 {  
12   unsigned int A[4] = {0x08000000,0xffffffff,0xff0000ff,0xf0000001};
13   unsigned int B[4] = {0x08000000,0x08000001,0xff0000ff,0xf0000001};
14   unsigned int Answer[4] = {0,0xf7ffffff,0x0200fe01,0xe0000001};
15   unsigned int C[4];
16   int i, j;
17   
18   for (i=0; i<4; i++)
19     C[i] = A[i] * B[i];
20   for (i=0; i<4; i++)
21     if (C[i] != Answer[i])
22       abort ();
23 }
24
25 __attribute__ ((noinline))
26 void s()
27 {
28   signed int A[4] = {0x08000000,0xffffffff,0xff0000ff,0xf0000001};
29   signed int B[4] = {0x08000000,0x08000001,0xff0000ff,0xf0000001};
30   signed int Answer[4] = {0,0xf7ffffff,0x0200fe01, 0xe0000001};
31   signed int C[4];
32   int i, j;
33   
34   for (i=0; i<4; i++)
35     C[i] = A[i] * B[i];
36   for (i=0; i<4; i++)
37     if (C[i] != Answer[i])
38       abort ();
39 }
40
41 __attribute__ ((noinline))
42 int main1 ()
43 {
44   u();
45   s();
46   return 0;
47 }
48
49 int main (void)
50
51   check_vect ();
52   
53   return main1 ();
54 }
55
56 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" } } */
57 /* { dg-final { cleanup-tree-dump "vect" } } */