зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1301400: Baseline Wasm Compiler: Part 12: Implement RotateI64, r=lth
This commit is contained in:
Родитель
4b03aabf74
Коммит
d733c7fa0d
|
@ -2525,21 +2525,19 @@ class BaseCompiler
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void rotateRightI64(RegI64 rhs, RegI64 srcDest) {
|
void rotateRightI64(RegI64 shift, RegI64 srcDest) {
|
||||||
#if defined(JS_CODEGEN_X64)
|
#ifdef JS_PUNBOX64
|
||||||
MOZ_ASSERT(rhs.reg.reg == rcx);
|
masm.rotateRight64(shift.reg.reg, srcDest.reg, srcDest.reg, Register::Invalid());
|
||||||
masm.rorq_cl(srcDest.reg.reg);
|
|
||||||
#else
|
#else
|
||||||
MOZ_CRASH("BaseCompiler platform hook: rotateRightI64");
|
masm.rotateRight64(shift.reg.low, srcDest.reg, srcDest.reg, shift.reg.high);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void rotateLeftI64(RegI64 rhs, RegI64 srcDest) {
|
void rotateLeftI64(RegI64 shift, RegI64 srcDest) {
|
||||||
#if defined(JS_CODEGEN_X64)
|
#ifdef JS_PUNBOX64
|
||||||
MOZ_ASSERT(rhs.reg.reg == rcx);
|
masm.rotateLeft64(shift.reg.reg, srcDest.reg, srcDest.reg, Register::Invalid());
|
||||||
masm.rolq_cl(srcDest.reg.reg);
|
|
||||||
#else
|
#else
|
||||||
MOZ_CRASH("BaseCompiler platform hook: rotateLeftI64");
|
masm.rotateLeft64(shift.reg.low, srcDest.reg, srcDest.reg, shift.reg.high);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4088,11 +4086,11 @@ BaseCompiler::emitRotrI64()
|
||||||
{
|
{
|
||||||
// TODO / OPTIMIZE: Constant rhs
|
// TODO / OPTIMIZE: Constant rhs
|
||||||
RegI64 r0, r1;
|
RegI64 r0, r1;
|
||||||
#if defined(JS_CODEGEN_X64)
|
#if defined(JS_CODEGEN_X86) || defined(JS_CODEGEN_X64)
|
||||||
r1 = popI64(specific_rcx);
|
needI32(specific_ecx);
|
||||||
|
r1 = fromI32(specific_ecx);
|
||||||
|
r1 = popI64ToSpecific(r1);
|
||||||
r0 = popI64();
|
r0 = popI64();
|
||||||
#elif defined(JS_CODEGEN_X86)
|
|
||||||
MOZ_CRASH("BaseCompiler platform hook: emitRotrI64");
|
|
||||||
#else
|
#else
|
||||||
pop2xI64(&r0, &r1);
|
pop2xI64(&r0, &r1);
|
||||||
#endif
|
#endif
|
||||||
|
@ -4122,11 +4120,11 @@ BaseCompiler::emitRotlI64()
|
||||||
{
|
{
|
||||||
// TODO / OPTIMIZE: Constant rhs
|
// TODO / OPTIMIZE: Constant rhs
|
||||||
RegI64 r0, r1;
|
RegI64 r0, r1;
|
||||||
#if defined(JS_CODEGEN_X64)
|
#if defined(JS_CODEGEN_X86) || defined(JS_CODEGEN_X64)
|
||||||
r1 = popI64(specific_rcx);
|
needI32(specific_ecx);
|
||||||
|
r1 = fromI32(specific_ecx);
|
||||||
|
r1 = popI64ToSpecific(r1);
|
||||||
r0 = popI64();
|
r0 = popI64();
|
||||||
#elif defined(JS_CODEGEN_X86)
|
|
||||||
MOZ_CRASH("BaseCompiler platform hook: emitRotlI64");
|
|
||||||
#else
|
#else
|
||||||
pop2xI64(&r0, &r1);
|
pop2xI64(&r0, &r1);
|
||||||
#endif
|
#endif
|
||||||
|
|
Загрузка…
Ссылка в новой задаче