diff options
author | Eric Anholt <[email protected]> | 2014-12-10 15:37:07 -0800 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2014-12-17 19:05:52 -0800 |
commit | ff266483fb61fd69775daf5c931ca7a56a26f4ac (patch) | |
tree | b09828e0ccc30076d21f0461af574becf1744f6d /src/gallium | |
parent | 8d22e8907fde509ad33c5699cd14cd1bebc3601d (diff) |
vc4: Move follow_movs() to common QIR code.
I want this from other passes.
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/vc4/vc4_opt_algebraic.c | 13 | ||||
-rw-r--r-- | src/gallium/drivers/vc4/vc4_qir.c | 9 | ||||
-rw-r--r-- | src/gallium/drivers/vc4/vc4_qir.h | 1 |
3 files changed, 12 insertions, 11 deletions
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); |