Re: [Mesa-dev] [PATCH 06/22] compiler/nir: support 16-bit float in nir_imm_floatN_t
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 Ekstrandwrote: Why did the function move? On May 17, 2018 01:47:51 Iago Toral Quiroga 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@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH 06/22] compiler/nir: support 16-bit float in nir_imm_floatN_t
Why did the function move? On May 17, 2018 01:47:51 Iago Toral Quirogawrote: --- 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@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCH 06/22] compiler/nir: support 16-bit float in nir_imm_floatN_t
--- 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@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev