Merge from mainline (165734:167278).
[official-gcc/graphite-test-results.git] / gcc / testsuite / gcc.target / i386 / funcspec-1.c
blobbd8e67d0c12d02503c59f0da7ae4288f9307054b
1 /* Test whether using target specific options, we can generate SSE2 code on
2 32-bit, which does not generate SSE2 by default, but still generate 387 code
3 for a function that doesn't use attribute((option)). */
4 /* { dg-do compile } */
5 /* { dg-require-effective-target ilp32 } */
6 /* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=i386" } } */
7 /* { dg-options "-O3 -ftree-vectorize -march=i386" } */
8 /* { dg-final { scan-assembler "addps\[ \t\]" } } */
9 /* { dg-final { scan-assembler "fsubs\[ \t\]" } } */
11 #ifndef SIZE
12 #define SIZE 1024
13 #endif
15 float a[SIZE] __attribute__((__aligned__(16)));
16 float b[SIZE] __attribute__((__aligned__(16)));
17 float c[SIZE] __attribute__((__aligned__(16)));
19 void sse_addnums (void) __attribute__ ((__target__ ("sse2")));
21 void
22 sse_addnums (void)
24 int i = 0;
25 for (; i < SIZE; ++i)
26 a[i] = b[i] + c[i];
29 void
30 i387_subnums (void)
32 int i = 0;
33 for (; i < SIZE; ++i)
34 a[i] = b[i] - c[i];