Fixed ecx restore in EmitShlXX/EmitShrXX/EmitShaXX.
This commit is contained in:
parent
743e01209b
commit
6694461698
|
@ -4472,13 +4472,9 @@ void EmitShlXX(X64Emitter& e, const ARGS& i) {
|
||||||
e.shlx(dest_src.cvt32(), dest_src.cvt32(), src.cvt32());
|
e.shlx(dest_src.cvt32(), dest_src.cvt32(), src.cvt32());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// back up ecx...
|
|
||||||
e.mov(e.al, e.cl);
|
|
||||||
e.mov(e.cl, src);
|
e.mov(e.cl, src);
|
||||||
|
|
||||||
e.shl(dest_src, e.cl);
|
e.shl(dest_src, e.cl);
|
||||||
|
e.ReloadECX();
|
||||||
e.mov(e.cl, e.al);
|
|
||||||
}
|
}
|
||||||
}, [](X64Emitter& e, const REG& dest_src, int8_t constant) {
|
}, [](X64Emitter& e, const REG& dest_src, int8_t constant) {
|
||||||
e.shl(dest_src, constant);
|
e.shl(dest_src, constant);
|
||||||
|
@ -4533,13 +4529,9 @@ void EmitShrXX(X64Emitter& e, const ARGS& i) {
|
||||||
e.shrx(dest_src.cvt32(), dest_src.cvt32(), src.cvt32());
|
e.shrx(dest_src.cvt32(), dest_src.cvt32(), src.cvt32());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// back up ecx...
|
|
||||||
e.mov(e.al, e.cl);
|
|
||||||
e.mov(e.cl, src);
|
e.mov(e.cl, src);
|
||||||
|
|
||||||
e.shr(dest_src, e.cl);
|
e.shr(dest_src, e.cl);
|
||||||
|
e.ReloadECX();
|
||||||
e.mov(e.cl, e.al);
|
|
||||||
}
|
}
|
||||||
}, [](X64Emitter& e, const REG& dest_src, int8_t constant) {
|
}, [](X64Emitter& e, const REG& dest_src, int8_t constant) {
|
||||||
e.shr(dest_src, constant);
|
e.shr(dest_src, constant);
|
||||||
|
@ -4619,13 +4611,9 @@ void EmitSarXX(X64Emitter& e, const ARGS& i) {
|
||||||
e.sarx(dest_src.cvt32(), dest_src.cvt32(), src.cvt32());
|
e.sarx(dest_src.cvt32(), dest_src.cvt32(), src.cvt32());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// back up ecx...
|
|
||||||
e.mov(e.al, e.cl);
|
|
||||||
e.mov(e.cl, src);
|
e.mov(e.cl, src);
|
||||||
|
|
||||||
e.sar(dest_src, e.cl);
|
e.sar(dest_src, e.cl);
|
||||||
|
e.ReloadECX();
|
||||||
e.mov(e.cl, e.al);
|
|
||||||
}
|
}
|
||||||
}, [](X64Emitter& e, const REG& dest_src, int8_t constant) {
|
}, [](X64Emitter& e, const REG& dest_src, int8_t constant) {
|
||||||
e.sar(dest_src, constant);
|
e.sar(dest_src, constant);
|
||||||
|
|
Loading…
Reference in New Issue