nir/ lower_int_to_float: Handle umax and umin
authorAndreas Baierl <ichgeh@imkreisrum.de>
Thu, 23 Jul 2020 05:43:09 +0000 (07:43 +0200)
committerMarge Bot <eric+marge@anholt.net>
Thu, 23 Jul 2020 14:45:32 +0000 (14:45 +0000)
8e1b75b3 introduced umax/umin in order to lower iand/ior for (n)eq zero.
That breaks the lower_int_to_float pass, because umax and umin weren't
handled there.

Tested with lima. The other users of nir_lower_int_to_float
(etnaviv, freedreno) should also have that issue.

Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Signed-off-by: Andreas Baierl <ichgeh@imkreisrum.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6043>

src/compiler/nir/nir_lower_int_to_float.c

index d1e77daf1fee79aa5ce55a6fa69c494e62bd4049..e526108d90457f4cbee631d36b57f02527fd6b81 100644 (file)
@@ -86,6 +86,8 @@ lower_alu_instr(nir_builder *b, nir_alu_instr *alu)
    case nir_op_ineg: alu->op = nir_op_fneg; break;
    case nir_op_imax: alu->op = nir_op_fmax; break;
    case nir_op_imin: alu->op = nir_op_fmin; break;
+   case nir_op_umax: alu->op = nir_op_fmax; break;
+   case nir_op_umin: alu->op = nir_op_fmin; break;
 
    case nir_op_ball_iequal2:  alu->op = nir_op_ball_fequal2; break;
    case nir_op_ball_iequal3:  alu->op = nir_op_ball_fequal3; break;