[llvm-commits] [llvm] r145178 - /llvm/trunk/lib/VMCore/AutoUpgrade.cpp
Chris Lattner
sabre at nondot.org
Sun Nov 27 00:42:07 PST 2011
Author: lattner
Date: Sun Nov 27 02:42:07 2011
New Revision: 145178
URL: http://llvm.org/viewvc/llvm-project?rev=145178&view=rev
Log:
Eli managed to kill off llvm.membarrier in llvm 3.0 also, this means
that mainline needs no autoupgrade logic for intrinsics yet, woohoo!
Modified:
llvm/trunk/lib/VMCore/AutoUpgrade.cpp
Modified: llvm/trunk/lib/VMCore/AutoUpgrade.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/AutoUpgrade.cpp?rev=145178&r1=145177&r2=145178&view=diff
==============================================================================
--- llvm/trunk/lib/VMCore/AutoUpgrade.cpp (original)
+++ llvm/trunk/lib/VMCore/AutoUpgrade.cpp Sun Nov 27 02:42:07 2011
@@ -37,13 +37,10 @@
if (Name.size() <= 8 || !Name.startswith("llvm."))
return false;
Name = Name.substr(5); // Strip off "llvm."
-
+
switch (Name[0]) {
default: break;
- case 'm':
- if (Name == "memory.barrier")
- return true;
- break;
+ // SOMEDAY: Add some.
}
// This may not belong here. This function is effectively being overloaded
@@ -75,38 +72,15 @@
// order to seamlessly integrate with existing context.
void llvm::UpgradeIntrinsicCall(CallInst *CI, Function *NewFn) {
Function *F = CI->getCalledFunction();
- LLVMContext &C = CI->getContext();
- ImmutableCallSite CS(CI);
assert(F && "CallInst has no function associated with it.");
- if (!NewFn) {
- if (F->getName() == "llvm.memory.barrier") {
- IRBuilder<> Builder(C);
- Builder.SetInsertPoint(CI->getParent(), CI);
-
- // Note that this conversion ignores the "device" bit; it was not really
- // well-defined, and got abused because nobody paid enough attention to
- // get it right. In practice, this probably doesn't matter; application
- // code generally doesn't need anything stronger than
- // SequentiallyConsistent (and realistically, SequentiallyConsistent
- // is lowered to a strong enough barrier for almost anything).
-
- if (cast<ConstantInt>(CI->getArgOperand(1))->getZExtValue())
- Builder.CreateFence(SequentiallyConsistent);
- else if (!cast<ConstantInt>(CI->getArgOperand(0))->getZExtValue())
- Builder.CreateFence(Release);
- else if (!cast<ConstantInt>(CI->getArgOperand(3))->getZExtValue())
- Builder.CreateFence(Acquire);
- else
- Builder.CreateFence(AcquireRelease);
-
- // Remove intrinsic.
- CI->eraseFromParent();
- } else {
- llvm_unreachable("Unknown function for CallInst upgrade.");
- }
- return;
+ if (NewFn) return;
+
+ if (F->getName() == "llvm.something eventually") {
+ // UPGRADE HERE.
+ } else {
+ llvm_unreachable("Unknown function for CallInst upgrade.");
}
}
More information about the llvm-commits
mailing list