[RS6000] dg-do !compile and scan-assembler
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / sse-shufps-1.c
blob29658b7c7c4c0b7ece904d14050fae1fc5aafb99
1 /* { dg-do run } */
2 /* { dg-options "-O3 -mpower8-vector -Wno-psabi" } */
3 /* { dg-require-effective-target p8vector_hw } */
5 #define NO_WARN_X86_INTRINSICS 1
7 #ifndef CHECK_H
8 #define CHECK_H "sse-check.h"
9 #endif
11 #include CHECK_H
13 #ifndef TEST
14 #define TEST sse_test_shufps_1
15 #endif
17 #define MASK 0xab
19 #include <xmmintrin.h>
21 float select4(const float *src, unsigned int control)
23 switch(control) {
24 case 0:
25 return src[0];
26 case 1:
27 return src[1];
28 case 2:
29 return src[2];
30 case 3:
31 return src[3];
33 return -1;
36 static __m128
37 __attribute__((noinline, unused))
38 test (__m128 s1, __m128 s2)
40 return _mm_shuffle_ps (s1, s2, MASK);
43 static void TEST (void)
45 union128 u, s1, s2;
46 float e[4] =
47 { 0.0 };
49 s1.x = _mm_set_ps (1.1, 1.2, 1.3, 1.4);
50 s2.x = _mm_set_ps (2.1, 2.2, 2.3, 2.4);
51 u.x = test (s1.x, s2.x);
53 e[0] = select4 (s1.a, (MASK >> 0) & 0x3);
54 e[1] = select4 (s1.a, (MASK >> 2) & 0x3);
55 e[2] = select4 (s2.a, (MASK >> 4) & 0x3);
56 e[3] = select4 (s2.a, (MASK >> 6) & 0x3);
58 if (check_union128 (u, e))
59 abort ();