|
void | ir_strtab_init (ir_strtab *strtab, uint32_t count, uint32_t buf_size) |
|
ir_ref | ir_strtab_lookup (ir_strtab *strtab, const char *str, uint32_t len, ir_ref val) |
|
ir_ref | ir_strtab_find (const ir_strtab *strtab, const char *str, uint32_t len) |
|
ir_ref | ir_strtab_update (ir_strtab *strtab, const char *str, uint32_t len, ir_ref val) |
|
const char * | ir_strtab_str (const ir_strtab *strtab, ir_ref idx) |
|
const char * | ir_strtab_strl (const ir_strtab *strtab, ir_ref idx, size_t *len) |
|
void | ir_strtab_apply (const ir_strtab *strtab, ir_strtab_apply_t func) |
|
void | ir_strtab_free (ir_strtab *strtab) |
|
void | ir_init (ir_ctx *ctx, uint32_t flags, ir_ref consts_limit, ir_ref insns_limit) |
|
void | ir_free (ir_ctx *ctx) |
|
void | ir_truncate (ir_ctx *ctx) |
|
ir_ref | ir_const (ir_ctx *ctx, ir_val val, uint8_t type) |
|
ir_ref | ir_const_i8 (ir_ctx *ctx, int8_t c) |
|
ir_ref | ir_const_i16 (ir_ctx *ctx, int16_t c) |
|
ir_ref | ir_const_i32 (ir_ctx *ctx, int32_t c) |
|
ir_ref | ir_const_i64 (ir_ctx *ctx, int64_t c) |
|
ir_ref | ir_const_u8 (ir_ctx *ctx, uint8_t c) |
|
ir_ref | ir_const_u16 (ir_ctx *ctx, uint16_t c) |
|
ir_ref | ir_const_u32 (ir_ctx *ctx, uint32_t c) |
|
ir_ref | ir_const_u64 (ir_ctx *ctx, uint64_t c) |
|
ir_ref | ir_const_bool (ir_ctx *ctx, bool c) |
|
ir_ref | ir_const_char (ir_ctx *ctx, char c) |
|
ir_ref | ir_const_float (ir_ctx *ctx, float c) |
|
ir_ref | ir_const_double (ir_ctx *ctx, double c) |
|
ir_ref | ir_const_addr (ir_ctx *ctx, uintptr_t c) |
|
ir_ref | ir_const_func_addr (ir_ctx *ctx, uintptr_t c, ir_ref proto) |
|
ir_ref | ir_const_func (ir_ctx *ctx, ir_ref str, ir_ref proto) |
|
ir_ref | ir_const_sym (ir_ctx *ctx, ir_ref str) |
|
ir_ref | ir_const_str (ir_ctx *ctx, ir_ref str) |
|
ir_ref | ir_unique_const_addr (ir_ctx *ctx, uintptr_t c) |
|
void | ir_print_const (const ir_ctx *ctx, const ir_insn *insn, FILE *f, bool quoted) |
|
ir_ref | ir_str (ir_ctx *ctx, const char *s) |
|
ir_ref | ir_strl (ir_ctx *ctx, const char *s, size_t len) |
|
const char * | ir_get_str (const ir_ctx *ctx, ir_ref idx) |
|
const char * | ir_get_strl (const ir_ctx *ctx, ir_ref idx, size_t *len) |
|
ir_ref | ir_proto_0 (ir_ctx *ctx, uint8_t flags, ir_type ret_type) |
|
ir_ref | ir_proto_1 (ir_ctx *ctx, uint8_t flags, ir_type ret_type, ir_type t1) |
|
ir_ref | ir_proto_2 (ir_ctx *ctx, uint8_t flags, ir_type ret_type, ir_type t1, ir_type t2) |
|
ir_ref | ir_proto_3 (ir_ctx *ctx, uint8_t flags, ir_type ret_type, ir_type t1, ir_type t2, ir_type t3) |
|
ir_ref | ir_proto_4 (ir_ctx *ctx, uint8_t flags, ir_type ret_type, ir_type t1, ir_type t2, ir_type t3, ir_type t4) |
|
ir_ref | ir_proto_5 (ir_ctx *ctx, uint8_t flags, ir_type ret_type, ir_type t1, ir_type t2, ir_type t3, ir_type t4, ir_type t5) |
|
ir_ref | ir_proto (ir_ctx *ctx, uint8_t flags, ir_type ret_type, uint32_t params_counts, uint8_t *param_types) |
|
ir_ref | ir_emit (ir_ctx *ctx, uint32_t opt, ir_ref op1, ir_ref op2, ir_ref op3) |
|
ir_ref | ir_emit0 (ir_ctx *ctx, uint32_t opt) |
|
ir_ref | ir_emit1 (ir_ctx *ctx, uint32_t opt, ir_ref op1) |
|
ir_ref | ir_emit2 (ir_ctx *ctx, uint32_t opt, ir_ref op1, ir_ref op2) |
|
ir_ref | ir_emit3 (ir_ctx *ctx, uint32_t opt, ir_ref op1, ir_ref op2, ir_ref op3) |
|
ir_ref | ir_emit_N (ir_ctx *ctx, uint32_t opt, int32_t count) |
|
void | ir_set_op (ir_ctx *ctx, ir_ref ref, int32_t n, ir_ref val) |
|
ir_ref | ir_get_op (ir_ctx *ctx, ir_ref ref, int32_t n) |
|
IR_ALWAYS_INLINE void | ir_set_op1 (ir_ctx *ctx, ir_ref ref, ir_ref val) |
|
IR_ALWAYS_INLINE void | ir_set_op2 (ir_ctx *ctx, ir_ref ref, ir_ref val) |
|
IR_ALWAYS_INLINE void | ir_set_op3 (ir_ctx *ctx, ir_ref ref, ir_ref val) |
|
IR_ALWAYS_INLINE ir_ref | ir_insn_op (const ir_insn *insn, int32_t n) |
|
IR_ALWAYS_INLINE void | ir_insn_set_op (ir_insn *insn, int32_t n, ir_ref val) |
|
IR_ALWAYS_INLINE uint32_t | ir_insn_find_op (const ir_insn *insn, ir_ref val) |
|
ir_ref | ir_fold (ir_ctx *ctx, uint32_t opt, ir_ref op1, ir_ref op2, ir_ref op3) |
|
ir_ref | ir_fold0 (ir_ctx *ctx, uint32_t opt) |
|
ir_ref | ir_fold1 (ir_ctx *ctx, uint32_t opt, ir_ref op1) |
|
ir_ref | ir_fold2 (ir_ctx *ctx, uint32_t opt, ir_ref op1, ir_ref op2) |
|
ir_ref | ir_fold3 (ir_ctx *ctx, uint32_t opt, ir_ref op1, ir_ref op2, ir_ref op3) |
|
ir_ref | ir_param (ir_ctx *ctx, ir_type type, ir_ref region, const char *name, int pos) |
|
ir_ref | ir_var (ir_ctx *ctx, ir_type type, ir_ref region, const char *name) |
|
ir_ref | ir_bind (ir_ctx *ctx, ir_ref var, ir_ref def) |
|
ir_ref | ir_binding_find (const ir_ctx *ctx, ir_ref ref) |
|
void | ir_build_def_use_lists (ir_ctx *ctx) |
|
int | ir_mem2ssa (ir_ctx *ctx) |
|
int | ir_build_cfg (ir_ctx *ctx) |
|
int | ir_build_dominators_tree (ir_ctx *ctx) |
|
int | ir_find_loops (ir_ctx *ctx) |
|
int | ir_schedule_blocks (ir_ctx *ctx) |
|
void | ir_reset_cfg (ir_ctx *ctx) |
|
int | ir_sccp (ir_ctx *ctx) |
|
int | ir_gcm (ir_ctx *ctx) |
|
int | ir_schedule (ir_ctx *ctx) |
|
int | ir_assign_virtual_registers (ir_ctx *ctx) |
|
int | ir_compute_live_ranges (ir_ctx *ctx) |
|
int | ir_coalesce (ir_ctx *ctx) |
|
int | ir_compute_dessa_moves (ir_ctx *ctx) |
|
int | ir_reg_alloc (ir_ctx *ctx) |
|
int | ir_regs_number (void) |
|
bool | ir_reg_is_int (int32_t reg) |
|
const char * | ir_reg_name (int8_t reg, ir_type type) |
|
int32_t | ir_get_spill_slot_offset (ir_ctx *ctx, ir_ref ref) |
|
int | ir_match (ir_ctx *ctx) |
|
void * | ir_emit_code (ir_ctx *ctx, size_t *size) |
|
bool | ir_needs_thunk (ir_code_buffer *code_buffer, void *addr) |
|
void * | ir_emit_thunk (ir_code_buffer *code_buffer, void *addr, size_t *size_ptr) |
|
void | ir_fix_thunk (void *thunk_entry, void *addr) |
|
void * | ir_resolve_sym_name (const char *name) |
|
int | ir_disasm_init (void) |
|
void | ir_disasm_free (void) |
|
void | ir_disasm_add_symbol (const char *name, uint64_t addr, uint64_t size) |
|
const char * | ir_disasm_find_symbol (uint64_t addr, int64_t *offset) |
|
int | ir_disasm (const char *name, const void *start, size_t size, bool asm_addr, ir_ctx *ctx, FILE *f) |
|
int | ir_perf_jitdump_open (void) |
|
int | ir_perf_jitdump_close (void) |
|
int | ir_perf_jitdump_register (const char *name, const void *start, size_t size) |
|
void | ir_perf_map_register (const char *name, const void *start, size_t size) |
|
int | ir_gdb_register (const char *name, const void *start, size_t size, uint32_t sp_offset, uint32_t sp_adjustment) |
|
void | ir_gdb_unregister_all (void) |
|
bool | ir_gdb_present (void) |
|
void | ir_loader_init (void) |
|
void | ir_loader_free (void) |
|
int | ir_load (ir_loader *loader, FILE *f) |
|
int | ir_load_llvm_bitcode (ir_loader *loader, const char *filename) |
|
int | ir_load_llvm_asm (ir_loader *loader, const char *filename) |
|
void | ir_print_proto (const ir_ctx *ctx, ir_ref proto, FILE *f) |
|
void | ir_save (const ir_ctx *ctx, uint32_t save_flags, FILE *f) |
|
void | ir_dump (const ir_ctx *ctx, FILE *f) |
|
void | ir_dump_dot (const ir_ctx *ctx, const char *name, FILE *f) |
|
void | ir_dump_use_lists (const ir_ctx *ctx, FILE *f) |
|
void | ir_dump_cfg (ir_ctx *ctx, FILE *f) |
|
void | ir_dump_cfg_map (const ir_ctx *ctx, FILE *f) |
|
void | ir_dump_live_ranges (const ir_ctx *ctx, FILE *f) |
|
void | ir_dump_codegen (const ir_ctx *ctx, FILE *f) |
|
int | ir_emit_c (ir_ctx *ctx, const char *name, FILE *f) |
|
void | ir_emit_c_func_decl (const char *name, uint32_t flags, ir_type ret_type, uint32_t params_count, const uint8_t *param_types, FILE *f) |
|
void | ir_emit_c_sym_decl (const char *name, uint32_t flags, FILE *f) |
|
int | ir_emit_llvm (ir_ctx *ctx, const char *name, FILE *f) |
|
void | ir_emit_llvm_func_decl (const char *name, uint32_t flags, ir_type ret_type, uint32_t params_count, const uint8_t *param_types, FILE *f) |
|
void | ir_emit_llvm_sym_decl (const char *name, uint32_t flags, FILE *f) |
|
bool | ir_check (const ir_ctx *ctx) |
|
void | ir_consistency_check (void) |
|
int | ir_patch (const void *code, size_t size, uint32_t jmp_table_size, const void *from_addr, const void *to_addr) |
|
uint32_t | ir_cpuinfo (void) |
|
const void * | ir_emit_exitgroup (uint32_t first_exit_point, uint32_t exit_points_per_group, const void *exit_addr, ir_code_buffer *code_buffer, size_t *size_ptr) |
|
IR_ALWAYS_INLINE void * | ir_jit_compile (ir_ctx *ctx, int opt_level, size_t *size) |
|
void * | ir_mem_mmap (size_t size) |
|
int | ir_mem_unmap (void *ptr, size_t size) |
|
int | ir_mem_protect (void *ptr, size_t size) |
|
int | ir_mem_unprotect (void *ptr, size_t size) |
|
int | ir_mem_flush (void *ptr, size_t size) |
|