summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
diff options
context:
space:
mode:
authorIlia Mirkin <imirkin@alum.mit.edu>2014-09-28 12:07:03 -0400
committerIlia Mirkin <imirkin@alum.mit.edu>2014-10-03 20:37:59 -0400
commitc74be01e80fcdd7feabc0f27df4aebe66abb626e (patch)
treeff5b2f6fcecd80c7137b69aea0a0ff36ffb7859c /src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
parentd58037ccf5f362cabecb09bd4874db52629bbd71 (diff)
gk110/ir: add dnz flag emission for fmul/fmad
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Cc: "10.2 10.3" <mesa-stable@lists.freedesktop.org>
Diffstat (limited to 'src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp')
-rw-r--r--src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
index 23a6ac7528d..d8adc93eb5c 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
@@ -140,6 +140,7 @@ private:
code[(0x##b) / 32] |= 1 << ((0x##b) % 32)
#define FTZ_(b) if (i->ftz) code[(0x##b) / 32] |= 1 << ((0x##b) % 32)
+#define DNZ_(b) if (i->dnz) code[(0x##b) / 32] |= 1 << ((0x##b) % 32)
#define SAT_(b) if (i->saturate) code[(0x##b) / 32] |= 1 << ((0x##b) % 32)
@@ -464,6 +465,7 @@ CodeEmitterGK110::emitFMAD(const Instruction *i)
SAT_(35);
RND_(36, F);
FTZ_(38);
+ DNZ_(39);
bool neg1 = (i->src(0).mod ^ i->src(1).mod).neg();
@@ -487,6 +489,7 @@ CodeEmitterGK110::emitFMUL(const Instruction *i)
emitForm_L(i, 0x200, 0x2, Modifier(0));
FTZ_(38);
+ DNZ_(39);
SAT_(3a);
if (neg)
code[1] ^= 1 << 22;
@@ -499,6 +502,7 @@ CodeEmitterGK110::emitFMUL(const Instruction *i)
RND_(2a, F);
FTZ_(2f);
+ DNZ_(30);
SAT_(35);
if (code[0] & 0x1) {