fixed svn properties
[libfirm] / include / libfirm / ircons.h
index 74dda65..fad4db2 100644 (file)
  *    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_Mulh   (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);
  *
  *    Trivial.
  *
- *    ir_node *new_Quot (ir_node *memop, ir_node *op1, ir_node *op2, ir_mode *mode)
- *    -----------------------------------------------------------------------------
+ *    ir_node *new_Mulh (ir_node *op1, ir_node *op2, ir_mode *mode)
+ *    ------------------------------------------------------------
+ *
+ *    Returns the high order bits of a n*n=2n multiplication.
+ *
+ *    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
  *      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.
  *
  *      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.
  *
@@ -1442,6 +1448,18 @@ ir_node *new_rd_Minus  (dbg_info *db, ir_graph *irg, ir_node *block,
 ir_node *new_rd_Mul    (dbg_info *db, ir_graph *irg, ir_node *block,
                ir_node *op1, ir_node *op2, ir_mode *mode);
 
+/** Constructor for a Mulh 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   *op1   The first operand.
+ * @param   *op2   The second operand.
+ * @param   *mode  The mode of the operands and the result.
+ */
+ir_node *new_rd_Mulh   (dbg_info *db, ir_graph *irg, ir_node *block,
+               ir_node *op1, ir_node *op2, ir_mode *mode);
+
 /** Constructor for a Quot node.
  *
  * @param   *db    A pointer for debug information.
@@ -1451,9 +1469,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.
  *
@@ -1464,9 +1483,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.
  *
@@ -1477,9 +1497,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.
  *
@@ -1490,9 +1511,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.
  *
@@ -2251,6 +2273,7 @@ ir_node *new_r_Sub    (ir_graph *irg, ir_node *block,
  */
 ir_node *new_r_Minus  (ir_graph *irg, ir_node *block,
                ir_node *op,  ir_mode *mode);
+
 /** Constructor for a Mul node.
  *
  * @param   *irg   The ir graph the node  belongs to.
@@ -2262,6 +2285,17 @@ ir_node *new_r_Minus  (ir_graph *irg, ir_node *block,
 ir_node *new_r_Mul    (ir_graph *irg, ir_node *block,
                ir_node *op1, ir_node *op2, ir_mode *mode);
 
+/** Constructor for a Mulh node.
+ *
+ * @param   *irg   The ir graph the node  belongs to.
+ * @param   *block The ir block the node belongs to.
+ * @param   *op1   The first operand.
+ * @param   *op2   The second operand.
+ * @param   *mode  The mode of the operands and the result.
+ */
+ir_node *new_r_Mulh   (ir_graph *irg, ir_node *block,
+               ir_node *op1, ir_node *op2, ir_mode *mode);
+
 /** Constructor for a Quot node.
  *
  * @param   *irg   The ir graph the node  belongs to.
@@ -2270,9 +2304,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.
  *
@@ -2282,9 +2317,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.
  *
@@ -2294,9 +2330,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.
  *
@@ -2306,9 +2343,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.
  *
@@ -3061,6 +3099,17 @@ ir_node *new_d_Minus  (dbg_info *db, ir_node *op,  ir_mode *mode);
  */
 ir_node *new_d_Mul    (dbg_info *db, ir_node *op1, ir_node *op2, ir_mode *mode);
 
+/** Constructor for a Mulh node.
+ *
+ * Adds the node to the block in current_ir_block.
+ *
+ * @param   *db    A pointer for debug information.
+ * @param   *op1   The first operand.
+ * @param   *op2   The second operand.
+ * @param   *mode  The mode of the operands and the result.
+ */
+ir_node *new_d_Mulh   (dbg_info *db, ir_node *op1, ir_node *op2, ir_mode *mode);
+
 /** Constructor for a Quot node.
  *
  * Adds the node to the block in current_ir_block.
@@ -3070,8 +3119,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.
  *
@@ -3082,8 +3132,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.
  *
@@ -3094,8 +3145,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.
  *
@@ -3106,8 +3158,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.
  *
@@ -3871,6 +3924,15 @@ ir_node *new_Minus  (ir_node *op,  ir_mode *mode);
  */
 ir_node *new_Mul    (ir_node *op1, ir_node *op2, ir_mode *mode);
 
+/**
+ * Constructor for a Mulh node. Adds the node to the block in current_ir_block.
+ *
+ * @param   *op1   The first operand.
+ * @param   *op2   The second operand.
+ * @param   *mode  The mode of the operands and the result.
+ */
+ir_node *new_Mulh   (ir_node *op1, ir_node *op2, ir_mode *mode);
+
 /** Constructor for a Quot node.
  *
  * Adds the node to the block in current_ir_block.
@@ -3879,8 +3941,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.
  *
@@ -3890,8 +3953,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.
  *
@@ -3901,8 +3965,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.
  *
@@ -3912,8 +3977,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.
  *