return ops->impl->get_irn_reg_req(ops, req, irn, pos);
}
-int arch_get_allocatable_regs(const arch_env_t *env, const ir_node *irn,
- int pos, const arch_register_class_t *cls, bitset_t *bs)
+void arch_set_stack_bias(const arch_env_t *env, ir_node *irn, int bias)
+{
+ const arch_irn_ops_t *ops = get_irn_ops(env, irn);
+ ops->impl->set_stack_bias(ops, irn, bias);
+}
+
+
+int arch_get_allocatable_regs(const arch_env_t *env, const ir_node *irn, int pos, bitset_t *bs)
{
arch_register_req_t local_req;
const arch_irn_ops_t *ops = get_irn_ops(env, irn);
}
if(arch_register_req_is(req, limited)) {
- req->limited(irn, pos, bs);
+ req->limited(req->limited_env, bs);
return bitset_popcnt(bs);
}
return req->cls->n_regs;
}
+void arch_put_non_ignore_regs(const arch_env_t *env, const arch_register_class_t *cls, bitset_t *bs)
+{
+ int i;
+
+ for(i = 0; i < cls->n_regs; ++i) {
+ if(!arch_register_type_is(&cls->regs[i], ignore))
+ bitset_set(bs, i);
+ }
+}
+
int arch_is_register_operand(const arch_env_t *env,
const ir_node *irn, int pos)
{
if(arch_register_req_is(&req, limited)) {
bitset_t *bs = bitset_alloca(req.cls->n_regs);
- req.limited(irn, pos, bs);
+ req.limited(req.limited_env, bs);
return bitset_is_set(bs, arch_register_get_index(reg));
}