This is a follow up to D149263 which extends the generic vslide1down handling to use vslidedown (without the one) for undef elements, and in particular for undef sub-sequences. This both removes the domain crossing, and for undef subsequences results in fewer instructions over all.
A question for reviewers. This could also be written as a set of DAG combines and achieve the same effect. I'd actually written it that way originally, but given a) it didn't catch anything beyond the buildvec case and b) preference expressed in previous reviews, I switched over. Which do we prefer here?
Another question - mostly for a possible follow-on. The codegen this produces for a build_vector which ends with a undef sub-sequence is a series of vslide1downs + a one vslidedown at the end. An alternate result would be to change VL, and directly insert into the desired positions. The tradeoff is between a vsetvli toggle (which would be largely unremovable) and an extra vslidedown. I'm leaning towards keeping this codegen, does that seem like the right outcome?
Could we reuse getVSlidedown here?