Ignore:
Timestamp:
Oct 27, 2010, 6:48:11 AM (15 years ago)
Author:
[email protected]
Message:

2010-10-27 Gabor Loki <[email protected]>

Reviewed by Csaba Osztrogonác.

Add cmn to branch32(reg, imm) on ARM
https://bugs.webkit.org/show_bug.cgi?id=48062

The conditional comparison can be done with cmn if the imm value is
negative and can fit into the cmn instruction.

  • assembler/MacroAssemblerARM.h: (JSC::MacroAssemblerARM::branch32):
File:
1 edited

Legend:

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

    r65993 r70642  
    401401            m_assembler.ldr_un_imm(ARMRegisters::S0, right.m_value);
    402402            m_assembler.cmp_r(left, ARMRegisters::S0);
    403         } else
    404             m_assembler.cmp_r(left, m_assembler.getImm(right.m_value, ARMRegisters::S0));
     403        } else {
     404            ARMWord tmp = m_assembler.getOp2(-right.m_value);
     405            if (tmp != ARMAssembler::INVALID_IMM)
     406                m_assembler.cmn_r(left, tmp);
     407            else
     408                m_assembler.cmp_r(left, m_assembler.getImm(right.m_value, ARMRegisters::S0));
     409        }
    405410        return Jump(m_assembler.jmp(ARMCondition(cond), useConstantPool));
    406411    }
Note: See TracChangeset for help on using the changeset viewer.