diff --git a/llvm/utils/TableGen/SDNodeProperties.cpp b/llvm/utils/TableGen/SDNodeProperties.cpp
new file mode 100644
index 0000000..343febc
--- /dev/null
+++ b/llvm/utils/TableGen/SDNodeProperties.cpp
@@ -0,0 +1,49 @@
+//===- SDNodeProperties.cpp -----------------------------------------------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "SDNodeProperties.h"
+#include "llvm/TableGen/Error.h"
+#include "llvm/TableGen/Record.h"
+
+using namespace llvm;
+
+unsigned llvm::parseSDPatternOperatorProperties(Record *R) {
+  unsigned Properties = 0;
+  for (Record *Property : R->getValueAsListOfDefs("Properties")) {
+    if (Property->getName() == "SDNPCommutative") {
+      Properties |= 1 << SDNPCommutative;
+    } else if (Property->getName() == "SDNPAssociative") {
+      Properties |= 1 << SDNPAssociative;
+    } else if (Property->getName() == "SDNPHasChain") {
+      Properties |= 1 << SDNPHasChain;
+    } else if (Property->getName() == "SDNPOutGlue") {
+      Properties |= 1 << SDNPOutGlue;
+    } else if (Property->getName() == "SDNPInGlue") {
+      Properties |= 1 << SDNPInGlue;
+    } else if (Property->getName() == "SDNPOptInGlue") {
+      Properties |= 1 << SDNPOptInGlue;
+    } else if (Property->getName() == "SDNPMayStore") {
+      Properties |= 1 << SDNPMayStore;
+    } else if (Property->getName() == "SDNPMayLoad") {
+      Properties |= 1 << SDNPMayLoad;
+    } else if (Property->getName() == "SDNPSideEffect") {
+      Properties |= 1 << SDNPSideEffect;
+    } else if (Property->getName() == "SDNPMemOperand") {
+      Properties |= 1 << SDNPMemOperand;
+    } else if (Property->getName() == "SDNPVariadic") {
+      Properties |= 1 << SDNPVariadic;
+    } else {
+      PrintFatalError("Unknown SD Node property '" +
+                      Property->getName() + "' on node '" +
+                      R->getName() + "'!");
+    }
+  }
+
+  return Properties;
+}
