ia32_copyb_attr_t *get_ia32_copyb_attr(ir_node *node) { ia32_attr_t *attr = get_ia32_attr(node); ia32_copyb_attr_t *copyb_attr = CAST_IA32_ATTR(ia32_copyb_attr_t, attr); return copyb_attr; }
ia32_climbframe_attr_t *get_ia32_climbframe_attr(ir_node *node) { ia32_attr_t *attr = get_ia32_attr(node); ia32_climbframe_attr_t *climbframe_attr = CAST_IA32_ATTR(ia32_climbframe_attr_t, attr); return climbframe_attr; }
void set_ia32_exc_label_id(ir_node *node, ir_label_t id) { ia32_attr_t *attr = get_ia32_attr(node); assert(attr->has_except_label); attr->exc_label = id; }
ia32_immediate_attr_t *get_ia32_immediate_attr(ir_node *node) { ia32_attr_t *attr = get_ia32_attr(node); ia32_immediate_attr_t *imm_attr = CAST_IA32_ATTR(ia32_immediate_attr_t, attr); return imm_attr; }
ia32_condcode_attr_t *get_ia32_condcode_attr(ir_node *node) { assert(has_ia32_condcode_attr(node)); ia32_attr_t *attr = get_ia32_attr(node); ia32_condcode_attr_t *cc_attr = CAST_IA32_ATTR(ia32_condcode_attr_t, attr); return cc_attr; }
void init_ia32_x87_attributes(ir_node *res) { #ifndef NDEBUG ia32_attr_t *attr = get_ia32_attr(res); attr->attr_type |= IA32_ATTR_ia32_x87_attr_t; #endif ir_graph *const irg = get_irn_irg(res); ia32_request_x87_sim(irg); }
static void init_ia32_attributes(ir_node *node, arch_irn_flags_t flags, const arch_register_req_t **in_reqs, int n_res) { be_info_init_irn(node, flags, in_reqs, n_res); #ifndef NDEBUG ia32_attr_t *attr = get_ia32_attr(node); attr->attr_type |= IA32_ATTR_ia32_attr_t; #endif }
void ia32_swap_left_right(ir_node *node) { ia32_attr_t *attr = get_ia32_attr(node); ir_node *left = get_irn_n(node, n_ia32_binary_left); ir_node *right = get_irn_n(node, n_ia32_binary_right); assert(is_ia32_commutative(node)); attr->ins_permuted = !attr->ins_permuted; set_irn_n(node, n_ia32_binary_left, right); set_irn_n(node, n_ia32_binary_right, left); }
void ia32_copy_am_attrs(ir_node *to, const ir_node *from) { ia32_attr_t const *const from_attr = get_ia32_attr_const(from); ia32_attr_t *const to_attr = get_ia32_attr(to); to_attr->addr = from_attr->addr; to_attr->frame_use = from_attr->frame_use; to_attr->size = from_attr->size; #ifndef NDEBUG to_attr->old_frame_ent = from_attr->old_frame_ent; #endif }
void init_ia32_attributes(ir_node *node, x86_insn_size_t const size) { ia32_attr_t *attr = get_ia32_attr(node); attr->size = size; attr->addr.base_input = n_ia32_base; attr->addr.index_input = n_ia32_index; attr->addr.mem_input = n_ia32_mem; #ifndef NDEBUG attr->attr_type |= IA32_ATTR_ia32_attr_t; #endif }
void ia32_copy_am_attrs(ir_node *to, const ir_node *from) { ia32_attr_t const *const from_attr = get_ia32_attr_const(from); ia32_attr_t *const to_attr = get_ia32_attr(to); to_attr->am_imm = from_attr->am_imm; to_attr->frame_use = from_attr->frame_use; set_ia32_ls_mode(to, get_ia32_ls_mode(from)); set_ia32_am_scale(to, get_ia32_am_scale(from)); #ifndef NDEBUG to_attr->old_frame_ent = from_attr->old_frame_ent; #endif }
void set_ia32_am_support(ir_node *node, ia32_am_type_t arity) { ia32_attr_t *const attr = get_ia32_attr(node); attr->am_arity = arity; }
ia32_switch_attr_t *get_ia32_switch_attr(ir_node *node) { ia32_attr_t *attr = get_ia32_attr(node); ia32_switch_attr_t *switch_attr = CAST_IA32_ATTR(ia32_switch_attr_t, attr); return switch_attr; }
void set_ia32_exc_label(ir_node *node, unsigned flag) { ia32_attr_t *attr = get_ia32_attr(node); attr->has_except_label = flag; }
void set_ia32_is_remat(ir_node *node) { ia32_attr_t *attr = get_ia32_attr(node); attr->is_remat = 1; }
void set_ia32_is_spill(ir_node *node) { ia32_attr_t *attr = get_ia32_attr(node); attr->is_spill = 1; }
void set_ia32_is_reload(ir_node *node) { ia32_attr_t *attr = get_ia32_attr(node); attr->is_reload = 1; }
void set_ia32_commutative(ir_node *node) { ia32_attr_t *const attr = get_ia32_attr(node); attr->is_commutative = 1; }
void set_ia32_am_ent(ir_node *node, ir_entity *entity) { ia32_attr_t *attr = get_ia32_attr(node); attr->am_imm.entity = entity; }
void set_ia32_op_type(ir_node *node, ia32_op_type_t tp) { ia32_attr_t *attr = get_ia32_attr(node); attr->tp = tp; }
ia32_return_attr_t *get_ia32_return_attr(ir_node *node) { ia32_attr_t *attr = get_ia32_attr(node); ia32_return_attr_t *return_attr = CAST_IA32_ATTR(ia32_return_attr_t, attr); return return_attr; }
void set_ia32_am_tls_segment(ir_node *node, bool value) { ia32_attr_t *attr = get_ia32_attr(node); attr->am_tls_segment = value; }
void set_ia32_orig_node(ir_node *node, const ir_node *old) { const char *name = ia32_get_old_node_name(old); ia32_attr_t *attr = get_ia32_attr(node); attr->orig_node = name; }
void set_ia32_am_scale(ir_node *node, unsigned scale) { ia32_attr_t *attr = get_ia32_attr(node); assert(scale <= 3 && "AM scale out of range [0 ... 3]"); attr->am_scale = scale; }
ia32_copyb_attr_t *get_ia32_copyb_attr(ir_node *node) { ia32_attr_t *const attr = get_ia32_attr(node); return CAST_IA32_ATTR(ia32_copyb_attr_t, attr); }
void add_ia32_am_offs_int(ir_node *node, int32_t offset) { ia32_attr_t *attr = get_ia32_attr(node); attr->am_imm.offset += offset; }