php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
ir.h File Reference
#include <inttypes.h>
#include <stdint.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>

Go to the source code of this file.

Data Structures

union  _ir_val
 
struct  _ir_insn
 
struct  _ir_strtab
 
struct  _ir_code_buffer
 
struct  _ir_ctx
 
struct  _ir_proto_t
 
struct  _ir_loader
 

Macros

#define IR_VERSION   "0.0.1"
 
#define __has_attribute(x)
 
#define IR_ALWAYS_INLINE   static inline
 
#define IR_NEVER_INLINE
 
#define IR_TYPE_SIGNED   (1<<4)
 
#define IR_TYPE_UNSIGNED   (1<<5)
 
#define IR_TYPE_FP   (1<<6)
 
#define IR_TYPE_SPECIAL   (1<<7)
 
#define IR_TYPE_BOOL   (IR_TYPE_SPECIAL|IR_TYPE_UNSIGNED)
 
#define IR_TYPE_ADDR   (IR_TYPE_SPECIAL|IR_TYPE_UNSIGNED)
 
#define IR_TYPE_CHAR   (IR_TYPE_SPECIAL|IR_TYPE_SIGNED)
 
#define IR_TYPES(_)
 
#define IR_IS_TYPE_UNSIGNED(t)
 
#define IR_IS_TYPE_SIGNED(t)
 
#define IR_IS_TYPE_INT(t)
 
#define IR_IS_TYPE_FP(t)
 
#define IR_TYPE_ENUM(name, type, field, flags)
 
#define IR_SIZE_T   IR_U32
 
#define IR_SSIZE_T   IR_I32
 
#define IR_UINTPTR_T   IR_U32
 
#define IR_INTPTR_T   IR_I32
 
#define IR_C_UINTPTR   IR_U32
 
#define IR_C_INTPTR   IR_I32
 
#define IR_OPS(_)
 
#define IR_OP_ENUM(name, flags, op1, op2, op3)
 
#define IR_OPT_OP_MASK   0x00ff
 
#define IR_OPT_TYPE_MASK   0xff00
 
#define IR_OPT_TYPE_SHIFT   8
 
#define IR_OPT_INPUTS_SHIFT   16
 
#define IR_OPT(op, type)
 
#define IR_OPTX(op, type, n)
 
#define IR_OPT_TYPE(opt)
 
#define IR_IS_CONST_REF(ref)
 
#define IR_UNUSED   0
 
#define IR_NULL   (-1)
 
#define IR_FALSE   (-2)
 
#define IR_TRUE   (-3)
 
#define IR_LAST_FOLDABLE_OP   IR_COPY
 
#define IR_CONSTS_LIMIT_MIN   (-(IR_TRUE - 1))
 
#define IR_INSNS_LIMIT_MIN   (IR_UNUSED + 1)
 
#define ADDR_MEMBER   uintptr_t addr;
 
#define ir_strtab_count(strtab)
 
#define IR_FUNCTION   (1<<0) /* Generate a function. */
 
#define IR_FASTCALL_FUNC   (1<<1) /* Generate a function with fastcall calling convention, x86 32-bit only. */
 
#define IR_VARARG_FUNC   (1<<2)
 
#define IR_BUILTIN_FUNC   (1<<3)
 
#define IR_STATIC   (1<<4)
 
#define IR_EXTERN   (1<<5)
 
#define IR_CONST   (1<<6)
 
#define IR_INITIALIZED   (1<<7) /* sym data flag: constant or an initialized variable */
 
#define IR_CONST_STRING   (1<<8) /* sym data flag: constant string */
 
#define IR_SKIP_PROLOGUE   (1<<8) /* Don't generate function prologue. */
 
#define IR_USE_FRAME_POINTER   (1<<9)
 
#define IR_PREALLOCATED_STACK   (1<<10)
 
#define IR_NO_STACK_COMBINE   (1<<11)
 
#define IR_START_BR_TARGET   (1<<12)
 
#define IR_ENTRY_BR_TARGET   (1<<13)
 
#define IR_GEN_ENDBR   (1<<14)
 
#define IR_MERGE_EMPTY_ENTRIES   (1<<15)
 
#define IR_OPT_INLINE   (1<<16)
 
#define IR_OPT_FOLDING   (1<<17)
 
#define IR_OPT_CFG   (1<<18) /* merge BBs, by remove END->BEGIN nodes during CFG construction */
 
#define IR_OPT_MEM2SSA   (1<<19)
 
#define IR_OPT_CODEGEN   (1<<20)
 
#define IR_GEN_NATIVE   (1<<21)
 
#define IR_GEN_CODE   (1<<22) /* C or LLVM */
 
#define IR_GEN_CACHE_DEMOTE   (1<<23) /* Demote the generated code from closest CPU caches */
 
#define IR_MAX_PROTO_PARAMS   255
 
#define IR_REG_NONE   -1
 
#define IR_REG_SPILL_LOAD   (1<<6)
 
#define IR_REG_SPILL_STORE   (1<<6)
 
#define IR_REG_SPILL_SPECIAL   (1<<7)
 
#define IR_REG_SPILLED(r)
 
#define IR_REG_NUM(r)
 
#define IR_SAVE_CFG   (1<<0) /* add info about CFG */
 
#define IR_SAVE_CFG_MAP   (1<<1) /* add info about CFG block assignment */
 
#define IR_SAVE_USE_LISTS   (1<<2) /* add info about def->use lists */
 
#define IR_SAVE_RULES   (1<<3) /* add info about selected code-generation rules */
 
#define IR_SAVE_REGS   (1<<4) /* add info about selected registers */
 
#define IR_ERROR_CODE_MEM_OVERFLOW   1
 
#define IR_ERROR_FIXED_STACK_FRAME_OVERFLOW   2
 
#define IR_ERROR_UNSUPPORTED_CODE_RULE   3
 
