gk110/ir: fix imul hi emission with limm arg
authorIlia Mirkin <imirkin@alum.mit.edu>
Mon, 7 Dec 2015 18:26:51 +0000 (13:26 -0500)
committerIlia Mirkin <imirkin@alum.mit.edu>
Mon, 7 Dec 2015 18:30:17 +0000 (13:30 -0500)
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>
src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp

index 0e52c73b32230e6d7898d5d8f26339dca99a25d2..4a63eb184bf98171ec6413376acc9f641ef6c9da 100644 (file)
@@ -576,8 +576,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 {