Module: Mesa
Branch: master
Commit: 16a80ff18a0c6210f9c4c6d2668537dba2349608
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=16a80ff18a0c6210f9c4c6d2668537dba2349608

Author: Jason Ekstrand <[email protected]>
Date:   Fri Mar 27 11:49:14 2020 -0500

aco: Implement b2b32 and b2b1

The implementations here just clone i2b32 and i2b1.  This means that
b2b32 doesn't technically generate true NIR 0/-1 booleans but it should
be fine as it's only ever generated for shared variable writes which
will always be consumed by something which will then run it through an
i2b again.

Reviewed-by: Rhys Perry <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4338>

---

 src/amd/compiler/aco_instruction_selection.cpp       | 2 ++
 src/amd/compiler/aco_instruction_selection_setup.cpp | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/src/amd/compiler/aco_instruction_selection.cpp 
b/src/amd/compiler/aco_instruction_selection.cpp
index fa3d38e1be7..8b8f3fa8ce0 100644
--- a/src/amd/compiler/aco_instruction_selection.cpp
+++ b/src/amd/compiler/aco_instruction_selection.cpp
@@ -2247,6 +2247,7 @@ void visit_alu_instr(isel_context *ctx, nir_alu_instr 
*instr)
       }
       break;
    }
+   case nir_op_b2b32:
    case nir_op_b2i32: {
       Temp src = get_alu_src(ctx, instr->src[0]);
       assert(src.regClass() == bld.lm);
@@ -2261,6 +2262,7 @@ void visit_alu_instr(isel_context *ctx, nir_alu_instr 
*instr)
       }
       break;
    }
+   case nir_op_b2b1:
    case nir_op_i2b1: {
       Temp src = get_alu_src(ctx, instr->src[0]);
       assert(dst.regClass() == bld.lm);
diff --git a/src/amd/compiler/aco_instruction_selection_setup.cpp 
b/src/amd/compiler/aco_instruction_selection_setup.cpp
index 644bc151fcb..d365f79698a 100644
--- a/src/amd/compiler/aco_instruction_selection_setup.cpp
+++ b/src/amd/compiler/aco_instruction_selection_setup.cpp
@@ -323,11 +323,13 @@ void init_context(isel_context *ctx, nir_shader *shader)
                   case nir_op_ieq:
                   case nir_op_ine:
                   case nir_op_i2b1:
+                  case nir_op_b2b1:
                      size = lane_mask_size;
                      break;
                   case nir_op_f2i64:
                   case nir_op_f2u64:
                   case nir_op_b2i32:
+                  case nir_op_b2b32:
                   case nir_op_b2f32:
                   case nir_op_f2i32:
                   case nir_op_f2u32:

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to