Ignore:
Timestamp:
Nov 18, 2021, 12:04:48 PM (4 years ago)
Author:
[email protected]
Message:

[JSC] Add branchTest16 operation
https://bugs.webkit.org/show_bug.cgi?id=233275

Reviewed by Mark Lam.

This patch adds branchTest16 to all macro assemblers. And it also fixes the existing bug of
edge case of branchTest8: when we cannot represent the imm as ARM logical value, then we are
failing to emit the right instructions. Probably this bug does not appear since we are not using
such a value as an imm for branchTest8. We added tests to testmasm so that these code is stressed
now.

  • assembler/MacroAssembler.h:

(JSC::MacroAssembler::branchTest16):

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::load16SignedExtendTo32):
(JSC::MacroAssemblerARM64::branchTest32):
(JSC::MacroAssemblerARM64::branchTest8):
(JSC::MacroAssemblerARM64::branchTest16):

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::branchTest16):
(JSC::MacroAssemblerARMv7::test32):
(JSC::MacroAssemblerARMv7::test8):

  • assembler/MacroAssemblerHelpers.h:

(JSC::MacroAssemblerHelpers::mask16OnCondition):
(JSC::MacroAssemblerHelpers::load16OnCondition):

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::load16):
(JSC::MacroAssemblerMIPS::load16SignedExtendTo32):
(JSC::MacroAssemblerMIPS::mask16OnTest):
(JSC::MacroAssemblerMIPS::branchTest16):

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::branchTest16):

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::branchTest16):

  • assembler/X86Assembler.h:

(JSC::X86Assembler::cmpw_im):
(JSC::X86Assembler::testw_im):

  • assembler/testmasm.cpp:

(JSC::testBranchTest8):
(JSC::testBranchTest16):

File:
1 edited

Legend:

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

    r284330 r286020  
    879879    {
    880880        return MacroAssemblerBase::branchTest8(cond, Address(address.base, address.offset), mask);
     881    }
     882
     883    using MacroAssemblerBase::branchTest16;
     884    Jump branchTest16(ResultCondition cond, ExtendedAddress address, TrustedImm32 mask = TrustedImm32(-1))
     885    {
     886        return MacroAssemblerBase::branchTest16(cond, Address(address.base, address.offset), mask);
    881887    }
    882888
Note: See TracChangeset for help on using the changeset viewer.