Mesa (master): nir: Add a 8-bit bool type
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Nov 20 14:38:27 UTC 2019
Module: Mesa
Branch: master
Commit: 634eb9c04b35c45684b0d1ebacb04e52458d4fa9
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=634eb9c04b35c45684b0d1ebacb04e52458d4fa9
Author: Neil Roberts <nroberts at igalia.com>
Date: Thu Jan 31 16:05:44 2019 +0100
nir: Add a 8-bit bool type
Adds nir_type_bool8 as well as 8-bit versions of all the bool
opcodes.
Reviewed-by: Rob Clark <robdclark at gmail.com>
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
---
src/compiler/nir/nir.h | 1 +
src/compiler/nir/nir_opcodes.py | 13 +++++++++++--
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
index e0e2b5a27d2..32bcfe22c2f 100644
--- a/src/compiler/nir/nir.h
+++ b/src/compiler/nir/nir.h
@@ -889,6 +889,7 @@ typedef enum {
nir_type_bool = 6,
nir_type_float = 128,
nir_type_bool1 = 1 | nir_type_bool,
+ nir_type_bool8 = 8 | nir_type_bool,
nir_type_bool16 = 16 | nir_type_bool,
nir_type_bool32 = 32 | nir_type_bool,
nir_type_int1 = 1 | nir_type_int,
diff --git a/src/compiler/nir/nir_opcodes.py b/src/compiler/nir/nir_opcodes.py
index 01b5e2bef6c..2ab04ed9b1d 100644
--- a/src/compiler/nir/nir_opcodes.py
+++ b/src/compiler/nir/nir_opcodes.py
@@ -95,6 +95,7 @@ tfloat = "float"
tint = "int"
tbool = "bool"
tbool1 = "bool1"
+tbool8 = "bool8"
tbool16 = "bool16"
tbool32 = "bool32"
tuint = "uint"
@@ -124,7 +125,7 @@ def type_sizes(type_):
if type_has_size(type_):
return [type_size(type_)]
elif type_ == 'bool':
- return [1, 16, 32]
+ return [1, 8, 16, 32]
elif type_ == 'float':
return [16, 32, 64]
else:
@@ -496,6 +497,9 @@ def binop(name, ty, alg_props, const_expr):
def binop_compare(name, ty, alg_props, const_expr):
binop_convert(name, tbool1, ty, alg_props, const_expr)
+def binop_compare8(name, ty, alg_props, const_expr):
+ binop_convert(name, tbool8, ty, alg_props, const_expr)
+
def binop_compare16(name, ty, alg_props, const_expr):
binop_convert(name, tbool16, ty, alg_props, const_expr)
@@ -504,6 +508,7 @@ def binop_compare32(name, ty, alg_props, const_expr):
def binop_compare_all_sizes(name, ty, alg_props, const_expr):
binop_compare(name, ty, alg_props, const_expr)
+ binop_compare8(name + "8", ty, alg_props, const_expr)
binop_compare16(name + "16", ty, alg_props, const_expr)
binop_compare32(name + "32", ty, alg_props, const_expr)
@@ -538,6 +543,8 @@ def binop_reduce_all_sizes(name, output_size, src_type, prereduce_expr,
reduce_expr, final_expr):
binop_reduce(name, output_size, tbool1, src_type,
prereduce_expr, reduce_expr, final_expr)
+ binop_reduce("b8" + name[1:], output_size, tbool8, src_type,
+ prereduce_expr, reduce_expr, final_expr)
binop_reduce("b16" + name[1:], output_size, tbool16, src_type,
prereduce_expr, reduce_expr, final_expr)
binop_reduce("b32" + name[1:], output_size, tbool32, src_type,
@@ -934,7 +941,9 @@ triop("imed3", tint, "", "MAX2(MIN2(MAX2(src0, src1), src2), MIN2(src0, src1))")
triop("umed3", tuint, "", "MAX2(MIN2(MAX2(src0, src1), src2), MIN2(src0, src1))")
opcode("bcsel", 0, tuint, [0, 0, 0],
- [tbool1, tuint, tuint], False, "", "src0 ? src1 : src2")
+ [tbool1, tuint, tuint], False, "", "src0 ? src1 : src2")
+opcode("b8csel", 0, tuint, [0, 0, 0],
+ [tbool8, tuint, tuint], False, "", "src0 ? src1 : src2")
opcode("b16csel", 0, tuint, [0, 0, 0],
[tbool16, tuint, tuint], False, "", "src0 ? src1 : src2")
opcode("b32csel", 0, tuint, [0, 0, 0],
More information about the mesa-commit
mailing list