freedreno/ir3: Add cat5/cat6 nonuniform flag
Not yet used by the compiler, but needed so we don't loose information between ir3 parser and instruction encoding. Currently ignored for cat5, because the uniform vs non-uniform default is swapped there. Signed-off-by: Rob Clark <robdclark@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8175>
This commit is contained in:
parent
101bf686ee
commit
d7f141bb35
|
@ -624,15 +624,20 @@ static int emit_cat6_a6xx(struct ir3_instruction *instr, void *ptr,
|
|||
if (instr->flags & IR3_INSTR_B) {
|
||||
if (ssbo->flags & IR3_REG_IMMED) {
|
||||
cat6->desc_mode = CAT6_BINDLESS_IMM;
|
||||
} else if (instr->flags & IR3_INSTR_NONUNIF) {
|
||||
cat6->desc_mode = CAT6_BINDLESS_NONUNIFORM;
|
||||
} else {
|
||||
cat6->desc_mode = CAT6_BINDLESS_UNIFORM;
|
||||
}
|
||||
cat6->base = instr->cat6.base;
|
||||
} else {
|
||||
if (ssbo->flags & IR3_REG_IMMED)
|
||||
if (ssbo->flags & IR3_REG_IMMED) {
|
||||
cat6->desc_mode = CAT6_IMM;
|
||||
else
|
||||
} else if (instr->flags & IR3_INSTR_NONUNIF) {
|
||||
cat6->desc_mode = CAT6_NONUNIFORM;
|
||||
} else {
|
||||
cat6->desc_mode = CAT6_UNIFORM;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -230,13 +230,15 @@ struct ir3_instruction {
|
|||
IR3_INSTR_SAT = 0x800,
|
||||
/* (cat5/cat6) Bindless */
|
||||
IR3_INSTR_B = 0x1000,
|
||||
/* (cat5/cat6) nonuniform */
|
||||
IR3_INSTR_NONUNIF = 0x02000,
|
||||
/* (cat5-only) Get some parts of the encoding from a1.x */
|
||||
IR3_INSTR_A1EN = 0x2000,
|
||||
IR3_INSTR_A1EN = 0x04000,
|
||||
/* meta-flags, for intermediate stages of IR, ie.
|
||||
* before register assignment is done:
|
||||
*/
|
||||
IR3_INSTR_MARK = 0x4000,
|
||||
IR3_INSTR_UNUSED= 0x8000,
|
||||
IR3_INSTR_MARK = 0x08000,
|
||||
IR3_INSTR_UNUSED = 0x10000,
|
||||
} flags;
|
||||
uint8_t repeat;
|
||||
uint8_t nop;
|
||||
|
|
Loading…
Reference in New Issue