2015-01-03 5 views
0

설명 : 두 번째 소스 피연산자 (세 번째 피연산자)의 배정 밀도 부동 소수점 값은 조건부로 첫 번째 소스 피연산자 (두 번째 피연산자)의 값과 병합되고 대상 피연산자 (첫 번째 피연산자)에 쓰여집니다. . 직접 비트 [3 : 0]은 대상의 해당 배정 밀도 부동 소수점 값이 두 번째 소스 또는 첫 번째 소스에서 복사되는지 여부를 결정합니다. 단어에 해당하는 마스크의 비트가 "1"이면 두 번째 소스 피연산자의 배정 밀도 부동 소수점 값이 복사되고 그렇지 않으면 첫 번째 소스 피연산자의 값이 복사됩니다.x64 부동 소수점 블렌드

8 비트 즉치 값의 비트가 중요한 비트입니까? 다른 비트는 전혀 중요합니까?

답변

2

견적에 따르면 관련 비트는 하위 4 비트 인 [3:0]입니다. 해당 단어 SSE 레지스터에 4 단어 (부동 소수점)가 있으므로 4 개의 제어 비트가 있으며 상위 4 비트는 무시됩니다. operation 섹션에는 erm 연산자를 명확하게 설명하는 의사 코드가 있습니다.

BLENDPS (128-bit Legacy SSE version) 
IF (IMM8[0] = 0) THEN DEST[31:0] <- DEST[31:0] 
     ELSE DEST [31:0] <- SRC[31:0] FI 
IF (IMM8[1] = 0) THEN DEST[63:32] <- DEST[63:32] 
     ELSE DEST [63:32] <- SRC[63:32] FI 
IF (IMM8[2] = 0) THEN DEST[95:64] <- DEST[95:64] 
     ELSE DEST [95:64] <- SRC[95:64] FI 
IF (IMM8[3] = 0) THEN DEST[127:96] <- DEST[127:96] 
     ELSE DEST [127:96] <- SRC[127:96] FI 

글쎄, 이것은 단 정밀도 BLENDPS입니다. 이중 정밀도는 4 비트로 언급되므로 BLENDPD을 의미해야합니다. SSE 레지스터를 사용하면 128 비트에 2 개의 2 배를 넣을 수 있기 때문에 2 비트 만 사용합니다. 실제로 AVX 버전은 4 비트를 사용합니다. 논리는 위와 같습니다.