nir: allow sat on all float destination types
authorIlia Mirkin <imirkin@alum.mit.edu>
Tue, 31 May 2016 21:50:04 +0000 (17:50 -0400)
committerIlia Mirkin <imirkin@alum.mit.edu>
Wed, 1 Jun 2016 14:44:40 +0000 (10:44 -0400)
With the introduction of fp64 and fp16 to nir, there are now a bunch of
float types running around. A F1 2015 shader ends up with an i2f.sat
operation, which has a nir_type_float32 destination. Allow sat on all
the float destination types.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: "12.0" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/compiler/nir/nir_validate.c

index 35bb162ac7f9c84fc53f6b0edbf5b8d93e2e5e09..e5f5b8acc60ab7e9f669d4dc50285b294bfaf105 100644 (file)
@@ -331,7 +331,9 @@ validate_alu_dest(nir_alu_instr *instr, validate_state *state)
     * destinations of type float
     */
    nir_alu_instr *alu = nir_instr_as_alu(state->instr);
-   validate_assert(state, nir_op_infos[alu->op].output_type == nir_type_float ||
+   validate_assert(state,
+          (nir_alu_type_get_base_type(nir_op_infos[alu->op].output_type) ==
+           nir_type_float) ||
           !dest->saturate);
 
    unsigned bit_size = dest->dest.is_ssa ? dest->dest.ssa.bit_size