X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Flibfirm%2Fircons.h;h=e28eba6decefcb123055f323ed456353105e6082;hb=a3c0f2167d6f2445ad566c493843418df1a64168;hp=a061508e673f615806da267119f7461db16d6fce;hpb=d894da0c43923945c1658cf9db4f2cc1bbddc503;p=libfirm diff --git a/include/libfirm/ircons.h b/include/libfirm/ircons.h index a061508e6..e28eba6de 100644 --- a/include/libfirm/ircons.h +++ b/include/libfirm/ircons.h @@ -276,10 +276,10 @@ * ir_node *new_Sub (ir_node *op1, ir_node *op2, ir_mode *mode); * ir_node *new_Minus (ir_node *op, ir_mode *mode); * ir_node *new_Mul (ir_node *op1, ir_node *op2, ir_mode *mode); - * ir_node *new_Quot (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode); - * 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); - * ir_node *new_Mod (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode); + * ir_node *new_Quot (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); + * ir_node *new_DivMod (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); + * ir_node *new_Div (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); + * ir_node *new_Mod (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state; * ir_node *new_Abs (ir_node *op, ir_mode *mode); * ir_node *new_And (ir_node *op1, ir_node *op2, ir_mode *mode); * ir_node *new_Or (ir_node *op1, ir_node *op2, ir_mode *mode); @@ -678,8 +678,8 @@ * * Trivial. * - * ir_node *new_Quot (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode) - * ----------------------------------------------------------------------------- + * ir_node *new_Quot (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state) + * ------------------------------------------------------------------------------------------------- * * Quot performs exact division of floating point numbers. It's mode * is Tuple, the mode of the result must match the Proj mode @@ -691,8 +691,8 @@ * A tuple containing a memory and a execution for modeling exceptions * and the result of the arithmetic operation. * - * ir_node *new_DivMod (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode) - * ------------------------------------------------------------------------------- + * ir_node *new_DivMod (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state) + * --------------------------------------------------------------------------------------------------- * * Performs Div and Mod on integer values. * @@ -700,13 +700,13 @@ * A tuple containing a memory and a execution for modeling exceptions * and the two result of the arithmetic operations. * - * ir_node *new_Div (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) + * ------------------------------------------------------------------------------------------------ * * Trivial. * - * ir_node *new_Mod (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode) - * ---------------------------------------------------------------------------- + * ir_node *new_Mod (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state) + * ------------------------------------------------------------------------------------------------ * * Trivial. * @@ -756,7 +756,7 @@ * ir_node *new_Rot (ir_node *op, ir_node *k, ir_mode *mode) * --------------------------------------------------------- * - * Rotates the operand to the (right??) by k bits. + * Rotates the operand to the (right?) by k bits. * * ir_node *new_Carry (ir_node *op1, ir_node *op2, ir_mode *mode) * ------------------------------------------------------------ @@ -1120,7 +1120,6 @@ #include "firm_common.h" #include "irnode.h" #include "irgraph.h" -#include "dbginfo.h" /*-------------------------------------------------------------------------*/ /* The raw interface */ @@ -1452,9 +1451,10 @@ ir_node *new_rd_Mul (dbg_info *db, ir_graph *irg, ir_node *block, * @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_Quot (dbg_info *db, ir_graph *irg, ir_node *block, - ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode); + ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); /** Constructor for a DivMod node. * @@ -1465,9 +1465,10 @@ ir_node *new_rd_Quot (dbg_info *db, ir_graph *irg, ir_node *block, * @param *op1 The first operand. * @param *op2 The second operand. * @param *mode The mode of the results. + * @param state The pinned state. */ ir_node *new_rd_DivMod (dbg_info *db, ir_graph *irg, ir_node *block, - ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode); + ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); /** Constructor for a Div node. * @@ -1478,9 +1479,10 @@ ir_node *new_rd_DivMod (dbg_info *db, ir_graph *irg, ir_node *block, * @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_Div (dbg_info *db, ir_graph *irg, ir_node *block, - ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode); + ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); /** Constructor for a Mod node. * @@ -1491,9 +1493,10 @@ ir_node *new_rd_Div (dbg_info *db, ir_graph *irg, ir_node *block, * @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_Mod (dbg_info *db, ir_graph *irg, ir_node *block, - ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode); + ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); /** Constructor for a Abs node. * @@ -1815,7 +1818,7 @@ ir_node *new_rd_Bad (ir_graph *irg); * Specifies constraints for a value. To support dataflow analyses. * * Example: If the value never exceeds '100' this is expressed by placing a - * Confirm node val = new_d_Confirm(db, val, 100, '<') on the dataflow edge. + * Confirm node val = new_d_Confirm(db, val, 100, '<=') on the dataflow edge. * * @param *irg The ir graph the node belong to. * @param *block The ir block the node belong to. @@ -1827,23 +1830,6 @@ ir_node *new_rd_Bad (ir_graph *irg); ir_node *new_rd_Confirm (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *val, ir_node *bound, pn_Cmp cmp); -/** Constructor for an exception region bounded Confirm node. - * - * Specifies constraints for a value. To support dataflow analyses. - * - * Example: If the value never exceeds '100' this is expressed by placing a - * Confirm node val = new_d_Confirm(db, val, 100, '<') on the dataflow edge. - * - * @param *irg The ir graph the node belong to. - * @param *block The ir block the node belong to. - * @param *db A pointer for debug information. - * @param *val The value we express a constraint for - * @param *bound The value to compare against. Must be a firm node, typically a constant. - * @param cmp The compare operation. - */ -ir_node *new_rd_bounded_Confirm (dbg_info *db, ir_graph *irg, ir_node *block, - ir_node *val, ir_node *bound, pn_Cmp cmp); - /** Constructor for an Unknown node. * * Represents an arbitrary value. Places the node in the start block. @@ -2288,9 +2274,10 @@ ir_node *new_r_Mul (ir_graph *irg, ir_node *block, * @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_Quot (ir_graph *irg, ir_node *block, - ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode); + ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); /** Constructor for a DivMod node. * @@ -2300,9 +2287,10 @@ ir_node *new_r_Quot (ir_graph *irg, ir_node *block, * @param *op1 The first operand. * @param *op2 The second operand. * @param *mode The mode of the results. + * @param state The pinned state. */ ir_node *new_r_DivMod (ir_graph *irg, ir_node *block, - ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode); + ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); /** Constructor for a Div node. * @@ -2312,9 +2300,10 @@ ir_node *new_r_DivMod (ir_graph *irg, ir_node *block, * @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_Div (ir_graph *irg, ir_node *block, - ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode); + ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); /** Constructor for a Mod node. * @@ -2324,9 +2313,10 @@ ir_node *new_r_Div (ir_graph *irg, ir_node *block, * @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_Mod (ir_graph *irg, ir_node *block, - ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode); + ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); /** Constructor for a Abs node. * @@ -2625,7 +2615,7 @@ ir_node *new_r_Bad (ir_graph *irg); * Specifies constraints for a value. To support dataflow analyses. * * Example: If the value never exceeds '100' this is expressed by placing a - * Confirm node val = new_d_Confirm(db, val, 100, '<') on the dataflow edge. + * Confirm node val = new_d_Confirm(db, val, 100, '<=') on the dataflow edge. * * @param *irg The ir graph the node belong to. * @param *block The ir block the node belong to. @@ -2636,22 +2626,6 @@ ir_node *new_r_Bad (ir_graph *irg); ir_node *new_r_Confirm(ir_graph *irg, ir_node *block, ir_node *val, ir_node *bound, pn_Cmp cmp); -/** Constructor for an exception region bounded Confirm node. - * - * Specifies constraints for a value. To support dataflow analyses. - * - * Example: If the value never exceeds '100' this is expressed by placing a - * Confirm node val = new_d_Confirm(db, val, 100, '<') on the dataflow edge. - * - * @param *irg The ir graph the node belong to. - * @param *block The ir block the node belong to. - * @param *val The value we express a constraint for - * @param *bound The value to compare against. Must be a firm node, typically a constant. - * @param cmp The compare operation. - */ -ir_node *new_r_bounded_Confirm(ir_graph *irg, ir_node *block, - ir_node *val, ir_node *bound, pn_Cmp cmp); - /** Constructor for a Unknown node. * * Represents an arbitrary value. Places the node in @@ -3104,8 +3078,9 @@ ir_node *new_d_Mul (dbg_info *db, ir_node *op1, ir_node *op2, ir_mode *mode); * @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_Quot (dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode); +ir_node *new_d_Quot (dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); /** Constructor for a DivMod node. * @@ -3116,8 +3091,9 @@ ir_node *new_d_Quot (dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, * @param *op1 The first operand. * @param *op2 The second operand. * @param *mode The mode of the results. + * @param state The pinned state. */ -ir_node *new_d_DivMod (dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode); +ir_node *new_d_DivMod (dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); /** Constructor for a Div node. * @@ -3128,8 +3104,9 @@ ir_node *new_d_DivMod (dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, * @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_Div (dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode); +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 Mod node. * @@ -3140,8 +3117,9 @@ ir_node *new_d_Div (dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, * @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_Mod (dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode); +ir_node *new_d_Mod (dbg_info *db, ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); /** Constructor for a Abs node. * @@ -3440,7 +3418,7 @@ ir_node *new_d_Bad (void); * Specifies constraints for a value. To support dataflow analyses. * * Example: If the value never exceeds '100' this is expressed by placing a - * Confirm node val = new_d_Confirm(db, val, 100, '<') on the dataflow edge. + * Confirm node val = new_d_Confirm(db, val, 100, '<=') on the dataflow edge. * * @param *db A pointer for debug information. * @param *val The value we express a constraint for @@ -3449,22 +3427,6 @@ ir_node *new_d_Bad (void); */ ir_node *new_d_Confirm (dbg_info *db, ir_node *val, ir_node *bound, pn_Cmp cmp); -/** Constructor for a exception region bounded Confirm node. - * - * Constructor for a Confirm node that is bound to a specific exceptin region. - * Adds the node to the block in current_ir_block. - * Specifies constraints for a value. To support dataflow analyses. - * - * Example: If the value never exceeds '100' this is expressed by placing a - * Confirm node val = new_d_Confirm(db, val, 100, '<') on the dataflow edge. - * - * @param *db A pointer for debug information. - * @param *val The value we express a constraint for - * @param *bound The value to compare against. Must be a firm node, typically a constant. - * @param cmp The compare operation. - */ -ir_node *new_d_bounded_Confirm (dbg_info *db, ir_node *val, ir_node *bound, pn_Cmp cmp); - /** Constructor for an Unknown node. * * Represents an arbitrary value. Places the node in @@ -3929,8 +3891,9 @@ ir_node *new_Mul (ir_node *op1, ir_node *op2, ir_mode *mode); * @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_Quot (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode); +ir_node *new_Quot (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); /** Constructor for a DivMod node. * @@ -3940,8 +3903,9 @@ ir_node *new_Quot (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode); * @param *op1 The first operand. * @param *op2 The second operand. * @param *mode The mode of the results. + * @param state The pinned state. */ -ir_node *new_DivMod (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode); +ir_node *new_DivMod (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); /** Constructor for a Div node. * @@ -3951,8 +3915,9 @@ ir_node *new_DivMod (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode); * @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_Div (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 Mod node. * @@ -3962,8 +3927,9 @@ ir_node *new_Div (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode); * @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_Mod (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode); +ir_node *new_Mod (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode, op_pin_state state); /** Constructor for a Abs node. * @@ -4247,7 +4213,7 @@ ir_node *new_Bad (void); * Adds the node to the block in current_ir_block. * * Example: If the value never exceeds '100' this is expressed by placing a - * Confirm node val = new_d_Confirm(db, val, 100, '<') on the dataflow edge. + * Confirm node val = new_d_Confirm(db, val, 100, '<=') on the dataflow edge. * * @param *val The value we express a constraint for * @param *bound The value to compare against. Must be a firm node, typically a constant. @@ -4255,20 +4221,6 @@ ir_node *new_Bad (void); */ ir_node *new_Confirm (ir_node *val, ir_node *bound, pn_Cmp cmp); -/** Constructor for an exception region bounded Confirm node. - * - * Specifies constraints for a value. To support dataflow analyses. - * Adds the node to the block in current_ir_block. - * - * Example: If the value never exceeds '100' this is expressed by placing a - * Confirm node val = new_d_Confirm(db, val, 100, '<') on the dataflow edge. - * - * @param *val The value we express a constraint for - * @param *bound The value to compare against. Must be a firm node, typically a constant. - * @param cmp The compare operation. - */ -ir_node *new_bounded_Confirm (ir_node *val, ir_node *bound, pn_Cmp cmp); - /** Constructor for an Unknown node. * * Represents an arbitrary value. Places the node in