vc4: Fix emit of ABS
authorEric Anholt <eric@anholt.net>
Wed, 2 Jul 2014 17:43:50 +0000 (10:43 -0700)
committerEric Anholt <eric@anholt.net>
Sat, 9 Aug 2014 01:59:46 +0000 (18:59 -0700)
v2: Rebase on qir helpers.

src/gallium/drivers/vc4/vc4_program.c

index bc66ecc3446f82395e19d60cb7a7ca175397aada..0b3cfb400af9edadc30a31065a498c2ac24e0a33 100644 (file)
@@ -255,6 +255,16 @@ tgsi_to_qir_dp4(struct tgsi_to_qir *trans,
         return tgsi_to_qir_dp(trans, tgsi_inst, 4, src, i);
 }
 
+static struct qreg
+tgsi_to_qir_abs(struct tgsi_to_qir *trans,
+                struct tgsi_full_instruction *tgsi_inst,
+                enum qop op, struct qreg *src, int i)
+{
+        struct qcompile *c = trans->c;
+        struct qreg arg = src[0 * 4 + i];
+        return qir_FMAXABS(c, arg, arg);
+}
+
 static void
 emit_tgsi_instruction(struct tgsi_to_qir *trans,
                       struct tgsi_full_instruction *tgsi_inst)
@@ -268,7 +278,7 @@ emit_tgsi_instruction(struct tgsi_to_qir *trans,
                                     struct qreg *src, int i);
         } op_trans[] = {
                 [TGSI_OPCODE_MOV] = { QOP_MOV, tgsi_to_qir_alu },
-                [TGSI_OPCODE_ABS] = { QOP_FMAXABS, tgsi_to_qir_alu },
+                [TGSI_OPCODE_ABS] = { 0, tgsi_to_qir_abs },
                 [TGSI_OPCODE_MUL] = { QOP_FMUL, tgsi_to_qir_alu },
                 [TGSI_OPCODE_ADD] = { QOP_FADD, tgsi_to_qir_alu },
                 [TGSI_OPCODE_SUB] = { QOP_FSUB, tgsi_to_qir_alu },