diff --git a/llvm/include/llvm/IR/DFGraph.h b/llvm/include/llvm/IR/DFGraph.h
index 03e6e548813b9848d1f8da080142de869ad32f6c..b7a11f0dba0631344dd28400062efe4a0630daff 100644
--- a/llvm/include/llvm/IR/DFGraph.h
+++ b/llvm/include/llvm/IR/DFGraph.h
@@ -113,8 +113,8 @@ class DFLeafNode : public DFNode {
 private:
   // Constructor
   DFLeafNode(IntrinsicInst* II, Function* FuncPointer, DFNode* Parent,
-         int NumOfDim, std::vector<Value*> DimLimits) :
-         DFNode(II, FuncPointer, Parent, NumOfDim, DimLimits) {}
+             int NumOfDim, std::vector<Value*> DimLimits) :
+             DFNode(II, FuncPointer, Parent, NumOfDim, DimLimits) {}
 
 public:
 
diff --git a/llvm/include/llvm/IR/IntrinsicsVISC.td b/llvm/include/llvm/IR/IntrinsicsVISC.td
index 0d6f7bb9fdae8a0ab5a90663cc0c8d84c8a4bc41..4527736a22ecc7273fe601400cc0dbb2eff5ca6d 100644
--- a/llvm/include/llvm/IR/IntrinsicsVISC.td
+++ b/llvm/include/llvm/IR/IntrinsicsVISC.td
@@ -34,6 +34,13 @@ let TargetPrefix = "visc" in {
   def int_visc_createNode2D : Intrinsic<[llvm_ptr_ty], [llvm_anyptr_ty,
                                         llvm_i32_ty, llvm_i32_ty], []>;
 
+  /* Create Node 3D array intrinsic -
+   * i8* llvm.visc.createNode2D(function*, i32, i32, i32);
+   */
+  def int_visc_createNode3D : Intrinsic<[llvm_ptr_ty], [llvm_anyptr_ty,
+                                        llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
+                                        []>;
+
   /* Create dataflow edge intrinsic -
    * i8* llvm.visc.createEdge(i8*, i8*, funtion*, function*);
    */
diff --git a/llvm/lib/Transforms/BuildDFG/BuildDFG.cpp b/llvm/lib/Transforms/BuildDFG/BuildDFG.cpp
index d458f396f0d345d70d44cf35f6992be2d0ce08f7..a3e87f2b734f198590383aff5a58dfb893df0cce 100644
--- a/llvm/lib/Transforms/BuildDFG/BuildDFG.cpp
+++ b/llvm/lib/Transforms/BuildDFG/BuildDFG.cpp
@@ -158,6 +158,7 @@ namespace {
           case Intrinsic::visc_createNode:
           case Intrinsic::visc_createNode1D:
           case Intrinsic::visc_createNode2D:
+          case Intrinsic::visc_createNode3D:
             handleCreateNode (N, II);
             break;