//===- SDNodeProperties.cpp -----------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #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(R->getLoc(), "Unknown SD Node property '" + Property->getName() + "' on node '" + R->getName() + "'!"); } } return Properties; }