¿La mejor forma de cargar un entero de 64 bits en un registro SSE2 de doble precisión?

¿Cuál es la forma mejor / más rápida de cargar un valor entero de 64 bits en unaxmm ¿Registro SSE2 en modo de 32 bits?

En el modo de 64 bits,cvtsi2sd se puede usar, pero en el modo de 32 bits, solo admite enteros de 32 bits.

Hasta ahora no he encontrado mucho más allá:

utilizarfild, fstp apilar entoncesmovsd axmm registrocargue la parte alta de 32 bits, multiplique por 2 ^ 32, agregue la parte baja de 32 bits

La primera solución es lenta, la segunda solución podría introducir una pérdida de precisión (editar: y de todos modos es lento, ya que los 32 bits bajos se deben convertir como sin firmar ...)

¿Algún enfoque mejor?

Respuestas a la pregunta(1)

Su respuesta a la pregunta