| //===- 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; | 
 | } |