Shufflevector semantics
Information from @aqjune so it doesn't get lost:
The biggest hurdle in fixing the shufflevector semantics is that the Intel intrinsics that return 'undefined' vectors should be fixed to return 'freeze
The latest thread was here: https://reviews.llvm.org/D103874 FYI, this is a related LangRef patch that fixes shufflevector with undef masks to yield poison: https://reviews.llvm.org/D93818
codegen patch: https://reviews.llvm.org/D130339 (precondition for perf to switch semantics)
Update: codegen patch landed. Now need to migrate _mm256_castsi128_si256 to freeze poison.
We can then move on with the semantics change.
This is done thanks to @ManuelJBrito! 🚀 There still a couple of LLVM optimizations that are broken, but there are specific bug reports for them.