Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>tags/11.0-branchpoint
@@ -967,8 +967,8 @@ CodeEmitterGK110::emitSET(const CmpInstruction *i) | |||
code[0] = (code[0] & ~0xfc) | ((code[0] << 3) & 0xe0); | |||
if (i->defExists(1)) | |||
defId(i->def(1), 2); | |||
else | |||
code[0] |= 0x1c; | |||
else | |||
code[0] |= 0x1c; | |||
} else { | |||
switch (i->sType) { | |||
case TYPE_F32: op2 = 0x000; op1 = 0x800; break; | |||
@@ -990,8 +990,12 @@ CodeEmitterGK110::emitSET(const CmpInstruction *i) | |||
} | |||
FTZ_(3a); | |||
if (i->dType == TYPE_F32) | |||
code[1] |= 1 << 23; | |||
if (i->dType == TYPE_F32) { | |||
if (isFloatType(i->sType)) | |||
code[1] |= 1 << 23; | |||
else | |||
code[1] |= 1 << 15; | |||
} | |||
} | |||
if (i->sType == TYPE_S32) | |||
code[1] |= 1 << 19; |
@@ -1830,6 +1830,7 @@ CodeEmitterGM107::emitISET() | |||
emitCond3(0x31, insn->setCond); | |||
emitField(0x30, 1, isSignedType(insn->sType)); | |||
emitCC (0x2f); | |||
emitField(0x2c, 1, insn->dType == TYPE_F32); | |||
emitX (0x2b); | |||
emitGPR (0x08, insn->src(0)); | |||
emitGPR (0x00, insn->def(0)); |
@@ -1078,8 +1078,14 @@ CodeEmitterNVC0::emitSET(const CmpInstruction *i) | |||
if (!isFloatType(i->sType)) | |||
lo = 0x3; | |||
if (isFloatType(i->dType) || isSignedIntType(i->sType)) | |||
if (isSignedIntType(i->sType)) | |||
lo |= 0x20; | |||
if (isFloatType(i->dType)) { | |||
if (isFloatType(i->sType)) | |||
lo |= 0x20; | |||
else | |||
lo |= 0x80; | |||
} | |||
switch (i->op) { | |||
case OP_SET_AND: hi = 0x10000000; break; |