From: Eric Anholt Date: Wed, 10 Dec 2014 23:37:07 +0000 (-0800) Subject: vc4: Move follow_movs() to common QIR code. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ff266483fb61fd69775daf5c931ca7a56a26f4ac;p=mesa.git vc4: Move follow_movs() to common QIR code. I want this from other passes. --- diff --git a/src/gallium/drivers/vc4/vc4_opt_algebraic.c b/src/gallium/drivers/vc4/vc4_opt_algebraic.c index ec526fb3d18..4376c7ba08f 100644 --- a/src/gallium/drivers/vc4/vc4_opt_algebraic.c +++ b/src/gallium/drivers/vc4/vc4_opt_algebraic.c @@ -59,19 +59,10 @@ dump_to(struct vc4_compile *c, struct qinst *inst) fprintf(stderr, "\n"); } -static struct qreg -follow_movs(struct qinst **defs, struct qreg reg) -{ - while (reg.file == QFILE_TEMP && defs[reg.index]->op == QOP_MOV) - reg = defs[reg.index]->src[0]; - - return reg; -} - static bool is_zero(struct vc4_compile *c, struct qinst **defs, struct qreg reg) { - reg = follow_movs(defs, reg); + reg = qir_follow_movs(defs, reg); return (reg.file == QFILE_UNIF && c->uniform_contents[reg.index] == QUNIFORM_CONSTANT && @@ -81,7 +72,7 @@ is_zero(struct vc4_compile *c, struct qinst **defs, struct qreg reg) static bool is_1f(struct vc4_compile *c, struct qinst **defs, struct qreg reg) { - reg = follow_movs(defs, reg); + reg = qir_follow_movs(defs, reg); return (reg.file == QFILE_UNIF && c->uniform_contents[reg.index] == QUNIFORM_CONSTANT && diff --git a/src/gallium/drivers/vc4/vc4_qir.c b/src/gallium/drivers/vc4/vc4_qir.c index 49b79014c09..d7251abda1c 100644 --- a/src/gallium/drivers/vc4/vc4_qir.c +++ b/src/gallium/drivers/vc4/vc4_qir.c @@ -327,6 +327,15 @@ qir_remove_instruction(struct qinst *qinst) free(qinst); } +struct qreg +qir_follow_movs(struct qinst **defs, struct qreg reg) +{ + while (reg.file == QFILE_TEMP && defs[reg.index]->op == QOP_MOV) + reg = defs[reg.index]->src[0]; + + return reg; +} + void qir_compile_destroy(struct vc4_compile *c) { diff --git a/src/gallium/drivers/vc4/vc4_qir.h b/src/gallium/drivers/vc4/vc4_qir.h index 46f4c12b22c..40c0d3d04dd 100644 --- a/src/gallium/drivers/vc4/vc4_qir.h +++ b/src/gallium/drivers/vc4/vc4_qir.h @@ -371,6 +371,7 @@ bool qir_has_side_effects(struct vc4_compile *c, struct qinst *inst); bool qir_depends_on_flags(struct qinst *inst); bool qir_writes_r4(struct qinst *inst); bool qir_reads_r4(struct qinst *inst); +struct qreg qir_follow_movs(struct qinst **defs, struct qreg reg); void qir_dump(struct vc4_compile *c); void qir_dump_inst(struct vc4_compile *c, struct qinst *inst);