#define IR_ERROR_LINK   4
 
#define IR_ERROR_ENCODE   5
 
#define ir_mem_malloc   malloc
 
#define ir_mem_calloc   calloc
 
#define ir_mem_realloc   realloc
 
#define ir_mem_free   free
 
#define ir_mem_pmalloc   malloc
 
#define ir_mem_pcalloc   calloc
 
#define ir_mem_prealloc   realloc
 
#define ir_mem_pfree   free
 

Typedefs

typedef enum _ir_type ir_type
 
typedef enum _ir_op ir_op
 
typedef int32_t ir_ref
 
typedef union _ir_val ir_val
 
typedef struct _ir_insn ir_insn
 
typedef struct _ir_hashtab ir_hashtab
 
typedef struct _ir_strtab ir_strtab
 
typedef void(* ir_strtab_apply_t) (const char *str, uint32_t len, ir_ref val)
 
typedef struct _ir_ctx ir_ctx
 
typedef struct _ir_use_list ir_use_list
 
typedef struct _ir_block ir_block
 
typedef struct _ir_arena ir_arena
 
typedef struct _ir_live_interval ir_live_interval
 
typedef struct _ir_live_range ir_live_range
 
typedef struct _ir_loader ir_loader
 
typedef int8_t ir_regs[4]
 
typedef void(* ir_snapshot_create_t) (ir_ctx *ctx, ir_ref addr)
 
typedef struct _ir_code_buffer ir_code_buffer
 
typedef struct _ir_proto_t ir_proto_t
 

Enumerations

enum  _ir_type { IR_VOID , IR_LAST_TYPE }
 
enum  _ir_op { IR_LAST_OP }
 

Functions

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)
 
voidir_emit_code (ir_ctx *ctx, size_t *size)
 
bool ir_needs_thunk (ir_code_buffer *code_buffer, void *addr)
 
voidir_emit_thunk (ir_code_buffer *code_buffer, void *addr, size_t *size_ptr)
 
void ir_fix_thunk (void *thunk_entry, void *addr)
 
voidir_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 voidir_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 voidir_jit_compile (ir_ctx *ctx, int opt_level, size_t *size)
 
voidir_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)
 

Macro Definition Documentation

◆ __has_attribute

#define __has_attribute ( x)
Value:
0

Definition at line 104 of file ir.h.

◆ ADDR_MEMBER

#define ADDR_MEMBER   uintptr_t addr;

Definition at line 405 of file ir.h.

◆ IR_ALWAYS_INLINE

#define IR_ALWAYS_INLINE   static inline

Definition at line 108 of file ir.h.

◆ IR_BUILTIN_FUNC

#define IR_BUILTIN_FUNC   (1<<3)

Definition at line 513 of file ir.h.

◆ IR_C_INTPTR

#define IR_C_INTPTR   IR_I32

Definition at line 169 of file ir.h.

◆ IR_C_UINTPTR

#define IR_C_UINTPTR   IR_U32

Definition at line 168 of file ir.h.

◆ IR_CONST

#define IR_CONST   (1<<6)

Definition at line 516 of file ir.h.

◆ IR_CONST_STRING

#define IR_CONST_STRING   (1<<8) /* sym data flag: constant string */

Definition at line 519 of file ir.h.

◆ IR_CONSTS_LIMIT_MIN

#define IR_CONSTS_LIMIT_MIN   (-(IR_TRUE - 1))

Definition at line 401 of file ir.h.

◆ IR_ENTRY_BR_TARGET

#define IR_ENTRY_BR_TARGET   (1<<13)

Definition at line 526 of file ir.h.

◆ IR_ERROR_CODE_MEM_OVERFLOW

#define IR_ERROR_CODE_MEM_OVERFLOW   1

Definition at line 998 of file ir.h.

◆ IR_ERROR_ENCODE

#define IR_ERROR_ENCODE   5

Definition at line 1002 of file ir.h.

◆ IR_ERROR_FIXED_STACK_FRAME_OVERFLOW

#define IR_ERROR_FIXED_STACK_FRAME_OVERFLOW   2

Definition at line 999 of file ir.h.

◆ IR_ERROR_LINK

#define IR_ERROR_LINK   4

Definition at line 1001 of file ir.h.

◆ IR_ERROR_UNSUPPORTED_CODE_RULE

#define IR_ERROR_UNSUPPORTED_CODE_RULE   3

Definition at line 1000 of file ir.h.

◆ IR_EXTERN

#define IR_EXTERN   (1<<5)

Definition at line 515 of file ir.h.

◆ IR_FALSE

#define IR_FALSE   (-2)

Definition at line 397 of file ir.h.

◆ IR_FASTCALL_FUNC

#define IR_FASTCALL_FUNC   (1<<1) /* Generate a function with fastcall calling convention, x86 32-bit only. */

Definition at line 511 of file ir.h.

◆ IR_FUNCTION

#define IR_FUNCTION   (1<<0) /* Generate a function. */

Definition at line 510 of file ir.h.

◆ IR_GEN_CACHE_DEMOTE

#define IR_GEN_CACHE_DEMOTE   (1<<23) /* Demote the generated code from closest CPU caches */

Definition at line 538 of file ir.h.

◆ IR_GEN_CODE

#define IR_GEN_CODE   (1<<22) /* C or LLVM */

Definition at line 536 of file ir.h.

◆ IR_GEN_ENDBR

#define IR_GEN_ENDBR   (1<<14)

Definition at line 527 of file ir.h.

◆ IR_GEN_NATIVE

#define IR_GEN_NATIVE   (1<<21)

Definition at line 535 of file ir.h.

◆ IR_INITIALIZED

#define IR_INITIALIZED   (1<<7) /* sym data flag: constant or an initialized variable */

Definition at line 518 of file ir.h.

◆ IR_INSNS_LIMIT_MIN

