* 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.
*
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.
* @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.
*
* @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.
*
* @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.
*
* @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.
*
*/
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.
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.
* @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.
*
* @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.
*
* @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.
*
* @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.
*
*/
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.
* @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.
*
* @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.
*
* @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.
*
* @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.
*
*/
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.
* @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.
*
* @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.
*
* @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.
*
* @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.
*