This patch needs to be broken down into smaller chunks.
The purpose of this patch is to demonstrate how new, generic LLVM intrinsics could be emitted directly from inside LoopVectorize, and later transformed into a target specific ones. This POC patch focuses on the SVE side, however the intention is to not limit it only to SVE. Code generation for NEON can also use this approach. The motivation for such solution is that at the vectorization stage we already know if we are handling interleaved memory accesses or not, so we can use that knowledge to emit dedicated intrinsics for such accesses. The current LLVM's implementation uses shufflevector to interleave the data after/before load/store what is not suitable for scalable vectors.
Please use PoisonValue here. We already changed all the other similar intrinsics to have poison as default passthru.