Otherwise, you may end up moving a register read and that could result
in an incorrect shader. This commit fixes a rendering issue in Elite:
Dangerous.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111152
Fixes: 3ee2e84c60 "nir: Rematerialize compare instructions"
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
}
}
+static bool
+all_srcs_are_ssa(const nir_alu_instr *instr)
+{
+ for (unsigned i = 0; i < nir_op_infos[instr->op].num_inputs; i++) {
+ if (!instr->src[i].src.is_ssa)
+ return false;
+ }
+
+ return true;
+}
+
+
static bool
all_uses_are_bcsel(const nir_alu_instr *instr)
{
if (!is_two_src_comparison(alu))
continue;
+ if (!all_srcs_are_ssa(alu))
+ continue;
+
if (!all_uses_are_bcsel(alu))
continue;