uint8_t *constants;
unsigned constant_count;
bool blend_constant;
+
+ /* Exclude this destination (if not ~0) */
+ unsigned exclude;
};
/* For an instruction that can fit, adjust it to fit and update the constants
if (tag != ~0 && instructions[i]->type != tag)
continue;
+ if (predicate->exclude != ~0 && instructions[i]->dest == predicate->exclude)
+ continue;
+
/* Simulate in-order scheduling */
if ((signed) i < best_index)
continue;
struct midgard_predicate predicate = {
.tag = ~0,
- .destructive = false
+ .destructive = false,
+ .exclude = ~0
};
midgard_instruction *chosen = mir_choose_instruction(instructions, worklist, count, &predicate);
{
struct midgard_predicate predicate = {
.tag = TAG_TEXTURE_4,
- .destructive = true
+ .destructive = true,
+ .exclude = ~0
};
midgard_instruction *ins =
{
struct midgard_predicate predicate = {
.tag = TAG_LOAD_STORE_4,
- .destructive = true
+ .destructive = true,
+ .exclude = ~0
};
midgard_instruction *ins =
struct midgard_predicate predicate = {
.tag = TAG_ALU_4,
- .destructive = true
+ .destructive = true,
+ .exclude = ~0
};
midgard_instruction *ins =