11 #ifndef FIRM_LOWERING_H 12 #define FIRM_LOWERING_H 16 #include "firm_types.h" 79 unsigned min_large_size,
int allow_misalignments);
92 unsigned spare_size,
ir_mode *selector_mode);
189 int part_block_used);
void ir_free_intrinsics_map(ir_intrinsics_map *map)
Frees resources occupied by an intrisics_map created by ir_create_intrinsics_map().
int i_mapper_cos(ir_node *call)
A mapper for the floating point sin(a): floattype cos(floattype a);.
int i_mapper_abs(ir_node *call)
A mapper for the integer/float absolute value: type abs(type v).
void lower_mux(ir_graph *irg, lower_mux_callback *cb_func)
Lowers all mux nodes in the given graph.
int i_mapper_log10(ir_node *call)
A mapper for the floating point log(a): floattype log(floattype a);.
int i_mapper_pow(ir_node *call)
A mapper for the floating point pow(a, b): floattype pow(floattype a, floattype b);.
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.
int i_mapper_tanh(ir_node *call)
A mapper for the floating point tanh(a): floattype tanh(floattype a);.
int i_mapper_atan(ir_node *call)
A mapper for the floating point atan(a): floattype atan(floattype a);.
i_mapper_func * i_mapper
the mapper function to call
struct ir_op ir_op
Node Opcode.
the record represents an intrinsic call
int i_mapper_sin(ir_node *call)
A mapper for the floating point sin(a): floattype sin(floattype a);.
int i_mapper_cosh(ir_node *call)
A mapper for the floating point cosh(a): floattype cosh(floattype a);.
int i_mapper_strncmp(ir_node *call)
A mapper for the strncmp-Function: inttype strncmp(char pointer a, char pointer b, inttype len);.
struct ir_intrinsics_map ir_intrinsics_map
ikind
kind of an instruction record
int i_mapper_exp2(ir_node *call)
A mapper for the floating point exp2(a): floattype exp2(floattype a);.
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 Copy...
void lower_const_code(void)
Performs lowering on all nodes of the const code irg.
void lower_highlevel_graph(ir_graph *irg)
Replaces Offsets and TypeConsts by a real constant if possible.
int( i_mapper_func)(ir_node *node)
An intrinsic mapper function.
int i_mapper_cbrt(ir_node *call)
A mapper for the floating point cbrt(v): floattype sqrt(floattype v);.
int lower_mux_callback(ir_node *mux)
Used as callback, whenever a lowerable mux is found.
i_call_record i_call
used for call records
void lower_highlevel(void)
Performs lowering on all graphs.
int i_mapper_log(ir_node *call)
A mapper for the floating point log(a): floattype log(floattype a);.
int i_mapper_memset(ir_node *call)
A mapper for the memset-Function: void pointer memset(void pointer d, inttype C, inttype len);...
int i_mapper_asin(ir_node *call)
A mapper for the floating point asin(a): floattype asin(floattype a);.
i_mapper_func * i_mapper
the mapper function to call
int i_mapper_memcpy(ir_node *call)
A mapper for the memcpy-Function: void pointer memcpy(void pointer d, void pointer s...
int i_mapper_exp10(ir_node *call)
A mapper for the floating point exp10(a): floattype exp10(floattype a);.
int i_mapper_memcmp(ir_node *call)
A mapper for the strncmp-Function: inttype memcmp(void pointer a, void pointer b, inttype len);...
int i_mapper_log2(ir_node *call)
A mapper for the floating point log(a): floattype log(floattype a);.
ir_entity * i_ent
the entity representing an intrinsic call
ir_op * op
the opcode that must be mapped.
int i_mapper_strcmp(ir_node *call)
A mapper for the strcmp-Function: inttype strcmp(char pointer a, char pointer b);.
int i_mapper_sinh(ir_node *call)
A mapper for the floating point sinh(a): floattype sinh(floattype a);.
int i_mapper_strcpy(ir_node *call)
A mapper for the strcpy-Function: char pointer strcpy(char pointer a, char pointer b);...
int i_mapper_acos(ir_node *call)
A mapper for the floating point acos(a): floattype acos(floattype a);.
struct ir_mode ir_mode
SSA Value mode.
int i_mapper_tan(ir_node *call)
A mapper for the floating point tan(a): floattype tan(floattype a);.
enum ikind kind
must be INTRINSIC_CALL
int i_mapper_exp(ir_node *call)
A mapper for the floating point exp(a): floattype exp(floattype a);.
ir_intrinsics_map * ir_create_intrinsics_map(i_record *list, size_t length, int part_block_used)
Create a new intrinsic lowering map which can be used by ir_lower_intrinsics.
int i_mapper_memmove(ir_node *call)
A mapper for the memmove-Function: void pointer memmove(void pointer d, void pointer s...
i_instr_record i_instr
used for isnstruction records
An intrinsic call record.
An intrinsic instruction record.
struct ir_entity ir_entity
Entity.
struct ir_node ir_node
Procedure Graph Node.
void ir_lower_intrinsics(ir_graph *irg, ir_intrinsics_map *map)
Go through all graphs and map calls to intrinsic functions and instructions.
int i_mapper_sqrt(ir_node *call)
A mapper for the floating point sqrt(v): floattype sqrt(floattype v);.
struct ir_graph ir_graph
Procedure Graph.
the record represents an intrinsic instruction
int i_mapper_strlen(ir_node *call)
A mapper for the strlen-Function: inttype strlen(char pointer a);.