X86: Implement the movaps instruction.

--HG--
extra : convert_revision : 2aeb1c05205f8ea8f7484e8bacf3fbbc581defd2
This commit is contained in:
Gabe Black 2007-08-29 20:38:22 -07:00
parent 3da3190f07
commit c1a776de8a
2 changed files with 31 additions and 2 deletions

View file

@ -164,8 +164,10 @@
0x05: decode LEGACY_DECODEVAL { 0x05: decode LEGACY_DECODEVAL {
// no prefix // no prefix
0x0: decode OPCODE_OP_BOTTOM3 { 0x0: decode OPCODE_OP_BOTTOM3 {
0x0: movaps_Vo_Wo(); //These moves should really use size o (octword), but
0x1: movaps_Wo_Vo(); //because they are split in two, they use q (quadword).
0x0: Inst::MOVAPS(Vq,Wq);
0x1: Inst::MOVAPS(Wq,Vq);
0x2: decode MODRM_MOD { 0x2: decode MODRM_MOD {
0x3: cvtpi2pS_Vq_Pq(); 0x3: cvtpi2pS_Vq_Pq();
default: cvtpi2ps_Vq_Mq(); default: cvtpi2ps_Vq_Mq();

View file

@ -99,4 +99,31 @@ def macroop MOVSD_P_R {
def macroop MOVSD_R_R { def macroop MOVSD_R_R {
movfp xmml, xmml, xmmlm, dataSize=8 movfp xmml, xmml, xmmlm, dataSize=8
}; };
def macroop MOVAPS_R_M {
ldfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8
ldfp xmml, seg, sib, disp, dataSize=8
};
def macroop MOVAPS_R_P {
rdip t7
ldfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8
ldfp xmml, seg, riprel, disp, dataSize=8
};
def macroop MOVAPS_M_R {
stfp xmmh, seg, sib, "DISPLACEMENT + 8", dataSize=8
stfp xmml, seg, sib, disp, dataSize=8
};
def macroop MOVAPS_P_R {
rdip t7
stfp xmmh, seg, riprel, "DISPLACEMENT + 8", dataSize=8
stfp xmml, seg, riprel, disp, dataSize=8
};
def macroop MOVAPS_R_R {
movfp xmml, xmml, xmmlm, dataSize=8
movfp xmmh, xmmh, xmmhm, dataSize=8
};
''' '''