mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
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:
parent
ff4003a295
commit
d6d17741f9
@ -30,7 +30,7 @@ import sys
|
|||||||
from check_utils import get_all_toplevel_filenames
|
from check_utils import get_all_toplevel_filenames
|
||||||
|
|
||||||
architecture_independent = set([ 'generic' ])
|
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' ])
|
all_shared_architecture_names = set([ 'x86_shared', 'mips_shared', 'arm', 'arm64' ])
|
||||||
|
|
||||||
reBeforeArg = "(?<=[(,\s])"
|
reBeforeArg = "(?<=[(,\s])"
|
||||||
|
@ -22,6 +22,8 @@
|
|||||||
# include "jit/arm64/MacroAssembler-arm64.h"
|
# include "jit/arm64/MacroAssembler-arm64.h"
|
||||||
#elif defined(JS_CODEGEN_MIPS32)
|
#elif defined(JS_CODEGEN_MIPS32)
|
||||||
# include "jit/mips32/MacroAssembler-mips32.h"
|
# include "jit/mips32/MacroAssembler-mips32.h"
|
||||||
|
#elif defined(JS_CODEGEN_MIPS64)
|
||||||
|
# include "jit/mips64/MacroAssembler-mips64.h"
|
||||||
#elif defined(JS_CODEGEN_NONE)
|
#elif defined(JS_CODEGEN_NONE)
|
||||||
# include "jit/none/MacroAssembler-none.h"
|
# include "jit/none/MacroAssembler-none.h"
|
||||||
#else
|
#else
|
||||||
@ -62,7 +64,7 @@
|
|||||||
// architectures on each method declaration, such as PER_ARCH and
|
// architectures on each method declaration, such as PER_ARCH and
|
||||||
// PER_SHARED_ARCH.
|
// 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
|
# define ALL_SHARED_ARCH arm, arm64, x86_shared, mips_shared
|
||||||
|
|
||||||
// * How this macro works:
|
// * How this macro works:
|
||||||
@ -107,6 +109,7 @@
|
|||||||
# define DEFINED_ON_arm
|
# define DEFINED_ON_arm
|
||||||
# define DEFINED_ON_arm64
|
# define DEFINED_ON_arm64
|
||||||
# define DEFINED_ON_mips32
|
# define DEFINED_ON_mips32
|
||||||
|
# define DEFINED_ON_mips64
|
||||||
# define DEFINED_ON_mips_shared
|
# define DEFINED_ON_mips_shared
|
||||||
# define DEFINED_ON_none
|
# define DEFINED_ON_none
|
||||||
|
|
||||||
@ -132,6 +135,11 @@
|
|||||||
# define DEFINED_ON_mips32 define
|
# define DEFINED_ON_mips32 define
|
||||||
# undef DEFINED_ON_mips_shared
|
# undef DEFINED_ON_mips_shared
|
||||||
# define DEFINED_ON_mips_shared define
|
# 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)
|
#elif defined(JS_CODEGEN_NONE)
|
||||||
# undef DEFINED_ON_none
|
# undef DEFINED_ON_none
|
||||||
# define DEFINED_ON_none crash
|
# define DEFINED_ON_none crash
|
||||||
@ -421,13 +429,13 @@ class MacroAssembler : public MacroAssemblerSpecific
|
|||||||
// Stack manipulation functions.
|
// Stack manipulation functions.
|
||||||
|
|
||||||
void PushRegsInMask(LiveRegisterSet set)
|
void PushRegsInMask(LiveRegisterSet set)
|
||||||
DEFINED_ON(arm, arm64, mips32, x86_shared);
|
DEFINED_ON(arm, arm64, mips32, mips64, x86_shared);
|
||||||
void PushRegsInMask(LiveGeneralRegisterSet set);
|
void PushRegsInMask(LiveGeneralRegisterSet set);
|
||||||
|
|
||||||
void PopRegsInMask(LiveRegisterSet set);
|
void PopRegsInMask(LiveRegisterSet set);
|
||||||
void PopRegsInMask(LiveGeneralRegisterSet set);
|
void PopRegsInMask(LiveGeneralRegisterSet set);
|
||||||
void PopRegsInMaskIgnore(LiveRegisterSet set, LiveRegisterSet ignore)
|
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(const Operand op) DEFINED_ON(x86_shared);
|
||||||
void Push(Register reg) PER_SHARED_ARCH;
|
void Push(Register reg) PER_SHARED_ARCH;
|
||||||
|
109
js/src/jit/mips64/MacroAssembler-mips64-inl.h
Normal file
109
js/src/jit/mips64/MacroAssembler-mips64-inl.h
Normal 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 */
|
2754
js/src/jit/mips64/MacroAssembler-mips64.cpp
Normal file
2754
js/src/jit/mips64/MacroAssembler-mips64.cpp
Normal file
File diff suppressed because it is too large
Load Diff
1283
js/src/jit/mips64/MacroAssembler-mips64.h
Normal file
1283
js/src/jit/mips64/MacroAssembler-mips64.h
Normal file
File diff suppressed because it is too large
Load Diff
@ -519,6 +519,7 @@ elif CONFIG['JS_CODEGEN_MIPS32'] or CONFIG['JS_CODEGEN_MIPS64']:
|
|||||||
'jit/mips64/BaselineIC-mips64.cpp',
|
'jit/mips64/BaselineIC-mips64.cpp',
|
||||||
'jit/mips64/CodeGenerator-mips64.cpp',
|
'jit/mips64/CodeGenerator-mips64.cpp',
|
||||||
'jit/mips64/Lowering-mips64.cpp',
|
'jit/mips64/Lowering-mips64.cpp',
|
||||||
|
'jit/mips64/MacroAssembler-mips64.cpp',
|
||||||
'jit/mips64/MoveEmitter-mips64.cpp',
|
'jit/mips64/MoveEmitter-mips64.cpp',
|
||||||
'jit/mips64/SharedIC-mips64.cpp',
|
'jit/mips64/SharedIC-mips64.cpp',
|
||||||
'jit/mips64/Trampoline-mips64.cpp',
|
'jit/mips64/Trampoline-mips64.cpp',
|
||||||
|
Loading…
Reference in New Issue
Block a user