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
32#include "abi_arm64_common.h"
34
35// GPR <-> Immediate Value Emitters
37void emit_arm64_load_u64_immediate(code_buffer * buf, arm64_gpr dest, uint64_t value);
38
39
40// GPR <-> GPR Move Emitters
42void emit_arm64_mov_reg(code_buffer * buf, bool is64, arm64_gpr dest, arm64_gpr src);
43
44
45// Memory <-> GPR Load/Store Emitters
47void emit_arm64_ldr_imm(code_buffer * buf, bool is64, arm64_gpr dest, arm64_gpr base, int32_t offset);
48
50void emit_arm64_ldrsw_imm(code_buffer * buf, arm64_gpr dest, arm64_gpr base, int32_t offset);
51
53void emit_arm64_str_imm(code_buffer * buf, bool is64, arm64_gpr src, arm64_gpr base, int32_t offset);
54
56void emit_arm64_strb_imm(code_buffer * buf, arm64_gpr src, arm64_gpr base, int32_t offset);
57
59void emit_arm64_strh_imm(code_buffer * buf, arm64_gpr src, arm64_gpr base, int32_t offset);
60
63 code_buffer * buf, bool is64, arm64_gpr src1, arm64_gpr src2, arm64_gpr base, int32_t offset);
64
67 code_buffer * buf, bool is64, arm64_gpr dest1, arm64_gpr dest2, arm64_gpr base, int32_t offset);
68
69// Memory <-> VPR (SIMD/FP) Emitters
71void emit_arm64_ldr_vpr(code_buffer * buf, bool is64, arm64_vpr dest, arm64_gpr base, int32_t offset);
72
74void emit_arm64_str_vpr(code_buffer * buf, bool is64, arm64_vpr src, arm64_gpr base, int32_t offset);
75
77void emit_arm64_ldr_q_imm(code_buffer * buf, arm64_vpr dest, arm64_gpr base, int32_t offset);
78
80void emit_arm64_str_q_imm(code_buffer * buf, arm64_vpr src, arm64_gpr base, int32_t offset);
81
82// Arithmetic Emitters
84void emit_arm64_add_imm(code_buffer * buf, bool is64, bool set_flags, arm64_gpr dest, arm64_gpr base, uint32_t imm);
85
87void emit_arm64_sub_imm(code_buffer * buf, bool is64, bool set_flags, arm64_gpr dest, arm64_gpr base, uint32_t imm);
88
89// Control Flow Emitters
92
94void emit_arm64_ret(code_buffer * buf, arm64_gpr reg);
95
97void emit_arm64_cbnz(code_buffer * buf, bool is64, arm64_gpr reg, int32_t offset);
98
100void emit_arm64_brk(code_buffer * buf, uint16_t imm);
101
103void emit_arm64_b_reg(code_buffer * buf, arm64_gpr reg);
Common register definitions for the AArch64 (ARM64) architecture.
arm64_gpr
Definition abi_arm64_common.h:47
arm64_vpr
Definition abi_arm64_common.h:91
void emit_arm64_blr_reg(code_buffer *buf, arm64_gpr reg)
Definition abi_arm64_emitters.c:487
void emit_arm64_cbnz(code_buffer *buf, bool is64, arm64_gpr reg, int32_t offset)
Definition abi_arm64_emitters.c:513
void emit_arm64_ldr_imm(code_buffer *buf, bool is64, arm64_gpr dest, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:153
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:466
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:311
void emit_arm64_ret(code_buffer *buf, arm64_gpr reg)
Definition abi_arm64_emitters.c:498
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:475
void emit_arm64_str_q_imm(code_buffer *buf, arm64_vpr src, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:399
void emit_arm64_str_imm(code_buffer *buf, bool is64, arm64_gpr src, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:210
void emit_arm64_mov_reg(code_buffer *buf, bool is64, arm64_gpr dest, arm64_gpr src)
Definition abi_arm64_emitters.c:117
void emit_arm64_str_vpr(code_buffer *buf, bool is64, arm64_vpr src, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:356
void emit_arm64_ldr_q_imm(code_buffer *buf, arm64_vpr dest, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:379
void emit_arm64_ldrsw_imm(code_buffer *buf, arm64_gpr dest, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:182
void emit_arm64_ldr_vpr(code_buffer *buf, bool is64, arm64_vpr dest, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:332
void emit_arm64_load_u64_immediate(code_buffer *buf, arm64_gpr dest, uint64_t value)
Definition abi_arm64_emitters.c:85
void emit_arm64_strb_imm(code_buffer *buf, arm64_gpr src, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:239
void emit_arm64_strh_imm(code_buffer *buf, arm64_gpr src, arm64_gpr base, int32_t offset)
Definition abi_arm64_emitters.c:262
void emit_arm64_brk(code_buffer *buf, uint16_t imm)
Definition abi_arm64_emitters.c:536
void emit_arm64_b_reg(code_buffer *buf, arm64_gpr reg)
Definition abi_arm64_emitters.c:555
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:286
Declarations for internal-only functions, types, and constants.
Definition infix_internals.h:169