summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorAhmed Bougacha <ahmed.bougacha@gmail.com>2015-11-06 23:16:53 +0000
committerAhmed Bougacha <ahmed.bougacha@gmail.com>2015-11-06 23:16:53 +0000
commitcf49b523a07e6097f77d01658d56fdbff3d159b4 (patch)
tree7fa1dcd65fe420a9cf2b29fa2059c2ae6c0f4ff2 /llvm/lib
parentb49eb3ab4b7563d97a871dcd7dae4bd383c6c42f (diff)
downloadbcm5719-llvm-cf49b523a07e6097f77d01658d56fdbff3d159b4.tar.gz
bcm5719-llvm-cf49b523a07e6097f77d01658d56fdbff3d159b4.zip
[AArch64][FastISel] Don't even try to select vector icmps.
We used to try to constant-fold them to i32 immediates. Given that fast-isel doesn't otherwise support vNi1, when selecting the result users, we'd fallback to SDAG anyway. However, if the users were in another block, we'd insert broken cross-class copies (GPR32 to FPR64). Give up, let SDAG agree with itself on a vNi1 legalization strategy. llvm-svn: 252364
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/AArch64/AArch64FastISel.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64FastISel.cpp b/llvm/lib/Target/AArch64/AArch64FastISel.cpp
index 2f50480efbe..284f5263f90 100644
--- a/llvm/lib/Target/AArch64/AArch64FastISel.cpp
+++ b/llvm/lib/Target/AArch64/AArch64FastISel.cpp
@@ -2451,6 +2451,10 @@ bool AArch64FastISel::selectIndirectBr(const Instruction *I) {
bool AArch64FastISel::selectCmp(const Instruction *I) {
const CmpInst *CI = cast<CmpInst>(I);
+ // Vectors of i1 are weird: bail out.
+ if (CI->getType()->isVectorTy())
+ return false;
+
// Try to optimize or fold the cmp.
CmpInst::Predicate Predicate = optimizeCmpPredicate(CI);
unsigned ResultReg = 0;
OpenPOWER on IntegriCloud