[Mesa-dev] [PATCH] nir: allow sat on all float destination types
Ilia Mirkin
imirkin at alum.mit.edu
Wed Jun 1 06:33:23 UTC 2016
On Wed, Jun 1, 2016 at 2:14 AM, Jason Ekstrand <jason at jlekstrand.net> wrote:
>
> On May 31, 2016 2:50 PM, "Ilia Mirkin" <imirkin at alum.mit.edu> wrote:
>>
>> 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 at alum.mit.edu>
>> Cc: "12.0" <mesa-stable at lists.freedesktop.org>
>> ---
>> src/compiler/nir/nir_validate.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/src/compiler/nir/nir_validate.c
>> b/src/compiler/nir/nir_validate.c
>> index 35bb162..8404e11 100644
>> --- a/src/compiler/nir/nir_validate.c
>> +++ b/src/compiler/nir/nir_validate.c
>> @@ -331,7 +331,7 @@ 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_op_infos[alu->op].output_type &
>> nir_type_float ||
>
> We have a nir_alu_type_get_base_type helper function which would probably be
> more appropriate than the &. With that changed,
>
> Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Thanks! I'm having a really hard time formatting it in a way that
doesn't look ridiculous -- something like this?
diff --git a/src/compiler/nir/nir_validate.c b/src/compiler/nir/nir_validate.c
index 35bb162..e5f5b8a 100644
--- a/src/compiler/nir/nir_validate.c
+++ b/src/compiler/nir/nir_validate.c
@@ -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
Or should I pull out the type calculation like it is done below for
instr->op (I assume that state->instr != instr?)
>
>> !dest->saturate);
>>
>> unsigned bit_size = dest->dest.is_ssa ? dest->dest.ssa.bit_size
>> --
>> 2.7.3
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list