+
+ /* With aliased inputs, since we add to the wrmask above, we
+ * can end up with stale meta:split instructions in the inputs
+ * table. This is basically harmless, since eventually they
+ * will get swept away by DCE, but the mismatch wrmask (since
+ * they would be using the previous wrmask before we OR'd in
+ * more bits) angers ir3_validate. So just preemptively clean
+ * them up. See:
+ *
+ * dEQP-GLES2.functional.attribute_location.bind_aliasing.cond_vec2
+ *
+ * Note however that split_dest() will return the src if it is
+ * scalar, so the previous ctx->inputs[idx] could be the input
+ * itself (which we don't want to remove)
+ */
+ if (ctx->inputs[idx] && (ctx->inputs[idx] != input)) {
+ list_del(&ctx->inputs[idx]->node);
+ }
+