ir_tarval *get_mode_minus_one(ir_mode *mode) { assert(mode); assert(mode_is_data(mode)); return mode->minus_one; }
ir_tarval *get_mode_max(ir_mode *mode) { assert(mode); assert(mode_is_data(mode)); return mode->max; }
void be_set_phi_reg_req(ir_node *node, const arch_register_req_t *req) { assert(mode_is_data(get_irn_mode(node))); backend_info_t *info = be_get_info(node); info->out_infos[0].req = req; for (int i = 0, arity = get_irn_arity(node); i < arity; ++i) { info->in_reqs[i] = req; } }
ir_tarval *get_mode_all_one(const ir_mode *mode) { assert(mode_is_data(mode)); return mode->all_one; }
ir_tarval *get_mode_null(const ir_mode *mode) { assert(mode_is_data(mode)); return mode->null; }
ir_tarval *get_mode_min(const ir_mode *mode) { assert(mode_is_data(mode)); return mode->min; }
char *validate_instruction(instruction *instr) { int argc = symbol_value(argcounts, instr->instruction); int cnt = count_args(instr); int idx; char *err_msg; argument *arg; if (Is_Meta) { argc = cnt; err_msg = Meta->validate(instr); if (err_msg) return err_msg; } if (cnt != argc) { sprintf( err_buf, "Wrong number of arguments for \"%s\". Expected %i, parsed %i", instr->instruction, argc, cnt ); return err_buf; } for (idx = 0, arg = instr->args; idx < cnt; idx++, arg = arg->next) { if ((Mode == mode_string) && ! String_Allowed) { sprintf( err_buf, "String arguments are not allowed for \"%s\"", instr->instruction ); return err_buf; } if (Data_Required && ! mode_is_data(Mode)) { sprintf( err_buf, "\"%s\" accepts constant data arguments only", instr->instruction ); return err_buf; } err_msg = validate_argument(arg); if (err_msg) { sprintf( err_buf, "%s arg: %s", Ordinal(idx), err_msg ); return err_buf; } } return NULL; }