SSE2イントリンシックとインラインアセンブラをgccに混在させようとしました。しかし、変数としてxmm0/registerを入力として指定した場合、にはというケースがありますが、コンパイラエラーが発生します。例:SSE2イントリンシックとgccインラインアセンブラの両方を使用
>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で動作するということです。私が得る
#include <emmintrin.h>
int main() {
__m128i test = _mm_setzero_si128();
asm ("pxor %%xmm0, %%xmm0" : : "xmm0" (test) :);
}
gccのバージョン4.6.1でコンパイルされましたxmm1などは入力できません。別のケースでは、xmm0-xmm4は指定できましたが、上記は指定できませんでした。このことについて不満を/少し混乱:S
感謝:)
あなたはスターです!ありがとう:) –