#define IR_INSNS_LIMIT_MIN   (IR_UNUSED + 1)

Definition at line 402 of file ir.h.

◆ IR_INTPTR_T

#define IR_INTPTR_T   IR_I32

Definition at line 167 of file ir.h.

◆ IR_IS_CONST_REF

#define IR_IS_CONST_REF ( ref)
Value:
((ref) < 0)

Definition at line 392 of file ir.h.

◆ IR_IS_TYPE_FP

#define IR_IS_TYPE_FP ( t)
Value:
((t) >= IR_DOUBLE)

Definition at line 146 of file ir.h.

◆ IR_IS_TYPE_INT

#define IR_IS_TYPE_INT ( t)
Value:
((t) < IR_DOUBLE)

Definition at line 145 of file ir.h.

◆ IR_IS_TYPE_SIGNED

#define IR_IS_TYPE_SIGNED ( t)
Value:
((t) >= IR_CHAR && (t) < IR_DOUBLE)

Definition at line 144 of file ir.h.

◆ IR_IS_TYPE_UNSIGNED

#define IR_IS_TYPE_UNSIGNED ( t)
Value:
((t) < IR_CHAR)

Definition at line 143 of file ir.h.

◆ IR_LAST_FOLDABLE_OP

#define IR_LAST_FOLDABLE_OP   IR_COPY

Definition at line 399 of file ir.h.

◆ IR_MAX_PROTO_PARAMS

#define IR_MAX_PROTO_PARAMS   255

Definition at line 682 of file ir.h.

◆ ir_mem_calloc

#define ir_mem_calloc   calloc

Definition at line 1009 of file ir.h.

◆ ir_mem_free

#define ir_mem_free   free

Definition at line 1015 of file ir.h.

◆ ir_mem_malloc

#define ir_mem_malloc   malloc

Definition at line 1006 of file ir.h.

◆ ir_mem_pcalloc

#define ir_mem_pcalloc   calloc

Definition at line 1022 of file ir.h.

◆ ir_mem_pfree

#define ir_mem_pfree   free

Definition at line 1028 of file ir.h.

◆ ir_mem_pmalloc

#define ir_mem_pmalloc   malloc

Definition at line 1019 of file ir.h.

◆ ir_mem_prealloc

#define ir_mem_prealloc   realloc

Definition at line 1025 of file ir.h.

◆ ir_mem_realloc

#define ir_mem_realloc   realloc

Definition at line 1012 of file ir.h.

◆ IR_MERGE_EMPTY_ENTRIES

#define IR_MERGE_EMPTY_ENTRIES   (1<<15)

Definition at line 528 of file ir.h.

◆ IR_NEVER_INLINE

#define IR_NEVER_INLINE

Definition at line 111 of file ir.h.

◆ IR_NO_STACK_COMBINE

#define IR_NO_STACK_COMBINE   (1<<11)

Definition at line 524 of file ir.h.

◆ IR_NULL

#define IR_NULL   (-1)

Definition at line 396 of file ir.h.

◆ IR_OP_ENUM

#define IR_OP_ENUM ( name,
flags,
op1,
op2,
op3 )
Value:
IR_ ## name,
zend_string * name

Definition at line 369 of file ir.h.

◆ IR_OPS

#define IR_OPS ( _)

Definition at line 220 of file ir.h.

◆ IR_OPT

#define IR_OPT ( op,
type )
Value:
((uint16_t)(op) | ((uint16_t)(type) << IR_OPT_TYPE_SHIFT))
zend_ffi_type * type
Definition ffi.c:3812
#define IR_OPT_TYPE_SHIFT
Definition ir.h:382

Definition at line 385 of file ir.h.

◆ IR_OPT_CFG

#define IR_OPT_CFG   (1<<18) /* merge BBs, by remove END->BEGIN nodes during CFG construction */

Definition at line 532 of file ir.h.

◆ IR_OPT_CODEGEN

#define IR_OPT_CODEGEN   (1<<20)

Definition at line 534 of file ir.h.

◆ IR_OPT_FOLDING

#define IR_OPT_FOLDING   (1<<17)

Definition at line 531 of file ir.h.

◆ IR_OPT_INLINE

#define IR_OPT_INLINE   (1<<16)

Definition at line 530 of file ir.h.

◆ IR_OPT_INPUTS_SHIFT

#define IR_OPT_INPUTS_SHIFT   16

Definition at line 383 of file ir.h.

◆ IR_OPT_MEM2SSA

#define IR_OPT_MEM2SSA   (1<<19)

Definition at line 533 of file ir.h.

◆ IR_OPT_OP_MASK

#define IR_OPT_OP_MASK   0x00ff

Definition at line 380 of file ir.h.

◆ IR_OPT_TYPE

#define IR_OPT_TYPE ( opt)
Value:
#define IR_OPT_TYPE_MASK
Definition ir.h:381

Definition at line 387 of file ir.h.

◆ IR_OPT_TYPE_MASK

#define IR_OPT_TYPE_MASK   0xff00

Definition at line 381 of file ir.h.

◆ IR_OPT_TYPE_SHIFT

#define IR_OPT_TYPE_SHIFT   8

Definition at line 382 of file ir.h.

◆ IR_OPTX

#define IR_OPTX ( op,
type,
n )
Value:
((uint32_t)(op) | ((uint32_t)(type) << IR_OPT_TYPE_SHIFT) | ((uint32_t)(n) << IR_OPT_INPUTS_SHIFT))
zend_long n
Definition ffi.c:4979
#define IR_OPT_INPUTS_SHIFT
Definition ir.h:383

Definition at line 386 of file ir.h.

◆ IR_PREALLOCATED_STACK

#define IR_PREALLOCATED_STACK   (1<<10)

Definition at line 523 of file ir.h.

◆ IR_REG_NONE

#define IR_REG_NONE   -1

Definition at line 786 of file ir.h.

