php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
ir_private.h File Reference
#include <string.h>
#include <stdlib.h>

Go to the source code of this file.

Data Structures

struct  _ir_arena
 
struct  _ir_sparse_set
 
struct  _ir_bitqueue
 
struct  _ir_array
 
struct  _ir_list
 
struct  _ir_worklist
 
struct  _ir_hashtab_bucket
 
struct  _ir_hashtab
 
struct  _ir_addrtab_bucket
 
struct  _ir_use_list
 
struct  _ir_block
 
struct  _ir_use_pos
 
struct  _ir_live_range
 
struct  _ir_live_interval
 
struct  _ir_reg_alloc_data
 

Macros

#define IR_ASSERT(x)
 
#define __has_builtin(x)
 
#define EXPECTED(condition)
 
#define UNEXPECTED(condition)
 
#define IR_SET_ALIGNED(alignment, decl)
 
#define IR_FALLTHROUGH   ((void)0)
 
#define IR_ALIGNED_SIZE(size, alignment)
 
#define IR_MAX(a, b)
 
#define IR_MIN(a, b)
 
#define IR_IS_POWER_OF_TWO(x)
 
#define IR_LOG2(x)
 
#define IR_BITSET_BITS   64
 
#define IR_BITSET_ONE   1UL
 
#define ir_bitset_base_t   uint64_t
 
#define ir_bitset_ntz   ir_ntzl
 
#define IR_BITSET_FOREACH(set, len, bit)
 
#define IR_BITSET_FOREACH_DIFFERENCE(set1, set2, len, bit)
 
#define IR_BITSET_FOREACH_END()
 
#define IR_SPARSE_SET_DENSE(set, n)
 
#define IR_SPARSE_SET_SPARSE(set, n)
 
#define IR_SPARSE_SET_FOREACH(set, bit)
 
#define IR_SPARSE_SET_FOREACH_END()
 
#define IR_INVALID_IDX   0xffffffff
 
#define IR_INVALID_VAL   0x80000000
 
#define IR_IS_CONST_OP(op)
 
#define IR_IS_FOLDABLE_OP(op)
 
#define IR_IS_SYM_CONST(op)
 
#define IR_OP_FLAG_OPERANDS_SHIFT   3
 
#define IR_OP_FLAG_EDGES_MASK   0x03
 
#define IR_OP_FLAG_VAR_INPUTS   0x04
 
#define IR_OP_FLAG_OPERANDS_MASK   0x18
 
#define IR_OP_FLAG_MEM_MASK   ((1<<6)|(1<<7))
 
#define IR_OP_FLAG_DATA   (1<<8)
 
#define IR_OP_FLAG_CONTROL   (1<<9)
 
#define IR_OP_FLAG_MEM   (1<<10)
 
#define IR_OP_FLAG_COMMUTATIVE   (1<<11)
 
#define IR_OP_FLAG_BB_START   (1<<12)
 
#define IR_OP_FLAG_BB_END   (1<<13)
 
#define IR_OP_FLAG_TERMINATOR   (1<<14)
 
#define IR_OP_FLAG_PINNED   (1<<15)
 
#define IR_OP_FLAG_MEM_LOAD   ((0<<6)|(0<<7))
 
#define IR_OP_FLAG_MEM_STORE   ((0<<6)|(1<<7))
 
#define IR_OP_FLAG_MEM_CALL   ((1<<6)|(0<<7))
 
#define IR_OP_FLAG_MEM_ALLOC   ((1<<6)|(1<<7))
 
#define IR_OP_FLAG_MEM_MASK   ((1<<6)|(1<<7))
 
#define IR_OPND_UNUSED   0x0
 
#define IR_OPND_DATA   0x1
 
#define IR_OPND_CONTROL   0x2
 
#define IR_OPND_CONTROL_DEP   0x3
 
#define IR_OPND_CONTROL_REF   0x4
 
#define IR_OPND_STR   0x5
 
#define IR_OPND_NUM   0x6
 
#define IR_OPND_PROB   0x7
 
#define IR_OPND_PROTO   0x8
 
#define IR_OP_FLAGS(op_flags, op1_flags, op2_flags, op3_flags)
 
#define IR_INPUT_EDGES_COUNT(flags)
 
#define IR_OPERANDS_COUNT(flags)
 
#define IR_OP_HAS_VAR_INPUTS(flags)
 
#define IR_OPND_KIND(flags, i)
 
#define IR_IS_REF_OPND_KIND(kind)
 
#define IR_CFG_HAS_LOOPS   (1<<0)
 
#define IR_IRREDUCIBLE_CFG   (1<<1)
 
#define IR_HAS_ALLOCA   (1<<2)
 
#define IR_HAS_CALLS   (1<<3)
 
#define IR_OPT_IN_SCCP   (1<<4)
 
#define IR_LINEAR   (1<<5)
 
#define IR_HAS_VA_START   (1<<6)
 
#define IR_HAS_VA_COPY   (1<<7)
 
#define IR_HAS_VA_ARG_GP   (1<<8)
 
#define IR_HAS_VA_ARG_FP   (1<<9)
 
#define IR_HAS_FP_RET_SLOT   (1<<10)
 
#define IR_16B_FRAME_ALIGNMENT   (1<<11)
 
#define IR_MEM2SSA_VARS   (1<<25)
 
#define IR_CFG_REACHABLE   (1<<26)
 
#define IR_NO_LOOPS   (1<<25)
 
#define IR_LR_HAVE_DESSA_MOVES   (1<<25)
 
#define IR_RA_HAVE_SPLITS   (1<<25)
 
#define IR_RA_HAVE_SPILLS   (1<<26)
 
#define IR_RESERVED_FLAG_1   (1U<<31)
 
#define MAKE_NOP(_insn)
 
#define CLEAR_USES(_ref)
 
#define SWAP_REFS(_ref1, _ref2)
 
#define SWAP_INSNS(_insn1, _insn2)
 
#define IR_IS_BB_START(op)
 
#define IR_IS_BB_MERGE(op)
 
#define IR_IS_BB_END(op)
 
#define IR_BB_UNREACHABLE   (1<<0)
 
#define IR_BB_START   (1<<1)
 
#define IR_BB_ENTRY   (1<<2)
 
#define IR_BB_LOOP_HEADER   (1<<3)
 
#define IR_BB_IRREDUCIBLE_LOOP   (1<<4)
 
#define IR_BB_DESSA_MOVES   (1<<5) /* translation out of SSA requires MOVEs */
 
#define IR_BB_EMPTY   (1<<6)
 
#define IR_BB_PREV_EMPTY_ENTRY   (1<<7)
 
#define IR_BB_OSR_ENTRY_LOADS   (1<<8) /* OSR Entry-point with register LOADs */
 
#define IR_BB_LOOP_WITH_ENTRY   (1<<9) /* set together with LOOP_HEADER if there is an ENTRY in the loop */
 
#define IR_BB_HAS_PHI   (1<<10)
 
#define IR_BB_HAS_PI   (1<<11)
 
#define IR_BB_HAS_PARAM   (1<<12)
 
#define IR_BB_HAS_VAR   (1<<13)
 
#define IR_BB_ALIGN_LOOP   (1<<14)
 
#define IR_SUB_REFS_COUNT   4
 
#define IR_LOAD_SUB_REF   0
 
#define IR_USE_SUB_REF   1
 
#define IR_DEF_SUB_REF   2
 
#define IR_SAVE_SUB_REF   3
 
#define IR_LIVE_POS_TO_REF(pos)
 
#define IR_LIVE_POS_TO_SUB_REF(pos)
 
#define IR_LIVE_POS_FROM_REF(ref)
 
#define IR_START_LIVE_POS_FROM_REF(ref)
 
#define IR_LOAD_LIVE_POS_FROM_REF(ref)
 
#define IR_USE_LIVE_POS_FROM_REF(ref)
 
#define IR_DEF_LIVE_POS_FROM_REF(ref)
 
#define IR_SAVE_LIVE_POS_FROM_REF(ref)
 
#define IR_END_LIVE_POS_FROM_REF(ref)
 
#define IR_USE_MUST_BE_IN_REG   (1<<0)
 
#define IR_USE_SHOULD_BE_IN_REG   (1<<1)
 
#define IR_DEF_REUSES_OP1_REG   (1<<2)
 
#define IR_DEF_CONFLICTS_WITH_INPUT_REGS   (1<<3)
 
#define IR_FUSED_USE   (1<<6)
 
#define IR_PHI_USE   (1<<7)
 
#define IR_OP1_MUST_BE_IN_REG   (1<<8)
 
#define IR_OP1_SHOULD_BE_IN_REG   (1<<9)
 
#define IR_OP2_MUST_BE_IN_REG   (1<<10)
 
#define IR_OP2_SHOULD_BE_IN_REG   (1<<11)
 
#define IR_OP3_MUST_BE_IN_REG   (1<<12)
 
#define IR_OP3_SHOULD_BE_IN_REG   (1<<13)
 
#define IR_USE_FLAGS(def_flags, op_num)
 
#define IR_LIVE_INTERVAL_FIXED   (1<<0)
 
#define IR_LIVE_INTERVAL_TEMP   (1<<1)
 
#define IR_LIVE_INTERVAL_HAS_HINT_REGS   (1<<2)
 
#define IR_LIVE_INTERVAL_HAS_HINT_REFS   (1<<3)
 
#define IR_LIVE_INTERVAL_MEM_PARAM   (1<<4)
 
#define IR_LIVE_INTERVAL_MEM_LOAD   (1<<5)
 
#define IR_LIVE_INTERVAL_COALESCED   (1<<6)
 
#define IR_LIVE_INTERVAL_SPILL_SPECIAL   (1<<7) /* spill slot is pre-allocated in a special area (see ir_ctx.spill_reserved_base) */
 
#define IR_LIVE_INTERVAL_SPILLED   (1<<8)
 
#define IR_LIVE_INTERVAL_SPLIT_CHILD   (1<<9)
 
#define IR_FUSED   (1U<<31) /* Insn is fused into others (code is generated as part of the fusion root) */
 
