X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Flibfirm%2Fircons.h;h=8b667876a62b74e07960caa4eabb852b7b7b501a;hb=fa9c992b5f23e7a059ac91fdd04b409b951ebcc4;hp=44f85ac79e57b3b0e4a54a4bdd8fcbb1837ec274;hpb=9ab3d84833ffff735112b3a08558aa83258121ba;p=libfirm diff --git a/include/libfirm/ircons.h b/include/libfirm/ircons.h index 44f85ac79..8b667876a 100644 --- a/include/libfirm/ircons.h +++ b/include/libfirm/ircons.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -201,7 +201,7 @@ * set_cur_block(block). If several blocks are constructed in parallel block * switches need to be performed constantly. * - * To generate a Block node (with the comfortable interface) it's predecessor + * To generate a Block node (with the comfortable interface), its predecessor * control flow nodes need not be known. In case of cyclic control flow these * can not be known when the block is constructed. With add_immBlock_pred(block, * cfnode) predecessors can be added to the block. If all predecessors are @@ -289,7 +289,7 @@ * ir_node *new_Shl (ir_node *op, ir_node *k, ir_mode *mode); * ir_node *new_Shr (ir_node *op, ir_node *k, ir_mode *mode); * ir_node *new_Shrs (ir_node *op, ir_node *k, ir_mode *mode); - * ir_node *new_Rot (ir_node *op, ir_node *k, ir_mode *mode); + * ir_node *new_Rotl (ir_node *op, ir_node *k, ir_mode *mode); * ir_node *new_Cmp (ir_node *op1, ir_node *op2); * ir_node *new_Conv (ir_node *op, ir_mode *mode); * ir_node *new_Cast (ir_node *op, ir_type *to_tp); @@ -304,7 +304,6 @@ * ir_node *new_Proj (ir_node *arg, ir_mode *mode, long proj); * ir_node *new_NoMem (void); * ir_node *new_Mux (ir_node *sel, ir_node *ir_false, ir_node *ir_true, ir_mode *mode); - * ir_node *new_Psi (int arity, ir_node *conds[], ir_node *vals[], ir_mode *mode); * ir_node *new_CopyB (ir_node *store, ir_node *dst, ir_node *src, ir_type *data_type); * ir_node *new_InstOf (ir_node *store, ir_node obj, ir_type *ent); * ir_node *new_Raise (ir_node *store, ir_node *obj); @@ -759,10 +758,10 @@ * * Arithmetic shift right, i.e., sign extended. * - * ir_node *new_Rot (ir_node *op, ir_node *k, ir_mode *mode) + * ir_node *new_Rotl (ir_node *op, ir_node *k, ir_mode *mode) * --------------------------------------------------------- * - * Rotates the operand to the (right?) by k bits. + * Rotates the operand to the left by k bits. * * ir_node *new_Carry (ir_node *op1, ir_node *op2, ir_mode *mode) * ------------------------------------------------------------ @@ -847,12 +846,6 @@ * ir_true, else ir_false; * * - * ir_node *new_Psi (int arity, ir_node *conds[], ir_node *vals[], ir_mode *mode) - * ----------------------------------------------------------------------------- - * - * Creates a Psi node. This node implements the following semantic: - * Enter it here!!! - * * * OPERATIONS TO MANAGE MEMORY EXPLICITLY * -------------------------------------- @@ -1216,7 +1209,7 @@ ir_node *new_rd_Cond (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *c) /** Constructor for a Return node. * - * Returns the memory an zero or more return values. Only node that + * Returns the memory and zero or more return values. Only node that * can end regular control flow. * * @param *db A pointer for debug information. @@ -1515,6 +1508,20 @@ ir_node *new_rd_DivMod (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *new_rd_Div (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); +/** Constructor for a remainderless Div node. + * + * @param *db A pointer for debug information. + * @param *irg The IR graph the node belongs to. + * @param *block The IR block the node belongs to. + * @param *memop The store needed to model exceptions + * @param *op1 The first operand. + * @param *op2 The second operand. + * @param *mode The mode of the result. + * @param state The pinned state. + */ +ir_node *new_rd_DivRL (dbg_info *db, ir_graph *irg, ir_node *block, + ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); + /** Constructor for a Mod node. * * @param *db A pointer for debug information. @@ -1634,7 +1641,7 @@ ir_node *new_rd_Shr (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *new_rd_Shrs (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *op, ir_node *k, ir_mode *mode); -/** Constructor for a Rot node. +/** Constructor for a Rotl node. * * @param *db A pointer for debug information. * @param *irg The IR graph the node belongs to. @@ -1643,7 +1650,7 @@ ir_node *new_rd_Shrs (dbg_info *db, ir_graph *irg, ir_node *block, * @param *k The number of bits to rotate the operand. * @param *mode The mode of the operand. */ -ir_node *new_rd_Rot (dbg_info *db, ir_graph *irg, ir_node *block, +ir_node *new_rd_Rotl (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *op, ir_node *k, ir_mode *mode); @@ -1744,7 +1751,7 @@ ir_node *new_rd_Store (dbg_info *db, ir_graph *irg, ir_node *block, * @param where Where to allocate the variable, either heap_alloc or stack_alloc. */ ir_node *new_rd_Alloc (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store, - ir_node *size, ir_type *alloc_type, where_alloc where); + ir_node *size, ir_type *alloc_type, ir_where_alloc where); /** Constructor for a Free node. * @@ -1761,7 +1768,7 @@ ir_node *new_rd_Alloc (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *st * @param where Where the variable was allocated, either heap_alloc or stack_alloc. */ ir_node *new_rd_Free (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store, - ir_node *ptr, ir_node *size, ir_type *free_type, where_alloc where); + ir_node *ptr, ir_node *size, ir_type *free_type, ir_where_alloc where); /** Constructor for a Sync node. * @@ -1947,19 +1954,6 @@ ir_node *new_rd_NoMem (ir_graph *irg); ir_node *new_rd_Mux (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *sel, ir_node *ir_false, ir_node *ir_true, ir_mode *mode); -/** Constructor for a Psi node. - * - * @param *db A pointer for debug information. - * @param *irg The IR graph the node belong to. - * @param *block The block the node belong to. - * @param *arity The arity of the conditions - * @param *conds The array of mode_b conditions, length must be equal arity - * @param *vals The array of mode values, length must be equal arity + 1 - * @param *mode The mode of the node (must be the mode of all vals). - */ -ir_node *new_rd_Psi (dbg_info *db, ir_graph *irg, ir_node *block, - int arity, ir_node *conds[], ir_node *vals[], ir_mode *mode); - /** Constructor for a CopyB node. * * @param *db A pointer for debug information. @@ -2115,7 +2109,7 @@ ir_node *new_r_Cond (ir_graph *irg, ir_node *block, ir_node *c); /** Constructor for a Return node. * - * Returns the memory an zero or more return values. Only node that + * Returns the memory and zero or more return values. Only node that * can end regular control flow. * * @param *irg The IR graph the node belongs to. @@ -2349,6 +2343,19 @@ ir_node *new_r_DivMod (ir_graph *irg, ir_node *block, ir_node *new_r_Div (ir_graph *irg, ir_node *block, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); +/** Constructor for a remainderless Div node. + * + * @param *irg The IR graph the node belongs to. + * @param *block The IR block the node belongs to. + * @param *memop The store needed to model exceptions + * @param *op1 The first operand. + * @param *op2 The second operand. + * @param *mode The mode of the result. + * @param state The pinned state. + */ +ir_node *new_r_DivRL (ir_graph *irg, ir_node *block, + ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); + /** Constructor for a Mod node. * * @param *irg The IR graph the node belongs to. @@ -2459,7 +2466,7 @@ ir_node *new_r_Shr (ir_graph *irg, ir_node *block, ir_node *new_r_Shrs (ir_graph *irg, ir_node *block, ir_node *op, ir_node *k, ir_mode *mode); -/** Constructor for a Rot node. +/** Constructor for a Rotl node. * * @param *irg The IR graph the node belongs to. * @param *block The IR block the node belongs to. @@ -2467,7 +2474,7 @@ ir_node *new_r_Shrs (ir_graph *irg, ir_node *block, * @param *k The number of bits to rotate the operand. * @param *mode The mode of the operand. */ -ir_node *new_r_Rot (ir_graph *irg, ir_node *block, +ir_node *new_r_Rotl (ir_graph *irg, ir_node *block, ir_node *op, ir_node *k, ir_mode *mode); /** Constructor for a Conv node. @@ -2560,7 +2567,7 @@ ir_node *new_r_Store (ir_graph *irg, ir_node *block, * @param where Where to allocate the variable, either heap_alloc or stack_alloc. */ ir_node *new_r_Alloc (ir_graph *irg, ir_node *block, ir_node *store, - ir_node *size, ir_type *alloc_type, where_alloc where); + ir_node *size, ir_type *alloc_type, ir_where_alloc where); /** Constructor for a Free node. * @@ -2576,7 +2583,7 @@ ir_node *new_r_Alloc (ir_graph *irg, ir_node *block, ir_node *store, * @param where Where the variable was allocated, either heap_alloc or stack_alloc. */ ir_node *new_r_Free (ir_graph *irg, ir_node *block, ir_node *store, - ir_node *ptr, ir_node *size, ir_type *free_type, where_alloc where); + ir_node *ptr, ir_node *size, ir_type *free_type, ir_where_alloc where); /** Constructor for a Sync node. * @@ -2764,18 +2771,6 @@ ir_node *new_r_NoMem (ir_graph *irg); ir_node *new_r_Mux (ir_graph *irg, ir_node *block, ir_node *sel, ir_node *ir_false, ir_node *ir_true, ir_mode *mode); -/** Constructor for a Psi node. - * - * @param *irg The IR graph the node belong to. - * @param *block The block the node belong to. - * @param *arity The arity of the conditions - * @param *conds The array of mode_b conditions, length must be equal arity - * @param *vals The array of mode values, length must be equal arity + 1 - * @param *mode The mode of the node (must be the mode of all vals). - */ -ir_node *new_r_Psi (ir_graph *irg, ir_node *block, - int arity, ir_node *conds[], ir_node *vals[], ir_mode *mode); - /** Constructor for a CopyB node. * * @param *irg The IR graph the node belong to. @@ -2943,7 +2938,7 @@ ir_node *new_d_Cond (dbg_info *db, ir_node *c); * * Adds the node to the block in current_ir_block. * - * Returns the memory an zero or more return values. Only node that + * Returns the memory and zero or more return values. Only node that * can end regular control flow. * * @param *db A pointer for debug information. @@ -3167,6 +3162,19 @@ ir_node *new_d_DivMod (dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, */ ir_node *new_d_Div (dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); +/** Constructor for a remainderless Div node. + * + * Adds the node to the block in current_ir_block. + * + * @param *db A pointer for debug information. + * @param *memop The store needed to model exceptions + * @param *op1 The first operand. + * @param *op2 The second operand. + * @param *mode The mode of the result. + * @param state The pinned state. + */ +ir_node *new_d_DivRL (dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); + /** Constructor for a Mod node. * * Adds the node to the block in current_ir_block. @@ -3266,7 +3274,7 @@ ir_node *new_d_Shr (dbg_info *db, ir_node *op, ir_node *k, ir_mode *mode); */ ir_node *new_d_Shrs (dbg_info *db, ir_node *op, ir_node *k, ir_mode *mode); -/** Constructor for a Rot node. +/** Constructor for a Rotl node. * * Adds the node to the block in current_ir_block. * @@ -3275,7 +3283,7 @@ ir_node *new_d_Shrs (dbg_info *db, ir_node *op, ir_node *k, ir_mode *mode); * @param *k The number of bits to rotate the operand. * @param *mode The mode of the operand. */ -ir_node *new_d_Rot (dbg_info *db, ir_node *op, ir_node *k, ir_mode *mode); +ir_node *new_d_Rotl (dbg_info *db, ir_node *op, ir_node *k, ir_mode *mode); /** Constructor for a Cmp node. * @@ -3385,7 +3393,7 @@ ir_node *new_d_Store (dbg_info *db, ir_node *store, ir_node *addr, ir_node *val * @param where Where to allocate the variable, either heap_alloc or stack_alloc. */ ir_node *new_d_Alloc (dbg_info *db, ir_node *store, ir_node *size, ir_type *alloc_type, - where_alloc where); + ir_where_alloc where); /** Constructor for a Free node. * @@ -3401,7 +3409,7 @@ ir_node *new_d_Alloc (dbg_info *db, ir_node *store, ir_node *size, ir_type *all * @param where Where the variable was allocated, either heap_alloc or stack_alloc. */ ir_node *new_d_Free (dbg_info *db, ir_node *store, ir_node *ptr, ir_node *size, - ir_type *free_type, where_alloc where); + ir_type *free_type, ir_where_alloc where); /** Constructor for a Sync node. * @@ -3576,17 +3584,6 @@ ir_node *new_d_NoMem (void); ir_node *new_d_Mux (dbg_info *db, ir_node *sel, ir_node *ir_false, ir_node *ir_true, ir_mode *mode); -/** Constructor for a Psi node. - * - * @param *db A pointer for debug information. - * @param *arity The arity of the conditions - * @param *conds The array of mode_b conditions, length must be equal arity - * @param *vals The array of mode values, length must be equal arity + 1 - * @param *mode The mode of the node (must be the mode of all vals). - */ -ir_node *new_d_Psi (dbg_info *db, - int arity, ir_node *conds[], ir_node *vals[], ir_mode *mode); - /** Constructor for a CopyB node. * * @param *db A pointer for debug information. @@ -3743,7 +3740,7 @@ ir_node *new_Cond (ir_node *c); /** Constructor for a Return node. * - * Returns the memory an zero or more return values. Only node that + * Returns the memory and zero or more return values. Only node that * can end regular control flow. Adds the node to the block in current_ir_block. * * @param *store The state of memory. @@ -3989,6 +3986,18 @@ ir_node *new_DivMod (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, */ ir_node *new_Div (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); +/** Constructor for a remainderless Div node. + * + * Adds the node to the block in current_ir_block. + * + * @param *memop The store needed to model exceptions + * @param *op1 The first operand. + * @param *op2 The second operand. + * @param *mode The mode of the result. + * @param state The pinned state. + */ +ir_node *new_DivRL (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); + /** Constructor for a Mod node. * * Adds the node to the block in current_ir_block. @@ -4076,7 +4085,7 @@ ir_node *new_Shr (ir_node *op, ir_node *k, ir_mode *mode); */ ir_node *new_Shrs (ir_node *op, ir_node *k, ir_mode *mode); -/** Constructor for a Rot node. +/** Constructor for a Rotl node. * * Adds the node to the block in current_ir_block. * @@ -4084,7 +4093,7 @@ ir_node *new_Shrs (ir_node *op, ir_node *k, ir_mode *mode); * @param *k The number of bits to rotate the operand. * @param *mode The mode of the operand. */ -ir_node *new_Rot (ir_node *op, ir_node *k, ir_mode *mode); +ir_node *new_Rotl (ir_node *op, ir_node *k, ir_mode *mode); /** Constructor for a Cmp node. * @@ -4180,7 +4189,7 @@ ir_node *new_Store (ir_node *store, ir_node *addr, ir_node *val); * @param where Where to allocate the variable, either heap_alloc or stack_alloc. */ ir_node *new_Alloc (ir_node *store, ir_node *size, ir_type *alloc_type, - where_alloc where); + ir_where_alloc where); /** Constructor for a Free node. * @@ -4195,7 +4204,7 @@ ir_node *new_Alloc (ir_node *store, ir_node *size, ir_type *alloc_type, * @param where Where the variable was allocated, either heap_alloc or stack_alloc. */ ir_node *new_Free (ir_node *store, ir_node *ptr, ir_node *size, - ir_type *free_type, where_alloc where); + ir_type *free_type, ir_where_alloc where); /** Constructor for a Sync node. * @@ -4318,15 +4327,6 @@ ir_node *new_NoMem (void); */ ir_node *new_Mux (ir_node *sel, ir_node *ir_false, ir_node *ir_true, ir_mode *mode); -/** Constructor for a Psi node. - * - * @param *arity The arity of the conditions - * @param *conds The array of mode_b conditions, length must be equal arity - * @param *vals The array of mode values, length must be equal arity + 1 - * @param *mode The mode of the node (must be the mode of all vals). - */ -ir_node *new_Psi (int arity, ir_node *conds[], ir_node *vals[], ir_mode *mode); - /** Constructor for a CopyB node. * * Adds the node to the block in current_ir_block.