libcpp, c, middle-end: Optimize initializers using #embed in C
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / vect-11a.c
blob2fdb49c53187fac172e455429d99c02f74a5253b
1 /* { dg-require-effective-target vect_int } */
2 /* { dg-require-effective-target vect_int_mult } */
3 /* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
5 #include <stdarg.h>
6 #include "tree-vect.h"
8 extern void abort (void);
10 unsigned int A[8] = {0x08000000,0xffffffff,0xff0000ff,0xf0000001,
11 0x08000000,0xffffffff,0xff0000ff,0xf0000001};
12 unsigned int B[8] = {0x08000000,0x08000001,0xff0000ff,0xf0000001,
13 0x08000000,0x08000001,0xff0000ff,0xf0000001};
14 unsigned int Answer[8] = {0,0xf7ffffff,0x0200fe01,0xe0000001,
15 0,0xf7ffffff,0x0200fe01,0xe0000001};
16 unsigned int C[8];
18 __attribute__ ((noinline))
19 void u ()
21 int i, j;
23 for (i=0; i<8; i++)
24 C[i] = A[i] * B[i];
25 #pragma GCC novector
26 for (i=0; i<8; i++)
27 if (C[i] != Answer[i])
28 abort ();
31 signed int D[8] = {0x08000000,0xffffffff,0xff0000ff,0xf0000001,
32 0x08000000,0xffffffff,0xff0000ff,0xf0000001};
33 signed int E[8] = {0x08000000,0x08000001,0xff0000ff,0xf0000001,
34 0x08000000,0x08000001,0xff0000ff,0xf0000001};
35 signed int Dnswer[8] = {0,0xf7ffffff,0x0200fe01, 0xe0000001,
36 0,0xf7ffffff,0x0200fe01, 0xe0000001};
37 signed int F[8];
39 __attribute__ ((noinline))
40 void s()
42 int i, j;
44 for (i=0; i<8; i++)
45 F[i] = D[i] * E[i];
46 #pragma GCC novector
47 for (i=0; i<8; i++)
48 if (F[i] != Dnswer[i])
49 abort ();
52 __attribute__ ((noinline))
53 int main1 ()
55 u();
56 s();
57 return 0;
60 int main (void)
62 check_vect ();
64 return main1 ();
67 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" } } */
68 /* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */