| /arkcompiler/ets_runtime/ecmascript/compiler/assembler/aarch64/ |
| D | assembler_aarch64.h | 23 class Register { 25 Register(RegisterId reg, RegisterType type = RegisterType::X) : reg_(reg), type_(type) {}; in reg_() 27 Register W() const in W() 29 return Register(reg_, RegisterType::W); in W() 32 Register X() const in X() 34 return Register(reg_, RegisterType::X); in X() 62 inline bool operator !=(const Register &other) 67 inline bool operator ==(const Register &other) 99 return 8; // 8:Register size in GetRegSize() 101 return 16; // 16:Register size in GetRegSize() [all …]
|
| D | extend_assembler.cpp | 21 Register ExtendedAssembler::ghcJSCallDispacherArgs_[JS_CALL_DISPATCHER_ARGS_COUNT] = { 24 Register ExtendedAssembler::cppJSCallDispacherArgs_[JS_CALL_DISPATCHER_ARGS_COUNT] = { 30 Register sp(SP); in CalleeSave() 31 Stp(Register(X27), Register(X28), MemoryOperand(sp, -PAIR_SLOT_SIZE, PREINDEX)); in CalleeSave() 32 Stp(Register(X25), Register(X26), MemoryOperand(sp, -PAIR_SLOT_SIZE, PREINDEX)); in CalleeSave() 33 Stp(Register(X23), Register(X24), MemoryOperand(sp, -PAIR_SLOT_SIZE, PREINDEX)); in CalleeSave() 34 Stp(Register(X21), Register(X22), MemoryOperand(sp, -PAIR_SLOT_SIZE, PREINDEX)); in CalleeSave() 35 Stp(Register(X19), Register(X20), MemoryOperand(sp, -PAIR_SLOT_SIZE, PREINDEX)); in CalleeSave() 45 Register sp(SP); in CalleeRestore() 50 Ldp(Register(X19), Register(X20), MemoryOperand(sp, PAIR_SLOT_SIZE, POSTINDEX)); in CalleeRestore() [all …]
|
| D | macro_assembler_aarch64.h | 56 const std::vector<aarch64::Register> registerParamVec { 57 … aarch64::Register(aarch64::X0), aarch64::Register(aarch64::X1), aarch64::Register(aarch64::X2), 58 … aarch64::Register(aarch64::X3), aarch64::Register(aarch64::X4), aarch64::Register(aarch64::X5), 59 aarch64::Register(aarch64::X6), aarch64::Register(aarch64::X7) }; 60 …const aarch64::Register GLUE_REGISTER = aarch64::Register(aarch64::X19); // same with ghc callco… 61 const aarch64::Register LOCAL_SCOPE_REGISTER = aarch64::Register(aarch64::X11); 62 const aarch64::Register RETURN_REGISTER = aarch64::Register(aarch64::X0); 63 void MovParameterIntoParamReg(MacroParameter param, aarch64::Register paramReg); 64 … void PickLoadStoreInsn(aarch64::Register reg, aarch64::MemoryOperand memOpnd, bool isLoad = true); 69 void CopyImm(aarch64::Register destReg, int64_t imm, uint32_t size); [all …]
|
| D | extend_assembler.h | 44 void PushArgc(int32_t argc, Register op, Register fp); 45 void PushArgc(Register argc, Register op, Register fp); 46 void Align16(Register fp); 48 Register TempRegister1() in TempRegister1() 57 Register TempRegister2() in TempRegister2() 66 Register AvailableRegister1() const in AvailableRegister1() 68 // X11 is neither callee saved reegister nor argument register in AvailableRegister1() 71 Register AvailableRegister2() const in AvailableRegister2() 73 // X12 is neither callee saved reegister nor argument register in AvailableRegister2() 76 Register AvailableRegister3() const in AvailableRegister3() [all …]
|
| D | assembler_aarch64.cpp | 90 void AssemblerAarch64::Ldp(const Register &rt, const Register &rt2, const MemoryOperand &operand) in Ldp() 124 void AssemblerAarch64::Stp(const Register &rt, const Register &rt2, const MemoryOperand &operand) in Stp() 277 void AssemblerAarch64::Ldr(const Register &rt, const MemoryOperand &operand, Scale scale) in Ldr() 291 Register rm = operand.GetRegisterOffset(); in Ldr() 292 Register rn = operand.GetRegBase(); in Ldr() 303 void AssemblerAarch64::Ldr(const Register &rt, const MemoryOperand &operand) in Ldr() 308 void AssemblerAarch64::Ldrh(const Register &rt, const MemoryOperand &operand) in Ldrh() 314 void AssemblerAarch64::Ldrb(const Register &rt, const MemoryOperand &operand) in Ldrb() 320 void AssemblerAarch64::Str(const Register &rt, const MemoryOperand &operand) in Str() 357 void AssemblerAarch64::Ldur(const Register &rt, const MemoryOperand &operand) in Ldur() [all …]
|
| /arkcompiler/ets_runtime/ecmascript/compiler/assembler/x64/ |
| D | assembler_x64.h | 21 enum Register : uint8_t { enum 63 Operand(Register base, int32_t disp); 64 Operand(Register base, Register index, Scale scale, int32_t disp); 65 Operand(Register index, Scale scale, int32_t disp); 68 void BuildSIB(Scale scale, Register index, Register base); 69 void BuildModerm(int32_t mode, Register rm); 89 void Pushq(Register x); 91 void Push(Register x); 92 void Popq(Register x); 93 void Pop(Register x); [all …]
|
| D | extended_assembler_x64.h | 41 void PushArgsWithArgv(Register argc, Register argv, Register operatorRegister); 42 void PushArgc(int32_t argc, Register tempArgcRegister); 43 void PushArgc(Register argcRegister, Register tempArgcRegister); 45 Register TempRegister() in TempRegister() 48 LOG_COMPILER(FATAL) << "temp register inuse."; in TempRegister() 54 Register AvailableRegister1() const in AvailableRegister1() 56 // r10 is neither callee saved reegister nor argument register in AvailableRegister1() 59 Register AvailableRegister2() const in AvailableRegister2() 61 // r11 is neither callee saved reegister nor argument register in AvailableRegister2() 64 Register CppJSCallAvailableRegister1() const in CppJSCallAvailableRegister1() [all …]
|
| /arkcompiler/ets_runtime/ecmascript/compiler/trampoline/aarch64/ |
| D | common_call.h | 64 …void PushUndefinedWithArgc(ExtendedAssembler *assembler, Register glue, Register argc, Register te… 65 Register fp, Label *next, Label *stackOverflow); 66 …atic void PushArgsWithArgv(ExtendedAssembler *assembler, Register glue, Register argc, Register ar… 67 Register op, Register fp, Label *next, Label *stackOverflow); 68 …oid PushArgsWithArgvInPair(ExtendedAssembler *assembler, Register argc, Register argv, Register pa… 69 Register op1, Register op2, Label *next); 72 …void StackOverflowCheck(ExtendedAssembler *assembler, Register glue, Register currentSlot, Registe… 73 Register op, Label *stackOverflow); 74 static void PushLeaveFrame(ExtendedAssembler *assembler, Register glue); 113 static void JSCallCheck(ExtendedAssembler *assembler, Register jsfunc, Register taggedValue, [all …]
|
| D | optimized_fast_call.cpp | 44 Register glueReg(X0); in OptimizedFastCallEntry() 45 Register argc(X1); in OptimizedFastCallEntry() 46 Register argV(X2); in OptimizedFastCallEntry() 47 Register prevFpReg(X3); in OptimizedFastCallEntry() 48 Register sp(SP); in OptimizedFastCallEntry() 51 __ Mov(Register(X3), argc); in OptimizedFastCallEntry() 52 __ Mov(Register(X4), argV); in OptimizedFastCallEntry() 53 Register tmpArgc(X3); in OptimizedFastCallEntry() 54 Register tmpArgV(X4); in OptimizedFastCallEntry() 56 __ Mov(Register(X20), glueReg); in OptimizedFastCallEntry() [all …]
|
| D | optimized_call.cpp | 60 Register glue(X0); in CallRuntime() 61 Register fp(FP); in CallRuntime() 62 Register tmp(X19); in CallRuntime() 63 Register sp(SP); in CallRuntime() 64 Register argC(X1); in CallRuntime() 65 Register argV(X2); in CallRuntime() 70 Register frameType(X2); in CallRuntime() 79 Register rtfunc(X19); in CallRuntime() 99 void OptimizedCall::IncreaseStackForArguments(ExtendedAssembler *assembler, Register argc, Register… in IncreaseStackForArguments() 102 Register sp(SP); in IncreaseStackForArguments() [all …]
|
| D | common_call.cpp | 36 Register fp(X29); in PushAsmInterpBridgeFrame() 37 Register sp(SP); in PushAsmInterpBridgeFrame() 40 Register frameTypeRegister = __ TempRegister1(); in PushAsmInterpBridgeFrame() 44 …__ Stp(frameTypeRegister, Register(X30), MemoryOperand(sp, -2 * FRAME_SLOT_SIZE, AddrMode::PREINDE… in PushAsmInterpBridgeFrame() 46 … __ Stp(Register(Zero), Register(FP), MemoryOperand(sp, -2 * FRAME_SLOT_SIZE, AddrMode::PREINDEX)); in PushAsmInterpBridgeFrame() 56 Register sp(SP); in PopAsmInterpBridgeFrame() 62 … __ Ldp(Register(Zero), Register(FP), MemoryOperand(sp, 2 * FRAME_SLOT_SIZE, AddrMode::POSTINDEX)); in PopAsmInterpBridgeFrame() 64 …__ Ldp(Register(Zero), Register(X30), MemoryOperand(sp, 2 * FRAME_SLOT_SIZE, AddrMode::POSTINDEX)); in PopAsmInterpBridgeFrame() 68 void CommonCall::PushLeaveFrame(ExtendedAssembler *assembler, Register glue) in PushLeaveFrame() 71 Register frameType = __ TempRegister2(); in PushLeaveFrame() [all …]
|
| D | asm_interpreter_call.cpp | 76 Register glueRegister(X0); in AsmInterpEntryDispatch() 77 Register argcRegister(X4, W); in AsmInterpEntryDispatch() 78 Register argvRegister(X5); in AsmInterpEntryDispatch() 79 Register callTargetRegister(X1); in AsmInterpEntryDispatch() 80 Register callFieldRegister(X3); in AsmInterpEntryDispatch() 81 Register bitFieldRegister(X16); in AsmInterpEntryDispatch() 82 Register tempRegister(X17); // can not be used to store any variable in AsmInterpEntryDispatch() 83 Register functionTypeRegister(X18, W); in AsmInterpEntryDispatch() 111 Register runtimeId(X11); in AsmInterpEntryDispatch() 112 Register trampoline(X12); in AsmInterpEntryDispatch() [all …]
|
| /arkcompiler/ets_runtime/ecmascript/compiler/assembler/tests/ |
| D | assembler_aarch64_test.cpp | 136 __ Mov(Register(X1), Immediate(0xffff000012345678)); in HWTEST_F_L0() 137 __ Mov(Register(X2), Immediate(0x12345678abcd00ef)); in HWTEST_F_L0() 138 __ Mov(Register(X3), Immediate(0x7fff001234)); in HWTEST_F_L0() 139 __ Mov(Register(X4).W(), Immediate(0xff0000ff)); in HWTEST_F_L0() 151 __ Mov(Register(X1), Register(X2)); in HWTEST_F_L0() 152 __ Mov(Register(X2), Register(SP)); in HWTEST_F_L0() 153 __ Mov(Register(X1, W), Register(X2, W)); in HWTEST_F_L0() 167 __ Stp(Register(X1), Register(X2), MemoryOperand(Register(SP), 8, POSTINDEX)); in HWTEST_F_L0() 168 __ Ldp(Register(X1), Register(X2), MemoryOperand(Register(SP), 8, PREINDEX)); in HWTEST_F_L0() 169 __ Ldp(Register(X3), Register(X4), MemoryOperand(Register(SP), 8, OFFSET)); in HWTEST_F_L0() [all …]
|
| /arkcompiler/ets_runtime/ecmascript/compiler/trampoline/x64/ |
| D | common_call.h | 40 static void CopyArgumentWithArgV(ExtendedAssembler *assembler, Register argc, Register argV); 43 static void PushUndefinedWithArgc(ExtendedAssembler *assembler, Register argc); 45 …hArgsWithArgvAndCheckStack(ExtendedAssembler *assembler, Register glue, Register argc, Register ar… 46 Register op1, Register op2, Label *stackOverflow); 47 …c void StackOverflowCheck(ExtendedAssembler *assembler, Register glue, Register numArgs, Register … 48 Register op2, Label *stackOverflow); 86 static void JSCallCheck(ExtendedAssembler *assembler, Register jsFuncReg, 88 static void ThrowNonCallableInternal(ExtendedAssembler *assembler, Register glueReg); 89 …static void JSBoundFunctionCallInternal(ExtendedAssembler *assembler, Register jsFuncReg, Label *j… 91 static void PushArgsWithArgV(ExtendedAssembler *assembler, Register jsfunc, [all …]
|
| D | common_call.cpp | 32 void CommonCall::CopyArgumentWithArgV(ExtendedAssembler *assembler, Register argc, Register argV) in CopyArgumentWithArgV() 35 Register arg = __ AvailableRegister1(); in CopyArgumentWithArgV() 58 Register r13 = __ CppJSCallAvailableRegister1(); in GetArgvAtStack() 59 Register r14 = __ CppJSCallAvailableRegister2(); in GetArgvAtStack() 75 void CommonCall::PushUndefinedWithArgc(ExtendedAssembler *assembler, Register argc) in PushUndefinedWithArgc() 84 …mmonCall::PushArgsWithArgvAndCheckStack(ExtendedAssembler *assembler, Register glue, Register argc, in PushArgsWithArgvAndCheckStack() 85 Register argv, Register op1, Register op2, Label *stackOverflow) in PushArgsWithArgvAndCheckStack() 89 Register opArgc = argc; in PushArgsWithArgvAndCheckStack() 90 Register op = op1; in PushArgsWithArgvAndCheckStack() 92 // use op2 as opArgc and will not change argc register in PushArgsWithArgvAndCheckStack() [all …]
|
| D | asm_interpreter_call.cpp | 87 Register glueRegister = __ GlueRegister(); in GeneratorReEnterAsmInterpDispatch() 88 Register contextRegister = rsi; in GeneratorReEnterAsmInterpDispatch() 89 Register prevSpRegister = rbp; in GeneratorReEnterAsmInterpDispatch() 91 Register callTargetRegister = r9; in GeneratorReEnterAsmInterpDispatch() 92 Register methodRegister = rcx; in GeneratorReEnterAsmInterpDispatch() 93 Register tempRegister = r11; // can not be used to store any variable in GeneratorReEnterAsmInterpDispatch() 94 Register opRegister = r8; // can not be used to store any variable in GeneratorReEnterAsmInterpDispatch() 100 Register fpRegister = r10; in GeneratorReEnterAsmInterpDispatch() 102 Register nRegsRegister = rdx; in GeneratorReEnterAsmInterpDispatch() 103 Register regsArrayRegister = r12; in GeneratorReEnterAsmInterpDispatch() [all …]
|
| /arkcompiler/runtime_core/static_core/compiler/tests/ |
| D | spill_fill_encoder_test.cpp | 32 {{LocationType::REGISTER, LocationType::STACK, 1U, 0U, DataType::Type::INT64}, in TEST_F() 33 {LocationType::REGISTER, LocationType::STACK, 0U, 2U, DataType::Type::INT64}, in TEST_F() 34 {LocationType::REGISTER, LocationType::REGISTER, 0U, 1U, DataType::Type::INT64}, in TEST_F() 35 {LocationType::REGISTER, LocationType::REGISTER, 1U, 2U, DataType::Type::INT64}, in TEST_F() 36 {LocationType::IMMEDIATE, LocationType::REGISTER, 0U, 0U, DataType::Type::INT64}, in TEST_F() 37 {LocationType::IMMEDIATE, LocationType::REGISTER, 0U, 1U, DataType::Type::INT64}, in TEST_F() 38 {LocationType::STACK, LocationType::REGISTER, 0U, 0U, DataType::Type::INT64}, in TEST_F() 39 {LocationType::STACK, LocationType::REGISTER, 1U, 1U, DataType::Type::INT64}, in TEST_F() 40 {LocationType::STACK, LocationType::REGISTER, 2U, 2U, DataType::Type::INT64}, in TEST_F() 41 {LocationType::REGISTER, LocationType::REGISTER, 2U, 4U, DataType::Type::INT64}, in TEST_F() [all …]
|
| /arkcompiler/ets_runtime/ecmascript/compiler/codegen/maple/maple_be/include/cg/ |
| D | cfi.def | 32 CFI_DEFINE( def_cfa, , 2, Register, Immediate, Undef ) 33 CFI_DEFINE( def_cfa_register, , 1, Register, Undef, Undef ) 36 CFI_DEFINE( offset, , 2, Register, Immediate, Undef ) 37 CFI_DEFINE( val_offset, , 2, Register, Immediate, Undef ) 38 CFI_DEFINE( rel_offset, , 2, Register, Immediate, Undef ) 39 CFI_DEFINE( register, , 2, Register, Register, Undef ) 40 CFI_DEFINE( restore, , 1, Register, Undef, Undef ) 41 CFI_DEFINE( undefined, , 1, Register, Undef, Undef ) 42 CFI_DEFINE( same_value, , 1, Register, Undef, Undef ) 45 CFI_DEFINE( return_column, , 1, Register, Undef, Undef ) [all …]
|
| /arkcompiler/runtime_core/static_core/verification/models/contexts_merge/ |
| D | check_set_intersection_as_lub.als | 19 fact Validity {all r: Register | r.Valid } 22 fun SuperTypesIntersection[regs: set Register] : set Type 27 -- which is a subtype of register type 28 pred CorrectSubtyping[r: Register, types: set Type] 32 pred MayBeSubstitutedFor[subst, r:Register] 40 Register.holds in Instance 43 some Register.type & Interface 44 some disj r1, r2, r3, arg : Register { 55 example: run Show for 7 but exactly 4 Register, exactly 5 Class, exactly 5 Interface, exactly 3 Ins… 59 #Register >=4 [all …]
|
| /arkcompiler/runtime_core/compiler/optimizer/optimizations/regalloc/ |
| D | reg_map.h | 28 …* equal to the number of given registers and save map to restore actual codegen register number fr… 29 * register number. 50 bool IsRegAvailable(Register reg, Arch arch) const; 51 Register CodegenToRegallocReg(Register codegen_reg) const; 52 Register RegallocToCodegenReg(Register regalloc_reg) const; 53 Register GetBorder() const in GetBorder() 60 ArenaVector<Register> codegen_reg_map_; 62 Register border_ {0};
|
| /arkcompiler/runtime_core/static_core/compiler/optimizer/optimizations/regalloc/ |
| D | reg_map.h | 28 …* equal to the number of given registers and save map to restore actual codegen register number fr… 29 * register number. 50 bool IsRegAvailable(Register reg, Arch arch) const; 51 Register CodegenToRegallocReg(Register codegenReg) const; 52 Register RegallocToCodegenReg(Register regallocReg) const; 53 Register GetBorder() const in GetBorder() 60 ArenaVector<Register> codegenRegMap_; 62 Register border_ {0};
|
| /arkcompiler/runtime_core/static_core/compiler/docs/ |
| D | reg_alloc_linear_scan_doc.md | 1 # Register allocator 4 `Register allocator` assigns program variables to target CPU registers 17 Current algorithm is based on paper "Linear Scan Register Allocation" by Massimiliano Poletto. Ther… 21 …Register allocator` works with instructions' lifetime intervals, computed by `LivenessAnalyzer`. I… 28 At this point register allocator resolves location for each instruction's input depending on regist… 30 …hat ends before the user and the segment that starts at the user) and a register is preferred over… 51 REGISTER = 1, 57 `Register allocator` iterates over instructions and inserts `SpillFillInst` in the following cases: 58 * Pop instruction's input form preassigned stack slot to spill-fill register; 59 * Push instruction's result from spill-fill register to preassigned stack slot; [all …]
|
| /arkcompiler/runtime_core/bytecode_optimizer/ |
| D | reg_encoder.h | 25 * Register Encoder. 27 * After compiler's register allocation layout of the virtual frame looks like: 38 * The size of the frame is fixed (see register allocator for details). 52 * range temps from free registers if necessary, consistently changing all register 73 compiler::Register reg; 77 RegContent(compiler::Register r, compiler::DataType::Type t) : reg(r), type(t) {} in RegContent() 89 using RegContentMap = ArenaUnorderedMap<compiler::Register, RegContent>; 90 using RegContentVec = ArenaVector<std::pair<compiler::Register, RegContent>>; 137 void RenumberRegs(const compiler::Register min_reg, const compiler::Register delta); 143 compiler::Register GetNumArgsFromGraph() const in GetNumArgsFromGraph() [all …]
|
| D | reg_encoder.cpp | 60 static compiler::Register CalculateNumNeededRangeTemps(const compiler::Graph *graph) in CalculateNumNeededRangeTemps() 62 compiler::Register ret = 0; in CalculateNumNeededRangeTemps() 107 auto delta = static_cast<compiler::Register>(num_temps_ - max_num_temps); in RunImpl() 121 for (compiler::Register r = 0; r < num_regs; r++) { in RunImpl() 144 static bool RegNeedsRenumbering(panda::compiler::Register r) in RegNeedsRenumbering() 149 static panda::compiler::Register RenumberReg(const panda::compiler::Register r, const panda::compil… in RenumberReg() 157 …enumberSpillFillRegs(panda::compiler::SpillFillInst *inst, const panda::compiler::Register min_reg, in RenumberSpillFillRegs() 158 const panda::compiler::Register delta) in RenumberSpillFillRegs() 161 if (sf.SrcType() == compiler::LocationType::REGISTER && sf.SrcValue() >= min_reg) { in RenumberSpillFillRegs() 164 if (sf.DstType() == compiler::LocationType::REGISTER && sf.DstValue() >= min_reg) { in RenumberSpillFillRegs() [all …]
|
| /arkcompiler/runtime_core/static_core/bytecode_optimizer/ |
| D | common.h | 27 constexpr compiler::Register MIN_REGISTER_NUMBER = 0; 28 constexpr compiler::Register MAX_NUM_SHORT_CALL_ARGS = 2; 29 constexpr compiler::Register MAX_NUM_NON_RANGE_ARGS = 4; 30 constexpr compiler::Register MAX_NUM_INPUTS = MAX_NUM_NON_RANGE_ARGS; 31 constexpr ark::compiler::Register NUM_COMPACTLY_ENCODED_REGS = 16; 32 [[maybe_unused]] constexpr compiler::Register MAX_8_BIT_REG = 255 - 1U; // exclude INVALID_REG
|