vc4: Add a bunch of type conversions.

These are required to get piglit's idiv tests working.  The
unsigned<->float conversions are wrong, but are good enough to get
piglit's small ranges of values working.
This commit is contained in:
Eric Anholt
2015-04-01 15:35:13 -07:00
parent cc5860e407
commit 84ebaff1b7
+12
View File
@@ -925,15 +925,27 @@ ntq_emit_alu(struct vc4_compile *c, nir_alu_instr *instr)
case nir_op_fmax:
*dest = qir_FMAX(c, src[0], src[1]);
break;
case nir_op_f2i:
case nir_op_f2u:
*dest = qir_FTOI(c, src[0]);
break;
case nir_op_i2f:
case nir_op_u2f:
*dest = qir_ITOF(c, src[0]);
break;
case nir_op_b2f:
*dest = qir_AND(c, src[0], qir_uniform_f(c, 1.0));
break;
case nir_op_b2i:
*dest = qir_AND(c, src[0], qir_uniform_ui(c, 1));
break;
case nir_op_i2b:
case nir_op_f2b:
qir_SF(c, src[0]);
*dest = qir_SEL_X_0_ZC(c, qir_uniform_ui(c, ~0));
break;
case nir_op_iadd:
*dest = qir_ADD(c, src[0], src[1]);
break;