[LLVM][CodeGen][SVE] Improve code quality of predicate vector extracts. (#220254)
When extracting a fixed-length vector from a scalable boolean vector, it
is better to promote the scalable vector to i8s and extract from that
because it makes the resulting DAG mostly legal with the hope the
truncation of the result will be eliminated.
NOTE: CodeGenDAGPatterns has been changed because the original code was
too strict. Before this change a fixed-length vector was not considered
a valid subvector of a scalable vector. This erronously removed all
scalable vector MVTs to the point that type checking was disabled for
some operations because the matcher assumed only a single MVT was legal.
The net result of this is that NEON only patterns matched against
scalable vector inputs and thus generated bad code.