【发布时间】:2012-02-20 20:37:29
【问题描述】:
我尝试在 gcc 中混合使用 SSE2 内在函数和内联汇编程序。但是,如果我将变量指定为 xmm0/register 作为输入,那么在 some 情况下,我会收到编译器错误。示例:
#include <emmintrin.h>
int main() {
__m128i test = _mm_setzero_si128();
asm ("pxor %%xmm0, %%xmm0" : : "xmm0" (test) : );
}
当使用 gcc 版本 4.6.1 编译时,我得到:
>gcc asm_xmm.c
asm_xmm.c: In function ‘main’:
asm_xmm.c:10:3: error: matching constraint references invalid operand number
asm_xmm.c:7:5: error: matching constraint references invalid operand number
奇怪的是,在我有其他输入变量/寄存器的相同情况下,它突然使用 xmm0 作为输入而不是 xmm1 等。在另一种情况下,我能够指定 xmm0-xmm4 但不能在上面指定。对此有点困惑/沮丧:S
谢谢:)
【问题讨论】:
标签: gcc sse inline-assembly intrinsics