1 /* { dg-do run { target i?86-*-* x86_64-*-* } } */
2 /* { dg-options "-O2 -msse4a" } */
5 #include "../../gcc.dg/i386-cpuid.h"
7 static void sse4a_test (void);
18 unsigned long cpu_facilities;
20 cpu_facilities = i386_extended_cpuid_ecx ();
22 /* Run SSE4a test only if host has SSE4a support. */
23 if ((cpu_facilities & bit_SSE4a))
30 sse4a_test_extrq (long long in)
33 long long index_length, pad;
35 index_length = 0x0000000000000810;
37 v1 = _mm_set_epi64x (pad, in);
38 v2 = _mm_set_epi64x (pad, index_length);
39 v_out.vec = _mm_extract_si64 (v1, v2);
44 sse4a_test_extrqi (long long in)
49 v1 = _mm_set_epi64x (pad, in);
50 v_out.vec = _mm_extracti_si64 (v1, (unsigned int) 0x10,(unsigned int) 0x08);
54 static chk (long long i1, long long i2)
62 long long vals_in[5] =
71 long long vals_out[5] =
87 for (i = 0; i < 5; i += 1)
89 out = sse4a_test_extrq (vals_in[i]);
90 fail += chk(out, vals_out[i]);
92 out = sse4a_test_extrqi (vals_in[i]);
93 fail += chk(out, vals_out[i]);