* ir_node *new_Sel (ir_node *store, ir_node *objptr, int arity,
* ir_node **in, ir_entity *ent);
* ir_node *new_Call (ir_node *store, ir_node *callee, int arity,
- * ir_node **in, type_method *type);
+ * ir_node **in, type_method *type);
+ * ir_node *new_Builtin(ir_node *store, ir_builtin_kind kind, int arity,
+ * ir_node **in, type_method *type);
* ir_node *new_Add (ir_node *op1, ir_node *op2, ir_mode *mode);
* ir_node *new_Sub (ir_node *op1, ir_node *op2, ir_mode *mode);
* ir_node *new_Minus (ir_node *op, ir_mode *mode);
* A tuple containing the eventually changed store and the procedure
* results.
* Attributes:
- * attr.call Contains the type information for the procedure.
+ * attr.call Contains the attributes for the procedure.
*
+ * ir_node *new_Builtin(ir_node *store, ir_builtin_kind kind, int arity, ir_node **in,
+ * -----------------------------------------------------------------------------------
+ * type_method *type)
+ * ------------------
+ *
+ * Creates a builtin call.
+ *
+ * Parameters
+ * *store The actual store.
+ * kind Describes the called builtin.
+ * arity The number of procedure parameters.
+ * **in An array with the pointers to the parameters.
+ * The constructor copies this array.
+ * *type Type information of the procedure called.
+ *
+ * Inputs:
+ * The store, the kind and the parameters.
+ * Output:
+ * A tuple containing the eventually changed store and the procedure
+ * results.
+ * Attributes:
+ * attr.builtin Contains the attributes for the called builtin.
*
* ir_node *new_Add (ir_node *op1, ir_node *op2, ir_mode *mode)
* ------------------------------------------------------------
/** Constructor for a Call node.
*
- * Represents all kinds of method and function calls.
+ * Represents all kinds of method and function calls.
*
* @param *db A pointer for debug information.
* @param *irg The IR graph the node belongs to.
ir_node *new_rd_Call (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store,
ir_node *callee, int arity, ir_node *in[], ir_type *tp);
+/** Constructor for a ´Builtin node.
+ *
+ * Represents a call of a backend-specific builtin..
+ *
+ * @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 *store The current memory state.
+ * @param arity The number of procedure parameters.
+ * @param *in[] An array with the procedure parameters. The constructor copies this array.
+ * @param kind The kind of the called builtin.
+ * @param *tp Type information of the procedure called.
+ */
+ir_node *new_rd_Builtin(dbg_info *db, ir_graph *irg, ir_node *block, ir_node *store,
+ int arity, ir_node *in[], ir_builtin_kind kind, ir_type *tp);
+
/** Constructor for a Add node.
*
* @param *db A pointer for debug information.
ir_node *new_rd_Conv (dbg_info *db, ir_graph *irg, ir_node *block,
ir_node *op, ir_mode *mode);
+/** Constructor for a strictConv 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 *op The operand.
+ * @param *mode The mode of this the operand muss be converted .
+ */
+ir_node *new_rd_strictConv (dbg_info *db, ir_graph *irg, ir_node *block,
+ ir_node *op, ir_mode *mode);
+
/** Constructor for a Cast node.
*
* High level type cast.
/** Constructor for a Call node.
*
- * Represents all kinds of method and function calls.
+ * Represents all kinds of method and function calls.
*
* @param *irg The IR graph the node belongs to.
* @param *block The IR block the node belongs to.
* @param *tp Type information of the procedure called.
*/
ir_node *new_r_Call (ir_graph *irg, ir_node *block, ir_node *store,
- ir_node *callee, int arity, ir_node *in[],
- ir_type *tp);
+ ir_node *callee, int arity, ir_node *in[], ir_type *tp);
+
+/** Constructor for a Builtin node.
+ *
+ * Represents a call of a backend-specific builtin..
+ *
+ * @param *irg The IR graph the node belongs to.
+ * @param *block The IR block the node belongs to.
+ * @param *store The actual store.
+ * @param arity The number of procedure parameters.
+ * @param *in[] An array with the pointers to the parameters. The constructor copies this array.
+ * @param kind The kind of the called builtin.
+ * @param *tp Type information of the procedure called.
+ */
+ir_node *new_r_Builtin(ir_graph *irg, ir_node *block, ir_node *store,
+ int arity, ir_node *in[], ir_builtin_kind kind, ir_type *tp);
/** Constructor for a Add node.
*
ir_node *new_r_Conv (ir_graph *irg, ir_node *block,
ir_node *op, ir_mode *mode);
+/** Constructor for a strict Conv node.
+ *
+ * @param *irg The IR graph the node belongs to.
+ * @param *block The IR block the node belongs to.
+ * @param *op The operand.
+ * @param *mode The mode of this the operand muss be converted .
+ */
+ir_node *new_r_strictConv (ir_graph *irg, ir_node *block,
+ ir_node *op, ir_mode *mode);
+
/** Constructor for a Cast node.
*
* High level type cast
/** Constructor for a Call node.
*
- * Represents all kinds of method and function calls.
- * Adds the node to the block in current_ir_block.
+ * Represents all kinds of method and function calls.
+ * Adds the node to the block in current_ir_block.
*
* @param *db A pointer for debug information.
* @param *store The actual store.
* @param *tp Type information of the procedure called.
*/
ir_node *new_d_Call (dbg_info *db, ir_node *store, ir_node *callee, int arity, ir_node *in[],
- ir_type *tp);
+ ir_type *tp);
+
+/** Constructor for a Builtin node.
+ *
+ * Represents a call of a backend-specific builtin..
+ * Adds the node to the block in current_ir_block.
+ *
+ * @param *db A pointer for debug information.
+ * @param *store The actual store.
+ * @param arity The number of procedure parameters.
+ * @param *in[] An array with the pointers to the parameters. The constructor copies this array.
+ * @param kind The kind of the called builtin.
+ * @param *tp Type information of the procedure called.
+ */
+ir_node *new_d_Builtin(dbg_info *db, ir_node *store, int arity, ir_node *in[], ir_builtin_kind kind, ir_type *tp);
/** Constructor for a Add node.
*
/** Constructor for a Call node.
*
- * Adds the node to the block in current_ir_block.
- * Represents all kinds of method and function calls.
+ * Adds the node to the block in current_ir_block.
+ * Represents all kinds of method and function calls.
*
* @param *store The actual store.
* @param *callee A pointer to the called procedure.
ir_node *new_Call (ir_node *store, ir_node *callee, int arity, ir_node *in[],
ir_type *tp);
+/** Constructor for a Builtin node.
+ *
+ * Represents a call of a backend-specific builtin..
+ * Represents all kinds of method and function calls.
+ *
+ * @param *store The actual store.
+ * @param kind The kind of the called builtin.
+ * @param arity The number of procedure parameters.
+ * @param *in[] An array with the pointers to the parameters. The constructor copies this array.
+ * @param *tp Type information of the procedure called.
+ */
+ir_node *new_Builtin(ir_node *store, int arity, ir_node *in[],
+ ir_builtin_kind kind, ir_type *tp);
+
/** Constructor for a CallBegin node.
*
* CallBegin represents control flow depending of the pointer value
int n_outs, ir_asm_constraint *outputs,
int n_clobber, ident *clobber[], ident *asm_text);
+/** Constructor for a Dummy node.
+ *
+ * @param *mode The mode of the node.
+ */
+ir_node *new_Dummy(ir_mode *mode);
+
/*---------------------------------------------------------------------*/
/* The comfortable interface. */
/* Supports automatic Phi node construction. */