nouveau/mme: Add support for freeing registers

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24326>
This commit is contained in:
Faith Ekstrand 2023-01-30 20:12:00 -06:00 committed by Marge Bot
parent d83fb1d29c
commit 54fd3604ef

View file

@ -178,7 +178,15 @@ mme_imm64(uint64_t imm)
static inline uint8_t
__mme_alloc_reg(struct mme_builder *b)
{
return b->reg_alloc++;
uint8_t reg = ffs(~b->reg_alloc) - 1;
b->reg_alloc |= (1u << reg);
return reg;
}
static inline void
__mme_free_reg(struct mme_builder *b, uint8_t reg)
{
b->reg_alloc &= ~(1u << reg);
}
static inline struct mme_value
@ -191,6 +199,13 @@ mme_alloc_reg(struct mme_builder *b)
return val;
}
static inline void
mme_free_reg(struct mme_builder *b, struct mme_value val)
{
assert(val.type == MME_VALUE_TYPE_REG);
__mme_free_reg(b, val.reg);
}
static inline struct mme_value
mme_tu104_alu(struct mme_builder *b,
enum mme_tu104_alu_op op,