nvc0/ir: fix up an assertion in emitUADD()
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Sat, 23 Jul 2016 01:08:34 +0000 (03:08 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Sat, 23 Jul 2016 22:42:47 +0000 (00:42 +0200)
It's illegal to have neg modifiers on both sources for OP_ADD,
and it's illegal to have OP_SUB with just src0 neg.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
src/gallium/drivers/nouveau/codegen/nv50_ir_emit_nvc0.cpp

index 1c3e5198c969b9ee938c843856913071e741f818..8c9b867e8ba21b2140942c7189fcb5226618b314 100644 (file)
@@ -698,16 +698,15 @@ CodeEmitterNVC0::emitUADD(const Instruction *i)
    uint32_t addOp = 0;
 
    assert(!i->src(0).mod.abs() && !i->src(1).mod.abs());
-   assert(!i->src(0).mod.neg() || !i->src(1).mod.neg());
 
    if (i->src(0).mod.neg())
       addOp |= 0x200;
    if (i->src(1).mod.neg())
       addOp |= 0x100;
-   if (i->op == OP_SUB) {
+   if (i->op == OP_SUB)
       addOp ^= 0x100;
-      assert(addOp != 0x300); // would be add-plus-one
-   }
+
+   assert(addOp != 0x300); // would be add-plus-one
 
    if (i->encSize == 8) {
       if (isLIMM(i->src(1), TYPE_U32)) {