iro_Start, iro_End, iro_Jmp, iro_IJmp, iro_Cond, iro_Return,
iro_Const, iro_SymConst,
iro_Sel,
- iro_Call, iro_Add, iro_Sub, iro_Minus, iro_Mul, iro_Quot, iro_DivMod,
+ iro_Call, iro_Add, iro_Sub, iro_Minus, iro_Mul, iro_Mulh, iro_Quot, iro_DivMod,
iro_Div, iro_Mod, iro_Abs, iro_And, iro_Or, iro_Eor, iro_Not,
iro_Cmp, iro_Shl, iro_Shr, iro_Shrs, iro_Rot, iro_Conv, iro_Cast,
iro_Carry, iro_Borrow,
extern ir_op *op_Sub; ir_op *get_op_Sub (void);
extern ir_op *op_Minus; ir_op *get_op_Minus (void);
extern ir_op *op_Mul; ir_op *get_op_Mul (void);
+extern ir_op *op_Mulh; ir_op *get_op_Mulh (void);
extern ir_op *op_Quot; ir_op *get_op_Quot (void);
extern ir_op *op_DivMod; ir_op *get_op_DivMod (void);
extern ir_op *op_Div; ir_op *get_op_Div (void);
op_pin_state get_op_pinned(const ir_op *op);
/** Sets pinned in the opcode. Setting it to floating has no effect
- for Block, Phi and control flow nodes. */
+ for Block, Phi and control flow nodes. */
void set_op_pinned(ir_op *op, op_pin_state pinned);
/** Returns the next free IR opcode number, allows to register user ops */
*/
void set_generic_function_ptr(ir_op *op, op_func func);
-/**
- * The get_nodes_block operation.
- * This operation returns the block of a node.
- * For block nodes, it returns its Macroblock header.
- */
-typedef ir_node *(*get_block_func)(const ir_node *self);
-
-/**
- * The set_nodes_block operation.
- * This operation sets the block of a node.
- */
-typedef void (*set_block_func)(ir_node *self, ir_node *block);
-
/**
* The compute value operation.
* This operation evaluates an IR node into a tarval if possible,
* io_op Operations.
*/
typedef struct {
- get_block_func get_block; /**< Return the block of a node. */
- set_block_func set_block; /**< Sets the block of a node. */
computed_value_func computed_value; /**< Evaluates a node into a tarval if possible. */
equivalent_node_func equivalent_node; /**< Optimizes the node by returning an equivalent one. */
transform_node_func transform_node; /**< Optimizes the node by transforming it. */
verify_node_func verify_node; /**< Verify the node. */
verify_proj_node_func verify_proj_node; /**< Verify the Proj node. */
dump_node_func dump_node; /**< Dump a node. */
- op_func generic; /**< A generic function. */
+ op_func generic; /**< A generic function pointer. */
} ir_op_ops;
/**
* The behavior of new opcode depends on the operations \c ops and the \c flags.
*/
ir_op *new_ir_op(unsigned code, const char *name, op_pin_state p,
- unsigned flags, op_arity opar, int op_index, size_t attr_size,
- const ir_op_ops *ops);
+ unsigned flags, op_arity opar, int op_index, size_t attr_size,
+ const ir_op_ops *ops);
/** Returns the ir_op_ops of an ir_op. */
const ir_op_ops *get_op_ops(const ir_op *op);