¿Cuál es la forma correcta de convertir un valor __int64
a un valor __m64
para usar con SSE?Cómo convertir 'long long' (o __int64) a __m64
6
A
Respuesta
6
con gcc sólo puede utilizar _mm_set_pi64x
:
#include <mmintrin.h>
__int64 i = 0x123456LL;
__m64 v = _mm_set_pi64x(i);
Tenga en cuenta que no todos los compiladores tienen _mm_set_pi64x
definido en mmintrin.h
. Para gcc se define así:
extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_set_pi64x (long long __i)
{
return (__m64) __i;
}
lo que sugiere que probablemente podría simplemente utilizar un molde, si lo prefiere, por ejemplo,
__int64 i = 0x123456LL;
__m64 v = (__m64)i;
De no ser así, si usted está atascado con un compilador demasiado exigente como Visual C/C++, como último recurso, sólo puede utilizar una unión e implementar su propia intrínseca:
#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
Tenga en cuenta que estrictamente hablando esto es UB, ya que estamos escribiendo en una variante de una unión y leyendo de otra, pero debería funcionar en esta instancia.
Cuestiones relacionadas
- 1. ¿Puedo convertir long a int?
- 2. cadena de conversión a long long
- 3. Cómo convertir long a int en .net?
- 4. Cómo convertir String a long en Java?
- 5. Python tipo long vs C 'long long'
- 6. cast Long a BigDecimal
- 7. C++: long long int vs. long int vs. int64_t
- 8. ¿Debo usar long long o int64_t para código portable?
- 9. C#: Cómo convertir long to ulong
- 10. unsigned long long vs unsigned long (portabilidad punto de vista)
- 11. Long primitive o AtomicLong for a counter?
- 12. equivalente en Java de unsigned long long?
- 13. Cómo convertir std :: wstring a tipo numérico (int, long, float)?
- 14. Bitwise "&" on a long?
- 15. ¿Hay alguna diferencia entre Long a = Long.valueOf (1) o Long a = 1L?
- 16. Multiplicando dos long long ints C
- 17. Especificador de formato de 'long long'
- 18. (lldb) Imprimir unsigned long long en hexadecimal
- 19. Divide Long Long Number como porcentaje
- 20. ¿GCC es compatible con long long int?
- 21. 'long long int' se interpreta como 'long int'. ¿Cómo puedo evitar esto?
- 22. Convertir DateTime a long y también al revés
- 23. Java long to binary
- 24. std :: streampos, std :: streamoff y std :: streamsize a long long int?
- 25. Rails: Long Polling Practices
- 26. impresión unsigned long long int Tipo Valor Devuelve resultados extraños
- 27. long int en PHP
- 28. La diferencia entre unsigned long y UINT64
- 29. PostgreSQL Long VACUUM
- 30. Flask long routines
¿Huh? https://www.google.com/search?q=_mm_set_pi64 – Mehrdad
Eche un vistazo a 'mmintrin.h' –
http://pastebin.com/4bwAbbLZ? – Mehrdad