描述: 来自第二个源操作数(第三个操作数)的双精度浮点值与第一个源操作数(第二个操作数)中的值有条件地合并,并写入目标操作数(第一个操作数)。立即位[3:0]确定是否从第二个源或第一个源复制目标中相应的双精度浮点值。如果掩码中对应于一个字的位为“1”,则复制第二个源操作数中的双精度浮点值,否则复制第一个源操作数中的值。
8位立即值中的哪一位重要?其他位是否重要?
答案 0 :(得分:2)
正如你的引言所说,相关位是[3:0]
,即低4位。每个控制操作对应的单词。由于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寄存器,只使用2位,因为您只能将2个双精度放入128位。 AVX版本确实使用4位。逻辑与上面相同。