6
__int64
값을 __m64
값으로 변환하는 적절한 방법은 무엇입니까?'long long'(또는 __int64)을 __m64로 변환하는 방법
__int64
값을 __m64
값으로 변환하는 적절한 방법은 무엇입니까?'long long'(또는 __int64)을 __m64로 변환하는 방법
GCC와 함께 당신은 _mm_set_pi64x
을 사용할 수 있습니다 : 모든 컴파일러 _mm_set_pi64x
이 mmintrin.h
에 정의되어
#include <mmintrin.h>
__int64 i = 0x123456LL;
__m64 v = _mm_set_pi64x(i);
참고. gcc의 경우 다음과 같이 정의됩니다.
extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_set_pi64x (long long __i)
{
return (__m64) __i;
}
이렇게하면 원하는 경우에만 캐스트를 사용할 수 있습니다. 실패
__int64 i = 0x123456LL;
__m64 v = (__m64)i;
, 당신은 그런 당신은 단지 노동 조합을 사용하고 고유 자신을 구현할 수있는 최후의 수단으로 비주얼 C/C++로 지나치게 까다 롭고 컴파일러와 함께 붙어있는 경우 :
#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
엄밀히 말하자면 이것은 UB입니다. 우리가 하나의 변형을 작성하고 다른 조합에서 읽는 중이므로이 인스턴스에서 작동해야합니다.
허? https://www.google.com/search?q=_mm_set_pi64 – Mehrdad
'mmintrin.h'을보십시오 –
http://pastebin.com/4bwAbbLZ? – Mehrdad