diff options
author | Hal Finkel <hfinkel@anl.gov> | 2012-04-27 19:34:00 +0000 |
---|---|---|
committer | Hal Finkel <hfinkel@anl.gov> | 2012-04-27 19:34:00 +0000 |
commit | e32e5440d6aaff8a77517e9d286846ae9e380770 (patch) | |
tree | 1fda0f26f420a859da52e0c8697677df509969a2 /lib | |
parent | f6d55df9ecac7f4e3e654b7074729100f6de28ae (diff) | |
download | external_llvm-e32e5440d6aaff8a77517e9d286846ae9e380770.zip external_llvm-e32e5440d6aaff8a77517e9d286846ae9e380770.tar.gz external_llvm-e32e5440d6aaff8a77517e9d286846ae9e380770.tar.bz2 |
Don't vectorize target-specific types (ppc_fp128, x86_fp80, etc.).
Target specific types should not be vectorized. As a practical matter,
these types are already register matched (at least in the x86 case),
and codegen does not always work correctly (at least in the ppc case,
and this is not worth fixing because ppc_fp128 is currently broken and
will probably go away soon).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155729 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Transforms/Vectorize/BBVectorize.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/Transforms/Vectorize/BBVectorize.cpp b/lib/Transforms/Vectorize/BBVectorize.cpp index 9d62306..1d08df5 100644 --- a/lib/Transforms/Vectorize/BBVectorize.cpp +++ b/lib/Transforms/Vectorize/BBVectorize.cpp @@ -612,6 +612,12 @@ namespace { && (T1->isFPOrFPVectorTy() || T2->isFPOrFPVectorTy())) return false; + // Don't vectorize target-specific types. + if (T1->isX86_FP80Ty() || T1->isPPC_FP128Ty() || T1->isX86_MMXTy()) + return false; + if (T2->isX86_FP80Ty() || T2->isPPC_FP128Ty() || T2->isX86_MMXTy()) + return false; + if ((!Config.VectorizePointers || TD == 0) && (T1->getScalarType()->isPointerTy() || T2->getScalarType()->isPointerTy())) |