libFirm
irop.h File Reference

Representation of opcode of intermediate operation. More...

#include <stdio.h>
#include "firm_types.h"
#include "ident.h"
#include "begin.h"
#include "opcodes.h"
#include "end.h"

Go to the source code of this file.

Data Structures

struct  ir_op_ops
 io_op Operations. More...

Macros

#define NULL_FUNC   ((generic_func)(NULL))
 The NULL-function.

Typedefs

typedef void(* op_func )(void)
 A generic function pointer type.
typedef unsigned(* hash_func )(const ir_node *self)
 The hash operation.
typedef ir_tarval *(* computed_value_func )(const ir_node *self)
 The compute value operation.
typedef ir_node *(* equivalent_node_func )(ir_node *self)
 The equivalent node operation.
typedef ir_node *(* transform_node_func )(ir_node *self)
 The transform node operation.
typedef int(* node_cmp_attr_func )(const ir_node *a, const ir_node *b)
 The node attribute compare operation.
typedef int(* reassociate_func )(ir_node **n)
 The reassociation operation.
typedef void(* copy_attr_func )(ir_graph *irg, const ir_node *old_node, ir_node *new_node)
 The copy attribute operation.
typedef ir_type *(* get_type_attr_func )(const ir_node *self)
 The get_type_attr operation.
typedef ir_entity *(* get_entity_attr_func )(const ir_node *self)
 The get_entity_attr operation.
typedef int(* verify_node_func )(const ir_node *node)
 The verify_node operation.
typedef int(* verify_proj_node_func )(const ir_node *proj)
 The verify_node operation for Proj(X).
typedef void(* dump_node_func )(FILE *out, const ir_node *self, dump_reason_t reason)
 The dump_node operation.

Enumerations

enum  op_arity {
  oparity_invalid = 0, oparity_unary, oparity_binary, oparity_trinary,
  oparity_zero, oparity_variable, oparity_dynamic, oparity_any
}
 The allowed arities. More...
enum  irop_flags {
  irop_flag_none = 0, irop_flag_commutative = 1U << 0, irop_flag_cfopcode = 1U << 1, irop_flag_fragile = 1U << 2,
  irop_flag_forking = 1U << 3, irop_flag_highlevel = 1U << 4, irop_flag_constlike = 1U << 5, irop_flag_keep = 1U << 6,
  irop_flag_start_block = 1U << 7, irop_flag_uses_memory = 1U << 8, irop_flag_dump_noblock = 1U << 9, irop_flag_cse_neutral = 1U << 10,
  irop_flag_unknown_jump = 1U << 11
}
 The irop flags. More...
enum  dump_reason_t { dump_node_opcode_txt, dump_node_mode_txt, dump_node_nodeattr_txt, dump_node_info_txt }
 Reasons to call the dump_node operation: More...

Functions

identget_op_ident (const ir_op *op)
 Returns the ident for the opcode name.
const char * get_op_name (const ir_op *op)
 Returns the string for the opcode.
unsigned get_op_code (const ir_op *op)
 Returns the enum for the opcode.
const char * get_op_pin_state_name (op_pin_state s)
 Returns a human readable name of an op_pin_state.
op_pin_state get_op_pinned (const ir_op *op)
 Returns pinned state of an opcode.
void set_op_pinned (ir_op *op, op_pin_state pinned)
 Sets pinned in the opcode.
unsigned get_next_ir_opcode (void)
 Returns the next free IR opcode number, allows to register user ops.
unsigned get_next_ir_opcodes (unsigned num)
 Returns the next free n IR opcode number, allows to register a bunch of user ops.
op_func get_generic_function_ptr (const ir_op *op)
 Returns the generic function pointer from an IR operation.
void set_generic_function_ptr (ir_op *op, op_func func)
 Stores a generic function pointer into an IR operation.
irop_flags get_op_flags (const ir_op *op)
 Returns the irop flags of an IR opcode.
ir_opnew_ir_op (unsigned code, const char *name, op_pin_state p, irop_flags flags, op_arity opar, int op_index, size_t attr_size)
 Creates a new IR operation.
unsigned ir_get_n_opcodes (void)
 Returns one more than the highest opcode code in use.
ir_opir_get_opcode (unsigned code)
 Returns the opcode with code code.
void ir_clear_opcodes_generic_func (void)
 Sets the generic function pointer of all opcodes to NULL.
void ir_op_set_memory_index (ir_op *op, int memory_index)
 Sets memory input of operation using memory.
void ir_op_set_fragile_indices (ir_op *op, int pn_x_regular, int pn_x_except)
 Sets proj-number for X_regular and X_except projs of fragile nodes.
ir_op_opsget_op_ops (ir_op *op)
 Returns the ir_op_ops of an ir_op.

Detailed Description

Representation of opcode of intermediate operation.

Author
Christian Schaefer, Goetz Lindenmaier, Michael Beck Operators of firm nodes.

Definition in file irop.h.