#define IR_SKIPPED   (1U<<30) /* Insn is skipped (code is not generated) */
 
#define IR_SIMPLE   (1U<<29) /* Insn doesn't have any target constraints */
 
#define IR_FUSED_REG   (1U<<28) /* Register assignemnt may be stored in ctx->fused_regs instead of ctx->regs */
 
#define IR_MAY_SWAP   (1U<<27) /* Allow swapping operands for better register allocation */
 
#define IR_MAY_REUSE   (1U<<26) /* Result may reuse register of the source */
 
#define IR_RULE_MASK   0xff
 
#define IR_TMP_REG(_num, _type, _start, _end)
 
#define IR_SCRATCH_REG(_reg, _start, _end)
 

Typedefs

typedef ir_bitset_base_tir_bitset
 
typedef struct _ir_sparse_set ir_sparse_set
 
typedef struct _ir_bitqueue ir_bitqueue
 
typedef struct _ir_array ir_array
 
typedef struct _ir_list ir_list
 
typedef struct _ir_worklist ir_worklist
 
typedef struct _ir_hashtab_bucket ir_hashtab_bucket
 
typedef struct _ir_hashtab ir_hashtab
 
typedef struct _ir_addrtab_bucket ir_addrtab_bucket
 
typedef enum _ir_fold_action ir_fold_action
 
typedef ir_ref ir_live_pos
 
typedef struct _ir_use_pos ir_use_pos
 
typedef int(* emit_copy_t) (ir_ctx *ctx, uint8_t type, ir_ref from, ir_ref to)
 
typedef struct _ir_reg_alloc_data ir_reg_alloc_data
 
typedef struct _ir_target_constraints ir_target_constraints
 

Enumerations

enum  _ir_fold_action {
  IR_FOLD_DO_RESTART , IR_FOLD_DO_CSE , IR_FOLD_DO_EMIT , IR_FOLD_DO_COPY ,
  IR_FOLD_DO_CONST
}
 

Functions

IR_ALWAYS_INLINE uint8_t ir_rol8 (uint8_t op1, uint8_t op2)
 
IR_ALWAYS_INLINE uint16_t ir_rol16 (uint16_t op1, uint16_t op2)
 
IR_ALWAYS_INLINE uint32_t ir_rol32 (uint32_t op1, uint32_t op2)
 
IR_ALWAYS_INLINE uint64_t ir_rol64 (uint64_t op1, uint64_t op2)
 
IR_ALWAYS_INLINE uint8_t ir_ror8 (uint8_t op1, uint8_t op2)
 
IR_ALWAYS_INLINE uint16_t ir_ror16 (uint16_t op1, uint16_t op2)
 
IR_ALWAYS_INLINE uint32_t ir_ror32 (uint32_t op1, uint32_t op2)
 
IR_ALWAYS_INLINE uint64_t ir_ror64 (uint64_t op1, uint64_t op2)
 
IR_ALWAYS_INLINE uint32_t ir_ntz (uint32_t num)
 
IR_ALWAYS_INLINE uint32_t ir_ntzl (uint64_t num)
 
IR_ALWAYS_INLINE int ir_nlz (uint32_t num)
 
IR_ALWAYS_INLINE int ir_nlzl (uint64_t num)
 
IR_ALWAYS_INLINE ir_arenair_arena_create (size_t size)
 
IR_ALWAYS_INLINE void ir_arena_free (ir_arena *arena)
 
IR_ALWAYS_INLINE voidir_arena_alloc (ir_arena **arena_ptr, size_t size)
 
IR_ALWAYS_INLINE voidir_arena_checkpoint (ir_arena *arena)
 
IR_ALWAYS_INLINE void ir_release (ir_arena **arena_ptr, void *checkpoint)
 
IR_ALWAYS_INLINE uint32_t ir_bitset_len (uint32_t n)
 
IR_ALWAYS_INLINE ir_bitset ir_bitset_malloc (uint32_t n)
 
IR_ALWAYS_INLINE void ir_bitset_incl (ir_bitset set, uint32_t n)
 
IR_ALWAYS_INLINE void ir_bitset_excl (ir_bitset set, uint32_t n)
 
IR_ALWAYS_INLINE bool ir_bitset_in (const ir_bitset set, uint32_t n)
 
IR_ALWAYS_INLINE void ir_bitset_clear (ir_bitset set, uint32_t len)
 
IR_ALWAYS_INLINE void ir_bitset_fill (ir_bitset set, uint32_t len)
 
IR_ALWAYS_INLINE bool ir_bitset_empty (const ir_bitset set, uint32_t len)
 
IR_ALWAYS_INLINE bool ir_bitset_equal (const ir_bitset set1, const ir_bitset set2, uint32_t len)
 
IR_ALWAYS_INLINE void ir_bitset_copy (ir_bitset set1, const ir_bitset set2, uint32_t len)
 
IR_ALWAYS_INLINE void ir_bitset_intersection (ir_bitset set1, const ir_bitset set2, uint32_t len)
 
IR_ALWAYS_INLINE void ir_bitset_union (ir_bitset set1, const ir_bitset set2, uint32_t len)
 
IR_ALWAYS_INLINE void ir_bitset_difference (ir_bitset set1, const ir_bitset set2, uint32_t len)
 
IR_ALWAYS_INLINE bool ir_bitset_is_subset (const ir_bitset set1, const ir_bitset set2, uint32_t len)
 
IR_ALWAYS_INLINE int ir_bitset_first (const ir_bitset set, uint32_t len)
 
IR_ALWAYS_INLINE int ir_bitset_last (const ir_bitset set, uint32_t len)
 
IR_ALWAYS_INLINE int ir_bitset_pop_first (ir_bitset set, uint32_t len)
 
IR_ALWAYS_INLINE void ir_sparse_set_init (ir_sparse_set *set, uint32_t size)
 
IR_ALWAYS_INLINE void ir_sparse_set_clear (ir_sparse_set *set)
 
IR_ALWAYS_INLINE void ir_sparse_set_free (ir_sparse_set *set)
 
IR_ALWAYS_INLINE bool ir_sparse_set_empty (const ir_sparse_set *set)
 
IR_ALWAYS_INLINE bool ir_sparse_set_in (const ir_sparse_set *set, uint32_t n)
 
IR_ALWAYS_INLINE void ir_sparse_set_add (ir_sparse_set *set, uint32_t n)
 
IR_ALWAYS_INLINE void ir_sparse_set_del (ir_sparse_set *set, uint32_t n)
 
IR_ALWAYS_INLINE uint32_t ir_sparse_set_pop (ir_sparse_set *set)
 
IR_ALWAYS_INLINE void ir_bitqueue_init (ir_bitqueue *q, uint32_t n)
 
IR_ALWAYS_INLINE void ir_bitqueue_grow (ir_bitqueue *q, uint32_t n)
 
IR_ALWAYS_INLINE void ir_bitqueue_free (ir_bitqueue *q)
 
IR_ALWAYS_INLINE void ir_bitqueue_clear (ir_bitqueue *q)
 
IR_ALWAYS_INLINE int ir_bitqueue_pop (ir_bitqueue *q)
 
IR_ALWAYS_INLINE void ir_bitqueue_add (ir_bitqueue *q, uint32_t n)
 
IR_ALWAYS_INLINE void ir_bitqueue_del (ir_bitqueue *q, uint32_t n)
 
IR_ALWAYS_INLINE bool ir_bitqueue_in (const ir_bitqueue *q, uint32_t n)
 
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)
 
IR_ALWAYS_INLINE void ir_array_init (ir_array *a, uint32_t size)
 
IR_ALWAYS_INLINE void ir_array_free (ir_array *a)
 
IR_ALWAYS_INLINE uint32_t ir_array_size (const ir_array *a)
 
IR_ALWAYS_INLINE ir_ref ir_array_get (const ir_array *a, uint32_t i)
 
IR_ALWAYS_INLINE ir_ref ir_array_at (const ir_array *a, uint32_t i)
 
IR_ALWAYS_INLINE void ir_array_set (ir_array *a, uint32_t i, ir_ref val)
 
IR_ALWAYS_INLINE void ir_array_set_unchecked (ir_array *a, uint32_t i, ir_ref val)
 
uint32_t ir_list_find (const ir_list *l, ir_ref val)
 
void ir_list_insert (ir_list *l, uint32_t i, ir_ref val)
 
void ir_list_remove (ir_list *l, uint32_t i)
 
IR_ALWAYS_INLINE void ir_list_init (ir_list *l, uint32_t size)
 
IR_ALWAYS_INLINE void ir_list_free (ir_list *l)
 
IR_ALWAYS_INLINE void ir_list_clear (ir_list *l)
 
IR_ALWAYS_INLINE uint32_t ir_list_len (const ir_list *l)
 
IR_ALWAYS_INLINE uint32_t ir_list_capasity (const ir_list *l)
 
IR_ALWAYS_INLINE void ir_list_push (ir_list *l, ir_ref val)
 
IR_ALWAYS_INLINE void ir_list_push_unchecked (ir_list *l, ir_ref val)
 
IR_ALWAYS_INLINE ir_ref ir_list_pop (ir_list *l)
 
IR_ALWAYS_INLINE ir_ref ir_list_peek (const ir_list *l)
 
IR_ALWAYS_INLINE ir_ref ir_list_at (const ir_list *l, uint32_t i)
 
IR_ALWAYS_INLINE void ir_list_set (ir_list *l, uint32_t i, ir_ref val)
 
IR_ALWAYS_INLINE void ir_list_del (ir_list *l, uint32_t i)
 
IR_ALWAYS_INLINE bool ir_list_contains (const ir_list *l, ir_ref val)
 
IR_ALWAYS_INLINE void ir_worklist_init (ir_worklist *w, uint32_t size)
 
IR_ALWAYS_INLINE void ir_worklist_free (ir_worklist *w)
 
IR_ALWAYS_INLINE uint32_t ir_worklist_len (const ir_worklist *w)
 
