nir: skip bcsel with non-trivial swizzle in opt_simplify_bcsel_of_phi()

Fixes validation error in a Dota 2 shader.

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Fixes: b031c643491 ("nir: Convert a bcsel with only phi node sources to a phi node")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7426>
diff --git a/src/compiler/nir/nir_opt_if.c b/src/compiler/nir/nir_opt_if.c
index 4283d44..31195b1 100644
--- a/src/compiler/nir/nir_opt_if.c
+++ b/src/compiler/nir/nir_opt_if.c
@@ -635,14 +635,13 @@
 
       bool match = true;
       for (unsigned i = 0; i < 3; i++) {
-         /* FINISHME: The abs and negate cases could be handled by adding
-          * move instructions at the bottom of the continue block and more
-          * phi nodes in the header_block.
+         /* FINISHME: The abs, negate and swizzled cases could be handled by
+          * adding move instructions at the bottom of the continue block and
+          * more phi nodes in the header_block.
           */
-         if (!bcsel->src[i].src.is_ssa ||
+         if (!nir_alu_src_is_trivial_ssa(bcsel, i) ||
              bcsel->src[i].src.ssa->parent_instr->type != nir_instr_type_phi ||
-             bcsel->src[i].src.ssa->parent_instr->block != header_block ||
-             bcsel->src[i].negate || bcsel->src[i].abs) {
+             bcsel->src[i].src.ssa->parent_instr->block != header_block) {
             match = false;
             break;
          }