nir: Add nir_imm_vec4_16
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Wed, 3 Jul 2019 20:00:14 +0000 (13:00 -0700)
committerAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tue, 9 Jul 2019 18:43:07 +0000 (18:43 +0000)
We already have nir_imm_float16 and nir_imm_vec4; let's add the ability
to easily make immediate fp16 vectors as well, now that fp16 support is
maturing in NIR/GLSL.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
src/compiler/nir/nir_builder.h

index cef84a8914ece1bff33ddeb5c4fda2b7aa755702..dbeec08b97e42d911f5b9b7fb85dc2798f467cb8 100644 (file)
@@ -318,6 +318,20 @@ nir_imm_vec4(nir_builder *build, float x, float y, float z, float w)
    return nir_build_imm(build, 4, 32, v);
 }
 
+static inline nir_ssa_def *
+nir_imm_vec4_16(nir_builder *build, float x, float y, float z, float w)
+{
+   nir_const_value v[4];
+
+   memset(v, 0, sizeof(v));
+   v[0].u16 = _mesa_float_to_half(x);
+   v[1].u16 = _mesa_float_to_half(y);
+   v[2].u16 = _mesa_float_to_half(z);
+   v[3].u16 = _mesa_float_to_half(w);
+
+   return nir_build_imm(build, 4, 16, v);
+}
+
 static inline nir_ssa_def *
 nir_imm_ivec2(nir_builder *build, int x, int y)
 {