infix
A JIT-Powered FFI Library for C
Loading...
Searching...
No Matches
abi_arm64_emitters.h
Go to the documentation of this file.
1#pragma once
15#pragma once
33// GPR <-> Immediate Value Emitters
35void emit_arm64_load_u64_immediate(code_buffer * buf, arm64_gpr dest, uint64_t value);
36// GPR <-> GPR Move Emitters
38void emit_arm64_mov_reg(code_buffer * buf, bool is64, arm64_gpr dest, arm64_gpr src);
39// Memory <-> GPR Load/Store Emitters
41void emit_arm64_ldr_imm(code_buffer * buf, bool is64, arm64_gpr dest, arm64_gpr base, int32_t offset);
43void emit_arm64_ldrb_imm(code_buffer * buf, arm64_gpr dest, arm64_gpr base, int32_t offset);
45void emit_arm64_ldrh_imm(code_buffer * buf, arm64_gpr dest, arm64_gpr base, int32_t offset);
47void emit_arm64_ldrsw_imm(code_buffer * buf, arm64_gpr dest, arm64_gpr base, int32_t offset);
49void emit_arm64_str_imm(code_buffer * buf, bool is64, arm64_gpr src, arm64_gpr base, int32_t offset);
51void emit_arm64_strb_imm(code_buffer * buf, arm64_gpr src, arm64_gpr base, int32_t offset);
53void emit_arm64_strh_imm(code_buffer * buf, arm64_gpr src, arm64_gpr base, int32_t offset);
56 code_buffer * buf, bool is64, arm64_gpr src1, arm64_gpr src2, arm64_gpr base, int32_t offset);
59 code_buffer * buf, bool is64, arm64_gpr dest1, arm64_gpr dest2, arm64_gpr base, int32_t offset);
60// Memory <-> VPR (SIMD/FP) Emitters
62void emit_arm64_ldr_vpr(code_buffer * buf, bool is64, arm64_vpr dest, arm64_gpr base, int32_t offset);
64void emit_arm64_str_vpr(code_buffer * buf, bool is64, arm64_vpr src, arm64_gpr base, int32_t offset);
66void emit_arm64_ldr_q_imm(code_buffer * buf, arm64_vpr dest, arm64_gpr base, int32_t offset);
68void emit_arm64_str_q_imm(code_buffer * buf, arm64_vpr src, arm64_gpr base, int32_t offset);
69// Arithmetic Emitters
71void emit_arm64_add_imm(code_buffer * buf, bool is64, bool set_flags, arm64_gpr dest, arm64_gpr base, uint32_t imm);
73void emit_arm64_sub_imm(code_buffer * buf, bool is64, bool set_flags, arm64_gpr dest, arm64_gpr base, uint32_t imm);
74// Control Flow Emitters
80void emit_arm64_cbnz(code_buffer * buf, bool is64, arm64_gpr reg, int32_t offset);
82void emit_arm64_brk(code_buffer * buf, uint16_t imm);
86void emit_arm64_brk(code_buffer * buf, uint16_t imm);
96void emit_arm64_svc_imm(code_buffer * buf, uint16_t imm);
infix_registry_t * reg
Definition 501_direct_marshalling.c:185
Common register definitions and instruction encodings for the AArch64 (ARM64) architecture.
arm64_gpr
Definition abi_arm64_common.h:51
arm64_vpr
Definition abi_arm64_common.h:94
void emit_arm64_blr_reg(code_buffer *buf, arm64_gpr reg)
Definition abi_arm64_emitters.c:554
void emit_arm64_cbnz(code_buffer *buf, bool is64, arm64_gpr reg, int32_t offset)
Definition abi_arm64_emitters.c:578
void emit_arm64_ldr_imm(code_buffer *buf, bool is64, arm64_gpr dest, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:144
void emit_arm64_ldrb_imm(code_buffer *buf, arm64_gpr dest, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:171
void emit_arm64_add_imm(code_buffer *buf, bool is64, bool set_flags, arm64_gpr dest, arm64_gpr base, uint32_t imm)
Definition abi_arm64_emitters.c:538
void emit_arm64_ldp_post_index(code_buffer *buf, bool is64, arm64_gpr dest1, arm64_gpr dest2, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:374
void emit_arm64_ret(code_buffer *buf, arm64_gpr reg)
Definition abi_arm64_emitters.c:564
void emit_arm64_sub_imm(code_buffer *buf, bool is64, bool set_flags, arm64_gpr dest, arm64_gpr base, uint32_t imm)
Definition abi_arm64_emitters.c:546
void emit_arm64_str_q_imm(code_buffer *buf, arm64_vpr src, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:474
void emit_arm64_str_imm(code_buffer *buf, bool is64, arm64_gpr src, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:258
void emit_arm64_mov_reg(code_buffer *buf, bool is64, arm64_gpr dest, arm64_gpr src)
Definition abi_arm64_emitters.c:110
void emit_arm64_ldrh_imm(code_buffer *buf, arm64_gpr dest, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:194
void emit_arm64_str_vpr(code_buffer *buf, bool is64, arm64_vpr src, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:422
void emit_arm64_ldr_q_imm(code_buffer *buf, arm64_vpr dest, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:449
void emit_arm64_ldrsw_imm(code_buffer *buf, arm64_gpr dest, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:225
void emit_arm64_ldr_vpr(code_buffer *buf, bool is64, arm64_vpr dest, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:394
void emit_arm64_load_u64_immediate(code_buffer *buf, arm64_gpr dest, uint64_t value)
Definition abi_arm64_emitters.c:80
void emit_arm64_strb_imm(code_buffer *buf, arm64_gpr src, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:293
void emit_arm64_svc_imm(code_buffer *buf, uint16_t imm)
Definition abi_arm64_emitters.c:630
void emit_arm64_strh_imm(code_buffer *buf, arm64_gpr src, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:321
void emit_arm64_brk(code_buffer *buf, uint16_t imm)
Definition abi_arm64_emitters.c:600
void emit_arm64_b_reg(code_buffer *buf, arm64_gpr reg)
Definition abi_arm64_emitters.c:618
void emit_arm64_stp_pre_index(code_buffer *buf, bool is64, arm64_gpr src1, arm64_gpr src2, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:350
Internal data structures, function prototypes, and constants.
A dynamic buffer for staged machine code generation.
Definition infix_internals.h:192