summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/BasicAliasAnalysis.cpp
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2011-04-27 20:44:28 +0000
committerDan Gohman <gohman@apple.com>2011-04-27 20:44:28 +0000
commit5394c70d1ec05d12d14260f88ce348d2c854f7c3 (patch)
treea3f97d64197bc17b5b69f96405cdb35d67ca14f8 /llvm/lib/Analysis/BasicAliasAnalysis.cpp
parente3745fdcf3663f19a0e08deb4a763baa77271a88 (diff)
downloadbcm5719-llvm-5394c70d1ec05d12d14260f88ce348d2c854f7c3.tar.gz
bcm5719-llvm-5394c70d1ec05d12d14260f88ce348d2c854f7c3.zip
Teach BasicAA about arm.neon.vld1 and vst1.
llvm-svn: 130327
Diffstat (limited to 'llvm/lib/Analysis/BasicAliasAnalysis.cpp')
-rw-r--r--llvm/lib/Analysis/BasicAliasAnalysis.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/BasicAliasAnalysis.cpp b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
index be8ef96a878..f1bb8a38f09 100644
--- a/llvm/lib/Analysis/BasicAliasAnalysis.cpp
+++ b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
@@ -779,6 +779,26 @@ BasicAliasAnalysis::getModRefInfo(ImmutableCallSite CS,
return NoModRef;
break;
}
+ case Intrinsic::arm_neon_vld1: {
+ // LLVM's vld1 and vst1 intrinsics currently only support a single
+ // vector register.
+ uint64_t Size =
+ TD ? TD->getTypeStoreSize(II->getType()) : UnknownSize;
+ if (isNoAlias(Location(II->getArgOperand(0), Size,
+ II->getMetadata(LLVMContext::MD_tbaa)),
+ Loc))
+ return NoModRef;
+ break;
+ }
+ case Intrinsic::arm_neon_vst1: {
+ uint64_t Size =
+ TD ? TD->getTypeStoreSize(II->getArgOperand(1)->getType()) : UnknownSize;
+ if (isNoAlias(Location(II->getArgOperand(0), Size,
+ II->getMetadata(LLVMContext::MD_tbaa)),
+ Loc))
+ return NoModRef;
+ break;
+ }
}
// The AliasAnalysis base class has some smarts, lets use them.
OpenPOWER on IntegriCloud