]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - utils/TableGen/SDNodeProperties.cpp
Vendor import of llvm trunk r321414:
[FreeBSD/FreeBSD.git] / utils / TableGen / SDNodeProperties.cpp
1 //===- SDNodeProperties.cpp -----------------------------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #include "SDNodeProperties.h"
11 #include "llvm/TableGen/Error.h"
12 #include "llvm/TableGen/Record.h"
13
14 using namespace llvm;
15
16 unsigned llvm::parseSDPatternOperatorProperties(Record *R) {
17   unsigned Properties = 0;
18   for (Record *Property : R->getValueAsListOfDefs("Properties")) {
19     if (Property->getName() == "SDNPCommutative") {
20       Properties |= 1 << SDNPCommutative;
21     } else if (Property->getName() == "SDNPAssociative") {
22       Properties |= 1 << SDNPAssociative;
23     } else if (Property->getName() == "SDNPHasChain") {
24       Properties |= 1 << SDNPHasChain;
25     } else if (Property->getName() == "SDNPOutGlue") {
26       Properties |= 1 << SDNPOutGlue;
27     } else if (Property->getName() == "SDNPInGlue") {
28       Properties |= 1 << SDNPInGlue;
29     } else if (Property->getName() == "SDNPOptInGlue") {
30       Properties |= 1 << SDNPOptInGlue;
31     } else if (Property->getName() == "SDNPMayStore") {
32       Properties |= 1 << SDNPMayStore;
33     } else if (Property->getName() == "SDNPMayLoad") {
34       Properties |= 1 << SDNPMayLoad;
35     } else if (Property->getName() == "SDNPSideEffect") {
36       Properties |= 1 << SDNPSideEffect;
37     } else if (Property->getName() == "SDNPMemOperand") {
38       Properties |= 1 << SDNPMemOperand;
39     } else if (Property->getName() == "SDNPVariadic") {
40       Properties |= 1 << SDNPVariadic;
41     } else {
42       PrintFatalError("Unknown SD Node property '" +
43                       Property->getName() + "' on node '" +
44                       R->getName() + "'!");
45     }
46   }
47
48   return Properties;
49 }