mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-08 10:40:11 +01:00
v3d: Make sure that QPU instruction-has-a-dest matches VIR.
Found when debugging register spilling -- we would try to spill the dest
of a STVPMV, inserting spill code after entering the last segment. In
fact, we were likely to to choose to do this, given that the STVPMV "dest"
temp was never read from, making it cheap to spill.
Cc: "18.2" <mesa-stable@lists.freedesktop.org>
(cherry picked from commit f2c0d310d6)
This commit is contained in:
parent
c3b1a6d7fa
commit
c8d41bc58d
2 changed files with 11 additions and 1 deletions
|
|
@ -928,7 +928,7 @@ VIR_A_ALU2(OR)
|
|||
VIR_A_ALU2(XOR)
|
||||
VIR_A_ALU2(VADD)
|
||||
VIR_A_ALU2(VSUB)
|
||||
VIR_A_ALU2(STVPMV)
|
||||
VIR_A_NODST_2(STVPMV)
|
||||
VIR_A_ALU1(NOT)
|
||||
VIR_A_ALU1(NEG)
|
||||
VIR_A_ALU1(FLAPUSH)
|
||||
|
|
|
|||
|
|
@ -452,6 +452,16 @@ vir_emit_def(struct v3d_compile *c, struct qinst *inst)
|
|||
{
|
||||
assert(inst->dst.file == QFILE_NULL);
|
||||
|
||||
/* If we're emitting an instruction that's a def, it had better be
|
||||
* writing a register.
|
||||
*/
|
||||
if (inst->qpu.type == V3D_QPU_INSTR_TYPE_ALU) {
|
||||
assert(inst->qpu.alu.add.op == V3D_QPU_A_NOP ||
|
||||
v3d_qpu_add_op_has_dst(inst->qpu.alu.add.op));
|
||||
assert(inst->qpu.alu.mul.op == V3D_QPU_M_NOP ||
|
||||
v3d_qpu_mul_op_has_dst(inst->qpu.alu.mul.op));
|
||||
}
|
||||
|
||||
inst->dst = vir_get_temp(c);
|
||||
|
||||
if (inst->dst.file == QFILE_TEMP)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue