OSDN Git Service

gk110/ir: fix imul hi emission with limm arg
authorIlia Mirkin <imirkin@alum.mit.edu>
Fri, 18 Dec 2015 12:25:53 +0000 (12:25 +0000)
committerEmil Velikov <emil.l.velikov@gmail.com>
Fri, 18 Dec 2015 12:26:21 +0000 (12:26 +0000)
The elemental demo hits this case.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: "11.0 11.1" <mesa-stable@lists.freedesktop.org>
(cherry picked from commit db072d20867426958153279575dfdc2049b5f595)

src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp

index 8f15429..37e33c9 100644 (file)
@@ -575,8 +575,8 @@ CodeEmitterGK110::emitIMUL(const Instruction *i)
    if (isLIMM(i->src(1), TYPE_S32)) {
       emitForm_L(i, 0x280, 2, Modifier(0));
 
-      assert(i->subOp != NV50_IR_SUBOP_MUL_HIGH);
-
+      if (i->subOp == NV50_IR_SUBOP_MUL_HIGH)
+         code[1] |= 1 << 24;
       if (i->sType == TYPE_S32)
          code[1] |= 3 << 25;
    } else {