Ignore:
Timestamp:
Sep 10, 2008, 7:10:47 PM (17 years ago)
Author:
[email protected]
Message:

Inline immediate number version of op_mul.

Reviewed by Geoff Garen

Renamed mull_rr to imull_rr as that's what it's
actually doing, and added imull_i32r for the constant
case immediate multiply.

1.1% improvement to SunSpider.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/masm/X86Assembler.h

    r36311 r36324  
    183183        OP_POP_EAX                      = 0x58,
    184184        PRE_OPERAND_SIZE                = 0x66,
     185        OP_IMUL_GvEvIz                  = 0x69,
    185186        OP_GROUP1_EvIz                  = 0x81,
    186187        OP_GROUP1_EvIb                  = 0x83,
     
    212213        OP2_JGE_rel32   = 0x8D,
    213214        OP2_JLE_rel32   = 0x8E,
    214         OP2_MUL_GvEv    = 0xAF,
     215        OP2_IMUL_GvEv   = 0xAF,
    215216        OP2_MOVZX_GvEw  = 0xB7,
    216217
     
    473474    }
    474475
    475     void mull_rr(RegisterID src, RegisterID dst)
    476     {
    477         m_buffer->putByte(OP_2BYTE_ESCAPE);
    478         m_buffer->putByte(OP2_MUL_GvEv);
     476    void imull_rr(RegisterID src, RegisterID dst)
     477    {
     478        m_buffer->putByte(OP_2BYTE_ESCAPE);
     479        m_buffer->putByte(OP2_IMUL_GvEv);
    479480        emitModRm_rr(dst, src);
     481    }
     482   
     483    void imull_i32r(RegisterID src, int32_t value, RegisterID dst)
     484    {
     485        m_buffer->putByte(OP_IMUL_GvEvIz);
     486        emitModRm_rr(dst, src);
     487        m_buffer->putInt(value);
    480488    }
    481489
Note: See TracChangeset for help on using the changeset viewer.