Mesa (nv50-compiler): nv50: DST

Christoph Bumiller chrisbmr at kemper.freedesktop.org
Wed Sep 1 16:02:51 UTC 2010


Module: Mesa
Branch: nv50-compiler
Commit: 7145ab214f1bd0d84671936dddb87db05f2861f6
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7145ab214f1bd0d84671936dddb87db05f2861f6

Author: Ben Skeggs <bskeggs at redhat.com>
Date:   Sat Aug 28 18:08:26 2010 +0200

nv50: DST

---

 src/gallium/drivers/nv50/nv50_tgsi_to_nc.c |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/nv50/nv50_tgsi_to_nc.c b/src/gallium/drivers/nv50/nv50_tgsi_to_nc.c
index 8b18a9c..0ea2912 100644
--- a/src/gallium/drivers/nv50/nv50_tgsi_to_nc.c
+++ b/src/gallium/drivers/nv50/nv50_tgsi_to_nc.c
@@ -1337,6 +1337,19 @@ bld_instruction(struct bld_context *bld,
       FOR_EACH_DST0_ENABLED_CHANNEL(c, insn)
          dst0[c] = temp;
       break;
+   case TGSI_OPCODE_DST:
+      if (insn->Dst[0].Register.WriteMask & 1)
+         dst0[0] = bld_imm_f32(bld, 1.0f);
+      if (insn->Dst[0].Register.WriteMask & 2) {
+         src0 = emit_fetch(bld, insn, 0, 1);
+         src1 = emit_fetch(bld, insn, 1, 1);
+         dst0[1] = bld_insn_2(bld, NV_OP_MUL, src0, src1);
+      }
+      if (insn->Dst[0].Register.WriteMask & 4)
+         dst0[2] = emit_fetch(bld, insn, 0, 2);
+      if (insn->Dst[0].Register.WriteMask & 8)
+         dst0[3] = emit_fetch(bld, insn, 1, 3);
+      break;
    case TGSI_OPCODE_EX2:
       src0 = emit_fetch(bld, insn, 0, 0);
       temp = bld_insn_1(bld, NV_OP_PREEX2, src0);




More information about the mesa-commit mailing list