Special casing sldi.
This commit is contained in:
parent
24ce893256
commit
69704853a3
|
@ -882,11 +882,16 @@ XEEMITTER(rld, 0x78000000, MDS)(PPCFunctionBuilder& f, InstrData& i) {
|
||||||
uint32_t mb = (i.MD.MB5 << 5) | i.MD.MB;
|
uint32_t mb = (i.MD.MB5 << 5) | i.MD.MB;
|
||||||
uint64_t m = XEMASK(0, mb);
|
uint64_t m = XEMASK(0, mb);
|
||||||
Value* v = f.LoadGPR(i.MD.RT);
|
Value* v = f.LoadGPR(i.MD.RT);
|
||||||
if (sh) {
|
if (mb == 63 - sh) {
|
||||||
v = f.RotateLeft(v, f.LoadConstant((int8_t)sh));
|
// Shift left.
|
||||||
}
|
v = f.Shl(v, f.LoadConstant((int8_t)sh));
|
||||||
if (m != 0xFFFFFFFFFFFFFFFF) {
|
} else {
|
||||||
v = f.And(v, f.LoadConstant(m));
|
if (sh) {
|
||||||
|
v = f.RotateLeft(v, f.LoadConstant((int8_t)sh));
|
||||||
|
}
|
||||||
|
if (m != 0xFFFFFFFFFFFFFFFF) {
|
||||||
|
v = f.And(v, f.LoadConstant(m));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (i.MD.Rc) {
|
if (i.MD.Rc) {
|
||||||
f.UpdateCR(0, v);
|
f.UpdateCR(0, v);
|
||||||
|
|
Loading…
Reference in New Issue