Home
last modified time | relevance | path

Searched refs:Assembler (Results 1 – 25 of 34) sorted by relevance

12

/frameworks/libs/binary_translation/intrinsics/riscv64_to_x86_64/include/berberis/intrinsics/
Dmacro_assembler.h32 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 …]
Dmacro_assembler_bitmanip_impl.h27 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 …]
Dmacro_assembler_floating_point_impl.h45 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 …]
Dmacro_assembler_arith_impl.h30 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/
Dassembler_test.cc32 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/
Dallocator_tests.cc28 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 …]
Dallocator.h38 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 …]
Dcall_intrinsic.h32 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 …]
Dregister_maintainer_test.cc28 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()
Dinline_intrinsic.h41 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 …]
Dlite_translator.h50 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 …]
Dinline_intrinsic_tests.cc40 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()
Dlite_translator_exec_tests.cc68 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()
Dlite_translate_region.cc40 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/
Dgen_wrapper_riscv64_to_x86_64.cc29 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 …]
Dcode_gen_lib_riscv64_to_x86_64.cc42 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/
Dcode_emit.cc33 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/
Dcode_gen_lib.h35 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/
Dmacro_assembler-inl.h23 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/
Dcommon_x86.h44 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 …]
Dx86_64.h34 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 …]
Dx86_32.h31 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/
Dcode_emit.h29 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/
Dtext_assembler_common.h38 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/
Dcode_emitter.h29 using CodeEmitterBase = berberis::MacroAssembler<berberis::x86_64::Assembler>;
34 using CodeEmitterBase = berberis::MacroAssembler<berberis::x86_32::Assembler>;

12