◆ IR_REG_NUM

#define IR_REG_NUM ( r)
Value:
#define IR_REG_SPILL_STORE
Definition ir.h:788
#define IR_REG_SPILL_LOAD
Definition ir.h:787
#define IR_REG_SPILL_SPECIAL
Definition ir.h:789
#define IR_REG_NONE
Definition ir.h:786

Definition at line 792 of file ir.h.

◆ IR_REG_SPILL_LOAD

#define IR_REG_SPILL_LOAD   (1<<6)

Definition at line 787 of file ir.h.

◆ IR_REG_SPILL_SPECIAL

#define IR_REG_SPILL_SPECIAL   (1<<7)

Definition at line 789 of file ir.h.

◆ IR_REG_SPILL_STORE

#define IR_REG_SPILL_STORE   (1<<6)

Definition at line 788 of file ir.h.

◆ IR_REG_SPILLED

#define IR_REG_SPILLED ( r)
Value:

Definition at line 790 of file ir.h.

◆ IR_SAVE_CFG

#define IR_SAVE_CFG   (1<<0) /* add info about CFG */

Definition at line 875 of file ir.h.

◆ IR_SAVE_CFG_MAP

#define IR_SAVE_CFG_MAP   (1<<1) /* add info about CFG block assignment */

Definition at line 876 of file ir.h.

◆ IR_SAVE_REGS

#define IR_SAVE_REGS   (1<<4) /* add info about selected registers */

Definition at line 879 of file ir.h.

◆ IR_SAVE_RULES

#define IR_SAVE_RULES   (1<<3) /* add info about selected code-generation rules */

Definition at line 878 of file ir.h.

◆ IR_SAVE_USE_LISTS

#define IR_SAVE_USE_LISTS   (1<<2) /* add info about def->use lists */

Definition at line 877 of file ir.h.

◆ IR_SIZE_T

#define IR_SIZE_T   IR_U32

Definition at line 164 of file ir.h.

◆ IR_SKIP_PROLOGUE

#define IR_SKIP_PROLOGUE   (1<<8) /* Don't generate function prologue. */

Definition at line 521 of file ir.h.

◆ IR_SSIZE_T

#define IR_SSIZE_T   IR_I32

Definition at line 165 of file ir.h.

◆ IR_START_BR_TARGET

#define IR_START_BR_TARGET   (1<<12)

Definition at line 525 of file ir.h.

◆ IR_STATIC

#define IR_STATIC   (1<<4)

Definition at line 514 of file ir.h.

◆ ir_strtab_count

#define ir_strtab_count ( strtab)
Value:
(strtab)->count
count(Countable|array $value, int $mode=COUNT_NORMAL)

Definition at line 496 of file ir.h.

◆ IR_TRUE

#define IR_TRUE   (-3)

Definition at line 398 of file ir.h.

◆ IR_TYPE_ADDR

#define IR_TYPE_ADDR   (IR_TYPE_SPECIAL|IR_TYPE_UNSIGNED)

Definition at line 124 of file ir.h.

◆ IR_TYPE_BOOL

#define IR_TYPE_BOOL   (IR_TYPE_SPECIAL|IR_TYPE_UNSIGNED)

Definition at line 123 of file ir.h.

◆ IR_TYPE_CHAR

#define IR_TYPE_CHAR   (IR_TYPE_SPECIAL|IR_TYPE_SIGNED)

Definition at line 125 of file ir.h.

◆ IR_TYPE_ENUM

#define IR_TYPE_ENUM ( name,
type,
field,
flags )
Value:
IR_ ## name,

Definition at line 148 of file ir.h.

◆ IR_TYPE_FP

#define IR_TYPE_FP   (1<<6)

Definition at line 121 of file ir.h.

◆ IR_TYPE_SIGNED

#define IR_TYPE_SIGNED   (1<<4)

Definition at line 119 of file ir.h.

◆ IR_TYPE_SPECIAL

#define IR_TYPE_SPECIAL   (1<<7)

Definition at line 122 of file ir.h.

◆ IR_TYPE_UNSIGNED

#define IR_TYPE_UNSIGNED   (1<<5)

Definition at line 120 of file ir.h.

◆ IR_TYPES

#define IR_TYPES ( _)
Value:
_(BOOL, bool, b, IR_TYPE_BOOL) \
_(U8, uint8_t, u8, IR_TYPE_UNSIGNED) \
_(U16, uint16_t, u16, IR_TYPE_UNSIGNED) \
_(U32, uint32_t, u32, IR_TYPE_UNSIGNED) \
_(U64, uint64_t, u64, IR_TYPE_UNSIGNED) \
_(ADDR, uintptr_t, addr, IR_TYPE_ADDR) \
_(CHAR, char, c, IR_TYPE_CHAR) \
_(I8, int8_t, i8, IR_TYPE_SIGNED) \
_(I16, int16_t, i16, IR_TYPE_SIGNED) \
_(I32, int32_t, i32, IR_TYPE_SIGNED) \
_(I64, int64_t, i64, IR_TYPE_SIGNED) \
_(DOUBLE, double, d, IR_TYPE_FP) \
_(FLOAT, float, f, IR_TYPE_FP) \
uint16_t u16
Definition endianness.h:3
uint8_t u8[2]
Definition endianness.h:2
_(string $message)
#define CHAR(c)
Definition glob.c:129
#define IR_TYPE_FP
Definition ir.h:121
#define IR_TYPE_ADDR
Definition ir.h:124
#define IR_TYPE_BOOL
Definition ir.h:123
#define IR_TYPE_CHAR
Definition ir.h:125
#define IR_TYPE_SIGNED
Definition ir.h:119
#define IR_TYPE_UNSIGNED
Definition ir.h:120
unsigned long long U64
Definition minilua.c:28
int BOOL
#define U8(v)

Definition at line 128 of file ir.h.

◆ IR_UINTPTR_T

