Mesa (master): i915g: implement TGSI_OPCODE_SEQ.

Stephane Marchesin marcheu at kemper.freedesktop.org
Mon Jun 6 20:07:53 UTC 2011


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

Author: Stéphane Marchesin <marcheu at chromium.org>
Date:   Fri Jun  3 18:57:16 2011 -0700

i915g: implement TGSI_OPCODE_SEQ.

---

 src/gallium/drivers/i915/i915_fpc_translate.c |   28 +++++++++++++++++++++++++
 1 files changed, 28 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/i915/i915_fpc_translate.c b/src/gallium/drivers/i915/i915_fpc_translate.c
index 9f3c766..695a396 100644
--- a/src/gallium/drivers/i915/i915_fpc_translate.c
+++ b/src/gallium/drivers/i915/i915_fpc_translate.c
@@ -852,6 +852,34 @@ i915_translate_instruction(struct i915_fp_compile *p,
       emit_simple_arith_swap2(p, inst, A0_SLT, 2);
       break;
 
+   case TGSI_OPCODE_SEQ:
+      /* if we're both >= and <= then we're == */
+      src0 = src_vector(p, &inst->Src[0]);
+      src1 = src_vector(p, &inst->Src[1]);
+      tmp = i915_get_utemp(p);
+
+      i915_emit_arith(p,
+                      A0_SGE,
+                      tmp, A0_DEST_CHANNEL_ALL, 0,
+                      src0,
+                      src1, 0);
+
+      i915_emit_arith(p,
+                      A0_SGE,
+                      get_result_vector(p, &inst->Dst[0]),
+                      A0_DEST_CHANNEL_ALL, 0,
+                      src1,
+                      src0, 0);
+
+      i915_emit_arith(p,
+                      A0_MUL,
+                      get_result_vector(p, &inst->Dst[0]),
+                      A0_DEST_CHANNEL_ALL, 0,
+                      get_result_vector(p, &inst->Dst[0]),
+                      tmp, 0);
+
+      break;
+
    case TGSI_OPCODE_SUB:
       src0 = src_vector(p, &inst->Src[0]);
       src1 = src_vector(p, &inst->Src[1]);




More information about the mesa-commit mailing list