__int64
değerini SSE ile kullanmak için __m64
değerine dönüştürmenin uygun yolu nedir?'uzun uzun' (veya __int64) __m64'a dönüştürme
6
A
cevap
6
gcc ile sadece _mm_set_pi64x
kullanabilirsiniz: tüm derleyiciler _mm_set_pi64x
mmintrin.h
tanımlanan sahip
#include <mmintrin.h>
__int64 i = 0x123456LL;
__m64 v = _mm_set_pi64x(i);
Not. gcc için böyle tanımladı: Eğer örneğin tercih ediyorsanız muhtemelen sadece döküm kullanabilirsiniz düşündürmektedir
extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_set_pi64x (long long __i)
{
return (__m64) __i;
}
Başarısız
__int64 i = 0x123456LL;
__m64 v = (__m64)i;
ki böyle sadece bir birlik kullanabilir ve içsel kendi uygulayabileceğiniz son çare olarak, Visual C/C++ gibi bir aşırı seçici derleyici ile takılıp:
#ifdef _MSC_VER // if Visual C/C++
__inline __m64 _mm_set_pi64x (const __int64 i) {
union {
__int64 i;
__m64 v;
} u;
u.i = i;
return u.v;
}
#endif
Kesinlikle bunun bir konuşma olduğunu ve bir başka birinden okuduğumuzdan, bunun bu örnekte çalışması gerektiğinden, bunun UB olduğunu unutmayın.
Huh? https://www.google.com/search?q=_mm_set_pi64 – Mehrdad
'mmintrin.h' –
http://pastebin.com/4bwAbbLZ? – Mehrdad