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

Go to the source code of this file.

Data Structures

struct  _ir_coalesce_block
 

Macros

#define _GNU_SOURCE
 
#define IS_LIVE_IN_BLOCK(v, b)
 
#define SET_LIVE_IN_BLOCK(v, b)
 
#define IR_LOG_LSRA(action, ival, comment)
 
#define IR_LOG_LSRA_ASSIGN(action, ival, comment)
 
#define IR_LOG_LSRA_SPLIT(ival, pos)
 
#define IR_LOG_LSRA_CONFLICT(action, ival, pos)
 

Typedefs

typedef struct _ir_coalesce_block ir_coalesce_block
 

Functions

int ir_regs_number (void)
 
bool ir_reg_is_int (int32_t reg)
 
int ir_assign_virtual_registers (ir_ctx *ctx)
 
IR_ALWAYS_INLINE ir_live_intervalir_add_prev_live_range (ir_ctx *ctx, int v, ir_live_pos start, ir_live_pos end)
 
IR_ALWAYS_INLINE void ir_add_use (ir_ctx *ctx, ir_live_interval *ival, int op_num, ir_live_pos pos, ir_reg hint, uint8_t use_flags, ir_ref hint_ref)
 
IR_ALWAYS_INLINE uint32_t ir_live_out_top (ir_ctx *ctx, uint32_t *live_outs, ir_list *live_lists, uint32_t b)
 
IR_ALWAYS_INLINE void ir_live_out_push (ir_ctx *ctx, uint32_t *live_outs, ir_list *live_lists, uint32_t b, uint32_t v)
 
int ir_compute_live_ranges (ir_ctx *ctx)
 
int ir_coalesce (ir_ctx *ctx)
 
int ir_compute_dessa_moves (ir_ctx *ctx)
 
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)
 
int ir_reg_alloc (ir_ctx *ctx)
 

Macro Definition Documentation

◆ _GNU_SOURCE

#define _GNU_SOURCE

Definition at line 14 of file ir_ra.c.

◆ IR_LOG_LSRA

#define IR_LOG_LSRA ( action,
ival,
comment )

Definition at line 2276 of file ir_ra.c.

◆ IR_LOG_LSRA_ASSIGN

#define IR_LOG_LSRA_ASSIGN ( action,
ival,
comment )

Definition at line 2277 of file ir_ra.c.

◆ IR_LOG_LSRA_CONFLICT

#define IR_LOG_LSRA_CONFLICT ( action,
ival,
pos )
Value:
;

Definition at line 2279 of file ir_ra.c.

◆ IR_LOG_LSRA_SPLIT

#define IR_LOG_LSRA_SPLIT ( ival,
pos )

Definition at line 2278 of file ir_ra.c.

◆ IS_LIVE_IN_BLOCK

#define IS_LIVE_IN_BLOCK ( v,
b )
Value:
(live_in_block[v] == b)
uint32_t v
Definition cdf.c:1237

Definition at line 934 of file ir_ra.c.

◆ SET_LIVE_IN_BLOCK

#define SET_LIVE_IN_BLOCK ( v,
b )
Value:
do { \
live_in_block[v] = b; \
} while (0)

Definition at line 936 of file ir_ra.c.

Typedef Documentation

◆ ir_coalesce_block

Function Documentation

◆ ir_add_prev_live_range()

IR_ALWAYS_INLINE ir_live_interval * ir_add_prev_live_range ( ir_ctx * ctx,
int v,
ir_live_pos start,
ir_live_pos end )

Definition at line 214 of file ir_ra.c.

◆ ir_add_use()

IR_ALWAYS_INLINE void ir_add_use ( ir_ctx * ctx,
ir_live_interval * ival,
int op_num,
ir_live_pos pos,
ir_reg hint,
uint8_t use_flags,
ir_ref hint_ref )

Definition at line 352 of file ir_ra.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_assign_virtual_registers()

int ir_assign_virtual_registers ( ir_ctx * ctx)

Definition at line 82 of file ir_ra.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_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_live_out_push()

IR_ALWAYS_INLINE void ir_live_out_push ( ir_ctx * ctx,
uint32_t * live_outs,
ir_list * live_lists,
uint32_t b,
uint32_t v )

Definition at line 954 of file ir_ra.c.

◆ ir_live_out_top()

IR_ALWAYS_INLINE uint32_t ir_live_out_top ( ir_ctx * ctx,
uint32_t * live_outs,
ir_list * live_lists,
uint32_t b )

Definition at line 941 of file ir_ra.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_regs_number()

int ir_regs_number ( void )

Definition at line 30 of file ir_ra.c.