2011-05-11 8 views
1

128ビットレジスタから値(最初のワード16ビット)を抽出したいのですが、このコマンドがありますが、これは動作していません。aの値を設定した後に、変数内の結果として、算術演算は、あなたが_asmブロック内の組み込み関数を入れないでくださいSSE2値抽出の問題

int r; 
int inm=0; 

__m128i a=_mm_setr_epi16(8,9,3,2,4,5,6,11); 

_asm{ 
    r = _mm_extract_epi16(a,inm);  
} 
+1

どのようにJavaScriptですか?あなたのコードはCのように見えます。それに加えて、ここでは質問を緊急としてマークするべきではありません。 – ThiefMaster

答えて

8

...私はこれを行うことができますどのように...私は最初の単語を抽出したい最後に変更されます。他の機能と同様に動作します。これは正常に動作します:

#include <emmintrin.h> 

__m128i a = _mm_setr_epi16(8,9,3,2,4,5,6,11); 
int r = _mm_extract_epi16(a, 0); 
6

pextrw命令は、即値で動作ありません。 Cでは、値がコンパイル時定数である必要があることを意味します。

int r; 
static const int inm=0; 

__m128i a=_mm_setr_epi16(8,9,3,2,4,5,6,11); 

r = _mm_extract_epi16(a,inm);