+ir_node *
+get_Builtin_mem(const ir_node *node) {
+ assert(is_Builtin(node));
+ return get_irn_n(node, 0);
+}
+
+void
+set_Builin_mem(ir_node *node, ir_node *mem) {
+ assert(is_Builtin(node));
+ set_irn_n(node, 0, mem);
+}
+
+ir_builtin_kind
+get_Builtin_kind(const ir_node *node) {
+ assert(is_Builtin(node));
+ return node->attr.builtin.kind;
+}
+
+void
+set_Builtin_kind(ir_node *node, ir_builtin_kind kind) {
+ assert(is_Builtin(node));
+ node->attr.builtin.kind = kind;
+}
+
+ir_node **
+get_Builtin_param_arr(ir_node *node) {
+ assert(is_Builtin(node));
+ return &get_irn_in(node)[BUILDIN_PARAM_OFFSET + 1];
+}
+
+int
+get_Builtin_n_params(const ir_node *node) {
+ assert(is_Builtin(node));
+ return (get_irn_arity(node) - BUILDIN_PARAM_OFFSET);
+}
+
+ir_node *
+get_Builtin_param(const ir_node *node, int pos) {
+ assert(is_Builtin(node));
+ return get_irn_n(node, pos + BUILDIN_PARAM_OFFSET);
+}
+
+void
+set_Builtin_param(ir_node *node, int pos, ir_node *param) {
+ assert(is_Builtin(node));
+ set_irn_n(node, pos + BUILDIN_PARAM_OFFSET, param);
+}
+
+ir_type *
+get_Builtin_type(ir_node *node) {
+ assert(is_Builtin(node));
+ return node->attr.builtin.type = skip_tid(node->attr.builtin.type);
+}
+
+void
+set_Builtin_type(ir_node *node, ir_type *tp) {
+ assert(is_Builtin(node));
+ assert((get_unknown_type() == tp) || is_Method_type(tp));
+ node->attr.builtin.type = tp;
+}
+
+/* Returns a human readable string for the ir_builtin_kind. */
+const char *get_builtin_kind_name(ir_builtin_kind kind) {
+#define X(a) case a: return #a;
+ switch (kind) {
+ X(ir_bk_trap);
+ X(ir_bk_debugbreak);
+ X(ir_bk_return_address);
+ X(ir_bk_frame_addess);
+ X(ir_bk_prefetch);
+ X(ir_bk_ffs);
+ X(ir_bk_clz);
+ X(ir_bk_ctz);
+ X(ir_bk_popcount);
+ X(ir_bk_parity);
+ X(ir_bk_bswap);
+ X(ir_bk_inport);
+ X(ir_bk_outport);
+ X(ir_bk_inner_trampoline);
+ }
+ return "<unknown>";
+#undef X
+}
+
+