[X86] combineSelect - don't constant fold BLENDV nodes like VSELECT
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Sat, 19 Mar 2022 16:31:15 +0000 (16:31 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Sat, 19 Mar 2022 16:31:19 +0000 (16:31 +0000)
commita6c18bfbe39dc494d18fb8e66b16d0e292ed25e4
tree010fc450687148fde3afeb7d935ce64c1be1a844
parent33d2c00814b27437a1681cc3d1fb5fa6ca7e1536
[X86] combineSelect - don't constant fold BLENDV nodes like VSELECT

If a X86ISD::BLENDV op appears before legalization (in this test case due to the icmp_slt x, 0) its constant mask was being treated as a vselect mask (mask != 0) instead of blendv (mask < 0)

This just prevents constant folding entirely for non-VSELECT ops.
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/avx-select.ll