/frameworks/libs/binary_translation/intrinsics/riscv64_to_x86_64/include/berberis/intrinsics/ |
D | macro_assembler.h | 32 template <typename Assembler> 33 class MacroAssembler : public Assembler { 35 using MacroAssemblers = std::tuple<MacroAssembler<Assembler>>; 38 explicit MacroAssembler(Args&&... args) : Assembler(std::forward<Args>(args)...) { in MacroAssembler() 54 using Assembler::Bind; 55 using Assembler::Btq; 56 using Assembler::Cbw; 57 using Assembler::Cdq; 58 using Assembler::Cqo; 59 using Assembler::Cwd; [all …]
|
D | macro_assembler_bitmanip_impl.h | 27 template <typename Assembler> 29 void MacroAssembler<Assembler>::MacroClz(Register result, Register src) { in MacroClz() 35 template <typename Assembler> 37 void MacroAssembler<Assembler>::MacroCtz(Register result, Register src) { in MacroCtz() 42 template <typename Assembler> 44 void MacroAssembler<Assembler>::MacroMax(Register result, Register src1, Register src2) { in MacroMax() 54 template <typename Assembler> 56 void MacroAssembler<Assembler>::MacroMin(Register result, Register src1, Register src2) { in MacroMin() 66 template <typename Assembler> 67 void MacroAssembler<Assembler>::MacroOrcb(XMMRegister result) { in MacroOrcb() [all …]
|
D | macro_assembler_floating_point_impl.h | 45 template <typename Assembler> 47 void MacroAssembler<Assembler>::MacroCanonicalizeNan(XMMRegister result, XMMRegister src) { in MacroCanonicalizeNan() 55 template <typename Assembler> 57 void MacroAssembler<Assembler>::MacroCanonicalizeNanAVX(XMMRegister result, XMMRegister src) { in MacroCanonicalizeNanAVX() 64 template <typename Assembler> 66 void MacroAssembler<Assembler>::MacroFeq(Register result, XMMRegister src1, XMMRegister src2) { in MacroFeq() 72 template <typename Assembler> 74 void MacroAssembler<Assembler>::MacroFeqAVX(Register result, in MacroFeqAVX() 85 template <typename Assembler> 86 void MacroAssembler<Assembler>::MacroFeGetExceptionsTranslate(const Operand& mxcsr_scratch) { in MacroFeGetExceptionsTranslate() [all …]
|
D | macro_assembler_arith_impl.h | 30 template <typename Assembler> 32 void MacroAssembler<Assembler>::MacroDiv(Register src) { in MacroDiv() 88 template <typename Assembler> 90 void MacroAssembler<Assembler>::MacroRem(Register src) { in MacroRem()
|
/frameworks/libs/binary_translation/assembler/ |
D | assembler_test.cc | 32 using CodeEmitter = berberis::x86_32::Assembler; 34 using CodeEmitter = berberis::x86_64::Assembler; 79 assembler.Movl(Assembler::eax, {.base = Assembler::esp, .disp = 4}); in AssemblerTest() 80 assembler.CmpXchgl({.base = Assembler::esp, .disp = 4}, Assembler::eax); in AssemblerTest() 81 assembler.Subl(Assembler::esp, 16); in AssemblerTest() 82 assembler.Movl({.base = Assembler::esp}, Assembler::eax); in AssemblerTest() 83 assembler.Push(Assembler::esp); in AssemblerTest() 85 assembler.Pushl({.base = Assembler::esp, .disp = 0x428}); in AssemblerTest() 86 assembler.Popl({.base = Assembler::esp, .disp = 0x428}); in AssemblerTest() 87 assembler.Movl(Assembler::ecx, 0xcccccccc); in AssemblerTest() [all …]
|
/frameworks/libs/binary_translation/lite_translator/riscv64_to_x86_64/ |
D | allocator_tests.cc | 28 Allocator<x86_64::Assembler::Register> allocator; in TEST() 29 EXPECT_EQ(allocator.Alloc().value(), x86_64::Assembler::rbx); in TEST() 30 EXPECT_EQ(allocator.Alloc().value(), x86_64::Assembler::rsi); in TEST() 31 EXPECT_EQ(allocator.Alloc().value(), x86_64::Assembler::rdi); in TEST() 32 EXPECT_EQ(allocator.Alloc().value(), x86_64::Assembler::r8); in TEST() 33 EXPECT_EQ(allocator.Alloc().value(), x86_64::Assembler::r9); in TEST() 34 EXPECT_EQ(allocator.Alloc().value(), x86_64::Assembler::r10); in TEST() 35 EXPECT_EQ(allocator.Alloc().value(), x86_64::Assembler::r11); in TEST() 36 EXPECT_EQ(allocator.Alloc().value(), x86_64::Assembler::r12); in TEST() 37 EXPECT_EQ(allocator.Alloc().value(), x86_64::Assembler::r13); in TEST() [all …]
|
D | allocator.h | 38 inline constexpr x86_64::Assembler::Register kAllocatableRegisters<x86_64::Assembler::Register>[] = 39 {x86_64::Assembler::rbx, 40 x86_64::Assembler::rsi, 41 x86_64::Assembler::rdi, 42 x86_64::Assembler::r8, 43 x86_64::Assembler::r9, 44 x86_64::Assembler::r10, 45 x86_64::Assembler::r11, 46 x86_64::Assembler::r12, 47 x86_64::Assembler::r13, [all …]
|
D | call_intrinsic.h | 32 constexpr x86_64::Assembler::Register kCallerSavedRegs[] = { 33 x86_64::Assembler::rax, 34 x86_64::Assembler::rcx, 35 x86_64::Assembler::rdx, 36 x86_64::Assembler::rdi, 37 x86_64::Assembler::rsi, 38 x86_64::Assembler::r8, 39 x86_64::Assembler::r9, 40 x86_64::Assembler::r10, 41 x86_64::Assembler::r11, [all …]
|
D | register_maintainer_test.cc | 28 RegMaintainer<x86_64::Assembler::Register> maintainer = in TEST() 29 RegMaintainer<x86_64::Assembler::Register>(); in TEST() 32 maintainer.Map(x86_64::Assembler::rbx); in TEST() 34 EXPECT_EQ(maintainer.GetMapped(), x86_64::Assembler::rbx); in TEST() 41 auto maintainer = RegisterFileMaintainer<x86_64::Assembler::Register, 16>(); in TEST() 44 maintainer.Map(15, x86_64::Assembler::rbp); in TEST() 46 EXPECT_EQ(maintainer.GetMapped(15), x86_64::Assembler::rbp); in TEST() 53 auto maintainer = RegisterFileMaintainer<x86_64::Assembler::XMMRegister, 16>(); in TEST() 56 maintainer.Map(15, x86_64::Assembler::xmm11); in TEST() 58 EXPECT_EQ(maintainer.GetMapped(15), x86_64::Assembler::xmm11); in TEST()
|
D | inline_intrinsic.h | 41 bool TryInlineIntrinsic(MacroAssembler<x86_64::Assembler>& as, 51 static bool TryInlineWithHostRounding(MacroAssembler<x86_64::Assembler>& as, in TryInlineWithHostRounding() 159 auto Mov(MacroAssembler<x86_64::Assembler>& as, DestType dest, SrcType src) 160 -> decltype(std::declval<MacroAssembler<x86_64::Assembler>>() 172 auto Mov(MacroAssembler<x86_64::Assembler>& as, DestType dest, SrcType src) 173 -> decltype(std::declval<MacroAssembler<x86_64::Assembler>>() 176 if constexpr (std::is_same_v<DestType, MacroAssembler<x86_64::Assembler>::XMMRegister> && 177 std::is_same_v<SrcType, MacroAssembler<x86_64::Assembler>::XMMRegister>) { 198 friend bool TryInlineIntrinsic(MacroAssembler<x86_64::Assembler>& as, 230 TryBindingBasedInlineIntrinsic(MacroAssembler<x86_64::Assembler>& as, in TryBindingBasedInlineIntrinsic() [all …]
|
D | lite_translator.h | 50 using Assembler = MacroAssembler<x86_64::Assembler>; 53 using Register = Assembler::Register; 56 using FpRegister = Assembler::XMMRegister; 57 using SimdRegister = Assembler::XMMRegister; 58 using Condition = Assembler::Condition; 237 as_.Movsd(mapped_reg, {.base = Assembler::rbp, .disp = offset}); in GetFpReg() 243 as_.Movsd(result, {.base = Assembler::rbp, .disp = offset}); in GetFpReg() 295 csr_reg, {.base = Assembler::rbp, .disp = kCsrFieldOffset<kName>}); in GetCsr() 303 as_.Mov<CsrFieldType<kName>>({.base = Assembler::rbp, .disp = kCsrFieldOffset<kName>}, in SetCsr() 310 as_.Mov<CsrFieldType<kName>>(Assembler::rcx, arg); in SetCsr() [all …]
|
D | inline_intrinsic_tests.cc | 40 static x86_64::Assembler::Register AllocTempReg() { return x86_64::Assembler::rax; } in AllocTempReg() 42 static x86_64::Assembler::XMMRegister AllocTempSimdReg() { return x86_64::Assembler::xmm0; } in AllocTempSimdReg() 53 static bool Call(MacroAssembler<x86_64::Assembler>* as, ExplicitArgs&&... args) { in Call() 60 static bool Call(MacroAssembler<x86_64::Assembler>* as, in Call() 79 return x86_64::Assembler::rax; in AllocResult() 81 return std::make_tuple(x86_64::Assembler::xmm0, x86_64::Assembler::rax); in AllocResult() 85 return x86_64::Assembler::xmm0; in AllocResult() 100 return x86_64::Assembler::xmm0; in AllocArg() 118 MacroAssembler<x86_64::Assembler> as(&machine_code); in TEST()
|
D | lite_translator_exec_tests.cc | 68 translator_.as()->Movq(x86_64::Assembler::rax, 33); in TEST_F() 69 translator_.SetReg(1, x86_64::Assembler::rax); in TEST_F() 83 translator_.as()->Movq(x86_64::Assembler::rax, 33); in TEST_F() 84 translator_.as()->Movq(reg, x86_64::Assembler::rax); in TEST_F()
|
D | lite_translate_region.cc | 40 void GenIncrementProfileCounter(x86_64::Assembler* as, const LiteTranslateParams& params) { in GenIncrementProfileCounter() 56 as->Jcc(x86_64::Assembler::Condition::kGreater, params.counter_threshold_callback); in GenIncrementProfileCounter()
|
/frameworks/libs/binary_translation/code_gen_lib/ |
D | gen_wrapper_riscv64_to_x86_64.cc | 29 using x86_64::Assembler; 33 void ExtendIntArg(MacroAssembler<Assembler>& as, in ExtendIntArg() 35 Assembler::Register dst, in ExtendIntArg() 36 Assembler::Register src) { in ExtendIntArg() 63 MacroAssembler<Assembler> as(mc); in GenWrapGuestFunction() 69 as.Push(Assembler::rbp); in GenWrapGuestFunction() 70 as.Movq(Assembler::rbp, Assembler::rsp); in GenWrapGuestFunction() 87 as.Subq(Assembler::rsp, static_cast<int32_t>(aligned_frame_size)); in GenWrapGuestFunction() 108 static constexpr Assembler::Register kParamRegs[] = { in GenWrapGuestFunction() 109 Assembler::rdi, in GenWrapGuestFunction() [all …]
|
D | code_gen_lib_riscv64_to_x86_64.cc | 42 void EmitCheckSignalsAndMaybeReturn(x86_64::Assembler* as) { in EmitCheckSignalsAndMaybeReturn() 50 as->Cmpb({.base = x86_64::Assembler::rbp, .disp = offset}, kPendingSignalsPresent); in EmitCheckSignalsAndMaybeReturn() 51 as->Jcc(x86_64::Assembler::Condition::kEqual, kEntryExitGeneratedCode); in EmitCheckSignalsAndMaybeReturn() 61 x86_64::Assembler as(mc); in GenTrampolineAdaptor() 100 void EmitSyscall(x86_64::Assembler* as, GuestAddr pc) { in EmitSyscall() 120 void EmitDirectDispatch(x86_64::Assembler* as, GuestAddr pc, bool check_pending_signals) { in EmitDirectDispatch() 139 void EmitExitGeneratedCode(x86_64::Assembler* as, x86_64::Assembler::Register target) { in EmitExitGeneratedCode() 148 void EmitIndirectDispatch(x86_64::Assembler* as, x86_64::Assembler::Register target) { in EmitIndirectDispatch() 170 as->Movq(as->rcx, {.base = as->rcx, .index = as->rax, .scale = x86_64::Assembler::kTimesEight}); in EmitIndirectDispatch() 174 as->Movq(as->rcx, {.base = as->rcx, .index = as->rax, .scale = x86_64::Assembler::kTimesEight}); in EmitIndirectDispatch() [all …]
|
/frameworks/libs/binary_translation/backend/x86_64/ |
D | code_emit.cc | 33 using Assembler = x86_64::Assembler; typedef 50 as->Movq(GetGReg(dst), {.base = Assembler::rsp, .disp = offset}); in EmitMovGRegMem() 65 as->MovdquXRegMemBaseDisp(GetXReg(dst), Assembler::rsp, offset); in EmitMovXRegMem() 67 as->MovsdXRegMemBaseDisp(GetXReg(dst), Assembler::rsp, offset); in EmitMovXRegMem() 69 as->Movss(GetXReg(dst), {.base = Assembler::rsp, .disp = offset}); in EmitMovXRegMem() 76 as->Movq({.base = Assembler::rsp, .disp = offset}, GetGReg(src)); in EmitMovMemGReg() 83 as->MovdquMemBaseDispXReg(Assembler::rsp, offset, GetXReg(src)); in EmitMovMemXReg() 85 as->MovsdMemBaseDispXReg(Assembler::rsp, offset, GetXReg(src)); in EmitMovMemXReg() 87 as->Movss({.base = Assembler::rsp, .disp = offset}, GetXReg(src)); in EmitMovMemXReg() 98 as->Pushq({.base = Assembler::rsp, .disp = src_offset + part}); in EmitMovMemMem() [all …]
|
/frameworks/libs/binary_translation/code_gen_lib/include/berberis/code_gen_lib/ |
D | code_gen_lib.h | 35 void EmitAllocStackFrame(Assembler* as, uint32_t frame_size); 36 void EmitFreeStackFrame(Assembler* as, uint32_t frame_size); 38 void EmitJump(Assembler* as, GuestAddr target); 39 void EmitIndirectJump(Assembler* as, Assembler::Register target); 45 void EmitSyscall(x86_64::Assembler* as, GuestAddr pc); 46 void EmitDirectDispatch(x86_64::Assembler* as, GuestAddr pc, bool check_pending_signals); 47 void EmitIndirectDispatch(x86_64::Assembler* as, x86_64::Assembler::Register target); 48 void EmitExitGeneratedCode(x86_64::Assembler* as, x86_64::Assembler::Register target); 49 void EmitAllocStackFrame(x86_64::Assembler* as, uint32_t frame_size); 50 void EmitFreeStackFrame(x86_64::Assembler* as, uint32_t frame_size);
|
/frameworks/libs/binary_translation/intrinsics/common_to_x86/include/berberis/intrinsics/ |
D | macro_assembler-inl.h | 23 using Condition = typename Assembler::Condition; 24 using Label = typename Assembler::Label; 25 using Operand = typename Assembler::Operand; 26 using Register = typename Assembler::Register; 27 using ScaleFactor = typename Assembler::ScaleFactor; 28 using XMMRegister = typename Assembler::XMMRegister; 90 Assembler::Movb(dest, src); \ 94 if (dest == Assembler::gpr_a && src == Assembler::gpr_a) { \ 95 Assembler::Cbw(); \ 99 Assembler::Movsxbw(dest, src); \ [all …]
|
/frameworks/libs/binary_translation/assembler/include/berberis/assembler/ |
D | common_x86.h | 44 template <typename Assembler> 133 return Assembler::kIsX86_64 ? ((index.num & 0x08) >> 2) | ((base.num & 0x08) >> 3) : 0; in rex() 137 return Assembler::kIsX86_64 ? ((index.num & 0x08) | (base.num & 0x08)) : false; in RequiresRex() 140 Register base = Assembler::no_register; 141 Register index = Assembler::no_register; 341 static constexpr bool value = Assembler::template IsRegister<ArgumentType>::value || 347 static constexpr bool value = Assembler::template IsMemoryOperand<ArgumentType>::value; 352 static constexpr bool value = Assembler::template IsLabelOperand<ArgumentType>::value; 553 static_cast<Assembler*>(this) in EmitInstruction() 563 static_cast<Assembler*>(this)->EmitRex(arguments...); in EmitInstruction() [all …]
|
D | x86_64.h | 34 class Assembler : public AssemblerX86<Assembler> { 36 explicit Assembler(MachineCode* code) : AssemblerX86(code) {} in Assembler() function 394 friend AssemblerX86<Assembler>; 402 inline void Assembler::EmitOperandOp(int number, const Operand& addr) { in EmitOperandOp() 417 EmitBaseIndexDispOperand<uint8_t, &Assembler::Emit8>((addr.base.num & 7) | reg, addr); in EmitOperandOp() 425 EmitBaseIndexDispOperand<int16_t, &Assembler::Emit16>(0x2004 | ((addr.base.num & 7) << 8) | reg, in EmitOperandOp() 430 EmitBaseIndexDispOperand<int16_t, &Assembler::Emit16>( in EmitOperandOp() 436 inline void Assembler::EmitIndexDispOperand(int reg, const Operand& addr) { in EmitIndexDispOperand() 443 inline void Assembler::EmitRipOp(int num, const Label& label) { in EmitRipOp() 450 inline void Assembler::EmitBaseIndexDispOperand(int base_modrm_and_sib, const Operand& addr) { in EmitBaseIndexDispOperand() [all …]
|
D | x86_32.h | 31 class Assembler : public AssemblerX86<Assembler> { 33 explicit Assembler(MachineCode* code) : AssemblerX86(code) {} in Assembler() function 199 DISALLOW_IMPLICIT_CONSTRUCTORS(Assembler); 299 friend AssemblerX86<Assembler>; 307 inline void Assembler::EmitOperandOp(int number, const Operand& addr) { in EmitOperandOp() 322 EmitBaseIndexDispOperand<uint8_t, &Assembler::Emit8>(addr.base.num | reg, addr); in EmitOperandOp() 330 EmitBaseIndexDispOperand<int16_t, &Assembler::Emit16>(0x2004 | (addr.base.num << 8) | reg, in EmitOperandOp() 335 EmitBaseIndexDispOperand<int16_t, &Assembler::Emit16>( in EmitOperandOp() 340 inline void Assembler::EmitIndexDispOperand(int reg, const Operand& addr) { in EmitIndexDispOperand() 347 inline void Assembler::EmitBaseIndexDispOperand(int base_modrm_and_sib, const Operand& addr) { in EmitBaseIndexDispOperand()
|
/frameworks/libs/binary_translation/backend/include/berberis/backend/x86_64/ |
D | code_emit.h | 29 Assembler::Register GetGReg(MachineReg r); 30 Assembler::XMMRegister GetXReg(MachineReg r); 31 Assembler::ScaleFactor ToScaleFactor(MachineMemOperandScale scale);
|
/frameworks/libs/binary_translation/intrinsics/common_to_x86/include/berberis/intrinsics/common_to_x86/ |
D | text_assembler_common.h | 38 template <typename Assembler> 182 typename Assembler::RegisterDefaultBit(as->gpr_macroassembler_constants), as); in ToGasArgument() 195 result = ToGasArgument(typename Assembler::RegisterDefaultBit(op.base), as); in ToGasArgument() 198 result += ',' + ToGasArgument(typename Assembler::RegisterDefaultBit(op.index), as) + in ToGasArgument() 416 template <typename Assembler> 418 inline void TextAssemblerX86<Assembler>::Instruction(const char* name, Condition cond, const Args&.… in Instruction() 481 template <typename Assembler> 483 inline void TextAssemblerX86<Assembler>::Instruction(const char* name, const Args&... args) { in Instruction()
|
/frameworks/libs/binary_translation/backend/include/berberis/backend/ |
D | code_emitter.h | 29 using CodeEmitterBase = berberis::MacroAssembler<berberis::x86_64::Assembler>; 34 using CodeEmitterBase = berberis::MacroAssembler<berberis::x86_32::Assembler>;
|