将2个未对齐的64位值加载到带SSSE3的sse寄存器中的最佳方法是什么?

ale*_*cco 6 sse simd intrinsics

有2个指向2个未对齐的8字节块的指针要加载到xmm寄存器中.如果可能,使用内在函数.如果可能,不使用辅助寄存器.没有pinrd.(SSSE Core 2)

Dar*_*rda 3

msvc 规格来看,您似乎可以执行以下操作:

__m128d xx;                   // an uninitialised xmm register 
xx = _mm_loadh_pd(xx, ptra);  // load the higher 64 bits from (unaligned) ptra
xx = _mm_loadl_pd(xx, ptrb);  // load the lower 64 bits from (unaligned) ptrb
Run Code Online (Sandbox Code Playgroud)

从未对齐的存储加载(根据我的经验)比从对齐的指针加载要慢得多,因此如果您确实想要更高的性能,您应该不希望过于频繁地执行此类操作。

希望这可以帮助。