Signed-off-by: Roy Spliet <rspliet@eclipso.eu> Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>tags/10.5-branchpoint
@@ -1059,16 +1059,22 @@ CodeEmitterNV50::emitFMUL(const Instruction *i) | |||
emitForm_IMM(i); | |||
if (neg) | |||
code[0] |= 0x8000; | |||
if (i->saturate) | |||
code[0] |= 1 << 8; | |||
} else | |||
if (i->encSize == 8) { | |||
code[1] = i->rnd == ROUND_Z ? 0x0000c000 : 0; | |||
if (neg) | |||
code[1] |= 0x08000000; | |||
if (i->saturate) | |||
code[1] |= 1 << 20; | |||
emitForm_MAD(i); | |||
} else { | |||
emitForm_MUL(i); | |||
if (neg) | |||
code[0] |= 0x8000; | |||
if (i->saturate) | |||
code[0] |= 1 << 8; | |||
} | |||
} | |||
@@ -84,7 +84,7 @@ static const struct opProperties _initProps[] = | |||
// neg abs not sat c[] s[], a[], imm | |||
{ OP_ADD, 0x3, 0x0, 0x0, 0x8, 0x2, 0x1, 0x1, 0x2 }, | |||
{ OP_SUB, 0x3, 0x0, 0x0, 0x0, 0x2, 0x1, 0x1, 0x2 }, | |||
{ OP_MUL, 0x3, 0x0, 0x0, 0x0, 0x2, 0x1, 0x1, 0x2 }, | |||
{ OP_MUL, 0x3, 0x0, 0x0, 0x8, 0x2, 0x1, 0x1, 0x2 }, | |||
{ OP_MAX, 0x3, 0x3, 0x0, 0x0, 0x2, 0x1, 0x1, 0x0 }, | |||
{ OP_MIN, 0x3, 0x3, 0x0, 0x0, 0x2, 0x1, 0x1, 0x0 }, | |||
{ OP_MAD, 0x7, 0x0, 0x0, 0x8, 0x6, 0x1, 0x1, 0x0 }, // special constraint |