mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-04 09:54:09 +00:00
collect commutativity information
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23499 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6bcf1b7eed
commit
a1a68ae061
@ -137,6 +137,22 @@ SDNodeInfo::SDNodeInfo(Record *R) : Def(R) {
|
||||
NumResults = TypeProfile->getValueAsInt("NumResults");
|
||||
NumOperands = TypeProfile->getValueAsInt("NumOperands");
|
||||
|
||||
// Parse the properties.
|
||||
Properties = 0;
|
||||
ListInit *LI = R->getValueAsListInit("Properties");
|
||||
for (unsigned i = 0, e = LI->getSize(); i != e; ++i) {
|
||||
DefInit *DI = dynamic_cast<DefInit*>(LI->getElement(i));
|
||||
assert(DI && "Properties list must be list of defs!");
|
||||
if (DI->getDef()->getName() == "SDNPCommutative") {
|
||||
Properties |= 1 << SDNPCommutative;
|
||||
} else {
|
||||
std::cerr << "Unknown SD Node property '" << DI->getDef()->getName()
|
||||
<< "' on node '" << R->getName() << "'!\n";
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Parse the type constraints.
|
||||
ListInit *Constraints = TypeProfile->getValueAsListInit("Constraints");
|
||||
for (unsigned i = 0, e = Constraints->getSize(); i != e; ++i) {
|
||||
|
@ -69,6 +69,7 @@ namespace llvm {
|
||||
Record *Def;
|
||||
std::string EnumName;
|
||||
std::string SDClassName;
|
||||
unsigned Properties;
|
||||
unsigned NumResults;
|
||||
int NumOperands;
|
||||
std::vector<SDTypeConstraint> TypeConstraints;
|
||||
@ -84,6 +85,13 @@ namespace llvm {
|
||||
const std::vector<SDTypeConstraint> &getTypeConstraints() const {
|
||||
return TypeConstraints;
|
||||
}
|
||||
|
||||
// SelectionDAG node properties.
|
||||
enum SDNP { SDNPCommutative };
|
||||
|
||||
/// hasProperty - Return true if this node has the specified property.
|
||||
///
|
||||
bool hasProperty(enum SDNP Prop) const { return Properties & (1 << Prop); }
|
||||
|
||||
/// ApplyTypeConstraints - Given a node in a pattern, apply the type
|
||||
/// constraints for this node to the operands of the node. This returns
|
||||
|
Loading…
Reference in New Issue
Block a user