IR_ALWAYS_INLINE uint32_t ir_worklist_capasity (const ir_worklist *w)
 
IR_ALWAYS_INLINE void ir_worklist_clear (ir_worklist *w)
 
IR_ALWAYS_INLINE bool ir_worklist_push (ir_worklist *w, ir_ref val)
 
IR_ALWAYS_INLINE ir_ref ir_worklist_pop (ir_worklist *w)
 
IR_ALWAYS_INLINE ir_ref ir_worklist_peek (const ir_worklist *w)
 
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_print_escaped_str (const char *s, size_t len, FILE *f)
 
ir_ref ir_const_ex (ir_ctx *ctx, ir_val val, uint8_t type, uint32_t optx)
 
IR_ALWAYS_INLINE bool ir_const_is_true (const ir_insn *v)
 
IR_ALWAYS_INLINE bool ir_ref_is_true (ir_ctx *ctx, ir_ref ref)
 
IR_ALWAYS_INLINE ir_ref ir_operands_count (const ir_ctx *ctx, const ir_insn *insn)
 
IR_ALWAYS_INLINE ir_ref ir_input_edges_count (const ir_ctx *ctx, const ir_insn *insn)
 
IR_ALWAYS_INLINE uint32_t ir_insn_inputs_to_len (uint32_t inputs_count)
 
IR_ALWAYS_INLINE uint32_t ir_insn_len (const ir_insn *insn)
 
void ir_use_list_remove_all (ir_ctx *ctx, ir_ref def, ir_ref use)
 
void ir_use_list_remove_one (ir_ctx *ctx, ir_ref def, ir_ref use)
 
void ir_use_list_replace_all (ir_ctx *ctx, ir_ref def, ir_ref use, ir_ref new_use)
 
void ir_use_list_replace_one (ir_ctx *ctx, ir_ref def, ir_ref use, ir_ref new_use)
 
bool ir_use_list_add (ir_ctx *ctx, ir_ref def, ir_ref use)
 
void ir_use_list_sort (ir_ctx *ctx, ir_ref def)
 
IR_ALWAYS_INLINE ir_ref ir_next_control (const 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_iter_replace (ir_ctx *ctx, ir_ref ref, ir_ref new_ref, ir_bitqueue *worklist)
 
void ir_iter_update_op (ir_ctx *ctx, ir_ref ref, uint32_t idx, ir_ref new_val, ir_bitqueue *worklist)
 
void ir_iter_opt (ir_ctx *ctx, ir_bitqueue *worklist)
 
void ir_build_prev_refs (ir_ctx *ctx)
 
uint32_t ir_skip_empty_target_blocks (const ir_ctx *ctx, uint32_t b)
 
uint32_t ir_next_block (const ir_ctx *ctx, uint32_t b)
 
void ir_get_true_false_blocks (const ir_ctx *ctx, uint32_t b, uint32_t *true_block, uint32_t *false_block)
 
IR_ALWAYS_INLINE uint32_t ir_phi_input_number (const ir_ctx *ctx, const ir_block *bb, uint32_t from)
 
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_find_aliasing_load (ir_ctx *ctx, ir_ref ref, ir_type type, ir_ref addr)
 
ir_ref ir_find_aliasing_vload (ir_ctx *ctx, ir_ref ref, ir_type type, ir_ref var)
 
ir_ref ir_find_aliasing_store (ir_ctx *ctx, ir_ref ref, ir_ref addr, ir_ref val)
 
ir_ref ir_find_aliasing_vstore (ir_ctx *ctx, ir_ref ref, ir_ref addr, ir_ref val)
 
ir_ref ir_check_dominating_predicates (ir_ctx *ctx, ir_ref ref, ir_ref condition)
 
int ir_gen_dessa_moves (ir_ctx *ctx, uint32_t b, emit_copy_t emit_copy)
 
int32_t ir_allocate_spill_slot (ir_ctx *ctx, ir_type type, ir_reg_alloc_data *data)
 
IR_ALWAYS_INLINE void ir_set_alocated_reg (ir_ctx *ctx, ir_ref ref, int op_num, int8_t reg)
 
IR_ALWAYS_INLINE int8_t ir_get_alocated_reg (const ir_ctx *ctx, ir_ref ref, int op_num)
 
int ir_get_target_constraints (ir_ctx *ctx, ir_ref ref, ir_target_constraints *constraints)
 
void ir_fix_stack_frame (ir_ctx *ctx)
 
ir_type ir_get_return_type (ir_ctx *ctx)
 
bool ir_is_fastcall (const ir_ctx *ctx, const ir_insn *insn)
 
bool ir_is_vararg (const ir_ctx *ctx, ir_insn *insn)
 

Variables

const uint8_t ir_type_flags [IR_LAST_TYPE]
 
const char * ir_type_name [IR_LAST_TYPE]
 
const char * ir_type_cname [IR_LAST_TYPE]
 
const uint8_t ir_type_size [IR_LAST_TYPE]
 
const uint32_t ir_op_flags [IR_LAST_OP]
 
const char * ir_op_name [IR_LAST_OP]
 
const char * ir_rule_name []
 

Macro Definition Documentation

◆ __has_builtin

#define __has_builtin ( x)
Value:
0

Definition at line 44 of file ir_private.h.

◆ CLEAR_USES

#define CLEAR_USES ( _ref)
Value:
do { \
ir_use_list *__use_list = &ctx->use_lists[_ref]; \
__use_list->count = 0; \
} while (0)
struct _ir_use_list ir_use_list
Definition ir.h:551

Definition at line 1073 of file ir_private.h.

◆ EXPECTED

#define EXPECTED ( condition)
Value:
(condition)

Definition at line 47 of file ir_private.h.

◆ IR_16B_FRAME_ALIGNMENT

#define IR_16B_FRAME_ALIGNMENT   (1<<11)

Definition at line 1014 of file ir_private.h.

◆ IR_ALIGNED_SIZE

#define IR_ALIGNED_SIZE ( size,
alignment )
Value:
(((size) + ((alignment) - 1)) & ~((alignment) - 1))
new_type size
Definition ffi.c:4365

Definition at line 59 of file ir_private.h.

◆ IR_ASSERT

#define IR_ASSERT ( x)

Definition at line 17 of file ir_private.h.

◆ IR_BB_ALIGN_LOOP

#define IR_BB_ALIGN_LOOP   (1<<14)

Definition at line 1126 of file ir_private.h.

◆ IR_BB_DESSA_MOVES

#define IR_BB_DESSA_MOVES   (1<<5) /* translation out of SSA requires MOVEs */

Definition at line 1113 of file ir_private.h.

◆ IR_BB_EMPTY

#define IR_BB_EMPTY   (1<<6)

Definition at line 1114 of file ir_private.h.

◆ IR_BB_ENTRY

#define IR_BB_ENTRY   (1<<2)

Definition at line 1110 of file ir_private.h.

◆ IR_BB_HAS_PARAM

#define IR_BB_HAS_PARAM   (1<<12)

Definition at line 1122 of file ir_private.h.

◆ IR_BB_HAS_PHI

#define IR_BB_HAS_PHI   (1<<10)

Definition at line 1120 of file ir_private.h.

◆ IR_BB_HAS_PI

#define IR_BB_HAS_PI   (1<<11)

Definition at line 1121 of file ir_private.h.

◆ IR_BB_HAS_VAR

#define IR_BB_HAS_VAR   (1<<13)

Definition at line 1123 of file ir_private.h.

◆ IR_BB_IRREDUCIBLE_LOOP

#define IR_BB_IRREDUCIBLE_LOOP   (1<<4)

Definition at line 1112 of file ir_private.h.

◆ IR_BB_LOOP_HEADER

#define IR_BB_LOOP_HEADER   (1<<3)

Definition at line 1111 of file ir_private.h.

◆ IR_BB_LOOP_WITH_ENTRY

#define IR_BB_LOOP_WITH_ENTRY   (1<<9) /* set together with LOOP_HEADER if there is an ENTRY in the loop */

Definition at line 1117 of file ir_private.h.

◆ IR_BB_OSR_ENTRY_LOADS

#define IR_BB_OSR_ENTRY_LOADS   (1<<8) /* OSR Entry-point with register LOADs */

Definition at line 1116 of file ir_private.h.

◆ IR_BB_PREV_EMPTY_ENTRY

#define IR_BB_PREV_EMPTY_ENTRY   (1<<7)

Definition at line 1115 of file ir_private.h.

◆ IR_BB_START

#define IR_BB_START   (1<<1)

Definition at line 1109 of file ir_private.h.

◆ IR_BB_UNREACHABLE

#define IR_BB_UNREACHABLE   (1<<0)

Definition at line 1108 of file ir_private.h.

◆ ir_bitset_base_t

#define ir_bitset_base_t   uint64_t

Definition at line 313 of file ir_private.h.

◆ IR_BITSET_BITS

#define IR_BITSET_BITS   64

Definition at line 307 of file ir_private.h.

◆ IR_BITSET_FOREACH

