panfrost/midgard: Fix regressions in -bjellyfish
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Sun, 28 Apr 2019 03:47:57 +0000 (03:47 +0000)
committerAlyssa Rosenzweig <alyssa@rosenzweig.io>
Sun, 28 Apr 2019 21:34:32 +0000 (21:34 +0000)
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>
src/gallium/drivers/panfrost/midgard/midgard_compile.c

index b5e29fee91d538a5061099aeb1bf5b0aa5e802ca..ac4c7219ce9eea9292b4621cfc6df08707c81fe9 100644 (file)
@@ -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 */