nir: add int16 and uint16 type helpers
authorMarek Olšák <marek.olsak@amd.com>
Mon, 11 May 2020 04:42:51 +0000 (00:42 -0400)
committerMarge Bot <eric+marge@anholt.net>
Tue, 2 Jun 2020 20:01:18 +0000 (20:01 +0000)
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5002>

src/compiler/glsl_types.cpp
src/compiler/glsl_types.h
src/compiler/nir_types.cpp
src/compiler/nir_types.h

index a1c1beae87246c26d6e8184cb8400452e350e8c7..d6315845e683973afd220071c62864bffd9076f5 100644 (file)
@@ -473,6 +473,28 @@ const glsl_type *glsl_type::get_float16_type() const
                        this->interface_row_major);
 }
 
+const glsl_type *glsl_type::get_int16_type() const
+{
+   assert(this->base_type == GLSL_TYPE_INT);
+
+   return get_instance(GLSL_TYPE_INT16,
+                       this->vector_elements,
+                       this->matrix_columns,
+                       this->explicit_stride,
+                       this->interface_row_major);
+}
+
+const glsl_type *glsl_type::get_uint16_type() const
+{
+   assert(this->base_type == GLSL_TYPE_UINT);
+
+   return get_instance(GLSL_TYPE_UINT16,
+                       this->vector_elements,
+                       this->matrix_columns,
+                       this->explicit_stride,
+                       this->interface_row_major);
+}
+
 static void
 hash_free_type_function(struct hash_entry *entry)
 {
index c1e0aea2eaadefae5a0b95bbc80a1112a18901ca..aa1a4cec324b842213b57532827075aa5cf49650 100644 (file)
@@ -400,6 +400,16 @@ public:
     */
    const glsl_type *get_float16_type() const;
 
+   /**
+    * Gets the int16 version of this type.
+    */
+   const glsl_type *get_int16_type() const;
+
+   /**
+    * Gets the uint16 version of this type.
+    */
+   const glsl_type *get_uint16_type() const;
+
    /**
     * Get the instance of a built-in scalar, vector, or matrix type
     */
index 58815e12c4b65a494515c143a98f01d228f67919..ac61048881419e7be0f226652628f59fc484e28b 100644 (file)
@@ -632,6 +632,18 @@ glsl_float16_type(const struct glsl_type *type)
    return type->get_float16_type();
 }
 
+const glsl_type *
+glsl_int16_type(const struct glsl_type *type)
+{
+   return type->get_int16_type();
+}
+
+const glsl_type *
+glsl_uint16_type(const struct glsl_type *type)
+{
+   return type->get_uint16_type();
+}
+
 void
 glsl_get_natural_size_align_bytes(const struct glsl_type *type,
                                   unsigned *size, unsigned *align)
index 7f947d3f08ecf81b6cc55c006002d66df8a46ae2..77a9c787d98225f7e352b2c81a2731d0b0346a2b 100644 (file)
@@ -210,6 +210,8 @@ const struct glsl_type *glsl_transposed_type(const struct glsl_type *type);
 const struct glsl_type *glsl_channel_type(const struct glsl_type *type);
 
 const struct glsl_type *glsl_float16_type(const struct glsl_type *type);
+const struct glsl_type *glsl_int16_type(const struct glsl_type *type);
+const struct glsl_type *glsl_uint16_type(const struct glsl_type *type);
 
 void glsl_get_natural_size_align_bytes(const struct glsl_type *type,
                                        unsigned *size, unsigned *align);