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
36// GPR <-> GPR Move Emitters
38INFIX_INTERNAL void emit_arm64_mov_reg(code_buffer * buf, bool is64, arm64_gpr dest, arm64_gpr src);
39// Memory <-> GPR Load/Store Emitters
41INFIX_INTERNAL void emit_arm64_ldr_imm(code_buffer * buf, bool is64, arm64_gpr dest, arm64_gpr base, int32_t offset);
43INFIX_INTERNAL void emit_arm64_ldrb_imm(code_buffer * buf, arm64_gpr dest, arm64_gpr base, int32_t offset);
45INFIX_INTERNAL void emit_arm64_ldrh_imm(code_buffer * buf, arm64_gpr dest, arm64_gpr base, int32_t offset);
47INFIX_INTERNAL void emit_arm64_ldrsw_imm(code_buffer * buf, arm64_gpr dest, arm64_gpr base, int32_t offset);
49INFIX_INTERNAL void emit_arm64_ldrsb_imm(code_buffer * buf, arm64_gpr dest, arm64_gpr base, int32_t offset);
51INFIX_INTERNAL void emit_arm64_ldrsh_imm(code_buffer * buf, arm64_gpr dest, arm64_gpr base, int32_t offset);
53INFIX_INTERNAL void emit_arm64_str_imm(code_buffer * buf, bool is64, arm64_gpr src, arm64_gpr base, int32_t offset);
55INFIX_INTERNAL void emit_arm64_strb_imm(code_buffer * buf, arm64_gpr src, arm64_gpr base, int32_t offset);
57INFIX_INTERNAL void emit_arm64_strh_imm(code_buffer * buf, arm64_gpr src, arm64_gpr base, int32_t offset);
60 code_buffer * buf, bool is64, arm64_gpr src1, arm64_gpr src2, arm64_gpr base, int32_t offset);
63 code_buffer * buf, bool is64, arm64_gpr dest1, arm64_gpr dest2, arm64_gpr base, int32_t offset);
64// Memory <-> VPR (SIMD/FP) Emitters
66INFIX_INTERNAL void emit_arm64_ldr_vpr(code_buffer * buf, bool is64, arm64_vpr dest, arm64_gpr base, int32_t offset);
68INFIX_INTERNAL void emit_arm64_str_vpr(code_buffer * buf, bool is64, arm64_vpr src, arm64_gpr base, int32_t offset);
70INFIX_INTERNAL void emit_arm64_ldr_q_imm(code_buffer * buf, arm64_vpr dest, arm64_gpr base, int32_t offset);
72INFIX_INTERNAL void emit_arm64_str_q_imm(code_buffer * buf, arm64_vpr src, arm64_gpr base, int32_t offset);
73// Arithmetic Emitters
76 code_buffer * buf, bool is64, bool set_flags, arm64_gpr dest, arm64_gpr base, uint32_t imm);
79 code_buffer * buf, bool is64, bool set_flags, arm64_gpr dest, arm64_gpr base, uint32_t imm);
80// Control Flow Emitters
86INFIX_INTERNAL void emit_arm64_cbnz(code_buffer * buf, bool is64, arm64_gpr reg, int32_t offset);
88INFIX_INTERNAL void emit_arm64_brk(code_buffer * buf, uint16_t imm);
92INFIX_INTERNAL void emit_arm64_brk(code_buffer * buf, uint16_t imm);
102INFIX_INTERNAL void emit_arm64_svc_imm(code_buffer * buf, uint16_t imm);
infix_registry_t * reg
Definition 501_direct_marshalling.c:186
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
INFIX_INTERNAL void emit_arm64_ret(code_buffer *buf, arm64_gpr reg)
Definition abi_arm64_emitters.c:612
INFIX_INTERNAL void emit_arm64_strb_imm(code_buffer *buf, arm64_gpr src, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:339
INFIX_INTERNAL void emit_arm64_b_reg(code_buffer *buf, arm64_gpr reg)
Definition abi_arm64_emitters.c:666
INFIX_INTERNAL void emit_arm64_blr_reg(code_buffer *buf, arm64_gpr reg)
Definition abi_arm64_emitters.c:602
INFIX_INTERNAL 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
INFIX_INTERNAL void emit_arm64_str_imm(code_buffer *buf, bool is64, arm64_gpr src, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:304
INFIX_INTERNAL 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:420
INFIX_INTERNAL void emit_arm64_ldrsb_imm(code_buffer *buf, arm64_gpr dest, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:249
INFIX_INTERNAL void emit_arm64_svc_imm(code_buffer *buf, uint16_t imm)
Definition abi_arm64_emitters.c:678
INFIX_INTERNAL void emit_arm64_str_vpr(code_buffer *buf, bool is64, arm64_vpr src, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:468
INFIX_INTERNAL void emit_arm64_cbnz(code_buffer *buf, bool is64, arm64_gpr reg, int32_t offset)
Definition abi_arm64_emitters.c:626
INFIX_INTERNAL 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:593
INFIX_INTERNAL void emit_arm64_brk(code_buffer *buf, uint16_t imm)
Definition abi_arm64_emitters.c:648
INFIX_INTERNAL 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:396
INFIX_INTERNAL void emit_arm64_ldrh_imm(code_buffer *buf, arm64_gpr dest, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:194
INFIX_INTERNAL 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:584
INFIX_INTERNAL void emit_arm64_str_q_imm(code_buffer *buf, arm64_vpr src, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:520
INFIX_INTERNAL void emit_arm64_ldrsw_imm(code_buffer *buf, arm64_gpr dest, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:225
INFIX_INTERNAL void emit_arm64_ldrb_imm(code_buffer *buf, arm64_gpr dest, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:171
INFIX_INTERNAL void emit_arm64_strh_imm(code_buffer *buf, arm64_gpr src, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:367
INFIX_INTERNAL void emit_arm64_load_u64_immediate(code_buffer *buf, arm64_gpr dest, uint64_t value)
Definition abi_arm64_emitters.c:80
INFIX_INTERNAL void emit_arm64_ldr_q_imm(code_buffer *buf, arm64_vpr dest, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:495
INFIX_INTERNAL void emit_arm64_ldrsh_imm(code_buffer *buf, arm64_gpr dest, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:272
INFIX_INTERNAL void emit_arm64_mov_reg(code_buffer *buf, bool is64, arm64_gpr dest, arm64_gpr src)
Definition abi_arm64_emitters.c:110
INFIX_INTERNAL void emit_arm64_ldr_vpr(code_buffer *buf, bool is64, arm64_vpr dest, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:440
#define INFIX_INTERNAL
When compiling with -fvisibility=hidden, we use this to explicitly mark internal-but-shared functions...
Definition infix_config.h:211
Internal data structures, function prototypes, and constants.
A dynamic buffer for staged machine code generation.
Definition infix_internals.h:180