Bug 1213746 - IonMonkey: MIPS64: Import MacroAssembler-mips64. r=lth f=rankov

---
 config/check_macroassembler_style.py          |    2 +-
 js/src/jit/MacroAssembler.h                   |   14 +-
 js/src/jit/mips64/MacroAssembler-mips64-inl.h |  109 +
 js/src/jit/mips64/MacroAssembler-mips64.cpp   | 2754 +++++++++++++++++++++++++
 js/src/jit/mips64/MacroAssembler-mips64.h     | 1283 ++++++++++++
 js/src/moz.build                              |    1 +
 6 files changed, 4159 insertions(+), 4 deletions(-)
 create mode 100644 js/src/jit/mips64/MacroAssembler-mips64-inl.h
 create mode 100644 js/src/jit/mips64/MacroAssembler-mips64.cpp
 create mode 100644 js/src/jit/mips64/MacroAssembler-mips64.h
This commit is contained in:
Heiher 2015-11-07 05:51:06 +08:00
parent ff4003a295
commit d6d17741f9
6 changed files with 4159 additions and 4 deletions

View File

@ -30,7 +30,7 @@ import sys
from check_utils import get_all_toplevel_filenames
architecture_independent = set([ 'generic' ])
all_architecture_names = set([ 'x86', 'x64', 'arm', 'arm64', 'mips32' ])
all_architecture_names = set([ 'x86', 'x64', 'arm', 'arm64', 'mips32', 'mips64' ])
all_shared_architecture_names = set([ 'x86_shared', 'mips_shared', 'arm', 'arm64' ])
reBeforeArg = "(?<=[(,\s])"

View File

@ -22,6 +22,8 @@
# include "jit/arm64/MacroAssembler-arm64.h"
#elif defined(JS_CODEGEN_MIPS32)
# include "jit/mips32/MacroAssembler-mips32.h"
#elif defined(JS_CODEGEN_MIPS64)
# include "jit/mips64/MacroAssembler-mips64.h"
#elif defined(JS_CODEGEN_NONE)
# include "jit/none/MacroAssembler-none.h"
#else
@ -62,7 +64,7 @@
// architectures on each method declaration, such as PER_ARCH and
// PER_SHARED_ARCH.
# define ALL_ARCH mips32, arm, arm64, x86, x64
# define ALL_ARCH mips32, mips64, arm, arm64, x86, x64
# define ALL_SHARED_ARCH arm, arm64, x86_shared, mips_shared
// * How this macro works:
@ -107,6 +109,7 @@
# define DEFINED_ON_arm
# define DEFINED_ON_arm64
# define DEFINED_ON_mips32
# define DEFINED_ON_mips64
# define DEFINED_ON_mips_shared
# define DEFINED_ON_none
@ -132,6 +135,11 @@
# define DEFINED_ON_mips32 define
# undef DEFINED_ON_mips_shared
# define DEFINED_ON_mips_shared define
#elif defined(JS_CODEGEN_MIPS64)
# undef DEFINED_ON_mips64
# define DEFINED_ON_mips64 define
# undef DEFINED_ON_mips_shared
# define DEFINED_ON_mips_shared define
#elif defined(JS_CODEGEN_NONE)
# undef DEFINED_ON_none
# define DEFINED_ON_none crash
@ -421,13 +429,13 @@ class MacroAssembler : public MacroAssemblerSpecific
// Stack manipulation functions.
void PushRegsInMask(LiveRegisterSet set)
DEFINED_ON(arm, arm64, mips32, x86_shared);
DEFINED_ON(arm, arm64, mips32, mips64, x86_shared);
void PushRegsInMask(LiveGeneralRegisterSet set);
void PopRegsInMask(LiveRegisterSet set);
void PopRegsInMask(LiveGeneralRegisterSet set);
void PopRegsInMaskIgnore(LiveRegisterSet set, LiveRegisterSet ignore)
DEFINED_ON(arm, arm64, mips32, x86_shared);
DEFINED_ON(arm, arm64, mips32, mips64, x86_shared);
void Push(const Operand op) DEFINED_ON(x86_shared);
void Push(Register reg) PER_SHARED_ARCH;

View File

@ -0,0 +1,109 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
* vim: set ts=8 sts=4 et sw=4 tw=99:
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef jit_mips64_MacroAssembler_mips64_inl_h
#define jit_mips64_MacroAssembler_mips64_inl_h
#include "jit/mips64/MacroAssembler-mips64.h"
#include "jit/mips-shared/MacroAssembler-mips-shared-inl.h"
namespace js {
namespace jit {
//{{{ check_macroassembler_style
// ===============================================================
// Logical instructions
void
MacroAssembler::andPtr(Register src, Register dest)
{
ma_and(dest, src);
}
void
MacroAssembler::andPtr(Imm32 imm, Register dest)
{
ma_and(dest, imm);
}
void
MacroAssembler::and64(Imm64 imm, Register64 dest)
{
ma_li(ScratchRegister, ImmWord(imm.value));
ma_and(dest.reg, ScratchRegister);
}
void
MacroAssembler::orPtr(Register src, Register dest)
{
ma_or(dest, src);
}
void
MacroAssembler::orPtr(Imm32 imm, Register dest)
{
ma_or(dest, imm);
}
void
MacroAssembler::or64(Register64 src, Register64 dest)
{
ma_or(dest.reg, src.reg);
}
void
MacroAssembler::xorPtr(Register src, Register dest)
{
ma_xor(dest, src);
}
void
MacroAssembler::xorPtr(Imm32 imm, Register dest)
{
ma_xor(dest, imm);
}
// ===============================================================
// Shift functions
void
MacroAssembler::lshiftPtr(Imm32 imm, Register dest)
{
ma_dsll(dest, dest, imm);
}
void
MacroAssembler::lshift64(Imm32 imm, Register64 dest)
{
ma_dsll(dest.reg, dest.reg, imm);
}
void
MacroAssembler::rshiftPtr(Imm32 imm, Register dest)
{
ma_dsrl(dest, dest, imm);
}
void
MacroAssembler::rshiftPtrArithmetic(Imm32 imm, Register dest)
{
ma_dsra(dest, dest, imm);
}
void
MacroAssembler::rshift64(Imm32 imm, Register64 dest)
{
ma_dsrl(dest.reg, dest.reg, imm);
}
//}}} check_macroassembler_style
// ===============================================================
} // namespace jit
} // namespace js
#endif /* jit_mips64_MacroAssembler_mips64_inl_h */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -519,6 +519,7 @@ elif CONFIG['JS_CODEGEN_MIPS32'] or CONFIG['JS_CODEGEN_MIPS64']:
'jit/mips64/BaselineIC-mips64.cpp',
'jit/mips64/CodeGenerator-mips64.cpp',
'jit/mips64/Lowering-mips64.cpp',
'jit/mips64/MacroAssembler-mips64.cpp',
'jit/mips64/MoveEmitter-mips64.cpp',
'jit/mips64/SharedIC-mips64.cpp',
'jit/mips64/Trampoline-mips64.cpp',