[Mesa-stable] [PATCH] i965/fs: Remove the inline pack_double_2x32 optimization

Jason Ekstrand jason at jlekstrand.net
Tue Feb 28 18:49:30 UTC 2017


It's broken in a number of ways.  In particular, a bunch of the
conditions are backwards so it doesn't actually detect what it's
supposed to detect.  Since it's been broken, it hasn't actually been
helping anything so just deleting it isn't a regression.

This (and removing another optimization) were done on master in commit
b07381161777ba5d5f4a1d713f7655bcaede4139.

Cc: "Kenneth Grunke" <kenneth at whitecape.org>
Cc: "Mark Janes" <mark.a.janes at intel.com>
---
 src/mesa/drivers/dri/i965/brw_fs_nir.cpp | 29 -----------------------------
 1 file changed, 29 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
index 0a3bce7..ff29711 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
@@ -1166,35 +1166,6 @@ fs_visitor::nir_emit_alu(const fs_builder &bld, nir_alu_instr *instr)
       break;
 
    case nir_op_pack_double_2x32_split:
-      /* Optimize the common case where we are re-packing a double with
-       * the result of a previous double unpack. In this case we can take the
-       * 32-bit value to use in the re-pack from the original double and bypass
-       * the unpack operation.
-       */
-      for (int i = 0; i < 2; i++) {
-         if (!instr->src[i].src.is_ssa)
-            continue;
-
-         const nir_instr *parent_instr = instr->src[i].src.ssa->parent_instr;
-         if (parent_instr->type == nir_instr_type_alu)
-            continue;
-
-         const nir_alu_instr *alu_parent = nir_instr_as_alu(parent_instr);
-         if (alu_parent->op == nir_op_unpack_double_2x32_split_x ||
-             alu_parent->op == nir_op_unpack_double_2x32_split_y)
-            continue;
-
-         if (!alu_parent->src[0].src.is_ssa)
-            continue;
-
-         op[i] = get_nir_src(alu_parent->src[0].src);
-         op[i] = offset(retype(op[i], BRW_REGISTER_TYPE_DF), bld,
-                        alu_parent->src[0].swizzle[channel]);
-         if (alu_parent->op == nir_op_unpack_double_2x32_split_y)
-            op[i] = subscript(op[i], BRW_REGISTER_TYPE_UD, 1);
-         else
-            op[i] = subscript(op[i], BRW_REGISTER_TYPE_UD, 0);
-      }
       bld.emit(FS_OPCODE_PACK, result, op[0], op[1]);
       break;
 
-- 
2.5.0.400.gff86faf



More information about the mesa-stable mailing list