The _mm_extract_epi64() function is available only on x64, but according to the instruction set, its underlying pextrq instruction has the following parameters: PEXTRQ r/m64, xmm2, imm8 so the m64 mode is available also on 32-bit x86. The function is defined in smmintrin.h: #ifdef __x86_64__ extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_extract_epi64 (__m128i __X, const int __N) { return __builtin_ia32_vec_ext_v2di ((__v2di)__X, __N); } #endif
(In reply to Piotr Wyderski from comment #0) > The _mm_extract_epi64() function is available only on x64, but > according to the instruction set, its underlying pextrq instruction > has the following parameters: > > PEXTRQ r/m64, xmm2, imm8 > > so the m64 mode is available also on 32-bit x86. Not really. $ more pextrq.s pextrq $1, %xmm0, a $ gcc -c -m32 pextrq.s pextrq.s: Assembler messages: pextrq.s:1: Error: `pextrq' is only supported in 64-bit mode