Use conditional internal functions in if-conversion
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / sse-addss-1.c
blob28224c982388302b7f7516acc292799456900317
1 /* { dg-do run } */
2 /* { dg-options "-O3 -mpower8-vector -Wno-psabi" } */
3 /* { dg-require-effective-target lp64 } */
4 /* { dg-require-effective-target p8vector_hw } */
6 #define NO_WARN_X86_INTRINSICS 1
8 #ifndef CHECK_H
9 #define CHECK_H "sse-check.h"
10 #endif
12 #include CHECK_H
14 #ifndef TEST
15 #define TEST sse_test_addss_1
16 #endif
18 #include <xmmintrin.h>
20 static __m128
21 __attribute__((noinline, unused))
22 test (__m128 s1, __m128 s2)
24 return _mm_add_ss (s1, s2);
27 static void
28 TEST (void)
30 union128 u, s1, s2;
31 float e[4];
33 s1.x = _mm_set_ps (24.43, 68.346, 43.35, 546.46);
34 s2.x = _mm_set_ps (1.17, 2.16, 3.15, 4.14);
35 u.x = test (s1.x, s2.x);
37 e[0] = s1.a[0] + s2.a[0];
38 e[1] = s1.a[1];
39 e[2] = s1.a[2];
40 e[3] = s1.a[3];
42 if (check_union128 (u, e))
43 #if DEBUG
45 printf ("sse_test_addss_1; check_union128 failed\n");
46 printf ("\t add ([%f,%f,%f,%f], [%f,%f,%f,%f]) -> [%f,%f,%f,%F]\n",
47 s1.x[0], s1.x[1], s1.x[2], s1.x[3],
48 s2.x[0], s2.x[1], s2.x[2], s2.x[3],
49 u.x[0], u.x[1], u.x[2], u.x[3]);
50 printf ("\t expect [%f,%f,%f%f]\n",
51 e[0], e[1], e[2], e[3]);
53 #else
54 abort ();
55 #endif