#define IR_BITSET_FOREACH ( set,
len,
bit )
Value:
do { \
ir_bitset _set = (set); \
uint32_t _i, _len = (len); \
for (_i = 0; _i < _len; _set++, _i++) { \
ir_bitset_base_t _x = *_set; \
while (_x) { \
(bit) = IR_BITSET_BITS * _i + ir_bitset_ntz(_x); \
_x &= _x - 1;
size_t len
Definition apprentice.c:174
ir_bitset_base_t * ir_bitset
Definition ir_private.h:317
#define ir_bitset_ntz
Definition ir_private.h:314
#define IR_BITSET_BITS
Definition ir_private.h:307
#define ir_bitset_base_t
Definition ir_private.h:313

Definition at line 461 of file ir_private.h.

◆ IR_BITSET_FOREACH_DIFFERENCE

#define IR_BITSET_FOREACH_DIFFERENCE ( set1,
set2,
len,
bit )
Value:
do { \
ir_bitset _set1 = (set1); \
ir_bitset _set2 = (set2); \
uint32_t _i, _len = (len); \
for (_i = 0; _i < _len; _i++) { \
ir_bitset_base_t _x = _set1[_i] & ~_set2[_i]; \
while (_x) { \
(bit) = IR_BITSET_BITS * _i + ir_bitset_ntz(_x); \
_x &= _x - 1;

Definition at line 470 of file ir_private.h.

◆ IR_BITSET_FOREACH_END

#define IR_BITSET_FOREACH_END ( )
Value:
} \
} \
} while (0)

Definition at line 480 of file ir_private.h.

◆ ir_bitset_ntz

#define ir_bitset_ntz   ir_ntzl

Definition at line 314 of file ir_private.h.

◆ IR_BITSET_ONE

#define IR_BITSET_ONE   1UL

Definition at line 311 of file ir_private.h.

◆ IR_CFG_HAS_LOOPS

#define IR_CFG_HAS_LOOPS   (1<<0)

Definition at line 1003 of file ir_private.h.

◆ IR_CFG_REACHABLE

#define IR_CFG_REACHABLE   (1<<26)

Definition at line 1020 of file ir_private.h.

◆ IR_DEF_CONFLICTS_WITH_INPUT_REGS

#define IR_DEF_CONFLICTS_WITH_INPUT_REGS   (1<<3)

Definition at line 1215 of file ir_private.h.

◆ IR_DEF_LIVE_POS_FROM_REF

#define IR_DEF_LIVE_POS_FROM_REF ( ref)
Value:
#define IR_SUB_REFS_COUNT
#define IR_DEF_SUB_REF

Definition at line 1207 of file ir_private.h.

◆ IR_DEF_REUSES_OP1_REG

#define IR_DEF_REUSES_OP1_REG   (1<<2)

Definition at line 1214 of file ir_private.h.

◆ IR_DEF_SUB_REF

#define IR_DEF_SUB_REF   2

Definition at line 1196 of file ir_private.h.

◆ IR_END_LIVE_POS_FROM_REF

#define IR_END_LIVE_POS_FROM_REF ( ref)
Value:

Definition at line 1209 of file ir_private.h.

◆ IR_FALLTHROUGH

#define IR_FALLTHROUGH   ((void)0)

Definition at line 54 of file ir_private.h.

◆ IR_FUSED

#define IR_FUSED   (1U<<31) /* Insn is fused into others (code is generated as part of the fusion root) */

Definition at line 1398 of file ir_private.h.

◆ IR_FUSED_REG

#define IR_FUSED_REG   (1U<<28) /* Register assignemnt may be stored in ctx->fused_regs instead of ctx->regs */

Definition at line 1401 of file ir_private.h.

◆ IR_FUSED_USE

#define IR_FUSED_USE   (1<<6)

Definition at line 1217 of file ir_private.h.

◆ IR_HAS_ALLOCA

#define IR_HAS_ALLOCA   (1<<2)

Definition at line 1005 of file ir_private.h.

◆ IR_HAS_CALLS

#define IR_HAS_CALLS   (1<<3)

Definition at line 1006 of file ir_private.h.

◆ IR_HAS_FP_RET_SLOT

#define IR_HAS_FP_RET_SLOT   (1<<10)

Definition at line 1013 of file ir_private.h.

◆ IR_HAS_VA_ARG_FP

#define IR_HAS_VA_ARG_FP   (1<<9)

Definition at line 1012 of file ir_private.h.

◆ IR_HAS_VA_ARG_GP

#define IR_HAS_VA_ARG_GP   (1<<8)

Definition at line 1011 of file ir_private.h.

◆ IR_HAS_VA_COPY

#define IR_HAS_VA_COPY   (1<<7)

Definition at line 1010 of file ir_private.h.

◆ IR_HAS_VA_START

#define IR_HAS_VA_START   (1<<6)

Definition at line 1009 of file ir_private.h.

◆ IR_INPUT_EDGES_COUNT

#define IR_INPUT_EDGES_COUNT ( flags)
Value:
#define IR_OP_FLAG_EDGES_MASK
Definition ir_private.h:925

Definition at line 958 of file ir_private.h.

◆ IR_INVALID_IDX

#define IR_INVALID_IDX   0xffffffff

Definition at line 842 of file ir_private.h.

◆ IR_INVALID_VAL

#define IR_INVALID_VAL   0x80000000

Definition at line 843 of file ir_private.h.

◆ IR_IRREDUCIBLE_CFG

#define IR_IRREDUCIBLE_CFG   (1<<1)

Definition at line 1004 of file ir_private.h.

◆ IR_IS_BB_END

#define IR_IS_BB_END ( op)
Value:
const uint32_t ir_op_flags[IR_LAST_OP]
Definition ir.c:294
#define IR_OP_FLAG_BB_END
Definition ir_private.h:935

Definition at line 1105 of file ir_private.h.

◆ IR_IS_BB_MERGE

#define IR_IS_BB_MERGE ( op)
Value:
((op) == IR_MERGE || (op) == IR_LOOP_BEGIN)

Definition at line 1102 of file ir_private.h.

◆ IR_IS_BB_START

#define IR_IS_BB_START ( op)
Value:
#define IR_OP_FLAG_BB_START
Definition ir_private.h:934

Definition at line 1099 of file ir_private.h.

◆ IR_IS_CONST_OP

#define IR_IS_CONST_OP ( op)
Value:
((op) > IR_NOP && (op) <= IR_C_FLOAT)

Definition at line 887 of file ir_private.h.

◆ IR_IS_FOLDABLE_OP

#define IR_IS_FOLDABLE_OP ( op)
Value:
#define IR_LAST_FOLDABLE_OP
Definition ir.h:399

Definition at line 888 of file ir_private.h.

◆ IR_IS_POWER_OF_TWO

#define IR_IS_POWER_OF_TWO ( x)
Value:
(!((x) & ((x) - 1)))

Definition at line 65 of file ir_private.h.

◆ IR_IS_REF_OPND_KIND

#define IR_IS_REF_OPND_KIND ( kind)
Value:
new_type kind
Definition ffi.c:4363
#define IR_OPND_CONTROL_REF
Definition ir_private.h:949
#define IR_OPND_DATA
Definition ir_private.h:946

Definition at line 966 of file ir_private.h.

◆ IR_IS_SYM_CONST

#define IR_IS_SYM_CONST ( op)
Value:
((op) == IR_STR || (op) == IR_SYM || (op) == IR_FUNC)

Definition at line 889 of file ir_private.h.

◆ IR_LINEAR

#define IR_LINEAR   (1<<5)

Definition at line 1008 of file ir_private.h.

◆ IR_LIVE_INTERVAL_COALESCED

#define IR_LIVE_INTERVAL_COALESCED   (1<<6)

Definition at line 1251 of file ir_private.h.

◆ IR_LIVE_INTERVAL_FIXED

#define IR_LIVE_INTERVAL_FIXED   (1<<0)

Definition at line 1245 of file ir_private.h.

◆ IR_LIVE_INTERVAL_HAS_HINT_REFS

#define IR_LIVE_INTERVAL_HAS_HINT_REFS   (1<<3)

Definition at line 1248 of file ir_private.h.

◆ IR_LIVE_INTERVAL_HAS_HINT_REGS

#define IR_LIVE_INTERVAL_HAS_HINT_REGS   (1<<2)

Definition at line 1247 of file ir_private.h.

◆ IR_LIVE_INTERVAL_MEM_LOAD

#define IR_LIVE_INTERVAL_MEM_LOAD   (1<<5)

Definition at line 1250 of file ir_private.h.

◆ IR_LIVE_INTERVAL_MEM_PARAM

#define IR_LIVE_INTERVAL_MEM_PARAM   (1<<4)

Definition at line 1249 of file ir_private.h.

◆ IR_LIVE_INTERVAL_SPILL_SPECIAL

#define IR_LIVE_INTERVAL_SPILL_SPECIAL   (1<<7) /* spill slot is pre-allocated in a special area (see ir_ctx.spill_reserved_base) */

Definition at line 1252 of file ir_private.h.

◆ IR_LIVE_INTERVAL_SPILLED

#define IR_LIVE_INTERVAL_SPILLED   (1<<8)

Definition at line 1253 of file ir_private.h.

◆ IR_LIVE_INTERVAL_SPLIT_CHILD

#define IR_LIVE_INTERVAL_SPLIT_CHILD   (1<<9)

Definition at line 1254 of file ir_private.h.

◆ IR_LIVE_INTERVAL_TEMP

#define IR_LIVE_INTERVAL_TEMP   (1<<1)

Definition at line 1246 of file ir_private.h.

◆ IR_LIVE_POS_FROM_REF

#define IR_LIVE_POS_FROM_REF ( ref)
Value:

Definition at line 1202 of file ir_private.h.

◆ IR_LIVE_POS_TO_REF

#define IR_LIVE_POS_TO_REF ( pos)
Value:
unsigned const char * pos
Definition php_ffi.h:52

Definition at line 1199 of file ir_private.h.

◆ IR_LIVE_POS_TO_SUB_REF

#define IR_LIVE_POS_TO_SUB_REF ( pos)
Value:

Definition at line 1200 of file ir_private.h.

◆ IR_LOAD_LIVE_POS_FROM_REF

#define IR_LOAD_LIVE_POS_FROM_REF ( ref)
Value:
#define IR_LOAD_SUB_REF

Definition at line 1205 of file ir_private.h.

◆ IR_LOAD_SUB_REF

#define IR_LOAD_SUB_REF   0

Definition at line 1194 of file ir_private.h.

◆ IR_LOG2

#define IR_LOG2 ( x)
Value:
IR_ALWAYS_INLINE uint32_t ir_ntzl(uint64_t num)
Definition ir_private.h:138

Definition at line 67 of file ir_private.h.

◆ IR_LR_HAVE_DESSA_MOVES

#define IR_LR_HAVE_DESSA_MOVES   (1<<25)

Definition at line 1026 of file ir_private.h.

◆ IR_MAX

#define IR_MAX ( a,
b )
Value:
(((a) > (b)) ? (a) : (b))
$obj a
Definition test.php:84

Definition at line 62 of file ir_private.h.

◆ IR_MAY_REUSE

#define IR_MAY_REUSE   (1U<<26) /* Result may reuse register of the source */

Definition at line 1403 of file ir_private.h.

◆ IR_MAY_SWAP

#define IR_MAY_SWAP   (1U<<27) /* Allow swapping operands for better register allocation */

Definition at line 1402 of file ir_private.h.

◆ IR_MEM2SSA_VARS

#define IR_MEM2SSA_VARS   (1<<25)

Definition at line 1017 of file ir_private.h.

◆ IR_MIN

#define IR_MIN ( a,
b )
Value:
(((a) < (b)) ? (a) : (b))

