Module: Mesa
Branch: master
Commit: 84ebaff1b7f78cb47cd8eed5476f03c5c3d0e14b
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=84ebaff1b7f78cb47cd8eed5476f03c5c3d0e14b

Author: Eric Anholt <[email protected]>
Date:   Wed Apr  1 15:35:13 2015 -0700

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.

---

 src/gallium/drivers/vc4/vc4_program.c |   12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/gallium/drivers/vc4/vc4_program.c 
b/src/gallium/drivers/vc4/vc4_program.c
index bcceb3c..ca2e81c 100644
--- a/src/gallium/drivers/vc4/vc4_program.c
+++ b/src/gallium/drivers/vc4/vc4_program.c
@@ -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;

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to