libFirm
|
Lowering of high level constructs. More...
Go to the source code of this file.
Data Structures | |
struct | i_call_record |
An intrinsic call record. More... | |
struct | i_instr_record |
An intrinsic instruction record. More... | |
union | i_record |
An intrinsic record. More... | |
struct | runtime_rt |
A runtime routine description. More... |
Typedefs | |
typedef int | lower_mux_callback (ir_node *mux) |
Used as callback, whenever a lowerable mux is found. | |
typedef int(* | i_mapper_func )(ir_node *node, void *ctx) |
An intrinsic mapper function. |
Enumerations | |
enum | ikind { INTRINSIC_CALL = 0, INTRINSIC_INSTR } |
kind of an instruction record More... |
Functions | |
void | lower_CopyB (ir_graph *irg, unsigned max_small_size, unsigned min_large_size, int allow_misalignments) |
Lower small CopyB nodes to Load/Store nodes, preserve medium-sized CopyB nodes and replace large CopyBs by a call to memcpy, depending on the given parameters. | |
void | lower_switch (ir_graph *irg, unsigned small_switch, unsigned spare_size, ir_mode *selector_mode) |
Lowers all Switches (Cond nodes with non-boolean mode) depending on spare_size. | |
void | lower_highlevel_graph (ir_graph *irg) |
Replaces SymConsts by a real constant if possible. | |
ir_graph_pass_t * | lower_highlevel_graph_pass (const char *name) |
Creates an ir_graph pass for lower_highlevel_graph(). | |
void | lower_highlevel (void) |
Replaces SymConsts by a real constant if possible. | |
void | lower_const_code (void) |
does the same as lower_highlevel for all nodes on the const code irg | |
ir_prog_pass_t * | lower_const_code_pass (const char *name) |
Creates an ir_prog pass for lower_const_code(). | |
void | lower_mux (ir_graph *irg, lower_mux_callback *cb_func) |
Lowers all mux nodes in the given graph. | |
ir_graph_pass_t * | lower_mux_pass (const char *name, lower_mux_callback *cb_func) |
Creates an ir_graph pass for lower_mux(). | |
size_t | lower_intrinsics (i_record *list, size_t length, int part_block_used) |
Go through all graphs and map calls to intrinsic functions and instructions. | |
ir_prog_pass_t * | lower_intrinsics_pass (const char *name, i_record *list, size_t length, int part_block_used) |
Creates an irprog pass for lower_intrinsics. | |
int | i_mapper_abs (ir_node *call, void *ctx) |
A mapper for the integer/float absolute value: type abs(type v). | |
int | i_mapper_bswap (ir_node *call, void *ctx) |
A mapper for the integer byte swap value: type bswap(type v). | |
int | i_mapper_sqrt (ir_node *call, void *ctx) |
A mapper for the floating point sqrt(v): floattype sqrt(floattype v);. | |
int | i_mapper_cbrt (ir_node *call, void *ctx) |
A mapper for the floating point cbrt(v): floattype sqrt(floattype v);. | |
int | i_mapper_pow (ir_node *call, void *ctx) |
A mapper for the floating point pow(a, b): floattype pow(floattype a, floattype b);. | |
int | i_mapper_exp (ir_node *call, void *ctx) |
A mapper for the floating point exp(a): floattype exp(floattype a);. | |
int | i_mapper_exp2 (ir_node *call, void *ctx) |
A mapper for the floating point exp2(a): floattype exp2(floattype a);. | |
int | i_mapper_exp10 (ir_node *call, void *ctx) |
A mapper for the floating point exp10(a): floattype exp10(floattype a);. | |
int | i_mapper_log (ir_node *call, void *ctx) |
A mapper for the floating point log(a): floattype log(floattype a);. | |
int | i_mapper_log2 (ir_node *call, void *ctx) |
A mapper for the floating point log(a): floattype log(floattype a);. | |
int | i_mapper_log10 (ir_node *call, void *ctx) |
A mapper for the floating point log(a): floattype log(floattype a);. | |
int | i_mapper_sin (ir_node *call, void *ctx) |
A mapper for the floating point sin(a): floattype sin(floattype a);. | |
int | i_mapper_cos (ir_node *call, void *ctx) |
A mapper for the floating point sin(a): floattype cos(floattype a);. | |
int | i_mapper_tan (ir_node *call, void *ctx) |
A mapper for the floating point tan(a): floattype tan(floattype a);. | |
int | i_mapper_asin (ir_node *call, void *ctx) |
A mapper for the floating point asin(a): floattype asin(floattype a);. | |
int | i_mapper_acos (ir_node *call, void *ctx) |
A mapper for the floating point acos(a): floattype acos(floattype a);. | |
int | i_mapper_atan (ir_node *call, void *ctx) |
A mapper for the floating point atan(a): floattype atan(floattype a);. | |
int | i_mapper_sinh (ir_node *call, void *ctx) |
A mapper for the floating point sinh(a): floattype sinh(floattype a);. | |
int | i_mapper_cosh (ir_node *call, void *ctx) |
A mapper for the floating point cosh(a): floattype cosh(floattype a);. | |
int | i_mapper_tanh (ir_node *call, void *ctx) |
A mapper for the floating point tanh(a): floattype tanh(floattype a);. | |
int | i_mapper_strcmp (ir_node *call, void *ctx) |
A mapper for the strcmp-Function: inttype strcmp(char pointer a, char pointer b);. | |
int | i_mapper_strncmp (ir_node *call, void *ctx) |
A mapper for the strncmp-Function: inttype strncmp(char pointer a, char pointer b, inttype len);. | |
int | i_mapper_strcpy (ir_node *call, void *ctx) |
A mapper for the strcpy-Function: char pointer strcpy(char pointer a, char pointer b);. | |
int | i_mapper_strlen (ir_node *call, void *ctx) |
A mapper for the strlen-Function: inttype strlen(char pointer a);. | |
int | i_mapper_memcpy (ir_node *call, void *ctx) |
A mapper for the memcpy-Function: void pointer memcpy(void pointer d, void pointer s, inttype c);. | |
int | i_mapper_mempcpy (ir_node *call, void *ctx) |
A mapper for the mempcpy-Function: void pointer mempcpy(void pointer d, void pointer s, inttype c);. | |
int | i_mapper_memmove (ir_node *call, void *ctx) |
A mapper for the memmove-Function: void pointer memmove(void pointer d, void pointer s, inttype c);. | |
int | i_mapper_memset (ir_node *call, void *ctx) |
A mapper for the memset-Function: void pointer memset(void pointer d, inttype C, inttype len);. | |
int | i_mapper_memcmp (ir_node *call, void *ctx) |
A mapper for the strncmp-Function: inttype memcmp(void pointer a, void pointer b, inttype len);. | |
int | i_mapper_alloca (ir_node *call, void *ctx) |
A mapper for the alloca() function: pointer alloca(inttype size) Replaces the call by a Alloca(stack_alloc) node. | |
int | i_mapper_RuntimeCall (ir_node *node, runtime_rt *rt) |
A mapper for mapping unsupported instructions to runtime calls. |
Lowering of high level constructs.
Definition in file lowering.h.