|
void | ir_print_escaped_str (const char *s, size_t len, FILE *f) |
|
void | ir_print_const (const ir_ctx *ctx, const ir_insn *insn, FILE *f, bool quoted) |
|
void | ir_truncate (ir_ctx *ctx) |
|
void | ir_init (ir_ctx *ctx, uint32_t flags, ir_ref consts_limit, ir_ref insns_limit) |
|
void | ir_free (ir_ctx *ctx) |
|
ir_ref | ir_unique_const_addr (ir_ctx *ctx, uintptr_t addr) |
|
ir_ref | ir_const_ex (ir_ctx *ctx, ir_val val, uint8_t type, uint32_t optx) |
|
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_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_count, 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_folding (ir_ctx *ctx, uint32_t opt, ir_ref op1, ir_ref op2, ir_ref op3, ir_insn *op1_insn, ir_insn *op2_insn, ir_insn *op3_insn) |
|
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_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_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) |
|
void | ir_use_list_remove_all (ir_ctx *ctx, ir_ref from, ir_ref ref) |
|
void | ir_use_list_remove_one (ir_ctx *ctx, ir_ref from, ir_ref ref) |
|
void | ir_use_list_replace_one (ir_ctx *ctx, ir_ref ref, ir_ref use, ir_ref new_use) |
|
void | ir_use_list_replace_all (ir_ctx *ctx, ir_ref ref, ir_ref use, ir_ref new_use) |
|
bool | ir_use_list_add (ir_ctx *ctx, ir_ref to, ir_ref ref) |
|
void | ir_use_list_sort (ir_ctx *ctx, ir_ref ref) |
|
void | ir_replace (ir_ctx *ctx, ir_ref ref, ir_ref new_ref) |
|
void | ir_update_op (ir_ctx *ctx, ir_ref ref, uint32_t idx, ir_ref new_val) |
|
void | ir_array_grow (ir_array *a, uint32_t size) |
|
void | ir_array_insert (ir_array *a, uint32_t i, ir_ref val) |
|
void | ir_array_remove (ir_array *a, uint32_t i) |
|
void | ir_list_insert (ir_list *l, uint32_t i, ir_ref val) |
|
void | ir_list_remove (ir_list *l, uint32_t i) |
|
uint32_t | ir_list_find (const ir_list *l, ir_ref val) |
|
void | ir_hashtab_init (ir_hashtab *tab, uint32_t size) |
|
void | ir_hashtab_free (ir_hashtab *tab) |
|
ir_ref | ir_hashtab_find (const ir_hashtab *tab, uint32_t key) |
|
bool | ir_hashtab_add (ir_hashtab *tab, uint32_t key, ir_ref val) |
|
void | ir_hashtab_key_sort (ir_hashtab *tab) |
|
void | ir_addrtab_init (ir_hashtab *tab, uint32_t size) |
|
void | ir_addrtab_free (ir_hashtab *tab) |
|
ir_ref | ir_addrtab_find (const ir_hashtab *tab, uint64_t key) |
|
void | ir_addrtab_set (ir_hashtab *tab, uint64_t key, ir_ref val) |
|
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) |
|
ir_alias | ir_check_partial_aliasing (const ir_ctx *ctx, ir_ref addr1, ir_ref addr2, ir_type type1, ir_type type2) |
|
IR_ALWAYS_INLINE ir_ref | ir_find_aliasing_load_i (ir_ctx *ctx, ir_ref ref, ir_type type, ir_ref addr, ir_ref limit) |
|
ir_ref | ir_find_aliasing_load (ir_ctx *ctx, ir_ref ref, ir_type type, ir_ref addr) |
|
IR_ALWAYS_INLINE ir_ref | ir_find_aliasing_vload_i (ir_ctx *ctx, ir_ref ref, ir_type type, ir_ref var) |
|
ir_ref | ir_find_aliasing_vload (ir_ctx *ctx, ir_ref ref, ir_type type, ir_ref var) |
|
IR_ALWAYS_INLINE ir_ref | ir_find_aliasing_store_i (ir_ctx *ctx, ir_ref ref, ir_ref addr, ir_ref val, ir_ref limit) |
|
ir_ref | ir_find_aliasing_store (ir_ctx *ctx, ir_ref ref, ir_ref addr, ir_ref val) |
|
IR_ALWAYS_INLINE ir_ref | ir_find_aliasing_vstore_i (ir_ctx *ctx, ir_ref ref, ir_ref var, ir_ref val) |
|
ir_ref | ir_find_aliasing_vstore (ir_ctx *ctx, ir_ref ref, ir_ref var, ir_ref val) |
|
ir_ref | _ir_PARAM (ir_ctx *ctx, ir_type type, const char *name, ir_ref num) |
|
ir_ref | _ir_VAR (ir_ctx *ctx, ir_type type, const char *name) |
|
ir_ref | _ir_PHI_2 (ir_ctx *ctx, ir_type type, ir_ref src1, ir_ref src2) |
|
ir_ref | _ir_PHI_N (ir_ctx *ctx, ir_type type, ir_ref n, ir_ref *inputs) |
|
void | _ir_PHI_SET_OP (ir_ctx *ctx, ir_ref phi, ir_ref pos, ir_ref src) |
|
void | _ir_START (ir_ctx *ctx) |
|
void | _ir_ENTRY (ir_ctx *ctx, ir_ref src, ir_ref num) |
|
void | _ir_BEGIN (ir_ctx *ctx, ir_ref src) |
|
IR_ALWAYS_INLINE ir_ref | ir_check_dominating_predicates_i (ir_ctx *ctx, ir_ref ref, ir_ref condition, ir_ref limit) |
|
ir_ref | ir_check_dominating_predicates (ir_ctx *ctx, ir_ref ref, ir_ref condition) |
|
ir_ref | _ir_IF (ir_ctx *ctx, ir_ref condition) |
|
void | _ir_IF_TRUE (ir_ctx *ctx, ir_ref if_ref) |
|
void | _ir_IF_TRUE_cold (ir_ctx *ctx, ir_ref if_ref) |
|
void | _ir_IF_FALSE (ir_ctx *ctx, ir_ref if_ref) |
|
void | _ir_IF_FALSE_cold (ir_ctx *ctx, ir_ref if_ref) |
|
ir_ref | _ir_END (ir_ctx *ctx) |
|
void | _ir_MERGE_2 (ir_ctx *ctx, ir_ref src1, ir_ref src2) |
|
void | _ir_MERGE_N (ir_ctx *ctx, ir_ref n, ir_ref *inputs) |
|
void | _ir_MERGE_SET_OP (ir_ctx *ctx, ir_ref merge, ir_ref pos, ir_ref src) |
|
ir_ref | _ir_END_LIST (ir_ctx *ctx, ir_ref list) |
|
ir_ref | _ir_END_PHI_LIST (ir_ctx *ctx, ir_ref list, ir_ref val) |
|
void | _ir_MERGE_LIST (ir_ctx *ctx, ir_ref list) |
|
ir_ref | _ir_PHI_LIST (ir_ctx *ctx, ir_ref list) |
|
ir_ref | _ir_LOOP_BEGIN (ir_ctx *ctx, ir_ref src1) |
|
ir_ref | _ir_LOOP_END (ir_ctx *ctx) |
|
ir_ref | _ir_CALL (ir_ctx *ctx, ir_type type, ir_ref func) |
|
ir_ref | _ir_CALL_1 (ir_ctx *ctx, ir_type type, ir_ref func, ir_ref arg1) |
|
ir_ref | _ir_CALL_2 (ir_ctx *ctx, ir_type type, ir_ref func, ir_ref arg1, ir_ref arg2) |
|
ir_ref | _ir_CALL_3 (ir_ctx *ctx, ir_type type, ir_ref func, ir_ref arg1, ir_ref arg2, ir_ref arg3) |
|
ir_ref | _ir_CALL_4 (ir_ctx *ctx, ir_type type, ir_ref func, ir_ref arg1, ir_ref arg2, ir_ref arg3, ir_ref arg4) |
|
ir_ref | _ir_CALL_5 (ir_ctx *ctx, ir_type type, ir_ref func, ir_ref arg1, ir_ref arg2, ir_ref arg3, ir_ref arg4, ir_ref arg5) |
|
ir_ref | _ir_CALL_6 (ir_ctx *ctx, ir_type type, ir_ref func, ir_ref arg1, ir_ref arg2, ir_ref arg3, ir_ref arg4, ir_ref arg5, ir_ref arg6) |
|
ir_ref | _ir_CALL_N (ir_ctx *ctx, ir_type type, ir_ref func, uint32_t count, ir_ref *args) |
|
void | _ir_UNREACHABLE (ir_ctx *ctx) |
|
void | _ir_TAILCALL (ir_ctx *ctx, ir_type type, ir_ref func) |
|
void | _ir_TAILCALL_1 (ir_ctx *ctx, ir_type type, ir_ref func, ir_ref arg1) |
|
void | _ir_TAILCALL_2 (ir_ctx *ctx, ir_type type, ir_ref func, ir_ref arg1, ir_ref arg2) |
|
void | _ir_TAILCALL_3 (ir_ctx *ctx, ir_type type, ir_ref func, ir_ref arg1, ir_ref arg2, ir_ref arg3) |
|
void | _ir_TAILCALL_4 (ir_ctx *ctx, ir_type type, ir_ref func, ir_ref arg1, ir_ref arg2, ir_ref arg3, ir_ref arg4) |
|
void | _ir_TAILCALL_5 (ir_ctx *ctx, ir_type type, ir_ref func, ir_ref arg1, ir_ref arg2, ir_ref arg3, ir_ref arg4, ir_ref arg5) |
|
void | _ir_TAILCALL_6 (ir_ctx *ctx, ir_type type, ir_ref func, ir_ref arg1, ir_ref arg2, ir_ref arg3, ir_ref arg4, ir_ref arg5, ir_ref arg6) |
|
void | _ir_TAILCALL_N (ir_ctx *ctx, ir_type type, ir_ref func, uint32_t count, ir_ref *args) |
|
ir_ref | _ir_SWITCH (ir_ctx *ctx, ir_ref val) |
|
void | _ir_CASE_VAL (ir_ctx *ctx, ir_ref switch_ref, ir_ref val) |
|
void | _ir_CASE_DEFAULT (ir_ctx *ctx, ir_ref switch_ref) |
|
void | _ir_RETURN (ir_ctx *ctx, ir_ref val) |
|
void | _ir_IJMP (ir_ctx *ctx, ir_ref addr) |
|
ir_ref | _ir_ADD_OFFSET (ir_ctx *ctx, ir_ref addr, uintptr_t offset) |
|
void | _ir_GUARD (ir_ctx *ctx, ir_ref condition, ir_ref addr) |
|
void | _ir_GUARD_NOT (ir_ctx *ctx, ir_ref condition, ir_ref addr) |
|
ir_ref | _ir_SNAPSHOT (ir_ctx *ctx, ir_ref n) |
|
void | _ir_SNAPSHOT_SET_OP (ir_ctx *ctx, ir_ref snapshot, ir_ref pos, ir_ref val) |
|
ir_ref | _ir_EXITCALL (ir_ctx *ctx, ir_ref func) |
|
ir_ref | _ir_ALLOCA (ir_ctx *ctx, ir_ref size) |
|
void | _ir_AFREE (ir_ctx *ctx, ir_ref size) |
|
ir_ref | _ir_VLOAD (ir_ctx *ctx, ir_type type, ir_ref var) |
|
void | _ir_VSTORE (ir_ctx *ctx, ir_ref var, ir_ref val) |
|
ir_ref | _ir_TLS (ir_ctx *ctx, ir_ref index, ir_ref offset) |
|
ir_ref | _ir_RLOAD (ir_ctx *ctx, ir_type type, ir_ref reg) |
|
void | _ir_RSTORE (ir_ctx *ctx, ir_ref reg, ir_ref val) |
|
ir_ref | _ir_LOAD (ir_ctx *ctx, ir_type type, ir_ref addr) |
|
void | _ir_STORE (ir_ctx *ctx, ir_ref addr, ir_ref val) |
|
void | _ir_VA_START (ir_ctx *ctx, ir_ref list) |
|
void | _ir_VA_END (ir_ctx *ctx, ir_ref list) |
|
void | _ir_VA_COPY (ir_ctx *ctx, ir_ref dst, ir_ref src) |
|
ir_ref | _ir_VA_ARG (ir_ctx *ctx, ir_type type, ir_ref list) |
|
ir_ref | _ir_BLOCK_BEGIN (ir_ctx *ctx) |
|