寄存器sse2指令集
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
sse2指令集
1移动指令:
1. Movaps
movaps XMM,XMM/m128 movaps XMM/128,XMM
把源存储器内容值送入目的寄存器,当有m128时,必须对齐内存16字节,也就是内存地址低4位为0.
2. Movups
movups XMM,XMM/m128 movaps XMM/128,XMM
把源存储器内容值送入目的寄存器,但不必对齐内存16字节
3. Movlps
movlps XMM,m64
把源存储器64位内容送入目的寄存器低64位,高64位不变,内存变量不必对齐内存16字节4. Movhps
movhps XMM,m64
把源存储器64位内容送入目的寄存器高64位,低64位不变,内存变量不必对齐内存16字节.
5. Movhlps
movhlps XMM,XMM
把源寄存器高64位送入目的寄存器低64位,高64位不变.
6. Movlhps
movlhps XMM,XMM
把源寄存器低64位送入目的寄存器高64位,低64位不变.
7. movss
movss XMM,m32/XMM
原操作数为m32时:dest[31-00] <== m32 dest[127-32] <== 0
原操作数为XMM时: dest[31-00] <== src[31-00] dest[127-32]不变
8. movmskpd
movmskpd r32,XMM
取64位操作数符号位
r32[0] <== XMM[63] r32[1] <== XMM[127] r32[31-2] <== 0
9. movmskps
movmskps r32,XMM
取32位操作数符号位
r32[0] <== XMM[31] r32[1] <== XMM[63] r32[2] <== XMM[95] r32[3] <== XMM[127] r32[31-4] <== 0
10. pmovmskb
pmovmskb r32,XMM
取16位操作数符号位具体操作同前
r[0] <== XMM[7] r[1] <== XMM[15] r[2] <== XMM[23] r[3] <== XMM[31]
r[4] <== XMM[39] r[5] <== XMM[47] r[6] <== XMM[55] r[7] <== XMM[63]
r[8] <== XMM[71] r[9] <== XMM[79] r[10] <== XMM[87] r[11] <== XMM[95]
r[12] <== XMM[103] r[13] <== XMM[111] r[14] <== XMM[119] r[15] <== XMM[127] r[31-16] <== 0
11. movntps
movntps m128,XMM
m128 <== XMM 直接把XMM中的值送入m128,不经过cache,必须对齐16字节.
12. Movntpd
movntpd m128,XMM
m128 <== XMM 直接把XMM中的值送入m128,不经过cache,必须对齐16字节.
13. Movnti
movnti m32,r32
m32 <== r32 把32寄存器的值送入m32,不经过cache.
14. Movapd
movapd XMM,XMM/m128 movapd XMM/m128,XMM
把源存储器内容值送入目的寄存器,当有m128时,必须对齐内存16字节
15. Movupd
movupd XMM,XMM/m128 movapd XMM/m128,XMM
把源存储器内容值送入目的寄存器,但不必对齐内存16字节.
我感觉这两条指令同movaps 和movups 指令一样,不过又不确定.
16. Movlpd
movlpd XMM,m64 movlpd m64,XMM
把源存储器64位内容送入目的寄存器低64位,高64位不变,内存变量不必对齐内存16字节
17. Movhpd
movhpd XMM,m64 movhpd m64,XMM
把源存储器64位内容送入目的寄存器高64位,低64位不变,内存变量不必对齐内存16字节.
18. Movdqa
movdqa XMM,XMM/m128 movdqa XMM/m128,XMM
把源存储器内容值送入目的寄存器,当有m128时,必须对齐内存16字节.
19. Movdqu
movdqu XMM,XMM/m128 movdqu XMM/m128,XMM
把源存储器内容值送入目的寄存器,但不必对齐内存16字节.
20. movq2dq
movq2dq XMM,MM
把源寄存器内容送入目的寄存器的低64位,高64位清零.
21. movdq2q
movdq2q MM,XMM
把源寄存器低64位内容送入目的寄存器.
22. Movd
movd XMM,r32/m32 movd MM,r32/m32
把源存储器32位内容送入目的寄存器的低32位,高96位清零.
movd r32/m32,XMM movd r32/m32,MM
把源寄存器的低32位内容送入目的存储器32位.
23. Movq
movq XMM,XMM/m64 movq MM,MM/m64
把源存储器低64位内容送入目的寄存器的低64位,高64位清零.
movq m64,XMM
把源寄存器的低64位内容送入目的存储器.
2 加法操作
1. addps
addps XMM,XMM/m128
源存储器内容按双字对齐,共4个单精度浮点数与目的寄存器相加,结果送入目的寄存器,内存变量必须对齐内存16字节
2. adds
addss XMM,XMM/m32