+ pn_DivMod_M, /**< Memory result. */
+ pn_DivMod_X_except, /**< Execution result if exception occurred. */
+ pn_DivMod_res_div, /**< Result of computation a / b. */
+ pn_DivMod_res_mod, /**< Result of computation a % b. */
+ pn_DivMod_max /**< number of projections from a DivMod */
+} pn_DivMod; /* Projection numbers for DivMod. */
+
+ir_node *get_Div_left (ir_node *node);
+void set_Div_left (ir_node *node, ir_node *left);
+ir_node *get_Div_right (ir_node *node);
+void set_Div_right (ir_node *node, ir_node *right);
+ir_node *get_Div_mem (ir_node *node);
+void set_Div_mem (ir_node *node, ir_node *mem);
+
+/**
+ * Projection numbers for Div: use for Proj nodes!
+ */
+typedef enum {
+ pn_Div_M, /**< Memory result. */
+ pn_Div_X_except, /**< Execution result if exception occurred. */
+ pn_Div_res, /**< Result of computation. */
+ pn_Div_max /**< number of projections from a Div */
+} pn_Div; /* Projection numbers for Div. */
+
+ir_node *get_Mod_left (ir_node *node);
+void set_Mod_left (ir_node *node, ir_node *left);
+ir_node *get_Mod_right (ir_node *node);
+void set_Mod_right (ir_node *node, ir_node *right);
+ir_node *get_Mod_mem (ir_node *node);
+void set_Mod_mem (ir_node *node, ir_node *mem);
+
+/**
+ * Projection numbers for Mod: use for Proj nodes!
+ */
+typedef enum {
+ pn_Mod_M, /**< Memory result. */
+ pn_Mod_X_except, /**< Execution result if exception occurred. */
+ pn_Mod_res, /**< Result of computation. */
+ pn_Mod_max /**< number of projections from a Mod */
+} pn_Mod; /* Projection numbers for Mod. */
+
+ir_node *get_Abs_op (ir_node *node);
+void set_Abs_op (ir_node *node, ir_node *op);
+
+ir_node *get_And_left (ir_node *node);
+void set_And_left (ir_node *node, ir_node *left);
+ir_node *get_And_right (ir_node *node);
+void set_And_right (ir_node *node, ir_node *right);
+
+ir_node *get_Or_left (ir_node *node);
+void set_Or_left (ir_node *node, ir_node *left);
+ir_node *get_Or_right (ir_node *node);
+void set_Or_right (ir_node *node, ir_node *right);
+
+ir_node *get_Eor_left (ir_node *node);
+void set_Eor_left (ir_node *node, ir_node *left);
+ir_node *get_Eor_right (ir_node *node);
+void set_Eor_right (ir_node *node, ir_node *right);
+
+ir_node *get_Not_op (ir_node *node);
+void set_Not_op (ir_node *node, ir_node *op);
+
+/**
+ * Projection numbers for Cmp are defined several times.
+ * The bit patterns are used for various tests, so don't change.
+ * The "unordered" values are possible results of comparing
+ * floating point numbers.
+ * Note that the encoding is imported, so do NOT change the order.
+ */
+typedef enum {
+ pn_Cmp_False = 0, /**< false */
+ pn_Cmp_Eq = 1, /**< equal */
+ pn_Cmp_Lt = 2, /**< less */
+ pn_Cmp_Le = pn_Cmp_Eq|pn_Cmp_Lt, /**< less or equal */
+ pn_Cmp_Gt = 4, /**< greater */
+ pn_Cmp_Ge = pn_Cmp_Eq|pn_Cmp_Gt, /**< greater or equal */
+ pn_Cmp_Lg = pn_Cmp_Lt|pn_Cmp_Gt, /**< less or greater */
+ pn_Cmp_Leg = pn_Cmp_Lt|pn_Cmp_Eq|pn_Cmp_Gt, /**< less, equal or greater = ordered */
+ pn_Cmp_Uo = 8, /**< unordered */
+ pn_Cmp_Ue = pn_Cmp_Uo|pn_Cmp_Eq, /**< unordered or equal */
+ pn_Cmp_Ul = pn_Cmp_Uo|pn_Cmp_Lt, /**< unordered or less */
+ pn_Cmp_Ule = pn_Cmp_Uo|pn_Cmp_Eq|pn_Cmp_Lt, /**< unordered, less or equal */
+ pn_Cmp_Ug = pn_Cmp_Uo|pn_Cmp_Gt, /**< unordered or greater */
+ pn_Cmp_Uge = pn_Cmp_Uo|pn_Cmp_Eq|pn_Cmp_Gt, /**< unordered, greater or equal */
+ pn_Cmp_Ne = pn_Cmp_Uo|pn_Cmp_Lt|pn_Cmp_Gt, /**< unordered, less or greater = not equal */
+ pn_Cmp_True = 15 /**< true */
+ /* not_mask = Leg*/ /* bits to flip to negate comparison * @@ hack for JNI interface */
+} pn_Cmp; /* Projection numbers for Cmp */
+/* #define not_mask pn_Cmp_Leg */
+
+/** returns the pnc name from an pnc constant */
+const char *get_pnc_string(int pnc);
+
+/** Calculates the negated (Complement(R)) pnc condition. */
+int get_negated_pnc(int pnc, ir_mode *mode);
+
+/** Calculates the inversed (R^-1) pnc condition, i.e., "<" --> ">" */
+int get_inversed_pnc(int pnc);
+
+ir_node *get_Cmp_left (ir_node *node);
+void set_Cmp_left (ir_node *node, ir_node *left);
+ir_node *get_Cmp_right (ir_node *node);
+void set_Cmp_right (ir_node *node, ir_node *right);
+
+ir_node *get_Shl_left (ir_node *node);
+void set_Shl_left (ir_node *node, ir_node *left);
+ir_node *get_Shl_right (ir_node *node);
+void set_Shl_right (ir_node *node, ir_node *right);
+
+ir_node *get_Shr_left (ir_node *node);
+void set_Shr_left (ir_node *node, ir_node *left);
+ir_node *get_Shr_right (ir_node *node);
+void set_Shr_right (ir_node *node, ir_node *right);
+
+ir_node *get_Shrs_left (ir_node *node);
+void set_Shrs_left (ir_node *node, ir_node *left);
+ir_node *get_Shrs_right (ir_node *node);
+void set_Shrs_right (ir_node *node, ir_node *right);
+
+ir_node *get_Rot_left (ir_node *node);
+void set_Rot_left (ir_node *node, ir_node *left);
+ir_node *get_Rot_right (ir_node *node);
+void set_Rot_right (ir_node *node, ir_node *right);
+
+ir_node *get_Conv_op (ir_node *node);
+void set_Conv_op (ir_node *node, ir_node *op);
+
+/* Does Cast need a mem operator?
+ * Cast should only depend on the type, not on the state of an
+ * entity. But: we initialize various fields after Alloc, that
+ * are accessed in the cast. This required some precaution, to
+ * get the right memory into the Loads generated from the cast.
+ */
+ir_node *get_Cast_op (ir_node *node);
+void set_Cast_op (ir_node *node, ir_node *op);
+ir_type *get_Cast_type (ir_node *node);
+void set_Cast_type (ir_node *node, ir_type *to_tp);