v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
macro-assembler-arm64.h File Reference
Include dependency graph for macro-assembler-arm64.h:

Go to the source code of this file.

Classes

class  v8::internal::MacroAssembler
 
class  v8::internal::InstructionAccurateScope
 
class  v8::internal::UseScratchRegisterScope
 
struct  v8::internal::MoveCycleState
 

Namespaces

namespace  v8
 
namespace  v8::internal
 
namespace  v8::internal::wasm
 

Macros

#define ASM_LOCATION(message)
 
#define ASM_LOCATION_IN_ASSEMBLER(message)
 
#define LS_MACRO_LIST(V)
 
#define LSPAIR_MACRO_LIST(V)
 
#define LDA_STL_MACRO_LIST(V)
 
#define STLX_MACRO_LIST(V)
 
#define CAS_SINGLE_MACRO_LIST(V)
 
#define CAS_PAIR_MACRO_LIST(V)
 
#define ATOMIC_MEMORY_SIMPLE_MACRO_LIST(V, DEF, MASM_PRE, ASM_PRE)
 
#define ATOMIC_MEMORY_STORE_MACRO_MODES(V, MASM, ASM)
 
#define ATOMIC_MEMORY_LOAD_MACRO_MODES(V, MASM, ASM)
 
#define NEON_BYELEMENT_MACRO_LIST(V)
 
#define DEFINE_MACRO_ASM_FUNC(ASM, MASM)
 
#define NEON_2VREG_MACRO_LIST(V)
 
#define DEFINE_MACRO_ASM_FUNC(ASM, MASM)
 
#define NEON_2VREG_FPIMM_MACRO_LIST(V)
 
#define DEFINE_MACRO_ASM_FUNC(ASM, MASM)
 
#define NEON_3VREG_MACRO_LIST(V)
 
#define DEFINE_MACRO_ASM_FUNC(ASM, MASM)
 
#define DECLARE_FUNCTION(FN, REGTYPE, REG, OP)
 
#define DECLARE_FUNCTION(FN, REGTYPE, REG, REG2, OP)
 
#define NEON_2VREG_SHIFT_MACRO_LIST(V)
 
#define DEFINE_MACRO_ASM_FUNC(ASM, MASM)
 
#define DECLARE_FUNCTION(FN, OP)
 
#define DECLARE_FUNCTION(FN, OP)
 
#define DECLARE_FUNCTION(FN, OP)
 
#define DECLARE_LOAD_FUNCTION(FN, OP)
 
#define DECLARE_STORE_FUNCTION(FN, OP)
 
#define DECLARE_SWP_FUNCTION(FN, OP)
 
#define DECLARE_FUNCTION(FN, OP)
 
#define ACCESS_MASM(masm)
 

Enumerations

enum  v8::internal::BranchType {
  v8::internal::integer_eq = eq , v8::internal::integer_ne = ne , v8::internal::integer_hs = hs , v8::internal::integer_lo = lo ,
  v8::internal::integer_mi = mi , v8::internal::integer_pl = pl , v8::internal::integer_vs = vs , v8::internal::integer_vc = vc ,
  v8::internal::integer_hi = hi , v8::internal::integer_ls = ls , v8::internal::integer_ge = ge , v8::internal::integer_lt = lt ,
  v8::internal::integer_gt = gt , v8::internal::integer_le = le , v8::internal::integer_al = al , v8::internal::integer_nv = nv ,
  v8::internal::always , v8::internal::never , v8::internal::reg_zero , v8::internal::reg_not_zero ,
  v8::internal::reg_bit_clear , v8::internal::reg_bit_set , v8::internal::kBranchTypeFirstCondition = eq , v8::internal::kBranchTypeLastCondition = nv ,
  v8::internal::kBranchTypeFirstUsingReg = reg_zero , v8::internal::kBranchTypeFirstUsingBit = reg_bit_clear
}
 
enum  v8::internal::LinkRegisterStatus {
  v8::internal::kLRHasNotBeenSaved , v8::internal::kLRHasBeenSaved , v8::internal::kLRHasNotBeenSaved , v8::internal::kLRHasBeenSaved ,
  v8::internal::kLRHasNotBeenSaved , v8::internal::kLRHasBeenSaved , v8::internal::kLRHasNotBeenSaved , v8::internal::kLRHasBeenSaved
}
 
enum  v8::internal::DiscardMoveMode { v8::internal::kDontDiscardForSameWReg , v8::internal::kDiscardForSameWReg }
 
