summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>2019-04-28 03:47:57 +0000
committerAlyssa Rosenzweig <alyssa@rosenzweig.io>2019-04-28 21:34:32 +0000
commit68a1508dc9dfb283dce18921273bf218086eb2ce (patch)
tree7e87814c9284def4c2899dc119f172a0db15bcf1
parentbdaa23b32be9f1631da795b59dae7ef5e5183ef5 (diff)
panfrost/midgard: Fix regressions in -bjellyfish
Two fixes here, one is that we tried to copyprop non-strictly-SSA values which was bound to fly in our face. The other was peeling back the imov workaround.. Turns out we still need that. More research is needed still, but let's not regress real apps. Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
-rw-r--r--src/gallium/drivers/panfrost/midgard/midgard_compile.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/gallium/drivers/panfrost/midgard/midgard_compile.c b/src/gallium/drivers/panfrost/midgard/midgard_compile.c
index b5e29fee91d..ac4c7219ce9 100644
--- a/src/gallium/drivers/panfrost/midgard/midgard_compile.c
+++ b/src/gallium/drivers/panfrost/midgard/midgard_compile.c
@@ -1135,9 +1135,11 @@ emit_alu(compiler_context *ctx, nir_alu_instr *instr)
ALU_CASE(imul, imul);
ALU_CASE(iabs, iabs);
- /* XXX: Use fmov, not imov, since imov was causing major
- * issues with texture precision? XXX research */
- ALU_CASE(imov, imov);
+ /* XXX: Use fmov, not imov for now, since NIR does not
+ * differentiate well (it'll happily emits imov for floats,
+ * which the hardware rather dislikes and breaks e.g
+ * -bjellyfish */
+ ALU_CASE(imov, fmov);
ALU_CASE(feq32, feq);
ALU_CASE(fne32, fne);
@@ -3156,6 +3158,8 @@ midgard_opt_copy_prop(compiler_context *ctx, midgard_block *block)
if (to >= SSA_FIXED_MINIMUM) continue;
if (from >= SSA_FIXED_MINIMUM) continue;
+ if (to >= ctx->func->impl->ssa_alloc) continue;
+ if (from >= ctx->func->impl->ssa_alloc) continue;
/* Also, if the move has side effects, we're helpless */