Go to the source code of this file.
|
#define | __ masm()-> |
|
#define | TRACE(...) |
|
#define | CREATE_OOL_CLASS(ool_name, tasm_ool_name, T) |
|
#define | ASSEMBLE_ATOMIC_LOAD_INTEGER(asm_instr) |
|
#define | ASSEMBLE_ATOMIC_STORE_INTEGER(asm_instr) |
|
#define | ASSEMBLE_ATOMIC_BINOP(load_linked, store_conditional, bin_instr) |
|
#define | ASSEMBLE_ATOMIC_BINOP_EXT(load_linked, store_conditional, sign_extend, size, bin_instr, representation) |
|
#define | ASSEMBLE_ATOMIC_EXCHANGE_INTEGER(load_linked, store_conditional) |
|
#define | ASSEMBLE_ATOMIC_EXCHANGE_INTEGER_EXT( load_linked, store_conditional, sign_extend, size, representation) |
|
#define | ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER(load_linked, store_conditional) |
|
#define | ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER_EXT( load_linked, store_conditional, sign_extend, size, representation) |
|
#define | ASSEMBLE_IEEE754_BINOP(name) |
|
#define | ASSEMBLE_IEEE754_UNOP(name) |
|
#define | ASSEMBLE_F64X2_ARITHMETIC_BINOP(op) |
|
#define | ATOMIC_BINOP_CASE(op, inst32, inst64) |
|
#define | UNSUPPORTED_COND(opcode, condition) |
|
#define | __ masm-> |
|
#define | __ masm()-> |
|
◆ __ [1/3]
◆ __ [2/3]
◆ __ [3/3]
◆ ASSEMBLE_ATOMIC_BINOP
#define ASSEMBLE_ATOMIC_BINOP |
( |
| load_linked, |
|
|
| store_conditional, |
|
|
| bin_instr ) |
Value: do { \
Label binop; \
__ Daddu(
i.TempRegister(0),
i.InputRegister(0),
i.InputRegister(1)); \
__ load_linked(
i.OutputRegister(0), MemOperand(
i.TempRegister(0), 0)); \
__ bin_instr(
i.TempRegister(1),
i.OutputRegister(0), \
Operand(
i.InputRegister(2))); \
__ store_conditional(
i.TempRegister(1), MemOperand(
i.TempRegister(0), 0)); \
__ BranchShort(&binop, eq,
i.TempRegister(1), Operand(zero_reg)); \
} while (0)
Definition at line 343 of file code-generator-mips64.cc.
◆ ASSEMBLE_ATOMIC_BINOP_EXT
#define ASSEMBLE_ATOMIC_BINOP_EXT |
( |
| load_linked, |
|
|
| store_conditional, |
|
|
| sign_extend, |
|
|
| size, |
|
|
| bin_instr, |
|
|
| representation ) |
Value: do { \
Label binop; \
__ daddu(
i.TempRegister(0),
i.InputRegister(0),
i.InputRegister(1)); \
if (representation == 32) { \
__ andi(
i.TempRegister(3),
i.TempRegister(0), 0x3); \
} else { \
DCHECK_EQ(representation, 64); \
__ andi(
i.TempRegister(3),
i.TempRegister(0), 0x7); \
} \
__ Dsubu(
i.TempRegister(0),
i.TempRegister(0), \
Operand(
i.TempRegister(3))); \
__ sll(
i.TempRegister(3),
i.TempRegister(3), 3); \
__ load_linked(
i.TempRegister(1),
MemOperand(
i.TempRegister(0), 0)); \
__ ExtractBits(
i.OutputRegister(0),
i.TempRegister(1),
i.TempRegister(3), \
size, sign_extend); \
__ bin_instr(
i.TempRegister(2),
i.OutputRegister(0), \
Operand(
i.InputRegister(2))); \
__ InsertBits(
i.TempRegister(1),
i.TempRegister(2),
i.TempRegister(3), \
size); \
__ store_conditional(
i.TempRegister(1),
MemOperand(
i.TempRegister(0), 0)); \
__ BranchShort(&binop, eq,
i.TempRegister(1), Operand(zero_reg)); \
} while (0)
Definition at line 357 of file code-generator-mips64.cc.
◆ ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER
#define ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER |
( |
| load_linked, |
|
|
| store_conditional ) |
Value: do { \
Label compareExchange; \
Label exit; \
__ daddu(
i.TempRegister(0),
i.InputRegister(0),
i.InputRegister(1)); \
__ bind(&compareExchange); \
__ load_linked(
i.OutputRegister(0), MemOperand(
i.TempRegister(0), 0)); \
__ BranchShort(&exit, ne,
i.InputRegister(2), \
Operand(
i.OutputRegister(0))); \
__ mov(
i.TempRegister(2),
i.InputRegister(3)); \
__ store_conditional(
i.TempRegister(2), MemOperand(
i.TempRegister(0), 0)); \
__ BranchShort(&compareExchange, eq,
i.TempRegister(2), \
Operand(zero_reg)); \
} while (0)
Definition at line 424 of file code-generator-mips64.cc.
◆ ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER_EXT
#define ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER_EXT |
( |
| load_linked, |
|
|
| store_conditional, |
|
|
| sign_extend, |
|
|
| size, |
|
|
| representation ) |
Value: do { \
Label compareExchange; \
Label exit; \
__ daddu(
i.TempRegister(0),
i.InputRegister(0),
i.InputRegister(1)); \
if (representation == 32) { \
__ andi(
i.TempRegister(1),
i.TempRegister(0), 0x3); \
} else { \
DCHECK_EQ(representation, 64); \
__ andi(
i.TempRegister(1),
i.TempRegister(0), 0x7); \
} \
__ Dsubu(
i.TempRegister(0),
i.TempRegister(0), \
Operand(
i.TempRegister(1))); \
__ sll(
i.TempRegister(1),
i.TempRegister(1), 3); \
__ bind(&compareExchange); \
__ load_linked(
i.TempRegister(2),
MemOperand(
i.TempRegister(0), 0)); \
__ ExtractBits(
i.OutputRegister(0),
i.TempRegister(2),
i.TempRegister(1), \
size, sign_extend); \
__ ExtractBits(
i.TempRegister(2),
i.InputRegister(2), zero_reg, size, \
sign_extend); \
__ BranchShort(&exit, ne,
i.TempRegister(2), \
Operand(
i.OutputRegister(0))); \
__ InsertBits(
i.TempRegister(2),
i.InputRegister(3),
i.TempRegister(1), \
size); \
__ store_conditional(
i.TempRegister(2),
MemOperand(
i.TempRegister(0), 0)); \
__ BranchShort(&compareExchange, eq,
i.TempRegister(2), \
Operand(zero_reg)); \
} while (0)
Definition at line 443 of file code-generator-mips64.cc.
◆ ASSEMBLE_ATOMIC_EXCHANGE_INTEGER
#define ASSEMBLE_ATOMIC_EXCHANGE_INTEGER |
( |
| load_linked, |
|
|
| store_conditional ) |
Value: do { \
Label exchange; \
__ daddu(
i.TempRegister(0),
i.InputRegister(0),
i.InputRegister(1)); \
__ load_linked(
i.OutputRegister(0), MemOperand(
i.TempRegister(0), 0)); \
__ mov(
i.TempRegister(1),
i.InputRegister(2)); \
__ store_conditional(
i.TempRegister(1), MemOperand(
i.TempRegister(0), 0)); \
__ BranchShort(&exchange, eq,
i.TempRegister(1), Operand(zero_reg)); \
} while (0)
Definition at line 385 of file code-generator-mips64.cc.
◆ ASSEMBLE_ATOMIC_EXCHANGE_INTEGER_EXT
#define ASSEMBLE_ATOMIC_EXCHANGE_INTEGER_EXT |
( |
| load_linked, |
|
|
| store_conditional, |
|
|
| sign_extend, |
|
|
| size, |
|
|
| representation ) |
Value: do { \
Label exchange; \
__ daddu(
i.TempRegister(0),
i.InputRegister(0),
i.InputRegister(1)); \
if (representation == 32) { \
__ andi(
i.TempRegister(1),
i.TempRegister(0), 0x3); \
} else { \
DCHECK_EQ(representation, 64); \
__ andi(
i.TempRegister(1),
i.TempRegister(0), 0x7); \
} \
__ Dsubu(
i.TempRegister(0),
i.TempRegister(0), \
Operand(
i.TempRegister(1))); \
__ sll(
i.TempRegister(1),
i.TempRegister(1), 3); \
__ load_linked(
i.TempRegister(2),
MemOperand(
i.TempRegister(0), 0)); \
__ ExtractBits(
i.OutputRegister(0),
i.TempRegister(2),
i.TempRegister(1), \
size, sign_extend); \
__ InsertBits(
i.TempRegister(2),
i.InputRegister(2),
i.TempRegister(1), \
size); \
__ store_conditional(
i.TempRegister(2),
MemOperand(
i.TempRegister(0), 0)); \
__ BranchShort(&exchange, eq,
i.TempRegister(2), Operand(zero_reg)); \
} while (0)
Definition at line 398 of file code-generator-mips64.cc.
◆ ASSEMBLE_ATOMIC_LOAD_INTEGER
#define ASSEMBLE_ATOMIC_LOAD_INTEGER |
( |
| asm_instr | ) |
|
◆ ASSEMBLE_ATOMIC_STORE_INTEGER
#define ASSEMBLE_ATOMIC_STORE_INTEGER |
( |
| asm_instr | ) |
|
◆ ASSEMBLE_F64X2_ARITHMETIC_BINOP
#define ASSEMBLE_F64X2_ARITHMETIC_BINOP |
( |
| op | ) |
|
Value: do { \
__ op(
i.OutputSimd128Register(),
i.InputSimd128Register(0), \
i.InputSimd128Register(1)); \
} while (0)
Definition at line 497 of file code-generator-mips64.cc.
◆ ASSEMBLE_IEEE754_BINOP
#define ASSEMBLE_IEEE754_BINOP |
( |
| name | ) |
|
Value: do { \
FrameScope scope(masm(), StackFrame::MANUAL); \
__ MovToFloatParameters(
i.InputDoubleRegister(0), \
i.InputDoubleRegister(1)); \
__ CallCFunction(ExternalReference::ieee754_##name##_function(), 0, 2); \
\
__ MovFromFloatResult(
i.OutputDoubleRegister()); \
} while (0)
Definition at line 476 of file code-generator-mips64.cc.
◆ ASSEMBLE_IEEE754_UNOP
#define ASSEMBLE_IEEE754_UNOP |
( |
| name | ) |
|
Value: do { \
FrameScope scope(masm(), StackFrame::MANUAL); \
__ MovToFloatParameter(
i.InputDoubleRegister(0)); \
__ CallCFunction(ExternalReference::ieee754_##name##_function(), 0, 1); \
\
__ MovFromFloatResult(
i.OutputDoubleRegister()); \
} while (0)
Definition at line 487 of file code-generator-mips64.cc.
◆ ATOMIC_BINOP_CASE
#define ATOMIC_BINOP_CASE |
( |
| op, |
|
|
| inst32, |
|
|
| inst64 ) |
◆ CREATE_OOL_CLASS
#define CREATE_OOL_CLASS |
( |
| ool_name, |
|
|
| tasm_ool_name, |
|
|
| T ) |
Value: class ool_name final : public OutOfLineCode { \
public: \
ool_name(CodeGenerator*
gen, T dst, T src1, T src2) \
: OutOfLineCode(
gen), dst_(dst), src1_(src1), src2_(src2) {} \
\
void Generate() final {
__ tasm_ool_name(dst_, src1_, src2_); } \
\
private: \
T const dst_; \
T const src1_; \
T const src2_; \
}
Definition at line 200 of file code-generator-mips64.cc.
◆ TRACE
◆ UNSUPPORTED_COND
#define UNSUPPORTED_COND |
( |
| opcode, |
|
|
| condition ) |
◆ index_
◆ mode_
RecordWriteMode const mode_ |
|
private |
◆ must_save_lr_
◆ object_
◆ scratch0_
◆ scratch1_
◆ value_
◆ zone_