rlwnmx
This commit is contained in:
parent
807b949fea
commit
10c69cfaf2
|
@ -1479,8 +1479,30 @@ XEEMITTER(rlwinmx, 0x54000000, M )(X64Emitter& e, X86Compiler& c, InstrDat
|
||||||
}
|
}
|
||||||
|
|
||||||
XEEMITTER(rlwnmx, 0x5C000000, M )(X64Emitter& e, X86Compiler& c, InstrData& i) {
|
XEEMITTER(rlwnmx, 0x5C000000, M )(X64Emitter& e, X86Compiler& c, InstrData& i) {
|
||||||
XEINSTRNOTIMPLEMENTED();
|
// n <- (RB)[59:63]
|
||||||
return 1;
|
// r <- ROTL32((RS)[32:63], n)
|
||||||
|
// m <- MASK(MB+32, ME+32)
|
||||||
|
// RA <- r & m
|
||||||
|
|
||||||
|
GpVar v(c.newGpVar());
|
||||||
|
c.mov(v.r32(), e.gpr_value(i.M.RT).r32()); // truncate
|
||||||
|
|
||||||
|
GpVar sh(c.newGpVar());
|
||||||
|
c.mov(sh, e.gpr_value(i.M.SH));
|
||||||
|
c.and_(sh, imm(0x1F));
|
||||||
|
c.rol(v.r32(), sh);
|
||||||
|
|
||||||
|
c.and_(v, imm(XEMASK(i.M.MB + 32, i.M.ME + 32)));
|
||||||
|
e.update_gpr_value(i.M.RA, v);
|
||||||
|
|
||||||
|
if (i.M.Rc) {
|
||||||
|
// With cr0 update.
|
||||||
|
e.update_cr_with_cond(0, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
e.clear_constant_gpr_value(i.M.RA);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue