libFirm
lowering.h File Reference

Lowering of high level constructs. More...

#include <stddef.h>
#include "firm_types.h"
#include "begin.h"
#include "end.h"

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_tlower_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_tlower_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_tlower_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_tlower_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.

Detailed Description

Lowering of high level constructs.

Author
Michael Beck

Definition in file lowering.h.