#define IR_UINTPTR_T   IR_U32

Definition at line 166 of file ir.h.

◆ IR_UNUSED

#define IR_UNUSED   0

Definition at line 395 of file ir.h.

◆ IR_USE_FRAME_POINTER

#define IR_USE_FRAME_POINTER   (1<<9)

Definition at line 522 of file ir.h.

◆ IR_VARARG_FUNC

#define IR_VARARG_FUNC   (1<<2)

Definition at line 512 of file ir.h.

◆ IR_VERSION

#define IR_VERSION   "0.0.1"

Definition at line 21 of file ir.h.

Typedef Documentation

◆ ir_arena

typedef struct _ir_arena ir_arena

Definition at line 553 of file ir.h.

◆ ir_block

typedef struct _ir_block ir_block

Definition at line 552 of file ir.h.

◆ ir_code_buffer

◆ ir_ctx

typedef struct _ir_ctx ir_ctx

Definition at line 550 of file ir.h.

◆ ir_hashtab

typedef struct _ir_hashtab ir_hashtab

Definition at line 482 of file ir.h.

◆ ir_insn

typedef struct _ir_insn ir_insn

◆ ir_live_interval

Definition at line 554 of file ir.h.

◆ ir_live_range

typedef struct _ir_live_range ir_live_range

Definition at line 555 of file ir.h.

◆ ir_loader

typedef struct _ir_loader ir_loader

Definition at line 556 of file ir.h.

◆ ir_op

typedef enum _ir_op ir_op

◆ ir_proto_t

typedef struct _ir_proto_t ir_proto_t

◆ ir_ref

typedef int32_t ir_ref

Definition at line 390 of file ir.h.

◆ ir_regs

typedef int8_t ir_regs[4]

Definition at line 557 of file ir.h.

◆ ir_snapshot_create_t

typedef void(* ir_snapshot_create_t) (ir_ctx *ctx, ir_ref addr)

Definition at line 559 of file ir.h.

◆ ir_strtab

typedef struct _ir_strtab ir_strtab

◆ ir_strtab_apply_t

typedef void(* ir_strtab_apply_t) (const char *str, uint32_t len, ir_ref val)

Definition at line 498 of file ir.h.

◆ ir_type

typedef enum _ir_type ir_type

◆ ir_use_list

typedef struct _ir_use_list ir_use_list

Definition at line 551 of file ir.h.

◆ ir_val

typedef union _ir_val ir_val

Enumeration Type Documentation

◆ _ir_op

enum _ir_op
Enumerator
IR_LAST_OP 

Definition at line 371 of file ir.h.

◆ _ir_type

enum _ir_type
Enumerator
IR_VOID 
IR_LAST_TYPE 

Definition at line 150 of file ir.h.

Function Documentation

◆ ir_assign_virtual_registers()

int ir_assign_virtual_registers ( ir_ctx * ctx)

Definition at line 82 of file ir_ra.c.

◆ ir_bind()

ir_ref ir_bind ( ir_ctx * ctx,
ir_ref var,
ir_ref def )

Definition at line 1142 of file ir.c.

◆ ir_binding_find()

ir_ref ir_binding_find ( const ir_ctx * ctx,
ir_ref ref )

Definition at line 1161 of file ir.c.

◆ ir_build_cfg()

int ir_build_cfg ( ir_ctx * ctx)

Definition at line 80 of file ir_cfg.c.

◆ ir_build_def_use_lists()

void ir_build_def_use_lists ( ir_ctx * ctx)

Definition at line 1224 of file ir.c.

◆ ir_build_dominators_tree()

int ir_build_dominators_tree ( ir_ctx * ctx)

Definition at line 672 of file ir_cfg.c.

◆ ir_check()

bool ir_check ( const ir_ctx * ctx)

Definition at line 89 of file ir_check.c.

◆ ir_coalesce()

int ir_coalesce ( ir_ctx * ctx)

Definition at line 1856 of file ir_ra.c.

◆ ir_compute_dessa_moves()

int ir_compute_dessa_moves ( ir_ctx * ctx)

Definition at line 2061 of file ir_ra.c.

◆ ir_compute_live_ranges()

int ir_compute_live_ranges ( ir_ctx * ctx)

Definition at line 1239 of file ir_ra.c.

◆ ir_consistency_check()

void ir_consistency_check ( void )

Definition at line 11 of file ir_check.c.

◆ ir_const()

ir_ref ir_const ( ir_ctx * ctx,
ir_val val,
uint8_t type )

Definition at line 557 of file ir.c.

◆ ir_const_addr()

ir_ref ir_const_addr ( ir_ctx * ctx,
uintptr_t c )

Definition at line 645 of file ir.c.

◆ ir_const_bool()

ir_ref ir_const_bool ( ir_ctx * ctx,
bool c )

Definition at line 618 of file ir.c.

◆ ir_const_char()

ir_ref ir_const_char ( ir_ctx * ctx,
char c )

Definition at line 623 of file ir.c.

◆ ir_const_double()

ir_ref ir_const_double ( ir_ctx * ctx,
double c )

Definition at line 638 of file ir.c.

◆ ir_const_float()

ir_ref ir_const_float ( ir_ctx * ctx,
float c )

Definition at line 630 of file ir.c.

◆ ir_const_func()

ir_ref ir_const_func ( ir_ctx * ctx,
ir_ref str,
ir_ref proto )

Definition at line 666 of file ir.c.

◆ ir_const_func_addr()

ir_ref ir_const_func_addr ( ir_ctx * ctx,
uintptr_t c,
ir_ref proto )

Definition at line 655 of file ir.c.

◆ ir_const_i16()

ir_ref ir_const_i16 ( ir_ctx * ctx,
int16_t c )

Definition at line 569 of file ir.c.

◆ ir_const_i32()

ir_ref ir_const_i32 ( ir_ctx * ctx,
int32_t c )

