nir/serach: Increase maximum commutative expressions from 4 to 8
authorIan Romanick <ian.d.romanick@intel.com>
Mon, 24 Jun 2019 22:30:35 +0000 (15:30 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Sat, 29 Jun 2019 01:56:19 +0000 (18:56 -0700)
No shader-db change on any Intel platform.  No shader-db run-time
difference on a certain 36-core / 72-thread system at 95% confidence
(n=20).

Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
src/compiler/nir/nir_algebraic.py
src/compiler/nir/nir_search.c

index d7f8e48dec8e9595eef3a4de240ab7daee63ed81..e79fa3cec5ea9d697a5762befddcf1b494ddda80 100644 (file)
@@ -36,7 +36,7 @@ import traceback
 from nir_opcodes import opcodes, type_sizes
 
 # This should be the same as NIR_SEARCH_MAX_COMM_OPS in nir_search.c
-nir_search_max_comm_ops = 4
+nir_search_max_comm_ops = 8
 
 # These opcodes are only employed by nir_search.  This provides a mapping from
 # opcode to destination type.
index 1f68f78afa337aef12c7f791807b6fab26a85297..8e3c3529a7413c905d6e31b52f742954c44cb8c7 100644 (file)
@@ -31,7 +31,7 @@
 #include "util/half_float.h"
 
 /* This should be the same as nir_search_max_comm_ops in nir_algebraic.py. */
-#define NIR_SEARCH_MAX_COMM_OPS 4
+#define NIR_SEARCH_MAX_COMM_OPS 8
 
 struct match_state {
    bool inexact_match;
@@ -632,6 +632,8 @@ nir_replace_instr(nir_builder *build, nir_alu_instr *instr,
    state.inexact_match = false;
    state.has_exact_alu = false;
 
+   STATIC_ASSERT(sizeof(state.comm_op_direction) * 8 >= NIR_SEARCH_MAX_COMM_OPS);
+
    unsigned comm_expr_combinations =
       1 << MIN2(search->comm_exprs, NIR_SEARCH_MAX_COMM_OPS);