This is a patch that renames shufflevector's undef mask to poison.
By D93818, shufflevector's undef mask isn't undef anymore; it returns poison instead.
%v = shufflevector <2 x i8> %x, <2 x i8> %y, <2 x i8> <i8 0, i8 poison> ; %v[0] = %x[0] ; %v[1] = poison
Since poison is more undefined than undef, this validates many existing transformations that we wanted to support.
Also, this allows more aggressive optimizations because poison is more propagative (e.g. poison & 0 = poison whereas undef & 0 != undef).
This patch updates shufflevector mask's printed string to be poison to match its new semantics.
This has changes in clang tests as well.
They are mainly about vector intrinsics being lowered into shufflevector.
The unused elements were filled with undef previously, but with this patch they are filled with poison.
Since they are unused elements anyway, I believe this isn't a functional change in fact.
But, I'm happy with this being double-checked by someone who works on these intrinsics as well.
This change might be visible to user code.