Definition at line 576 of file ir.c.

◆ ir_const_i64()

ir_ref ir_const_i64 ( ir_ctx * ctx,
int64_t c )

Definition at line 583 of file ir.c.

◆ ir_const_i8()

ir_ref ir_const_i8 ( ir_ctx * ctx,
int8_t c )

Definition at line 562 of file ir.c.

◆ ir_const_str()

ir_ref ir_const_str ( ir_ctx * ctx,
ir_ref str )

Definition at line 681 of file ir.c.

◆ ir_const_sym()

ir_ref ir_const_sym ( ir_ctx * ctx,
ir_ref str )

Definition at line 674 of file ir.c.

◆ ir_const_u16()

ir_ref ir_const_u16 ( ir_ctx * ctx,
uint16_t c )

Definition at line 597 of file ir.c.

◆ ir_const_u32()

ir_ref ir_const_u32 ( ir_ctx * ctx,
uint32_t c )

Definition at line 604 of file ir.c.

◆ ir_const_u64()

ir_ref ir_const_u64 ( ir_ctx * ctx,
uint64_t c )

Definition at line 611 of file ir.c.

◆ ir_const_u8()

ir_ref ir_const_u8 ( ir_ctx * ctx,
uint8_t c )

Definition at line 590 of file ir.c.

◆ ir_cpuinfo()

uint32_t ir_cpuinfo ( void )

◆ ir_disasm()

int ir_disasm ( const char * name,
const void * start,
size_t size,
bool asm_addr,
ir_ctx * ctx,
FILE * f )

Definition at line 326 of file ir_disasm.c.

◆ ir_disasm_add_symbol()

void ir_disasm_add_symbol ( const char * name,
uint64_t addr,
uint64_t size )

Definition at line 85 of file ir_disasm.c.

◆ ir_disasm_find_symbol()

const char * ir_disasm_find_symbol ( uint64_t addr,
int64_t * offset )

Definition at line 189 of file ir_disasm.c.

◆ ir_disasm_free()

void ir_disasm_free ( void )

Definition at line 858 of file ir_disasm.c.

◆ ir_disasm_init()

int ir_disasm_init ( void )

Definition at line 850 of file ir_disasm.c.

◆ ir_dump()

void ir_dump ( const ir_ctx * ctx,
FILE * f )

Definition at line 11 of file ir_dump.c.

◆ ir_dump_cfg()

void ir_dump_cfg ( ir_ctx * ctx,
FILE * f )

Definition at line 301 of file ir_dump.c.

◆ ir_dump_cfg_map()

void ir_dump_cfg_map ( const ir_ctx * ctx,
FILE * f )

Definition at line 323 of file ir_dump.c.

◆ ir_dump_codegen()

void ir_dump_codegen ( const ir_ctx * ctx,
FILE * f )

Definition at line 478 of file ir_dump.c.

◆ ir_dump_dot()

void ir_dump_dot ( const ir_ctx * ctx,
const char * name,
FILE * f )

Definition at line 55 of file ir_dump.c.

◆ ir_dump_live_ranges()

void ir_dump_live_ranges ( const ir_ctx * ctx,
FILE * f )

Definition at line 337 of file ir_dump.c.

◆ ir_dump_use_lists()

void ir_dump_use_lists ( const ir_ctx * ctx,
FILE * f )

Definition at line 142 of file ir_dump.c.

◆ ir_emit()

ir_ref ir_emit ( ir_ctx * ctx,
uint32_t opt,
ir_ref op1,
ir_ref op2,
ir_ref op3 )

Definition at line 811 of file ir.c.

◆ ir_emit0()

ir_ref ir_emit0 ( ir_ctx * ctx,
uint32_t opt )

Definition at line 824 of file ir.c.

◆ ir_emit1()

ir_ref ir_emit1 ( ir_ctx * ctx,
uint32_t opt,
ir_ref op1 )

Definition at line 829 of file ir.c.

◆ ir_emit2()

ir_ref ir_emit2 ( ir_ctx * ctx,
uint32_t opt,
ir_ref op1,
ir_ref op2 )

Definition at line 834 of file ir.c.

◆ ir_emit3()

ir_ref ir_emit3 ( ir_ctx * ctx,
uint32_t opt,
ir_ref op1,
ir_ref op2,
ir_ref op3 )

Definition at line 839 of file ir.c.

◆ ir_emit_c()

int ir_emit_c ( ir_ctx * ctx,
const char * name,
FILE * f )

◆ ir_emit_c_func_decl()

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 )

◆ ir_emit_c_sym_decl()

void ir_emit_c_sym_decl ( const char * name,
uint32_t flags,
FILE * f )

◆ ir_emit_code()

void * ir_emit_code ( ir_ctx * ctx,
size_t * size )

◆ ir_emit_exitgroup()

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_emit_llvm()

int ir_emit_llvm ( ir_ctx * ctx,
const char * name,
FILE * f )

◆ ir_emit_llvm_func_decl()

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 )

◆ ir_emit_llvm_sym_decl()

void ir_emit_llvm_sym_decl ( const char * name,
uint32_t flags,
FILE * f )

◆ ir_emit_N()

ir_ref ir_emit_N ( ir_ctx * ctx,
uint32_t opt,
int32_t count )

Definition at line 1077 of file ir.c.

◆ ir_emit_thunk()

void * ir_emit_thunk ( ir_code_buffer * code_buffer,
void * addr,
size_t * size_ptr )

◆ ir_find_loops()

int ir_find_loops ( ir_ctx * ctx)

Definition at line 911 of file ir_cfg.c.

◆ ir_fix_thunk()

void ir_fix_thunk ( void * thunk_entry,
void * addr )

◆ ir_fold()

ir_ref ir_fold ( ir_ctx * ctx,
uint32_t opt,
ir_ref op1,
ir_ref op2,
ir_ref op3 )

