Ignore:
Timestamp:
May 31, 2013, 11:21:23 AM (12 years ago)
Author:
[email protected]
Message:

[sh4] Fix double floating point transfer in baseline JIT.
https://bugs.webkit.org/show_bug.cgi?id=117054

Patch by Julien Brianceau <[email protected]> on 2013-05-31
Reviewed by Oliver Hunt.

In current implementation, dmovRegReg function transfers only one single
FPRegister as PR=1 and SZ=0 in floating point status/control register.
Double transfers must be performed with two fmov.s opcodes.

  • assembler/MacroAssemblerSH4.h:

(JSC::MacroAssemblerSH4::moveDouble):
(JSC::MacroAssemblerSH4::addDouble): Handle (op2==dest) case properly.
(JSC::MacroAssemblerSH4::sqrtDouble):

  • assembler/SH4Assembler.h:

(JSC::SH4Assembler::fmovsRegReg):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/assembler/SH4Assembler.h

    r150644 r151031  
    830830    }
    831831
     832    void fmovsRegReg(FPRegisterID src, FPRegisterID dst)
     833    {
     834        uint16_t opc = getOpcodeGroup1(FMOV_OPCODE, dst, src);
     835        oneShortOp(opc, true, false);
     836    }
     837
    832838    void fmovsReadrm(RegisterID src, FPRegisterID dst)
    833839    {
Note: See TracChangeset for help on using the changeset viewer.