struct bi_tuple_state *tuple,
bool fma)
{
+#ifndef NDEBUG
+ /* Don't pair instructions if debugging */
+ if ((bifrost_debug & BIFROST_DBG_NOSCHED) && tuple->add)
+ return NULL;
+#endif
+
if (tuple->add && tuple->add->op == BI_OPCODE_CUBEFACE)
return bi_lower_cubeface(ctx, clause, tuple);
if (!bi_space_for_more_constants(&clause_state))
break;
+#ifndef NDEBUG
+ /* Don't schedule more than 1 tuple if debugging */
+ if (bifrost_debug & BIFROST_DBG_NOSCHED)
+ break;
+#endif
+
/* Link through the register state */
STATIC_ASSERT(sizeof(prev_reads) == sizeof(tuple_state.reg.reads));
memcpy(prev_reads, tuple_state.reg.reads, sizeof(prev_reads));
#define BIFROST_DBG_SHADERDB 0x0004
#define BIFROST_DBG_VERBOSE 0x0008
#define BIFROST_DBG_INTERNAL 0x0010
+#define BIFROST_DBG_NOSCHED 0x0020
extern int bifrost_debug;
{"shaderdb", BIFROST_DBG_SHADERDB, "Print statistics"},
{"verbose", BIFROST_DBG_VERBOSE, "Disassemble verbosely"},
{"internal", BIFROST_DBG_INTERNAL, "Dump even internal shaders"},
+ {"nosched", BIFROST_DBG_NOSCHED, "Force trivial scheduling"},
DEBUG_NAMED_VALUE_END
};