Definition at line 1046 of file ir.c.

◆ ir_fold0()

ir_ref ir_fold0 ( ir_ctx * ctx,
uint32_t opt )

Definition at line 1057 of file ir.c.

◆ ir_fold1()

ir_ref ir_fold1 ( ir_ctx * ctx,
uint32_t opt,
ir_ref op1 )

Definition at line 1062 of file ir.c.

◆ ir_fold2()

ir_ref ir_fold2 ( ir_ctx * ctx,
uint32_t opt,
ir_ref op1,
ir_ref op2 )

Definition at line 1067 of file ir.c.

◆ ir_fold3()

ir_ref ir_fold3 ( ir_ctx * ctx,
uint32_t opt,
ir_ref op1,
ir_ref op2,
ir_ref op3 )

Definition at line 1072 of file ir.c.

◆ ir_free()

void ir_free ( ir_ctx * ctx)

Definition at line 412 of file ir.c.

◆ ir_gcm()

int ir_gcm ( ir_ctx * ctx)

Definition at line 564 of file ir_gcm.c.

◆ ir_gdb_present()

bool ir_gdb_present ( void )

Definition at line 581 of file ir_gdb.c.

◆ ir_gdb_register()

int ir_gdb_register ( const char * name,
const void * start,
size_t size,
uint32_t sp_offset,
uint32_t sp_adjustment )

Definition at line 631 of file ir_gdb.c.

◆ ir_gdb_unregister_all()

void ir_gdb_unregister_all ( void )

Definition at line 547 of file ir_gdb.c.

◆ ir_get_op()

ir_ref ir_get_op ( ir_ctx * ctx,
ir_ref ref,
int32_t n )

Definition at line 1114 of file ir.c.

◆ ir_get_spill_slot_offset()

int32_t ir_get_spill_slot_offset ( ir_ctx * ctx,
ir_ref ref )

Definition at line 1040 of file ir_emit.c.

◆ ir_get_str()

const char * ir_get_str ( const ir_ctx * ctx,
ir_ref idx )

Definition at line 709 of file ir.c.

◆ ir_get_strl()

const char * ir_get_strl ( const ir_ctx * ctx,
ir_ref idx,
size_t * len )

Definition at line 715 of file ir.c.

◆ ir_init()

void ir_init ( ir_ctx * ctx,
uint32_t flags,
ir_ref consts_limit,
ir_ref insns_limit )

Definition at line 381 of file ir.c.

◆ ir_insn_find_op()

IR_ALWAYS_INLINE uint32_t ir_insn_find_op ( const ir_insn * insn,
ir_ref val )

Definition at line 739 of file ir.h.

◆ ir_insn_op()

IR_ALWAYS_INLINE ir_ref ir_insn_op ( const ir_insn * insn,
int32_t n )

Definition at line 727 of file ir.h.

◆ ir_insn_set_op()

IR_ALWAYS_INLINE void ir_insn_set_op ( ir_insn * insn,
int32_t n,
ir_ref val )

Definition at line 733 of file ir.h.

◆ ir_jit_compile()

IR_ALWAYS_INLINE void * ir_jit_compile ( ir_ctx * ctx,
int opt_level,
size_t * size )

Definition at line 929 of file ir.h.

◆ ir_load()

int ir_load ( ir_loader * loader,
FILE * f )

◆ ir_load_llvm_asm()

int ir_load_llvm_asm ( ir_loader * loader,
const char * filename )

◆ ir_load_llvm_bitcode()

int ir_load_llvm_bitcode ( ir_loader * loader,
const char * filename )

◆ ir_loader_free()

void ir_loader_free ( void )

◆ ir_loader_init()

void ir_loader_init ( void )

◆ ir_match()

int ir_match ( ir_ctx * ctx)

Definition at line 964 of file ir_emit.c.

◆ ir_mem2ssa()

int ir_mem2ssa ( ir_ctx * ctx)

◆ ir_mem_flush()

int ir_mem_flush ( void * ptr,
size_t size )

Definition at line 1862 of file ir.c.

◆ ir_mem_mmap()

void * ir_mem_mmap ( size_t size)

Definition at line 1821 of file ir.c.

◆ ir_mem_protect()

int ir_mem_protect ( void * ptr,
size_t size )

Definition at line 1840 of file ir.c.

◆ ir_mem_unmap()

int ir_mem_unmap ( void * ptr,
size_t size )

Definition at line 1834 of file ir.c.

◆ ir_mem_unprotect()

int ir_mem_unprotect ( void * ptr,
size_t size )

Definition at line 1851 of file ir.c.

◆ ir_needs_thunk()

bool ir_needs_thunk ( ir_code_buffer * code_buffer,
void * addr )

◆ ir_param()

ir_ref ir_param ( ir_ctx * ctx,
ir_type type,
ir_ref region,
const char * name,
int pos )

Definition at line 1130 of file ir.c.

◆ ir_patch()

int ir_patch ( const void * code,
size_t size,
uint32_t jmp_table_size,
const void * from_addr,
const void * to_addr )

Definition at line 251 of file ir_patch.c.

◆ ir_perf_jitdump_close()

int ir_perf_jitdump_close ( void )

Definition at line 183 of file ir_perf.c.

◆ ir_perf_jitdump_open()

int ir_perf_jitdump_open ( void )

Definition at line 101 of file ir_perf.c.

◆ ir_perf_jitdump_register()

int ir_perf_jitdump_register ( const char * name,
const void * start,
size_t size )

Definition at line 205 of file ir_perf.c.

◆ ir_perf_map_register()

void ir_perf_map_register ( const char * name,
const void * start,
size_t size )

Definition at line 252 of file ir_perf.c.

◆ ir_print_const()

void ir_print_const ( const ir_ctx * ctx,
const ir_insn * insn,
FILE * f,
bool quoted )