Definition at line 63 of file ir_private.h.

◆ IR_NO_LOOPS

#define IR_NO_LOOPS   (1<<25)

Definition at line 1023 of file ir_private.h.

◆ IR_OP1_MUST_BE_IN_REG

#define IR_OP1_MUST_BE_IN_REG   (1<<8)

Definition at line 1220 of file ir_private.h.

◆ IR_OP1_SHOULD_BE_IN_REG

#define IR_OP1_SHOULD_BE_IN_REG   (1<<9)

Definition at line 1221 of file ir_private.h.

◆ IR_OP2_MUST_BE_IN_REG

#define IR_OP2_MUST_BE_IN_REG   (1<<10)

Definition at line 1222 of file ir_private.h.

◆ IR_OP2_SHOULD_BE_IN_REG

#define IR_OP2_SHOULD_BE_IN_REG   (1<<11)

Definition at line 1223 of file ir_private.h.

◆ IR_OP3_MUST_BE_IN_REG

#define IR_OP3_MUST_BE_IN_REG   (1<<12)

Definition at line 1224 of file ir_private.h.

◆ IR_OP3_SHOULD_BE_IN_REG

#define IR_OP3_SHOULD_BE_IN_REG   (1<<13)

Definition at line 1225 of file ir_private.h.

◆ IR_OP_FLAG_BB_END

#define IR_OP_FLAG_BB_END   (1<<13)

Definition at line 935 of file ir_private.h.

◆ IR_OP_FLAG_BB_START

#define IR_OP_FLAG_BB_START   (1<<12)

Definition at line 934 of file ir_private.h.

◆ IR_OP_FLAG_COMMUTATIVE

#define IR_OP_FLAG_COMMUTATIVE   (1<<11)

Definition at line 933 of file ir_private.h.

◆ IR_OP_FLAG_CONTROL

#define IR_OP_FLAG_CONTROL   (1<<9)

Definition at line 931 of file ir_private.h.

◆ IR_OP_FLAG_DATA

#define IR_OP_FLAG_DATA   (1<<8)

Definition at line 930 of file ir_private.h.

◆ IR_OP_FLAG_EDGES_MASK

#define IR_OP_FLAG_EDGES_MASK   0x03

Definition at line 925 of file ir_private.h.

◆ IR_OP_FLAG_MEM

#define IR_OP_FLAG_MEM   (1<<10)

Definition at line 932 of file ir_private.h.

◆ IR_OP_FLAG_MEM_ALLOC

#define IR_OP_FLAG_MEM_ALLOC   ((1<<6)|(1<<7))

Definition at line 942 of file ir_private.h.

◆ IR_OP_FLAG_MEM_CALL

#define IR_OP_FLAG_MEM_CALL   ((1<<6)|(0<<7))

Definition at line 941 of file ir_private.h.

◆ IR_OP_FLAG_MEM_LOAD

#define IR_OP_FLAG_MEM_LOAD   ((0<<6)|(0<<7))

Definition at line 939 of file ir_private.h.

◆ IR_OP_FLAG_MEM_MASK [1/2]

#define IR_OP_FLAG_MEM_MASK   ((1<<6)|(1<<7))

Definition at line 928 of file ir_private.h.

◆ IR_OP_FLAG_MEM_MASK [2/2]

#define IR_OP_FLAG_MEM_MASK   ((1<<6)|(1<<7))

Definition at line 928 of file ir_private.h.

◆ IR_OP_FLAG_MEM_STORE

#define IR_OP_FLAG_MEM_STORE   ((0<<6)|(1<<7))

Definition at line 940 of file ir_private.h.

◆ IR_OP_FLAG_OPERANDS_MASK

#define IR_OP_FLAG_OPERANDS_MASK   0x18

Definition at line 927 of file ir_private.h.

◆ IR_OP_FLAG_OPERANDS_SHIFT

#define IR_OP_FLAG_OPERANDS_SHIFT   3

Definition at line 923 of file ir_private.h.

◆ IR_OP_FLAG_PINNED

#define IR_OP_FLAG_PINNED   (1<<15)

Definition at line 937 of file ir_private.h.

◆ IR_OP_FLAG_TERMINATOR

#define IR_OP_FLAG_TERMINATOR   (1<<14)

Definition at line 936 of file ir_private.h.

◆ IR_OP_FLAG_VAR_INPUTS

#define IR_OP_FLAG_VAR_INPUTS   0x04

Definition at line 926 of file ir_private.h.

◆ IR_OP_FLAGS

#define IR_OP_FLAGS ( op_flags,
op1_flags,
op2_flags,
op3_flags )
Value:
((op_flags) | ((op1_flags) << 20) | ((op2_flags) << 24) | ((op3_flags) << 28))

Definition at line 955 of file ir_private.h.

◆ IR_OP_HAS_VAR_INPUTS

#define IR_OP_HAS_VAR_INPUTS ( flags)
Value:
#define IR_OP_FLAG_VAR_INPUTS
Definition ir_private.h:926

Definition at line 961 of file ir_private.h.

◆ IR_OPERANDS_COUNT

#define IR_OPERANDS_COUNT ( flags)
Value:
#define IR_OP_FLAG_OPERANDS_SHIFT
Definition ir_private.h:923
#define IR_OP_FLAG_OPERANDS_MASK
Definition ir_private.h:927

Definition at line 959 of file ir_private.h.

◆ IR_OPND_CONTROL

#define IR_OPND_CONTROL   0x2

Definition at line 947 of file ir_private.h.

◆ IR_OPND_CONTROL_DEP

#define IR_OPND_CONTROL_DEP   0x3

Definition at line 948 of file ir_private.h.

◆ IR_OPND_CONTROL_REF

#define IR_OPND_CONTROL_REF   0x4

Definition at line 949 of file ir_private.h.

◆ IR_OPND_DATA

#define IR_OPND_DATA   0x1

Definition at line 946 of file ir_private.h.

◆ IR_OPND_KIND

#define IR_OPND_KIND ( flags,
i )
Value:
(((flags) >> (16 + (4 * (((i) > 3) ? 3 : (i))))) & 0xf)

Definition at line 963 of file ir_private.h.

◆ IR_OPND_NUM

#define IR_OPND_NUM   0x6

Definition at line 951 of file ir_private.h.

◆ IR_OPND_PROB

#define IR_OPND_PROB   0x7

Definition at line 952 of file ir_private.h.

◆ IR_OPND_PROTO

#define IR_OPND_PROTO   0x8

Definition at line 953 of file ir_private.h.

◆ IR_OPND_STR

#define IR_OPND_STR   0x5

Definition at line 950 of file ir_private.h.

◆ IR_OPND_UNUSED

#define IR_OPND_UNUSED   0x0

Definition at line 945 of file ir_private.h.

◆ IR_OPT_IN_SCCP

#define IR_OPT_IN_SCCP   (1<<4)

Definition at line 1007 of file ir_private.h.

◆ IR_PHI_USE

#define IR_PHI_USE   (1<<7)

Definition at line 1218 of file ir_private.h.

◆ IR_RA_HAVE_SPILLS

#define IR_RA_HAVE_SPILLS   (1<<26)

Definition at line 1030 of file ir_private.h.

◆ IR_RA_HAVE_SPLITS

#define IR_RA_HAVE_SPLITS   (1<<25)

Definition at line 1029 of file ir_private.h.

◆ IR_RESERVED_FLAG_1

#define IR_RESERVED_FLAG_1   (1U<<31)

Definition at line 1032 of file ir_private.h.

◆ IR_RULE_MASK

#define IR_RULE_MASK   0xff

Definition at line 1405 of file ir_private.h.

◆ IR_SAVE_LIVE_POS_FROM_REF

#define IR_SAVE_LIVE_POS_FROM_REF ( ref)
Value:
#define IR_SAVE_SUB_REF

Definition at line 1208 of file ir_private.h.

◆ IR_SAVE_SUB_REF

#define IR_SAVE_SUB_REF   3

Definition at line 1197 of file ir_private.h.

◆ IR_SCRATCH_REG

#define IR_SCRATCH_REG ( _reg,
_start,
_end )
Value:
(ir_tmp_reg){.reg=(_reg), .type=IR_VOID, .start=(_start), .end=(_end)}
zend_ffi_type * type
Definition ffi.c:3812
buf start
Definition ffi.c:4687
@ IR_VOID
Definition ir.h:151
struct _ir_tmp_reg ir_tmp_reg

Definition at line 1413 of file ir_private.h.

◆ IR_SET_ALIGNED

#define IR_SET_ALIGNED ( alignment,
decl )
Value:
decl

Definition at line 51 of file ir_private.h.

◆ IR_SIMPLE

#define IR_SIMPLE   (1U<<29) /* Insn doesn't have any target constraints */

Definition at line 1400 of file ir_private.h.

◆ IR_SKIPPED

#define IR_SKIPPED   (1U<<30) /* Insn is skipped (code is not generated) */

Definition at line 1399 of file ir_private.h.

◆ IR_SPARSE_SET_DENSE

#define IR_SPARSE_SET_DENSE ( set,
n )
Value:
(set)->data[n]
zend_long n
Definition ffi.c:4979
zend_constant * data

Definition at line 492 of file ir_private.h.

◆ IR_SPARSE_SET_FOREACH

