먼저 16 비트 형식에 적합한 값을 나타 내기 위해 쿼드 워드를 사용하고 있습니까? 몇 솔루션, 그건 제쳐두고 떠나 :
pshufd xmm1, xmm0, EEh
paddq xmm0, xmm1
movd temp, xmm0
또는
movdqa xmm1, xmm0
psrldq xmm1, 8
paddq xmm0, xmm1
movd temp, xmm0
또는
movhlps xmm1, xmm0
paddq xmm0, xmm1
movd temp, xmm0
참고 실제로 paddq
를 사용할 필요가 없습니다, 당신이 중 하나를 멀리 얻을 수 있습니다 원하는 경우 좁게 추가하십시오.
편집 편집 중 4 개의 더블 쿼드 워드 - 갖고있는 것은 꽤 괜찮습니다. 또는 더 빠른 것을 입증하지 않을 수도 있습니다
shufps xmm0, xmm2, 88h
shufps xmm4, xmm6, 88h
paddd xmm0, xmm4
psrlq xmm1, xmm0, 32
paddd xmm0, xmm1
movhlps xmm1, xmm0
paddd xmm0, xmm0
movd temp, xmm0
: 당신이 그들에있는 모든 데이터가 각 슬롯의 낮은 더블에 맞는 것을 알고 있음을 감안할 때, 당신은 뭔가를 시도 할 수 있습니다.
EMMS는 다른 명령어입니다. x87 부동 소수점 명령어를 사용하는 코드보다 먼저 MMX 레지스터를 다루는 코드가 있으면 emms
이 필요합니다.
@Stephen : 이전 작업에서는 128 바이트의 정보를 동시에 처리하려면 두 배의 쿼드 워드가 필요합니다. 그 후, 합산의 시퀀스는 전술 한 상한과의 최종 결과를 초래한다. – Jacob
* shrug *, 공정한 정도로. 어쨌든, 내가 올린 모든 시퀀스는 당신을 위해 일해야하며 기존의 mmx 사용법을 피하십시오. –
감사합니다. 실제로 모든 코드가 -1로 줄어들도록 코드의 나머지 부분을 엉망으로 만들었습니다. – Jacob