Definition at line 117 of file ir.c.

◆ ir_print_proto()

void ir_print_proto ( const ir_ctx * ctx,
ir_ref proto,
FILE * f )

Definition at line 11 of file ir_save.c.

◆ ir_proto()

ir_ref ir_proto ( ir_ctx * ctx,
uint8_t flags,
ir_type ret_type,
uint32_t params_counts,
uint8_t * param_types )

Definition at line 798 of file ir.c.

◆ ir_proto_0()

ir_ref ir_proto_0 ( ir_ctx * ctx,
uint8_t flags,
ir_type ret_type )

Definition at line 721 of file ir.c.

◆ ir_proto_1()

ir_ref ir_proto_1 ( ir_ctx * ctx,
uint8_t flags,
ir_type ret_type,
ir_type t1 )

Definition at line 731 of file ir.c.

◆ ir_proto_2()

ir_ref ir_proto_2 ( ir_ctx * ctx,
uint8_t flags,
ir_type ret_type,
ir_type t1,
ir_type t2 )

Definition at line 742 of file ir.c.

◆ ir_proto_3()

ir_ref ir_proto_3 ( ir_ctx * ctx,
uint8_t flags,
ir_type ret_type,
ir_type t1,
ir_type t2,
ir_type t3 )

Definition at line 754 of file ir.c.

◆ ir_proto_4()

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 )

Definition at line 767 of file ir.c.

◆ ir_proto_5()

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 )

Definition at line 782 of file ir.c.

◆ ir_reg_alloc()

int ir_reg_alloc ( ir_ctx * ctx)

Definition at line 4111 of file ir_ra.c.

◆ ir_reg_is_int()

bool ir_reg_is_int ( int32_t reg)

Definition at line 35 of file ir_ra.c.

◆ ir_reg_name()

const char * ir_reg_name ( int8_t reg,
ir_type type )

◆ ir_regs_number()

int ir_regs_number ( void )

Definition at line 30 of file ir_ra.c.

◆ ir_reset_cfg()

void ir_reset_cfg ( ir_ctx * ctx)

Definition at line 62 of file ir_cfg.c.

◆ ir_resolve_sym_name()

void * ir_resolve_sym_name ( const char * name)

Definition at line 273 of file ir_emit.c.

◆ ir_save()

void ir_save ( const ir_ctx * ctx,
uint32_t save_flags,
FILE * f )

Definition at line 89 of file ir_save.c.

◆ ir_sccp()

int ir_sccp ( ir_ctx * ctx)

Definition at line 3638 of file ir_sccp.c.

◆ ir_schedule()

int ir_schedule ( ir_ctx * ctx)

Definition at line 788 of file ir_gcm.c.

◆ ir_schedule_blocks()

int ir_schedule_blocks ( ir_ctx * ctx)

Definition at line 1833 of file ir_cfg.c.

◆ ir_set_op()

void ir_set_op ( ir_ctx * ctx,
ir_ref ref,
int32_t n,
ir_ref val )

Definition at line 1098 of file ir.c.

◆ ir_set_op1()

IR_ALWAYS_INLINE void ir_set_op1 ( ir_ctx * ctx,
ir_ref ref,
ir_ref val )

Definition at line 712 of file ir.h.

◆ ir_set_op2()

IR_ALWAYS_INLINE void ir_set_op2 ( ir_ctx * ctx,
ir_ref ref,
ir_ref val )

Definition at line 717 of file ir.h.

◆ ir_set_op3()

IR_ALWAYS_INLINE void ir_set_op3 ( ir_ctx * ctx,
ir_ref ref,
ir_ref val )

Definition at line 722 of file ir.h.

◆ ir_str()

ir_ref ir_str ( ir_ctx * ctx,
const char * s )

Definition at line 688 of file ir.c.

◆ ir_strl()

ir_ref ir_strl ( ir_ctx * ctx,
const char * s,
size_t len )

Definition at line 700 of file ir.c.

◆ ir_strtab_apply()

void ir_strtab_apply ( const ir_strtab * strtab,
ir_strtab_apply_t func )

Definition at line 228 of file ir_strtab.c.

◆ ir_strtab_find()

ir_ref ir_strtab_find ( const ir_strtab * strtab,
const char * str,
uint32_t len )

Definition at line 115 of file ir_strtab.c.

◆ ir_strtab_free()

void ir_strtab_free ( ir_strtab * strtab)

Definition at line 216 of file ir_strtab.c.

◆ ir_strtab_init()

void ir_strtab_init ( ir_strtab * strtab,
uint32_t count,
uint32_t buf_size )

Definition at line 93 of file ir_strtab.c.

◆ ir_strtab_lookup()

ir_ref ir_strtab_lookup ( ir_strtab * strtab,
const char * str,
uint32_t len,
ir_ref val )

Definition at line 134 of file ir_strtab.c.

◆ ir_strtab_str()

const char * ir_strtab_str ( const ir_strtab * strtab,
ir_ref idx )

Definition at line 202 of file ir_strtab.c.

◆ ir_strtab_strl()

const char * ir_strtab_strl ( const ir_strtab * strtab,
ir_ref idx,
size_t * len )

Definition at line 208 of file ir_strtab.c.

◆ ir_strtab_update()

ir_ref ir_strtab_update ( ir_strtab * strtab,
const char * str,
uint32_t len,
ir_ref val )

Definition at line 183 of file ir_strtab.c.

◆ ir_truncate()

void ir_truncate ( ir_ctx * ctx)

Definition at line 370 of file ir.c.

◆ ir_unique_const_addr()

ir_ref ir_unique_const_addr ( ir_ctx * ctx,
uintptr_t c )

Definition at line 472 of file ir.c.

◆ ir_var()

ir_ref ir_var ( ir_ctx * ctx,
ir_type type,
ir_ref region,
const char * name )

Definition at line 1136 of file ir.c.