#define IR_SPARSE_SET_FOREACH ( set,
bit )
Value:
do { \
ir_sparse_set *_set = (set); \
uint32_t _i, _len = _set->len; \
uint32_t *_p = _set->data; \
for (_i = 0; _i < _len; _p++, _i++) { \
(bit) = *_p; \
struct _ir_sparse_set ir_sparse_set
uint32_t * data
Definition ir_private.h:489

Definition at line 563 of file ir_private.h.

◆ IR_SPARSE_SET_FOREACH_END

#define IR_SPARSE_SET_FOREACH_END ( )
Value:
} \
} while (0)

Definition at line 570 of file ir_private.h.

◆ IR_SPARSE_SET_SPARSE

#define IR_SPARSE_SET_SPARSE ( set,
n )
Value:
(set)->data[-1 - ((int32_t)(n))]

Definition at line 493 of file ir_private.h.

◆ IR_START_LIVE_POS_FROM_REF

#define IR_START_LIVE_POS_FROM_REF ( ref)
Value:

Definition at line 1204 of file ir_private.h.

◆ IR_SUB_REFS_COUNT

#define IR_SUB_REFS_COUNT   4

Definition at line 1192 of file ir_private.h.

◆ IR_TMP_REG

#define IR_TMP_REG ( _num,
_type,
_start,
_end )
Value:
(ir_tmp_reg){.num=(_num), .type=(_type), .start=(_start), .end=(_end)}
unsigned const char * end
Definition php_ffi.h:51

Definition at line 1411 of file ir_private.h.

◆ IR_USE_FLAGS

#define IR_USE_FLAGS ( def_flags,
op_num )
Value:
(((def_flags) >> (6 + (IR_MIN((op_num), 3) * 2))) & 3)
#define IR_MIN(a, b)
Definition ir_private.h:63

Definition at line 1227 of file ir_private.h.

◆ IR_USE_LIVE_POS_FROM_REF

#define IR_USE_LIVE_POS_FROM_REF ( ref)
Value:
#define IR_USE_SUB_REF

Definition at line 1206 of file ir_private.h.

◆ IR_USE_MUST_BE_IN_REG

#define IR_USE_MUST_BE_IN_REG   (1<<0)

Definition at line 1212 of file ir_private.h.

◆ IR_USE_SHOULD_BE_IN_REG

#define IR_USE_SHOULD_BE_IN_REG   (1<<1)

Definition at line 1213 of file ir_private.h.

◆ IR_USE_SUB_REF

#define IR_USE_SUB_REF   1

Definition at line 1195 of file ir_private.h.

◆ MAKE_NOP

#define MAKE_NOP ( _insn)
Value:
do { \
ir_insn *__insn = _insn; \
__insn->optx = IR_NOP; \
__insn->op1 = __insn->op2 = __insn->op3 = IR_UNUSED; \
} while (0)
#define IR_UNUSED
Definition ir.h:395
struct _ir_insn ir_insn

Definition at line 1067 of file ir_private.h.

◆ SWAP_INSNS

#define SWAP_INSNS ( _insn1,
_insn2 )
Value:
do { \
ir_insn *_tmp = _insn1; \
_insn1 = _insn2; \
_insn2 = _tmp; \
} while (0)

Definition at line 1084 of file ir_private.h.

◆ SWAP_REFS

#define SWAP_REFS ( _ref1,
_ref2 )
Value:
do { \
ir_ref _tmp = _ref1; \
_ref1 = _ref2; \
_ref2 = _tmp; \
} while (0)
int32_t ir_ref
Definition ir.h:390

Definition at line 1078 of file ir_private.h.

◆ UNEXPECTED

#define UNEXPECTED ( condition)
Value:
(condition)

Definition at line 48 of file ir_private.h.

Typedef Documentation

◆ emit_copy_t

typedef int(* emit_copy_t) (ir_ctx *ctx, uint8_t type, ir_ref from, ir_ref to)

Definition at line 1276 of file ir_private.h.

◆ ir_addrtab_bucket

◆ ir_array

typedef struct _ir_array ir_array

◆ ir_bitqueue

typedef struct _ir_bitqueue ir_bitqueue

◆ ir_bitset

Definition at line 317 of file ir_private.h.

◆ ir_fold_action

◆ ir_hashtab

typedef struct _ir_hashtab ir_hashtab

◆ ir_hashtab_bucket

◆ ir_list

typedef struct _ir_list ir_list

◆ ir_live_pos

Definition at line 1189 of file ir_private.h.

◆ ir_reg_alloc_data

◆ ir_sparse_set

typedef struct _ir_sparse_set ir_sparse_set

◆ ir_target_constraints

Definition at line 1409 of file ir_private.h.

◆ ir_use_pos

typedef struct _ir_use_pos ir_use_pos

Definition at line 1190 of file ir_private.h.

◆ ir_worklist

typedef struct _ir_worklist ir_worklist

Enumeration Type Documentation

◆ _ir_fold_action

Enumerator
IR_FOLD_DO_RESTART 
IR_FOLD_DO_CSE 
IR_FOLD_DO_EMIT 
IR_FOLD_DO_COPY 
IR_FOLD_DO_CONST 

Definition at line 1169 of file ir_private.h.

Function Documentation

◆ ir_addrtab_find()

ir_ref ir_addrtab_find ( const ir_hashtab * tab,
uint64_t key )

Definition at line 1730 of file ir.c.

◆ ir_addrtab_free()

void ir_addrtab_free ( ir_hashtab * tab)

Definition at line 1722 of file ir.c.

◆ ir_addrtab_init()

void ir_addrtab_init ( ir_hashtab * tab,
uint32_t size )

Definition at line 1709 of file ir.c.

◆ ir_addrtab_set()

void ir_addrtab_set ( ir_hashtab * tab,
uint64_t key,
ir_ref val )

Definition at line 1746 of file ir.c.

◆ ir_allocate_spill_slot()

int32_t ir_allocate_spill_slot ( ir_ctx * ctx,
ir_type type,
ir_reg_alloc_data * data )

Definition at line 2613 of file ir_ra.c.

◆ ir_arena_alloc()

IR_ALWAYS_INLINE void * ir_arena_alloc ( ir_arena ** arena_ptr,
size_t size )

Definition at line 255 of file ir_private.h.

◆ ir_arena_checkpoint()

IR_ALWAYS_INLINE void * ir_arena_checkpoint ( ir_arena * arena)

Definition at line 281 of file ir_private.h.

◆ ir_arena_create()

IR_ALWAYS_INLINE ir_arena * ir_arena_create ( size_t size)

Definition at line 234 of file ir_private.h.

◆ ir_arena_free()

IR_ALWAYS_INLINE void ir_arena_free ( ir_arena * arena)

Definition at line 246 of file ir_private.h.

◆ ir_array_at()

IR_ALWAYS_INLINE ir_ref ir_array_at ( const ir_array * a,
uint32_t i )

Definition at line 681 of file ir_private.h.

◆ ir_array_free()

IR_ALWAYS_INLINE void ir_array_free ( ir_array * a)

Definition at line 664 of file ir_private.h.

◆ ir_array_get()

IR_ALWAYS_INLINE ir_ref ir_array_get ( const ir_array * a,
uint32_t i )

Definition at line 676 of file ir_private.h.

◆ ir_array_grow()

void ir_array_grow ( ir_array * a,
uint32_t size )

Definition at line 1485 of file ir.c.

◆ ir_array_init()

IR_ALWAYS_INLINE void ir_array_init ( ir_array * a,
uint32_t size )

Definition at line 658 of file ir_private.h.

◆ ir_array_insert()

void ir_array_insert ( ir_array * a,
uint32_t i,
ir_ref val )

Definition at line 1492 of file ir.c.

◆ ir_array_remove()

void ir_array_remove ( ir_array * a,
uint32_t i )

Definition at line 1502 of file ir.c.

◆ ir_array_set()

IR_ALWAYS_INLINE void ir_array_set ( ir_array * a,
uint32_t i,
ir_ref val )

Definition at line 687 of file ir_private.h.

◆ ir_array_set_unchecked()

IR_ALWAYS_INLINE void ir_array_set_unchecked ( ir_array * a,
uint32_t i,
ir_ref val )

Definition at line 695 of file ir_private.h.

◆ ir_array_size()

IR_ALWAYS_INLINE uint32_t ir_array_size ( const ir_array * a)

Definition at line 671 of file ir_private.h.

◆ ir_bitqueue_add()

IR_ALWAYS_INLINE void ir_bitqueue_add ( ir_bitqueue * q,
uint32_t n )

Definition at line 629 of file ir_private.h.

◆ ir_bitqueue_clear()

IR_ALWAYS_INLINE void ir_bitqueue_clear ( ir_bitqueue * q)

Definition at line 604 of file ir_private.h.

◆ ir_bitqueue_del()

IR_ALWAYS_INLINE void ir_bitqueue_del ( ir_bitqueue * q,
uint32_t n )

Definition at line 638 of file ir_private.h.

◆ ir_bitqueue_free()

IR_ALWAYS_INLINE void ir_bitqueue_free ( ir_bitqueue * q)

Definition at line 599 of file ir_private.h.

◆ ir_bitqueue_grow()

IR_ALWAYS_INLINE void ir_bitqueue_grow ( ir_bitqueue * q,
uint32_t n )

Definition at line 588 of file ir_private.h.

◆ ir_bitqueue_in()

IR_ALWAYS_INLINE bool ir_bitqueue_in ( const ir_bitqueue * q,
uint32_t n )

Definition at line 643 of file ir_private.h.

◆ ir_bitqueue_init()

IR_ALWAYS_INLINE void ir_bitqueue_init ( ir_bitqueue * q,
uint32_t n )

Definition at line 581 of file ir_private.h.

◆ ir_bitqueue_pop()

IR_ALWAYS_INLINE int ir_bitqueue_pop ( ir_bitqueue * q)

Definition at line 610 of file ir_private.h.

◆ ir_bitset_clear()

IR_ALWAYS_INLINE void ir_bitset_clear ( ir_bitset set,
uint32_t len )

Definition at line 344 of file ir_private.h.

◆ ir_bitset_copy()