enum  v8::internal::PreShiftImmMode { v8::internal::kNoShift , v8::internal::kLimitShiftForSP , v8::internal::kAnyShift }
 
enum class  v8::internal::StackLimitKind {
  v8::internal::kInterruptStackLimit , v8::internal::kRealStackLimit , v8::internal::kInterruptStackLimit , v8::internal::kRealStackLimit ,
  v8::internal::kInterruptStackLimit , v8::internal::kRealStackLimit , v8::internal::kInterruptStackLimit , v8::internal::kRealStackLimit ,
  v8::internal::kInterruptStackLimit , v8::internal::kRealStackLimit , v8::internal::kInterruptStackLimit , v8::internal::kRealStackLimit
}
 

Functions

MemOperand v8::internal::FieldMemOperand (Register object, int offset)
 
BranchType v8::internal::InvertBranchType (BranchType type)
 
MemOperand v8::internal::ExitFrameStackSlotOperand (int offset)
 
MemOperand v8::internal::ExitFrameCallerStackSlotOperand (int index)
 
void v8::internal::CallApiFunctionAndReturn (MacroAssembler *masm, bool with_profiling, Register function_address, ExternalReference thunk_ref, Register thunk_arg, int slots_to_drop_on_return, MemOperand *argc_operand, MemOperand return_value_operand)
 

Macro Definition Documentation

◆ ACCESS_MASM

#define ACCESS_MASM ( masm)
Value:
masm->

Definition at line 2656 of file macro-assembler-arm64.h.

◆ ASM_LOCATION

#define ASM_LOCATION ( message)

Definition at line 31 of file macro-assembler-arm64.h.

◆ ASM_LOCATION_IN_ASSEMBLER

#define ASM_LOCATION_IN_ASSEMBLER ( message)

Definition at line 32 of file macro-assembler-arm64.h.

◆ ATOMIC_MEMORY_LOAD_MACRO_MODES

