Using poison constant as a don't-care value when emitting/optimizing vector operations

Hello all,

Currently, undef is used as a don’t-care value for vector operations, which causes hard problems.
For example, a shufflevector sometimes cannot be optimized away (https://bugs.llvm.org/show_bug.cgi?id=44185). The reason is that undef is not undefined enough.

To avoid such problem, I’d like to suggest using poison constant for vector operations’ placeholder instead.
I made a patch that updates InstCombine’s SimplifyDemandedVectorElts here, with a detailed description: https://reviews.llvm.org/D93586

Thanks,
Juneyoung

Thank you for doing this, it seems the right thing to me.

Cheers,
Nicolai