summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
diff options
context:
space:
mode:
authorNate Begeman <natebegeman@mac.com>2009-02-04 19:47:21 +0000
committerNate Begeman <natebegeman@mac.com>2009-02-04 19:47:21 +0000
commit6ae3aa83d0383dd86f5e54db3d4930a4e6fe0712 (patch)
treea230ae492d7e6949201c1d2ad0b901da5a0cad4c /llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
parent022923a22a616a97685af71862a7a9833af23b65 (diff)
downloadbcm5719-llvm-6ae3aa83d0383dd86f5e54db3d4930a4e6fe0712.tar.gz
bcm5719-llvm-6ae3aa83d0383dd86f5e54db3d4930a4e6fe0712.zip
New feature: add support for target intrinsics being defined in the
target directories themselves. This also means that VMCore no longer needs to know about every target's list of intrinsics. Future work will include converting the PowerPC target to this interface as an example implementation. llvm-svn: 63765
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
index c3cff2037e4..1b1d70baab8 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
@@ -43,6 +43,7 @@
#include "llvm/Target/TargetData.h"
#include "llvm/Target/TargetFrameInfo.h"
#include "llvm/Target/TargetInstrInfo.h"
+#include "llvm/Target/TargetIntrinsicInfo.h"
#include "llvm/Target/TargetLowering.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetOptions.h"
@@ -4426,6 +4427,14 @@ void SelectionDAGLowering::visitCall(CallInst &I) {
const char *RenameFn = 0;
if (Function *F = I.getCalledFunction()) {
if (F->isDeclaration()) {
+ const TargetIntrinsicInfo *II = TLI.getTargetMachine().getIntrinsicInfo();
+ if (II) {
+ if (unsigned IID = II->getIntrinsicID(F)) {
+ RenameFn = visitIntrinsicCall(I, IID);
+ if (!RenameFn)
+ return;
+ }
+ }
if (unsigned IID = F->getIntrinsicID()) {
RenameFn = visitIntrinsicCall(I, IID);
if (!RenameFn)
OpenPOWER on IntegriCloud