2011-05-11 12 views
1

128 비트 레지스터에서 값 (첫 번째 단어 16 비트)을 추출하고 싶습니다.이 명령이 있지만이 값은 working.there가 아닌 것입니다. 변수 안에 결과로 연산 당신은 _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);