]> granicus.if.org Git - llvm/commit
[X86][AVX512] Fix PR31515 - Do not flip vselect condition if it's not a vXi1 mask
authorElad Cohen <elad2.cohen@intel.com>
Thu, 12 Jan 2017 06:49:03 +0000 (06:49 +0000)
committerElad Cohen <elad2.cohen@intel.com>
Thu, 12 Jan 2017 06:49:03 +0000 (06:49 +0000)
commitf160ecc79990d0bc38850003e2821b881da7dae2
tree5d159b4c71cb382eec7801e0a78d85c5372ed20d
parentea5c0e9cfeb42cdd7a4b81db3745e491976a67b2
[X86][AVX512] Fix PR31515 - Do not flip vselect condition if it's not a vXi1 mask

r289653 added a case where `vselect <cond> <vector1> <all-zeros>`
is transformed to:
`vselect xor(cond, DAG.getConstant(1, DL, CondVT) <all-zeros> <vector1>`
This was not aimed to catch cases where Cond is not a vXi1
mask but it does. Moreover, when Cond type is VxiN (N > 1)
then xor(cond, DAG.getConstant(1, DL, CondVT) != NOT(cond).
This patch changes the above to xor with allones, and avoids
entering the case for non-mask Conds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@291745 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/avx512-select.ll