IR_ALWAYS_INLINE void ir_bitset_copy ( ir_bitset set1,
const ir_bitset set2,
uint32_t len )

Definition at line 370 of file ir_private.h.

◆ ir_bitset_difference()

IR_ALWAYS_INLINE void ir_bitset_difference ( ir_bitset set1,
const ir_bitset set2,
uint32_t len )

Definition at line 393 of file ir_private.h.

◆ ir_bitset_empty()

IR_ALWAYS_INLINE bool ir_bitset_empty ( const ir_bitset set,
uint32_t len )

Definition at line 354 of file ir_private.h.

◆ ir_bitset_equal()

IR_ALWAYS_INLINE bool ir_bitset_equal ( const ir_bitset set1,
const ir_bitset set2,
uint32_t len )

Definition at line 365 of file ir_private.h.

◆ ir_bitset_excl()

IR_ALWAYS_INLINE void ir_bitset_excl ( ir_bitset set,
uint32_t n )

Definition at line 334 of file ir_private.h.

◆ ir_bitset_fill()

IR_ALWAYS_INLINE void ir_bitset_fill ( ir_bitset set,
uint32_t len )

Definition at line 349 of file ir_private.h.

◆ ir_bitset_first()

IR_ALWAYS_INLINE int ir_bitset_first ( const ir_bitset set,
uint32_t len )

Definition at line 414 of file ir_private.h.

◆ ir_bitset_in()

IR_ALWAYS_INLINE bool ir_bitset_in ( const ir_bitset set,
uint32_t n )

Definition at line 339 of file ir_private.h.

◆ ir_bitset_incl()

IR_ALWAYS_INLINE void ir_bitset_incl ( ir_bitset set,
uint32_t n )

Definition at line 329 of file ir_private.h.

◆ ir_bitset_intersection()

IR_ALWAYS_INLINE void ir_bitset_intersection ( ir_bitset set1,
const ir_bitset set2,
uint32_t len )

Definition at line 375 of file ir_private.h.

◆ ir_bitset_is_subset()

IR_ALWAYS_INLINE bool ir_bitset_is_subset ( const ir_bitset set1,
const ir_bitset set2,
uint32_t len )

Definition at line 402 of file ir_private.h.

◆ ir_bitset_last()

IR_ALWAYS_INLINE int ir_bitset_last ( const ir_bitset set,
uint32_t len )

Definition at line 426 of file ir_private.h.

◆ ir_bitset_len()

IR_ALWAYS_INLINE uint32_t ir_bitset_len ( uint32_t n)

Definition at line 319 of file ir_private.h.

◆ ir_bitset_malloc()

IR_ALWAYS_INLINE ir_bitset ir_bitset_malloc ( uint32_t n)

Definition at line 324 of file ir_private.h.

◆ ir_bitset_pop_first()

IR_ALWAYS_INLINE int ir_bitset_pop_first ( ir_bitset set,
uint32_t len )

Definition at line 445 of file ir_private.h.

◆ ir_bitset_union()

IR_ALWAYS_INLINE void ir_bitset_union ( ir_bitset set1,
const ir_bitset set2,
uint32_t len )

Definition at line 384 of file ir_private.h.

◆ ir_build_prev_refs()

void ir_build_prev_refs ( ir_ctx * ctx)

Definition at line 1347 of file ir_gcm.c.

◆ ir_check_dominating_predicates()

ir_ref ir_check_dominating_predicates ( ir_ctx * ctx,
ir_ref ref,
ir_ref condition )

Definition at line 2469 of file ir.c.

◆ ir_const_ex()

ir_ref ir_const_ex ( ir_ctx * ctx,
ir_val val,
uint8_t type,
uint32_t optx )

Definition at line 512 of file ir.c.

◆ ir_const_is_true()

IR_ALWAYS_INLINE bool ir_const_is_true ( const ir_insn * v)

Definition at line 893 of file ir_private.h.

◆ ir_find_aliasing_load()

ir_ref ir_find_aliasing_load ( ir_ctx * ctx,
ir_ref ref,
ir_type type,
ir_ref addr )

Definition at line 2064 of file ir.c.

◆ ir_find_aliasing_store()

ir_ref ir_find_aliasing_store ( ir_ctx * ctx,
ir_ref ref,
ir_ref addr,
ir_ref val )

Definition at line 2204 of file ir.c.

◆ ir_find_aliasing_vload()

ir_ref ir_find_aliasing_vload ( ir_ctx * ctx,
ir_ref ref,
ir_type type,
ir_ref var )

Definition at line 2110 of file ir.c.

◆ ir_find_aliasing_vstore()

ir_ref ir_find_aliasing_vstore ( ir_ctx * ctx,
ir_ref ref,
ir_ref addr,
ir_ref val )

Definition at line 2284 of file ir.c.

◆ ir_fix_stack_frame()

void ir_fix_stack_frame ( ir_ctx * ctx)

◆ ir_folding()

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 )

Definition at line 932 of file ir.c.

◆ ir_gen_dessa_moves()

int ir_gen_dessa_moves ( ir_ctx * ctx,
uint32_t b,
emit_copy_t emit_copy )

Definition at line 2107 of file ir_ra.c.

◆ ir_get_alocated_reg()

IR_ALWAYS_INLINE int8_t ir_get_alocated_reg ( const ir_ctx * ctx,
ir_ref ref,
int op_num )

Definition at line 1386 of file ir_private.h.

◆ ir_get_return_type()

ir_type ir_get_return_type ( ir_ctx * ctx)

◆ ir_get_target_constraints()

int ir_get_target_constraints ( ir_ctx * ctx,
ir_ref ref,
ir_target_constraints * constraints )

◆ ir_get_true_false_blocks()

void ir_get_true_false_blocks ( const ir_ctx * ctx,
uint32_t b,
uint32_t * true_block,
uint32_t * false_block )

Definition at line 1929 of file ir_cfg.c.

◆ ir_hashtab_add()

bool ir_hashtab_add ( ir_hashtab * tab,
uint32_t key,
ir_ref val )

Definition at line 1617 of file ir.c.

◆ ir_hashtab_find()

ir_ref ir_hashtab_find ( const ir_hashtab * tab,
uint32_t key )

Definition at line 1601 of file ir.c.

◆ ir_hashtab_free()

void ir_hashtab_free ( ir_hashtab * tab)

Definition at line 1593 of file ir.c.

◆ ir_hashtab_init()

void ir_hashtab_init ( ir_hashtab * tab,
uint32_t size )

Definition at line 1580 of file ir.c.

◆ ir_hashtab_key_sort()

void ir_hashtab_key_sort ( ir_hashtab * tab)

Definition at line 1653 of file ir.c.

◆ ir_input_edges_count()

IR_ALWAYS_INLINE ir_ref ir_input_edges_count ( const ir_ctx * ctx,
const ir_insn * insn )

Definition at line 981 of file ir_private.h.

◆ ir_insn_inputs_to_len()

IR_ALWAYS_INLINE uint32_t ir_insn_inputs_to_len ( uint32_t inputs_count)

Definition at line 992 of file ir_private.h.

◆ ir_insn_len()

IR_ALWAYS_INLINE uint32_t ir_insn_len ( const ir_insn * insn)

Definition at line 997 of file ir_private.h.

◆ ir_is_fastcall()

bool ir_is_fastcall ( const ir_ctx * ctx,
const ir_insn * insn )

Definition at line 114 of file ir_emit.c.

◆ ir_is_vararg()

bool ir_is_vararg ( const ir_ctx * ctx,
ir_insn * insn )

Definition at line 120 of file ir_emit.c.

◆ ir_iter_opt()

void ir_iter_opt ( ir_ctx * ctx,
ir_bitqueue * worklist )

Definition at line 3466 of file ir_sccp.c.

◆ ir_iter_replace()

void ir_iter_replace ( ir_ctx * ctx,
ir_ref ref,
ir_ref new_ref,
ir_bitqueue * worklist )

Definition at line 1165 of file ir_sccp.c.

◆ ir_iter_update_op()

void ir_iter_update_op ( ir_ctx * ctx,
ir_ref ref,
uint32_t idx,
ir_ref new_val,
ir_bitqueue * worklist )

Definition at line 1237 of file ir_sccp.c.

◆ ir_list_at()

IR_ALWAYS_INLINE ir_ref ir_list_at ( const ir_list * l,
uint32_t i )

Definition at line 760 of file ir_private.h.

◆ ir_list_capasity()

IR_ALWAYS_INLINE uint32_t ir_list_capasity ( const ir_list * l)

Definition at line 733 of file ir_private.h.

◆ ir_list_clear()

IR_ALWAYS_INLINE void ir_list_clear ( ir_list * l)

Definition at line 723 of file ir_private.h.

◆ ir_list_contains()

IR_ALWAYS_INLINE bool ir_list_contains ( const ir_list * l,
ir_ref val )

Definition at line 780 of file ir_private.h.

◆ ir_list_del()

IR_ALWAYS_INLINE void ir_list_del ( ir_list * l,
uint32_t i )

Definition at line 773 of file ir_private.h.

◆ ir_list_find()

uint32_t ir_list_find ( const ir_list * l,
ir_ref val )

Definition at line 1527 of file ir.c.

◆ ir_list_free()

IR_ALWAYS_INLINE void ir_list_free ( ir_list * l)

Definition at line 717 of file ir_private.h.

◆ ir_list_init()

IR_ALWAYS_INLINE void ir_list_init ( ir_list * l,
uint32_t size )

Definition at line 711 of file ir_private.h.

◆ ir_list_insert()

void ir_list_insert ( ir_list * l,
uint32_t i,
ir_ref val )

Definition at line 1509 of file ir.c.

◆ ir_list_len()

IR_ALWAYS_INLINE uint32_t ir_list_len ( const ir_list * l)

Definition at line 728 of file ir_private.h.

◆ ir_list_peek()

IR_ALWAYS_INLINE ir_ref ir_list_peek ( const ir_list * l)

Definition at line 754 of file ir_private.h.

◆ ir_list_pop()

IR_ALWAYS_INLINE ir_ref ir_list_pop ( ir_list * l)

Definition at line 748 of file ir_private.h.

◆ ir_list_push()

IR_ALWAYS_INLINE void ir_list_push ( ir_list * l,
ir_ref val )

Definition at line 738 of file ir_private.h.

◆ ir_list_push_unchecked()

IR_ALWAYS_INLINE void ir_list_push_unchecked ( ir_list * l,
ir_ref val )

Definition at line 743 of file ir_private.h.

◆ ir_list_remove()

void ir_list_remove ( ir_list * l,
uint32_t i )

Definition at line 1520 of file ir.c.

◆ ir_list_set()

IR_ALWAYS_INLINE void ir_list_set ( ir_list * l,
uint32_t i,
ir_ref val )

Definition at line 766 of file ir_private.h.

◆ ir_next_block()

uint32_t ir_next_block ( const ir_ctx * ctx,
uint32_t b )

Definition at line 1898 of file ir_cfg.c.

◆ ir_next_control()

IR_ALWAYS_INLINE ir_ref ir_next_control ( const ir_ctx * ctx,
ir_ref ref )

Definition at line 1047 of file ir_private.h.

◆ ir_nlz()

IR_ALWAYS_INLINE int ir_nlz ( uint32_t num)

Definition at line 170 of file ir_private.h.

◆ ir_nlzl()

IR_ALWAYS_INLINE int ir_nlzl ( uint64_t num)

Definition at line 197 of file ir_private.h.

◆ ir_ntz()

IR_ALWAYS_INLINE uint32_t ir_ntz ( uint32_t num)

Definition at line 110 of file ir_private.h.

◆ ir_ntzl()

IR_ALWAYS_INLINE uint32_t ir_ntzl ( uint64_t num)

Definition at line 138 of file ir_private.h.

◆ ir_operands_count()

IR_ALWAYS_INLINE ir_ref ir_operands_count ( const ir_ctx * ctx,
const ir_insn * insn )

Definition at line 969 of file ir_private.h.

◆ ir_phi_input_number()

IR_ALWAYS_INLINE uint32_t ir_phi_input_number ( const ir_ctx * ctx,
const ir_block * bb,
uint32_t from )

Definition at line 1155 of file ir_private.h.

◆ ir_print_escaped_str()

void ir_print_escaped_str ( const char * s,
size_t len,
FILE * f )

Definition at line 78 of file ir.c.

◆ ir_ref_is_true()

IR_ALWAYS_INLINE bool ir_ref_is_true ( ir_ctx * ctx,
ir_ref ref )

Definition at line 910 of file ir_private.h.

◆ ir_release()

IR_ALWAYS_INLINE void ir_release ( ir_arena ** arena_ptr,
void * checkpoint )

Definition at line 286 of file ir_private.h.

◆ ir_replace()

void ir_replace ( ir_ctx * ctx,
ir_ref ref,
ir_ref new_ref )

Definition at line 1430 of file ir.c.

◆ ir_rol16()

IR_ALWAYS_INLINE uint16_t ir_rol16 ( uint16_t op1,
uint16_t op2 )

Definition at line 74 of file ir_private.h.

◆ ir_rol32()

IR_ALWAYS_INLINE uint32_t ir_rol32 ( uint32_t op1,
uint32_t op2 )

Definition at line 79 of file ir_private.h.

◆ ir_rol64()

IR_ALWAYS_INLINE uint64_t ir_rol64 ( uint64_t op1,
uint64_t op2 )

Definition at line 84 of file ir_private.h.

◆ ir_rol8()

IR_ALWAYS_INLINE uint8_t ir_rol8 ( uint8_t op1,
uint8_t op2 )

Definition at line 69 of file ir_private.h.

◆ ir_ror16()

IR_ALWAYS_INLINE uint16_t ir_ror16 ( uint16_t op1,
uint16_t op2 )

Definition at line 94 of file ir_private.h.

◆ ir_ror32()

IR_ALWAYS_INLINE uint32_t ir_ror32 ( uint32_t op1,
uint32_t op2 )

Definition at line 99 of file ir_private.h.

◆ ir_ror64()

IR_ALWAYS_INLINE uint64_t ir_ror64 ( uint64_t op1,
uint64_t op2 )

Definition at line 104 of file ir_private.h.

◆ ir_ror8()

IR_ALWAYS_INLINE uint8_t ir_ror8 ( uint8_t op1,
uint8_t op2 )

Definition at line 89 of file ir_private.h.

◆ ir_set_alocated_reg()

IR_ALWAYS_INLINE void ir_set_alocated_reg ( ir_ctx * ctx,
ir_ref ref,
int op_num,
int8_t reg )

Definition at line 1375 of file ir_private.h.

◆ ir_skip_empty_target_blocks()

uint32_t ir_skip_empty_target_blocks ( const ir_ctx * ctx,
uint32_t b )

Definition at line 1893 of file ir_cfg.c.

◆ ir_sparse_set_add()

IR_ALWAYS_INLINE void ir_sparse_set_add ( ir_sparse_set * set,
uint32_t n )

Definition at line 528 of file ir_private.h.

◆ ir_sparse_set_clear()

IR_ALWAYS_INLINE void ir_sparse_set_clear ( ir_sparse_set * set)

Definition at line 506 of file ir_private.h.

◆ ir_sparse_set_del()

IR_ALWAYS_INLINE void ir_sparse_set_del ( ir_sparse_set * set,
uint32_t n )

Definition at line 538 of file ir_private.h.

◆ ir_sparse_set_empty()

IR_ALWAYS_INLINE bool ir_sparse_set_empty ( const ir_sparse_set * set)

Definition at line 516 of file ir_private.h.

◆ ir_sparse_set_free()

IR_ALWAYS_INLINE void ir_sparse_set_free ( ir_sparse_set * set)

Definition at line 511 of file ir_private.h.

◆ ir_sparse_set_in()

IR_ALWAYS_INLINE bool ir_sparse_set_in ( const ir_sparse_set * set,
uint32_t n )

Definition at line 521 of file ir_private.h.

◆ ir_sparse_set_init()

IR_ALWAYS_INLINE void ir_sparse_set_init ( ir_sparse_set * set,
uint32_t size )

Definition at line 495 of file ir_private.h.

◆ ir_sparse_set_pop()

IR_ALWAYS_INLINE uint32_t ir_sparse_set_pop ( ir_sparse_set * set)

Definition at line 554 of file ir_private.h.

◆ ir_update_op()

void ir_update_op ( ir_ctx * ctx,
ir_ref ref,
uint32_t idx,
ir_ref new_val )

Definition at line 1469 of file ir.c.

◆ ir_use_list_add()

bool ir_use_list_add ( ir_ctx * ctx,
ir_ref def,
ir_ref use )

Definition at line 1378 of file ir.c.

◆ ir_use_list_remove_all()

void ir_use_list_remove_all ( ir_ctx * ctx,
ir_ref def,
ir_ref use )

Definition at line 1295 of file ir.c.

◆ ir_use_list_remove_one()

void ir_use_list_remove_one ( ir_ctx * ctx,
ir_ref def,
ir_ref use )

Definition at line 1321 of file ir.c.

◆ ir_use_list_replace_all()

void ir_use_list_replace_all ( ir_ctx * ctx,
ir_ref def,
ir_ref use,
ir_ref new_use )

Definition at line 1363 of file ir.c.

◆ ir_use_list_replace_one()

void ir_use_list_replace_one ( ir_ctx * ctx,
ir_ref def,
ir_ref use,
ir_ref new_use )

Definition at line 1347 of file ir.c.

◆ ir_use_list_sort()

void ir_use_list_sort ( ir_ctx * ctx,
ir_ref def )

Definition at line 1417 of file ir.c.

◆ ir_worklist_capasity()

IR_ALWAYS_INLINE uint32_t ir_worklist_capasity ( const ir_worklist * w)

Definition at line 808 of file ir_private.h.

◆ ir_worklist_clear()

IR_ALWAYS_INLINE void ir_worklist_clear ( ir_worklist * w)

Definition at line 813 of file ir_private.h.

◆ ir_worklist_free()

IR_ALWAYS_INLINE void ir_worklist_free ( ir_worklist * w)

Definition at line 797 of file ir_private.h.

◆ ir_worklist_init()

IR_ALWAYS_INLINE void ir_worklist_init ( ir_worklist * w,
uint32_t size )

Definition at line 791 of file ir_private.h.

◆ ir_worklist_len()

IR_ALWAYS_INLINE uint32_t ir_worklist_len ( const ir_worklist * w)

Definition at line 803 of file ir_private.h.

◆ ir_worklist_peek()

IR_ALWAYS_INLINE ir_ref ir_worklist_peek ( const ir_worklist * w)

Definition at line 836 of file ir_private.h.

◆ ir_worklist_pop()

IR_ALWAYS_INLINE ir_ref ir_worklist_pop ( ir_worklist * w)

Definition at line 831 of file ir_private.h.

◆ ir_worklist_push()

IR_ALWAYS_INLINE bool ir_worklist_push ( ir_worklist * w,
ir_ref val )

Definition at line 819 of file ir_private.h.

Variable Documentation

◆ ir_op_flags

const uint32_t ir_op_flags[IR_LAST_OP]
extern

Definition at line 294 of file ir.c.

◆ ir_op_name

const char* ir_op_name[IR_LAST_OP]
extern

Definition at line 71 of file ir.c.

◆ ir_rule_name

const char* ir_rule_name[]
extern

◆ ir_type_cname

const char* ir_type_cname[IR_LAST_TYPE]
extern

Definition at line 66 of file ir.c.

◆ ir_type_flags

const uint8_t ir_type_flags[IR_LAST_TYPE]
extern

Definition at line 51 of file ir.c.

◆ ir_type_name

const char* ir_type_name[IR_LAST_TYPE]
extern

Definition at line 56 of file ir.c.

◆ ir_type_size

const uint8_t ir_type_size[IR_LAST_TYPE]
extern

Definition at line 61 of file ir.c.