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);
196 int part_block_used);
int i_mapper_acos(ir_node *call)
A mapper for the floating point acos(a): floattype acos(floattype a);.
void lower_highlevel_graph(ir_graph *irg)
Replaces Offsets and TypeConsts by a real constant if possible.
enum ikind kind
must be INTRINSIC_INSTR
int i_mapper_log(ir_node *call)
A mapper for the floating point log(a): floattype log(floattype a);.
int i_mapper_memmove(ir_node *call)
A mapper for the memmove-Function: void pointer memmove(void pointer d, void pointer s...
int i_mapper_cbrt(ir_node *call)
A mapper for the floating point cbrt(v): floattype sqrt(floattype v);.
the record represents an intrinsic instruction
i_mapper_func * i_mapper
the mapper function to call
void lower_highlevel(void)
Replaces Offsets and TypeConsts by a real constant if possible.
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.
struct ir_graph ir_graph
Procedure Graph.
int i_mapper_sqrt(ir_node *call)
A mapper for the floating point sqrt(v): floattype sqrt(floattype v);.
int i_mapper_asin(ir_node *call)
A mapper for the floating point asin(a): floattype asin(floattype a);.
int i_mapper_log2(ir_node *call)
A mapper for the floating point log(a): floattype log(floattype a);.
i_mapper_func * i_mapper
the mapper function to call
the record represents an intrinsic call
int i_mapper_abs(ir_node *call)
A mapper for the integer/float absolute value: type abs(type v).
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_memcmp(ir_node *call)
A mapper for the strncmp-Function: inttype memcmp(void pointer a, void pointer b, inttype len);...
int i_mapper_log10(ir_node *call)
A mapper for the floating point log(a): floattype log(floattype a);.
int i_mapper_strlen(ir_node *call)
A mapper for the strlen-Function: inttype strlen(char pointer a);.
i_call_record i_call
used for call records
ir_op * op
the opcode that must be mapped.
int i_mapper_exp(ir_node *call)
A mapper for the floating point exp(a): floattype exp(floattype a);.
int i_mapper_sin(ir_node *call)
A mapper for the floating point sin(a): floattype sin(floattype a);.
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_func)(ir_node *node)
An intrinsic mapper function.
int i_mapper_exp2(ir_node *call)
A mapper for the floating point exp2(a): floattype exp2(floattype a);.
int i_mapper_tan(ir_node *call)
A mapper for the floating point tan(a): floattype tan(floattype a);.
An intrinsic call record.
An intrinsic instruction record.
void ir_lower_intrinsics(ir_graph *irg, ir_intrinsics_map *map)
Go through all graphs and map calls to intrinsic functions and instructions.
struct ir_op ir_op
Node Opcode.
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
struct ir_entity ir_entity
Entity.
ikind
kind of an instruction record
void lower_const_code(void)
does the same as lower_highlevel for all nodes on the const code irg
ir_entity * i_ent
the entity representing an intrinsic call
int i_mapper_cos(ir_node *call)
A mapper for the floating point sin(a): floattype cos(floattype a);.
void lower_mux(ir_graph *irg, lower_mux_callback *cb_func)
Lowers all mux nodes in the given graph.
int lower_mux_callback(ir_node *mux)
Used as callback, whenever a lowerable mux is found.
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_pow(ir_node *call)
A mapper for the floating point pow(a, b): floattype pow(floattype a, floattype b);.
enum ikind kind
must be INTRINSIC_CALL
i_instr_record i_instr
used for isnstruction records
int i_mapper_tanh(ir_node *call)
A mapper for the floating point tanh(a): floattype tanh(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);...
struct ir_mode ir_mode
SSA Value mode.
struct ir_node ir_node
Procedure Graph Node.
enum ikind kind
kind of record
int i_mapper_cosh(ir_node *call)
A mapper for the floating point cosh(a): floattype cosh(floattype a);.
int i_mapper_atan(ir_node *call)
A mapper for the floating point atan(a): floattype atan(floattype a);.
int i_mapper_exp10(ir_node *call)
A mapper for the floating point exp10(a): floattype exp10(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...
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);...