Changeset 59527 in webkit for trunk/JavaScriptCore/assembler


Ignore:
Timestamp:
May 15, 2010, 1:58:57 AM (15 years ago)
Author:
[email protected]
Message:

2010-05-15 Chao-ying Fu <[email protected]>

Reviewed by Oliver Hunt.

Update MIPS JIT for unsigned right shift, Math.sqrt, load16
https://bugs.webkit.org/show_bug.cgi?id=38412

Fixed MIPS build failure.

  • assembler/MIPSAssembler.h: (JSC::MIPSAssembler::srl): (JSC::MIPSAssembler::srlv): (JSC::MIPSAssembler::sqrtd):
  • assembler/MacroAssemblerMIPS.h: (JSC::MacroAssemblerMIPS::urshift32): (JSC::MacroAssemblerMIPS::sqrtDouble): (JSC::MacroAssemblerMIPS::load16): (JSC::MacroAssemblerMIPS::supportsFloatingPointSqrt):
  • jit/JSInterfaceJIT.h:
Location:
trunk/JavaScriptCore/assembler
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/assembler/MIPSAssembler.h

    r56759 r59527  
    393393    }
    394394
     395    void srl(RegisterID rd, RegisterID rt, int shamt)
     396    {
     397        emitInst(0x00000002 | (rd << OP_SH_RD) | (rt << OP_SH_RT)
     398                 | ((shamt & 0x1f) << OP_SH_SHAMT));
     399    }
     400
     401    void srlv(RegisterID rd, RegisterID rt, RegisterID rs)
     402    {
     403        emitInst(0x00000006 | (rd << OP_SH_RD) | (rt << OP_SH_RT)
     404                 | (rs << OP_SH_RS));
     405    }
     406
    395407    void lbu(RegisterID rt, RegisterID rs, int offset)
    396408    {
     
    548560        emitInst(0x44000000 | (fs << OP_SH_FS) | (rt << OP_SH_RT));
    549561        copDelayNop();
     562    }
     563
     564    void sqrtd(FPRegisterID fd, FPRegisterID fs)
     565    {
     566        emitInst(0x46200004 | (fd << OP_SH_FD) | (fs << OP_SH_FS));
    550567    }
    551568
  • trunk/JavaScriptCore/assembler/MacroAssemblerMIPS.h

    r56759 r59527  
    320320    }
    321321
     322    void urshift32(RegisterID shiftAmount, RegisterID dest)
     323    {
     324        m_assembler.srlv(dest, dest, shiftAmount);
     325    }
     326
     327    void urshift32(Imm32 imm, RegisterID dest)
     328    {
     329        m_assembler.srl(dest, dest, imm.m_value);
     330    }
     331
    322332    void sub32(RegisterID src, RegisterID dest)
    323333    {
     
    436446    }
    437447
     448    void sqrtDouble(FPRegisterID src, FPRegisterID dst)
     449    {
     450        m_assembler.sqrtd(dst, src);
     451    }
     452
    438453    // Memory access operations:
    439454    //
     
    608623    {
    609624        return loadPtrWithPatchToLEA(address, dest);
     625    }
     626
     627    /* Need to use zero-extened load half-word for load16.  */
     628    void load16(ImplicitAddress address, RegisterID dest)
     629    {
     630        if (address.offset >= -32768 && address.offset <= 32767
     631            && !m_fixedWidth)
     632            m_assembler.lhu(dest, address.base, address.offset);
     633        else {
     634            /*
     635                lui     addrTemp, (offset + 0x8000) >> 16
     636                addu    addrTemp, addrTemp, base
     637                lhu     dest, (offset & 0xffff)(addrTemp)
     638              */
     639            m_assembler.lui(addrTempRegister, (address.offset + 0x8000) >> 16);
     640            m_assembler.addu(addrTempRegister, addrTempRegister, address.base);
     641            m_assembler.lhu(dest, addrTempRegister, address.offset);
     642        }
    610643    }
    611644
     
    772805
    773806    bool supportsFloatingPointTruncate() const
     807    {
     808#if WTF_MIPS_DOUBLE_FLOAT && WTF_MIPS_ISA_AT_LEAST(2)
     809        return true;
     810#else
     811        return false;
     812#endif
     813    }
     814
     815    bool supportsFloatingPointSqrt() const
    774816    {
    775817#if WTF_MIPS_DOUBLE_FLOAT && WTF_MIPS_ISA_AT_LEAST(2)
Note: See TracChangeset for help on using the changeset viewer.