Module: Mesa
Branch: master
Commit: 9604e31dc9b43529a17b823b9cb9ddb7492bb317
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=9604e31dc9b43529a17b823b9cb9ddb7492bb317

Author: Rob Clark <[email protected]>
Date:   Wed Apr  9 09:01:32 2014 -0400

freedreno/a3xx/compiler: fix neg mov's

create_mov() was fixed up to handle neg/abs properly for interal mov's,
using absneg.f, but forgot to fix it for TGSI MOV's.  The problem with
using add.f to handle negated mov's is that we can only take a single
const reg src.  So:

  MOV TEMP[n], -CONST[m]

would turn into:

  add.f Rdst, (neg)CONST[m], 0.0

which would not work.  Anyways, just remove the extra code and always
use create_mov() which DTRT.

This fixes piglit vs-op-neg-int test.

Signed-off-by: Rob Clark <[email protected]>

---

 src/gallium/drivers/freedreno/a3xx/fd3_compiler.c |   21 +--------------------
 1 file changed, 1 insertion(+), 20 deletions(-)

diff --git a/src/gallium/drivers/freedreno/a3xx/fd3_compiler.c 
b/src/gallium/drivers/freedreno/a3xx/fd3_compiler.c
index 911330c..ad518b0 100644
--- a/src/gallium/drivers/freedreno/a3xx/fd3_compiler.c
+++ b/src/gallium/drivers/freedreno/a3xx/fd3_compiler.c
@@ -1599,26 +1599,7 @@ instr_cat1(const struct instr_translater *t,
 {
        struct tgsi_dst_register *dst = get_dst(ctx, inst);
        struct tgsi_src_register *src = &inst->Src[0].Register;
-
-       /* mov instructions can't handle a negate on src: */
-       if (src->Negate) {
-               struct tgsi_src_register constval;
-               struct ir3_instruction *instr;
-
-               /* since right now, we are using uniformly either TYPE_F16 or
-                * TYPE_F32, and we don't utilize the conversion possibilities
-                * of mov instructions, we can get away with substituting an
-                * add.f which can handle negate.  Might need to revisit this
-                * in the future if we start supporting widening/narrowing or
-                * conversion to/from integer..
-                */
-               instr = instr_create(ctx, 2, OPC_ADD_F);
-               get_immediate(ctx, &constval, fui(0.0));
-               vectorize(ctx, instr, dst, 2, src, 0, &constval, 0);
-       } else {
-               create_mov(ctx, dst, src);
-               /* create_mov() generates vector sequence, so no vectorize() */
-       }
+       create_mov(ctx, dst, src);
        put_dst(ctx, inst, dst);
 }
 

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to