From: Eric Anholt Date: Tue, 15 Nov 2016 20:36:20 +0000 (-0800) Subject: vc4: Replace the qinst src[] with a fixed-size array. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=51087327f2ba929739719b2ae243d8c69d31346f;p=mesa.git vc4: Replace the qinst src[] with a fixed-size array. This may have made a tiny bit of sense when we had one 4-arg inst per shader, but if we only ever put 2 things in, having a pointer to 2 things almost every instruction is pointless indirection. --- diff --git a/src/gallium/drivers/vc4/vc4_qir.c b/src/gallium/drivers/vc4/vc4_qir.c index 5999cc175ed..8bd016c5535 100644 --- a/src/gallium/drivers/vc4/vc4_qir.c +++ b/src/gallium/drivers/vc4/vc4_qir.c @@ -477,7 +477,6 @@ qir_inst(enum qop op, struct qreg dst, struct qreg src0, struct qreg src1) inst->op = op; inst->dst = dst; - inst->src = calloc(2, sizeof(inst->src[0])); inst->src[0] = src0; inst->src[1] = src1; inst->cond = QPU_COND_ALWAYS; @@ -598,7 +597,6 @@ qir_remove_instruction(struct vc4_compile *c, struct qinst *qinst) c->defs[qinst->dst.index] = NULL; list_del(&qinst->link); - free(qinst->src); free(qinst); } diff --git a/src/gallium/drivers/vc4/vc4_qir.h b/src/gallium/drivers/vc4/vc4_qir.h index 4c240c71c66..eec50c3439e 100644 --- a/src/gallium/drivers/vc4/vc4_qir.h +++ b/src/gallium/drivers/vc4/vc4_qir.h @@ -203,7 +203,7 @@ struct qinst { enum qop op; struct qreg dst; - struct qreg *src; + struct qreg src[2]; bool sf; bool cond_is_exec_mask; uint8_t cond; diff --git a/src/gallium/drivers/vc4/vc4_qpu_emit.c b/src/gallium/drivers/vc4/vc4_qpu_emit.c index e2f04253855..2cc0f3013ef 100644 --- a/src/gallium/drivers/vc4/vc4_qpu_emit.c +++ b/src/gallium/drivers/vc4/vc4_qpu_emit.c @@ -288,7 +288,7 @@ vc4_generate_code_block(struct vc4_compile *c, }; uint64_t unpack = 0; - struct qpu_reg src[4]; + struct qpu_reg src[ARRAY_SIZE(qinst->src)]; for (int i = 0; i < qir_get_op_nsrc(qinst->op); i++) { int index = qinst->src[i].index; switch (qinst->src[i].file) {