2 /* { dg-require-effective-target sse4a } */
3 /* { dg-options "-O2 -msse4a" } */
5 #include "sse4a-check.h"
16 sse4a_test_extrq (long long in
)
19 long long index_length
, pad
;
21 index_length
= 0x0000000000000810LL
;
23 v1
= _mm_set_epi64x (pad
, in
);
24 v2
= _mm_set_epi64x (pad
, index_length
);
25 v_out
.vec
= _mm_extract_si64 (v1
, v2
);
30 sse4a_test_extrqi (long long in
)
35 v1
= _mm_set_epi64x (pad
, in
);
36 v_out
.vec
= _mm_extracti_si64 (v1
, (unsigned int) 0x10,(unsigned int) 0x08);
40 static chk (long long i1
, long long i2
)
48 long long vals_in
[5] =
57 long long vals_out
[5] =
73 for (i
= 0; i
< 5; i
+= 1)
75 out
= sse4a_test_extrq (vals_in
[i
]);
76 fail
+= chk(out
, vals_out
[i
]);
78 out
= sse4a_test_extrqi (vals_in
[i
]);
79 fail
+= chk(out
, vals_out
[i
]);