Mesa (master): nv50/ir: handle TGSI_OPCODE_ISSG

Christoph Bumiller chrisbmr at kemper.freedesktop.org
Wed Jan 11 19:27:37 UTC 2012


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

Author: Christoph Bumiller <e0425955 at student.tuwien.ac.at>
Date:   Wed Jan 11 20:25:06 2012 +0100

nv50/ir: handle TGSI_OPCODE_ISSG

---

 .../drivers/nv50/codegen/nv50_ir_from_tgsi.cpp     |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/nv50/codegen/nv50_ir_from_tgsi.cpp b/src/gallium/drivers/nv50/codegen/nv50_ir_from_tgsi.cpp
index 7f4c7f2..a1c8f84 100644
--- a/src/gallium/drivers/nv50/codegen/nv50_ir_from_tgsi.cpp
+++ b/src/gallium/drivers/nv50/codegen/nv50_ir_from_tgsi.cpp
@@ -385,6 +385,7 @@ nv50_ir::DataType Instruction::inferSrcType() const
    case TGSI_OPCODE_ISGE:
    case TGSI_OPCODE_ISHR:
    case TGSI_OPCODE_ISLT:
+   case TGSI_OPCODE_ISSG:
    case TGSI_OPCODE_SAD: // not sure about SAD, but no one has a float version
    case TGSI_OPCODE_MOD:
    case TGSI_OPCODE_UARL:
@@ -1892,14 +1893,18 @@ Converter::handleInstruction(const struct tgsi_full_instruction *insn)
          }
       }
       break;
+   case TGSI_OPCODE_ISSG:
    case TGSI_OPCODE_SSG:
       FOR_EACH_DST_ENABLED_CHANNEL(0, c, tgsi) {
          src0 = fetchSrc(0, c);
          val0 = getScratch();
          val1 = getScratch();
-         mkCmp(OP_SET, CC_GT, TYPE_F32, val0, src0, zero);
-         mkCmp(OP_SET, CC_LT, TYPE_F32, val1, src0, zero);
-         mkOp2(OP_SUB, TYPE_F32, dst0[c], val0, val1);
+         mkCmp(OP_SET, CC_GT, srcTy, val0, src0, zero);
+         mkCmp(OP_SET, CC_LT, srcTy, val1, src0, zero);
+         if (srcTy == TYPE_F32)
+            mkOp2(OP_SUB, TYPE_F32, dst0[c], val0, val1);
+         else
+            mkOp2(OP_SUB, TYPE_S32, dst0[c], val1, val0);
       }
       break;
    case TGSI_OPCODE_UCMP:




More information about the mesa-commit mailing list