Path: blob/main/contrib/llvm-project/llvm/utils/TableGen/Basic/SDNodeProperties.cpp
35290 views
//===- SDNodeProperties.cpp -----------------------------------------------===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#include "SDNodeProperties.h"9#include "llvm/ADT/StringSwitch.h"10#include "llvm/TableGen/Error.h"11#include "llvm/TableGen/Record.h"1213using namespace llvm;1415unsigned llvm::parseSDPatternOperatorProperties(Record *R) {16unsigned Properties = 0;17for (Record *Property : R->getValueAsListOfDefs("Properties")) {18auto Offset = StringSwitch<unsigned>(Property->getName())19.Case("SDNPCommutative", SDNPCommutative)20.Case("SDNPAssociative", SDNPAssociative)21.Case("SDNPHasChain", SDNPHasChain)22.Case("SDNPOutGlue", SDNPOutGlue)23.Case("SDNPInGlue", SDNPInGlue)24.Case("SDNPOptInGlue", SDNPOptInGlue)25.Case("SDNPMayStore", SDNPMayStore)26.Case("SDNPMayLoad", SDNPMayLoad)27.Case("SDNPSideEffect", SDNPSideEffect)28.Case("SDNPMemOperand", SDNPMemOperand)29.Case("SDNPVariadic", SDNPVariadic)30.Default(-1u);31if (Offset != -1u)32Properties |= 1 << Offset;33else34PrintFatalError(R->getLoc(), "Unknown SD Node property '" +35Property->getName() + "' on node '" +36R->getName() + "'!");37}38return Properties;39}404142