【发布时间】:2011-03-22 09:10:42
【问题描述】:
许多 SSE 指令允许源操作数是 16 字节对齐的内存地址。例如,各种 (un)pack 指令。 PUNCKLBW 具有以下签名:
PUNPCKLBW xmm1, xmm2/m128
现在这对于内在函数似乎根本不可能。看起来必须使用 _mm_load* 内在函数来读取内存中的任何内容。这是 PUNPCKLBW 的内在特性:
__m128i _mm_unpacklo_epi8 (__m128i a, __m128i b);
(据我所知,__m128i 类型总是引用 XMM 寄存器。)
现在,这是为什么呢?这是相当可悲的,因为我看到了直接寻址内存的一些优化潜力......
【问题讨论】:
标签: optimization assembly sse simd intrinsics