2 /* { dg-options "-O3 -mpower8-vector" } */
3 /* { dg-require-effective-target lp64 } */
4 /* { dg-require-effective-target p8vector_hw } */
6 #define NO_WARN_X86_INTRINSICS 1
9 #define CHECK_H "sse-check.h"
15 #define TEST sse_test_pavgw_1
18 #include <xmmintrin.h>
21 __attribute__((noinline
, unused
))
22 test (__m64 s1
, __m64 s2
)
24 return _mm_avg_pu16 (s1
, s2
);
30 __m64_union u
, s1
, s2
;
34 s1
.as_m64
= _mm_set_pi16 (1, 2, 3, 4);
35 s2
.as_m64
= _mm_set_pi16 (11, 98, 76, -100);
36 u
.as_m64
= test (s1
.as_m64
, s2
.as_m64
);
38 for (i
= 0; i
< 4; i
++)
40 tmp
= (unsigned short) s1
.as_short
[i
] + (unsigned short) s2
.as_short
[i
]
42 e
.as_short
[i
] = tmp
>> 1;
45 if (u
.as_m64
!= e
.as_m64
)
48 printf ("test_mmx_pavgw_1; failed\n");
49 printf ("\t _mm_avg_pu16 (%llx, %llx) -> %llx != %llx\n", s1
.as_m64
,
50 s2
.as_m64
, u
.as_m64
, e
.as_m64
);