TL: DR: MMX-> SSE2 conversion indices took non-x names _mm_set/set1_epi64.
These are all guesses based on current function names, known history, and some compiler behavior:
The first Intel SIMD features were for MMX. __m64is the MMX equivalent of SSE2 __m128iand AVX2 __m256i. There were no 64-bit x86 processors at that time, so the widest setwas __m64 _mm_set_pi32 (int e1, int e0). According to the built-in finder, for movq mm0, raxdoes not exist. I think you can / should just drop int64_tin __m64. (Although the last time I experimented last year or so, gcc or clang (I forgot that) did a little work on optimizing the MMX asm. Support for the Aging compiler is another reason to avoid MMX for new projects.)
SSE2 2001 , AMD64/x86-64 Intel . ( , IA-64/Itanium x86). , ,
__m128i _mm_set1_epi64 (__m64 a)
__m128i _mm_set1_epi64x (__int64 a), , . ( , __int64 int64_t <stdint.h>. 64- .)
epi Extended (?) Packed Integer. epi pi SSE, MMX. , , intrinsics , ( , , ). _mm_packs_epi32 (packssdw) _mm_unpackhi_epi16 (punpckhwd). PMOVZX , _mm_cvtepu8_epi32 (pmovzxbd), _mm_cvtepu8_epi64 (pmovzxbq ..
, , 64- 32- , Intel . IIRC, 64x 64- . 64x / 64- , x _mm_add_epi64 - .
64- _mm256_set1_epi64x , , 64x, 32x.
(, Godbolt, -m32. , asm int64_t __m64 _mm_set 32- .)