[Mesa-dev] [PATCH 3/3] i965: Make emit_minmax return an instruction*.

Matt Turner mattst88 at gmail.com
Fri Feb 12 00:41:50 UTC 2016


And use it in brw_fs_nir.cpp.
---
 src/mesa/drivers/dri/i965/brw_fs_builder.h   | 6 +++---
 src/mesa/drivers/dri/i965/brw_fs_nir.cpp     | 6 ++----
 src/mesa/drivers/dri/i965/brw_vec4_builder.h | 8 +++++---
 3 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs_builder.h b/src/mesa/drivers/dri/i965/brw_fs_builder.h
index bb94c3d..9a3cc3a 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_builder.h
+++ b/src/mesa/drivers/dri/i965/brw_fs_builder.h
@@ -369,14 +369,14 @@ namespace brw {
        *
        * Generally useful to get the minimum or maximum of two values.
        */
-      void
+      instruction *
       emit_minmax(const dst_reg &dst, const src_reg &src0,
                   const src_reg &src1, brw_conditional_mod mod) const
       {
          assert(mod == BRW_CONDITIONAL_GE || mod == BRW_CONDITIONAL_L);
 
-         set_condmod(mod, SEL(dst, fix_unsigned_negate(src0),
-                              fix_unsigned_negate(src1)));
+         return set_condmod(mod, SEL(dst, fix_unsigned_negate(src0),
+                                     fix_unsigned_negate(src1)));
       }
 
       /**
diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
index 3014dbb..bea4db6 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
@@ -950,16 +950,14 @@ fs_visitor::nir_emit_alu(const fs_builder &bld, nir_alu_instr *instr)
    case nir_op_fmin:
    case nir_op_imin:
    case nir_op_umin:
-      inst = bld.emit(BRW_OPCODE_SEL, result, op[0], op[1]);
-      inst->conditional_mod = BRW_CONDITIONAL_L;
+      inst = bld.emit_minmax(result, op[0], op[1], BRW_CONDITIONAL_L);
       inst->saturate = instr->dest.saturate;
       break;
 
    case nir_op_fmax:
    case nir_op_imax:
    case nir_op_umax:
-      inst = bld.emit(BRW_OPCODE_SEL, result, op[0], op[1]);
-      inst->conditional_mod = BRW_CONDITIONAL_GE;
+      inst = bld.emit_minmax(result, op[0], op[1], BRW_CONDITIONAL_GE);
       inst->saturate = instr->dest.saturate;
       break;
 
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_builder.h b/src/mesa/drivers/dri/i965/brw_vec4_builder.h
index a0b390b..3a8617e 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_builder.h
+++ b/src/mesa/drivers/dri/i965/brw_vec4_builder.h
@@ -299,12 +299,14 @@ namespace brw {
        *
        * Generally useful to get the minimum or maximum of two values.
        */
-      void
+      instruction *
       emit_minmax(const dst_reg &dst, const src_reg &src0,
                   const src_reg &src1, brw_conditional_mod mod) const
       {
-         set_condmod(mod, SEL(dst, fix_unsigned_negate(src0),
-                              fix_unsigned_negate(src1)));
+         assert(mod == BRW_CONDITIONAL_GE || mod == BRW_CONDITIONAL_L);
+
+         return set_condmod(mod, SEL(dst, fix_unsigned_negate(src0),
+                                     fix_unsigned_negate(src1)));
       }
 
       /**
-- 
2.4.10



More information about the mesa-dev mailing list