4.2.4 SSE 的指令说明 ADDPS 说明 ADDPS xmm1, xmm2/m128 功能 两组单精度数相加 算法 DEST[31-0] = DEST[31-0] + SRC/m128[31-0] DEST[63-32] = DEST[63-32] + SRC/m128[63-32]; DEST[95-64] = DEST[95-64] + SRC/m128[95-64]; DEST[127-96] = DEST[127-96] + SRC/m128[127-96]; ADDSS 说明 ADDSS xmm1, xmm2/m32 功能 低位单精度数相加 算法 DEST[31-0] = DEST[31-0] + SRC/m32[31-0]; DEST[63-32] = DEST[63-32]; DEST[95-64] = DEST[95-64]; DEST[127-96] = DEST[127-96]; ANDNPS 说明 ANDNPS xmm1, xmm2/m128 功能 xmm1“取反”再和 xmm2/m128 求“与”运算 算法 DEST[127-0] = NOT (DEST[127-0]) AND SRC/m128[127-0]; ANDPS 说明 ANDPS xmm1, xmm2/m128 功能 进行两个寄存器的逻辑“与”操作 算法 DEST[127-0] AND = SRC/m128[127-0]; CMPPS 说明 CMPPS xmm1, xmm2/m128, imm8 功能 比较两个寄存器的数值,根据imm8 的不同数值采用不同的比较方法 imm8 == 0, ==; imm8 == 1, <; imm8 == 2, <=; imm8 == 3, ?; imm8 == 4, !=; imm8 == 5, !<; imm8 == 6, !<=; imm8 == 7, !?; 算法 IF (imm8 = 0) THEN OP = "EQ"; ELSEIF (imm8 = 1) THEN OP = "LT"; ELSEIF (imm8 = 2) THEN OP = "LE"; ELSEIF (imm8 = 3) THEN OP = "UNORD"; ELSEIF (imm8 = 4) THEN OP = "NE"; ELSEIF (imm8 = 5) THEN OP = "NLT"; ELSEIF (imm8 = 6) THEN OP = "NLE"; ELSEIF (imm8 = 7) THEN OP = "ORD"; FI CMP0 = DEST[31-0] OP SRC/m128[31-0]; CMP1 = DEST[63-32] OP SRC/m128[63-32]; CMP2 = DEST [95-64] OP SRC/m128[95-64]; CMP3 = DEST[127-96] OP SRC/m128[127-96]; IF (CMP0 = TRUE) THEN DEST[31-0] = 0XFFFFFFFF; ELSE DEST[31-0] = 0X00000000; FI IF (CMP1 = TRUE) THEN DEST[63-32] = 0XFFFFFFFF; ELSE DEST[63-32] = 0X00000000; FI IF (CMP2 = TRUE) THEN DEST[95-64] = 0XFFFFFFFF; ELSE DEST[95-64] = 0X00000000; FI IF (CMP3 = TRUE) THEN DEST[127-96] = 0XFFFFFFFF; ELSE DEST[127-96] = 0X00000000; FI 其它 你可以使用下面的可读性良好的指令。 指令 实现 ...