aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2011-07-27 22:21:52 +0000
committerEli Friedman <eli.friedman@gmail.com>2011-07-27 22:21:52 +0000
commit26a484852efff773c8e093e6a408d2500a43d0ca (patch)
treea2670797e5fcef811d0d694c7b605aa336771d80 /llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
parent1644409b477a12f45448970a96493366652a5e0d (diff)
downloadllvm-26a484852efff773c8e093e6a408d2500a43d0ca.zip
llvm-26a484852efff773c8e093e6a408d2500a43d0ca.tar.gz
llvm-26a484852efff773c8e093e6a408d2500a43d0ca.tar.bz2
Code generation for 'fence' instruction.
llvm-svn: 136283
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
index bdddca3..67707c6 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
@@ -3221,7 +3221,12 @@ void SelectionDAGBuilder::visitStore(const StoreInst &I) {
}
void SelectionDAGBuilder::visitFence(const FenceInst &I) {
- llvm_unreachable("Not implemented yet");
+ DebugLoc dl = getCurDebugLoc();
+ SDValue Ops[3];
+ Ops[0] = getRoot();
+ Ops[1] = DAG.getConstant(I.getOrdering(), TLI.getPointerTy());
+ Ops[2] = DAG.getConstant(I.getSynchScope(), TLI.getPointerTy());
+ DAG.setRoot(DAG.getNode(ISD::ATOMIC_FENCE, dl, MVT::Other, Ops, 3));
}
/// visitTargetIntrinsic - Lower a call of a target intrinsic to an INTRINSIC