#define ATOMIC_MEMORY_LOAD_MACRO_MODES ( V,
MASM,
ASM )
Value:
V(MASM##a, ASM##a) \
V(MASM##al, ASM##al) \
V(MASM##ab, ASM##ab) \
V(MASM##alb, ASM##alb) \
V(MASM##ah, ASM##ah) \
V(MASM##alh, ASM##alh)
#define V(Name)
#define ATOMIC_MEMORY_STORE_MACRO_MODES(V, MASM, ASM)

Definition at line 115 of file macro-assembler-arm64.h.

◆ ATOMIC_MEMORY_SIMPLE_MACRO_LIST

#define ATOMIC_MEMORY_SIMPLE_MACRO_LIST ( V,
DEF,
MASM_PRE,
ASM_PRE )
Value:
V(DEF, MASM_PRE##add, ASM_PRE##add) \
V(DEF, MASM_PRE##clr, ASM_PRE##clr) \
V(DEF, MASM_PRE##eor, ASM_PRE##eor) \
V(DEF, MASM_PRE##set, ASM_PRE##set) \
V(DEF, MASM_PRE##smax, ASM_PRE##smax) \
V(DEF, MASM_PRE##smin, ASM_PRE##smin) \
V(DEF, MASM_PRE##umax, ASM_PRE##umax) \
V(DEF, MASM_PRE##umin, ASM_PRE##umin)

Definition at line 97 of file macro-assembler-arm64.h.

◆ ATOMIC_MEMORY_STORE_MACRO_MODES

#define ATOMIC_MEMORY_STORE_MACRO_MODES ( V,
MASM,
ASM )
Value:
V(MASM, ASM) \
V(MASM##l, ASM##l) \
V(MASM##b, ASM##b) \
V(MASM##lb, ASM##lb) \
V(MASM##h, ASM##h) \
V(MASM##lh, ASM##lh)

Definition at line 107 of file macro-assembler-arm64.h.

◆ CAS_PAIR_MACRO_LIST

#define CAS_PAIR_MACRO_LIST ( V)
Value:
V(Casp, casp) \
V(Caspa, caspa) \
V(Caspl, caspl) \
V(Caspal, caspal)

Definition at line 88 of file macro-assembler-arm64.h.

◆ CAS_SINGLE_MACRO_LIST

#define CAS_SINGLE_MACRO_LIST ( V)
Value:
V(Cas, cas) \
V(Casa, casa) \
V(Casl, casl) \
V(Casal, casal) \
V(Casb, casb) \
V(Casab, casab) \
V(Caslb, caslb) \
V(Casalb, casalb) \
V(Cash, cash) \
V(Casah, casah) \
V(Caslh, caslh) \
V(Casalh, casalh)

Definition at line 74 of file macro-assembler-arm64.h.

◆ DECLARE_FUNCTION [1/6]

#define DECLARE_FUNCTION ( FN,
OP )
Value:
inline void FN(const Register& rt, const Register& rn);

Definition at line 880 of file macro-assembler-arm64.h.

◆ DECLARE_FUNCTION [2/6]

#define DECLARE_FUNCTION ( FN,
OP )
Value:
inline void FN(const Register& rs, const Register& rt, const MemOperand& src);

Definition at line 880 of file macro-assembler-arm64.h.

◆ DECLARE_FUNCTION [3/6]

#define DECLARE_FUNCTION ( FN,
OP )
Value:
inline void FN(const Register& rs, const Register& rs2, const Register& rt, \
const Register& rt2, const MemOperand& src);

Definition at line 880 of file macro-assembler-arm64.h.

◆ DECLARE_FUNCTION [4/6]

#define DECLARE_FUNCTION ( FN,
OP )
Value:
inline void FN(const Register& rs, const Register& rt, const Register& rn);

Definition at line 880 of file macro-assembler-arm64.h.

◆ DECLARE_FUNCTION [5/6]

#define DECLARE_FUNCTION ( FN,
REGTYPE,
REG,
OP )
Value:
inline void FN(const REGTYPE REG, const MemOperand& addr);

Definition at line 880 of file macro-assembler-arm64.h.

◆ DECLARE_FUNCTION [6/6]

#define DECLARE_FUNCTION ( FN,
REGTYPE,
REG,
REG2,
OP )
Value:
inline void FN(const REGTYPE REG, const REGTYPE REG2, const MemOperand& addr);

Definition at line 880 of file macro-assembler-arm64.h.

◆ DECLARE_LOAD_FUNCTION

#define DECLARE_LOAD_FUNCTION ( FN,
OP )
Value:
inline void FN(const Register& rs, const Register& rt, const MemOperand& src);

Definition at line 1464 of file macro-assembler-arm64.h.

◆ DECLARE_STORE_FUNCTION

#define DECLARE_STORE_FUNCTION ( FN,
OP )
Value:
inline void FN(const Register& rs, const MemOperand& src);

Definition at line 1466 of file macro-assembler-arm64.h.

◆ DECLARE_SWP_FUNCTION

#define DECLARE_SWP_FUNCTION ( FN,
OP )
Value:
inline void FN(const Register& rs, const Register& rt, const MemOperand& src);

Definition at line 1474 of file macro-assembler-arm64.h.

◆ DEFINE_MACRO_ASM_FUNC [1/5]

#define DEFINE_MACRO_ASM_FUNC ( ASM,
MASM )
Value:
void MASM(const VRegister& vd, const VRegister& vn, const VRegister& vm, \
int vm_index) { \
DCHECK(allow_macro_instructions()); \
ASM(vd, vn, vm, vm_index); \
}

Definition at line 301 of file macro-assembler-arm64.h.

◆ DEFINE_MACRO_ASM_FUNC [2/5]

#define DEFINE_MACRO_ASM_FUNC ( ASM,
MASM )
Value:
void MASM(const VRegister& vd, const VRegister& vn) { \
DCHECK(allow_macro_instructions()); \
ASM(vd, vn); \
}

Definition at line 301 of file macro-assembler-arm64.h.

◆ DEFINE_MACRO_ASM_FUNC [3/5]

#define DEFINE_MACRO_ASM_FUNC ( ASM,
MASM )
Value:
void MASM(const VRegister& vd, const VRegister& vn, double imm) { \
DCHECK(allow_macro_instructions()); \
ASM(vd, vn, imm); \
}

Definition at line 301 of file macro-assembler-arm64.h.

◆ DEFINE_MACRO_ASM_FUNC [4/5]

#define DEFINE_MACRO_ASM_FUNC ( ASM,
MASM )
Value:
void MASM(const VRegister& vd, const VRegister& vn, const VRegister& vm) { \
DCHECK(allow_macro_instructions()); \
ASM(vd, vn, vm); \
}

Definition at line 301 of file macro-assembler-arm64.h.

◆ DEFINE_MACRO_ASM_FUNC [5/5]

#define DEFINE_MACRO_ASM_FUNC ( ASM,
MASM )
Value:
void MASM(const VRegister& vd, const VRegister& vn, int shift) { \
DCHECK(allow_macro_instructions()); \
ASM(vd, vn, shift); \
}

Definition at line 301 of file macro-assembler-arm64.h.

◆ LDA_STL_MACRO_LIST

#define LDA_STL_MACRO_LIST ( V)
Value:
V(Ldarb, ldarb) \
V(Ldarh, ldarh) \
V(Ldar, ldar) \
V(Ldaxrb, ldaxrb) \
V(Ldaxrh, ldaxrh) \
V(Ldaxr, ldaxr) \
V(Stlrb, stlrb) \
V(Stlrh, stlrh) \
V(Stlr, stlr)

Definition at line 58 of file macro-assembler-arm64.h.

◆ LS_MACRO_LIST

#define LS_MACRO_LIST ( V)
Value:
V(Ldrb, Register&, rt, LDRB_w) \
V(Strb, Register&, rt, STRB_w) \
V(Ldrsb, Register&, rt, rt.Is64Bits() ? LDRSB_x : LDRSB_w) \
V(Ldrh, Register&, rt, LDRH_w) \
V(Strh, Register&, rt, STRH_w) \
V(Ldrsh, Register&, rt, rt.Is64Bits() ? LDRSH_x : LDRSH_w) \
V(Ldr, CPURegister&, rt, LoadOpFor(rt)) \
V(Str, CPURegister&, rt, StoreOpFor(rt)) \
V(Ldrsw, Register&, rt, LDRSW_x)

Definition at line 42 of file macro-assembler-arm64.h.

◆ LSPAIR_MACRO_LIST

#define LSPAIR_MACRO_LIST ( V)
Value:
V(Ldp, CPURegister&, rt, rt2, LoadPairOpFor(rt, rt2)) \
V(Stp, CPURegister&, rt, rt2, StorePairOpFor(rt, rt2)) \
V(Ldpsw, CPURegister&, rt, rt2, LDPSW_x)

Definition at line 53 of file macro-assembler-arm64.h.

◆ NEON_2VREG_FPIMM_MACRO_LIST

#define NEON_2VREG_FPIMM_MACRO_LIST ( V)
Value:
V(fcmeq, Fcmeq) \
V(fcmge, Fcmge) \
V(fcmgt, Fcmgt) \
V(fcmle, Fcmle) \
V(fcmlt, Fcmlt)

Definition at line 396 of file macro-assembler-arm64.h.

◆ NEON_2VREG_MACRO_LIST

#define NEON_2VREG_MACRO_LIST ( V)

Definition at line 311 of file macro-assembler-arm64.h.

◆ NEON_2VREG_SHIFT_MACRO_LIST

#define NEON_2VREG_SHIFT_MACRO_LIST ( V)

Definition at line 1367 of file macro-assembler-arm64.h.

◆ NEON_3VREG_MACRO_LIST

#define NEON_3VREG_MACRO_LIST ( V)

Definition at line 412 of file macro-assembler-arm64.h.

◆ NEON_BYELEMENT_MACRO_LIST

#define NEON_BYELEMENT_MACRO_LIST ( V)
Value:
V(fmla, Fmla) \
V(fmls, Fmls) \
V(fmul, Fmul) \
V(fmulx, Fmulx) \
V(mul, Mul) \
V(mla, Mla) \
V(mls, Mls) \
V(sqdmulh, Sqdmulh) \
V(sqrdmulh, Sqrdmulh) \
V(sqdmull, Sqdmull) \
V(sqdmull2, Sqdmull2) \
V(sqdmlal, Sqdmlal) \
V(sqdmlal2, Sqdmlal2) \
V(sqdmlsl, Sqdmlsl) \
V(sqdmlsl2, Sqdmlsl2) \
V(smull, Smull) \
V(smull2, Smull2) \
V(smlal, Smlal) \
V(smlal2, Smlal2) \
V(smlsl, Smlsl) \
V(smlsl2, Smlsl2) \
V(umull, Umull) \
V(umull2, Umull2) \
V(umlal, Umlal) \
V(umlal2, Umlal2) \
V(umlsl, Umlsl) \
V(umlsl2, Umlsl2)

Definition at line 272 of file macro-assembler-arm64.h.

◆ STLX_MACRO_LIST

#define STLX_MACRO_LIST ( V)
Value:
V(Stlxrb, stlxrb) \
V(Stlxrh, stlxrh) \
V(Stlxr, stlxr)

Definition at line 69 of file macro-assembler-arm64.h.