[Mesa-dev] [PATCH 06/22] compiler/nir: support 16-bit float in nir_imm_floatN_t

Jason Ekstrand jason at jlekstrand.net
Thu May 17 14:12:41 UTC 2018


After sending this, I realized that it's probably because you depend on 
nir_imm_intN_t().  Alternatively, we could make a nir_imm_float16() helper 
which may be nicer for cases where you know you need 16-bit floats.  This 
is fine though.  Rb.

On May 17, 2018 07:01:53 Jason Ekstrand <jason at jlekstrand.net> wrote:

> Why did the function move?
>
> On May 17, 2018 01:47:51 Iago Toral Quiroga <itoral at igalia.com> wrote:
>
>> ---
>> src/compiler/nir/nir_builder.h | 29 ++++++++++++++++-------------
>> 1 file changed, 16 insertions(+), 13 deletions(-)
>>
>> diff --git a/src/compiler/nir/nir_builder.h b/src/compiler/nir/nir_builder.h
>> index 02a9dbfb040..198c42dd823 100644
>> --- a/src/compiler/nir/nir_builder.h
>> +++ b/src/compiler/nir/nir_builder.h
>> @@ -25,6 +25,7 @@
>> #define NIR_BUILDER_H
>>
>> #include "nir_control_flow.h"
>> +#include "util/half_float.h"
>>
>> struct exec_list;
>>
>> @@ -227,19 +228,6 @@ nir_imm_double(nir_builder *build, double x)
>> return nir_build_imm(build, 1, 64, v);
>> }
>>
>> -static inline nir_ssa_def *
>> -nir_imm_floatN_t(nir_builder *build, double x, unsigned bit_size)
>> -{
>> -   switch (bit_size) {
>> -   case 32:
>> -      return nir_imm_float(build, x);
>> -   case 64:
>> -      return nir_imm_double(build, x);
>> -   }
>> -
>> -   unreachable("unknown float immediate bit size");
>> -}
>> -
>> static inline nir_ssa_def *
>> nir_imm_vec4(nir_builder *build, float x, float y, float z, float w)
>> {
>> @@ -288,6 +276,21 @@ nir_imm_intN_t(nir_builder *build, uint64_t x,
>> unsigned bit_size)
>> return nir_build_imm(build, 1, bit_size, v);
>> }
>>
>> +static inline nir_ssa_def *
>> +nir_imm_floatN_t(nir_builder *build, double x, unsigned bit_size)
>> +{
>> +   switch (bit_size) {
>> +   case 16:
>> +      return nir_imm_intN_t(build, _mesa_float_to_half((float)x), 16);
>> +   case 32:
>> +      return nir_imm_float(build, x);
>> +   case 64:
>> +      return nir_imm_double(build, x);
>> +   }
>> +
>> +   unreachable("unknown float immediate bit size");
>> +}
>> +
>> static inline nir_ssa_def *
>> nir_imm_ivec4(nir_builder *build, int x, int y, int z, int w)
>> {
>> --
>> 2.14.1
>>
>> _______________________________________________
>> 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