X86: Implement SHLD.

This commit is contained in:
Gabe Black 2009-08-07 10:13:24 -07:00
parent 3a55fc5cac
commit 4f5270f946
2 changed files with 48 additions and 2 deletions

View file

@ -820,8 +820,8 @@
Rdx = result.rdx;
}});
0x3: Inst::BT(Ev,Gv);
0x4: shld_Ev_Gv_Ib();
0x5: shld_Ev_Gv_rCl();
0x4: Inst::SHLD(Ev,Gv,Ib);
0x5: Inst::SHLD(Ev,Gv);
0x6: xbts_and_cmpxchg();
0x7: ibts_and_cmpxchg();
}

View file

@ -114,6 +114,52 @@ def macroop SAL_P_R
st t1, seg, riprel, disp
};
def macroop SHLD_R_R
{
mdbi regm, 0
sld reg, reg, rcx, flags=(CF,OF,SF,ZF,PF)
};
def macroop SHLD_M_R
{
ldst t1, seg, sib, disp
mdbi reg, 0
sld t1, t1, rcx, flags=(CF,OF,SF,ZF,PF)
st t1, seg, sib, disp
};
def macroop SHLD_P_R
{
rdip t7
ldst t1, seg, riprel, disp
mdbi reg, 0
sld t1, t1, rcx, flags=(CF,OF,SF,ZF,PF)
st t1, seg, riprel, disp
};
def macroop SHLD_R_R_I
{
mdbi regm, 0
sldi reg, reg, imm, flags=(CF,OF,SF,ZF,PF)
};
def macroop SHLD_M_R_I
{
ldst t1, seg, sib, disp
mdbi reg, 0
sldi t1, t1, imm, flags=(CF,OF,SF,ZF,PF)
st t1, seg, sib, disp
};
def macroop SHLD_P_R_I
{
rdip t7
ldst t1, seg, riprel, disp
mdbi reg, 0
sldi t1, t1, imm, flags=(CF,OF,SF,ZF,PF)
st t1, seg, riprel, disp
};
def macroop SHR_R_I
{
srli reg, reg, imm, flags=(CF,OF,SF,ZF,PF)