aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/Support/FileCheckTest.cpp
diff options
context:
space:
mode:
authorKeno Fischer <keno@juliacomputing.com>2020-08-07 16:38:15 -0400
committerKeno Fischer <keno@juliacomputing.com>2020-08-07 20:05:47 -0400
commitc58674df147ac0e2777208376bfd2b0d9acbef48 (patch)
tree4547c3fe786db41679c26b83bd5ce1ee1fa69bfd /llvm/unittests/Support/FileCheckTest.cpp
parentca4bcfbf2ccd04f6ebe50aa02ea8d3bf4e4d5761 (diff)
downloadllvm-c58674df147ac0e2777208376bfd2b0d9acbef48.zip
llvm-c58674df147ac0e2777208376bfd2b0d9acbef48.tar.gz
llvm-c58674df147ac0e2777208376bfd2b0d9acbef48.tar.bz2
[X86] Don't produce bad x86andp nodes for i1 vectors
In D85499, I attempted to fix this same issue by canonicalizing andnp for i1 vectors, but since there was some opposition to such a change, this commit just fixes the bug by using two different forms depending on which kind of vector type is in use. We can then always decide to switch the canonical forms later. Description of the original bug: We have a DAG combine that tries to fold (vselect cond, 0000..., X) -> (andnp cond, x). However, it does so by attempting to create an i64 vector with the number of elements obtained by truncating division by 64 from the bitwidth. This is bad for mask vectors like v8i1, since that division is just zero. Besides, we don't want i64 vectors anyway. For i1 vectors, switch the pattern to (andnp (not cond), x), which is the canonical form for `kandn` on mask registers. Fixes https://github.com/JuliaLang/julia/issues/36955. Differential Revision: https://reviews.llvm.org/D85553
Diffstat (limited to 'llvm/unittests/Support/FileCheckTest.cpp')
0 files changed, 0 insertions, 0 deletions