From 723915b13e1647fdc02e4e7e3a3335e3e80cfc75 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 12 Aug 2003 04:12:42 +0000 Subject: [PATCH] Add support for a bool argty git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7766 91177308-0d34-0410-b5e6-96231b3b80d8 --- support/tools/TableGen/InstrSelectorEmitter.cpp | 7 +++++++ support/tools/TableGen/InstrSelectorEmitter.h | 3 +-- utils/TableGen/InstrSelectorEmitter.cpp | 7 +++++++ utils/TableGen/InstrSelectorEmitter.h | 3 +-- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/support/tools/TableGen/InstrSelectorEmitter.cpp b/support/tools/TableGen/InstrSelectorEmitter.cpp index 42d3c2207a9..133ed7daf52 100644 --- a/support/tools/TableGen/InstrSelectorEmitter.cpp +++ b/support/tools/TableGen/InstrSelectorEmitter.cpp @@ -19,6 +19,7 @@ NodeType::ArgResultTypes NodeType::Translate(Record *R) { if (Name == "DNVT_arg0") return Arg0; if (Name == "DNVT_arg1") return Arg1; if (Name == "DNVT_ptr" ) return Ptr; + if (Name == "DNVT_bool") return Bool; throw "Unknown DagNodeValType '" + Name + "'!"; } @@ -275,6 +276,9 @@ bool Pattern::InferTypes(TreePatternNode *N, bool &MadeChange) { AnyUnset |= InferTypes(Child, MadeChange); switch (NT.ArgTypes[i]) { + case NodeType::Bool: + MadeChange |= Child->updateNodeType(MVT::i1, TheRecord->getName()); + break; case NodeType::Arg0: MadeChange |= Child->updateNodeType(N->getChild(0)->getType(), TheRecord->getName()); @@ -300,6 +304,9 @@ bool Pattern::InferTypes(TreePatternNode *N, bool &MadeChange) { case NodeType::Void: MadeChange |= N->updateNodeType(MVT::isVoid, TheRecord->getName()); break; + case NodeType::Bool: + MadeChange |= N->updateNodeType(MVT::i1, TheRecord->getName()); + break; case NodeType::Arg0: MadeChange |= N->updateNodeType(N->getChild(0)->getType(), TheRecord->getName()); diff --git a/support/tools/TableGen/InstrSelectorEmitter.h b/support/tools/TableGen/InstrSelectorEmitter.h index a8ab145c87c..d34c1910c50 100644 --- a/support/tools/TableGen/InstrSelectorEmitter.h +++ b/support/tools/TableGen/InstrSelectorEmitter.h @@ -25,8 +25,7 @@ struct NodeType { Arg0, // Value matches the type of Arg0 Arg1, // Value matches the type of Arg1 Ptr, // Tree node is the type of the target pointer - - // Return types + Bool, // Always bool Void, // Tree node always returns void }; diff --git a/utils/TableGen/InstrSelectorEmitter.cpp b/utils/TableGen/InstrSelectorEmitter.cpp index 42d3c2207a9..133ed7daf52 100644 --- a/utils/TableGen/InstrSelectorEmitter.cpp +++ b/utils/TableGen/InstrSelectorEmitter.cpp @@ -19,6 +19,7 @@ NodeType::ArgResultTypes NodeType::Translate(Record *R) { if (Name == "DNVT_arg0") return Arg0; if (Name == "DNVT_arg1") return Arg1; if (Name == "DNVT_ptr" ) return Ptr; + if (Name == "DNVT_bool") return Bool; throw "Unknown DagNodeValType '" + Name + "'!"; } @@ -275,6 +276,9 @@ bool Pattern::InferTypes(TreePatternNode *N, bool &MadeChange) { AnyUnset |= InferTypes(Child, MadeChange); switch (NT.ArgTypes[i]) { + case NodeType::Bool: + MadeChange |= Child->updateNodeType(MVT::i1, TheRecord->getName()); + break; case NodeType::Arg0: MadeChange |= Child->updateNodeType(N->getChild(0)->getType(), TheRecord->getName()); @@ -300,6 +304,9 @@ bool Pattern::InferTypes(TreePatternNode *N, bool &MadeChange) { case NodeType::Void: MadeChange |= N->updateNodeType(MVT::isVoid, TheRecord->getName()); break; + case NodeType::Bool: + MadeChange |= N->updateNodeType(MVT::i1, TheRecord->getName()); + break; case NodeType::Arg0: MadeChange |= N->updateNodeType(N->getChild(0)->getType(), TheRecord->getName()); diff --git a/utils/TableGen/InstrSelectorEmitter.h b/utils/TableGen/InstrSelectorEmitter.h index a8ab145c87c..d34c1910c50 100644 --- a/utils/TableGen/InstrSelectorEmitter.h +++ b/utils/TableGen/InstrSelectorEmitter.h @@ -25,8 +25,7 @@ struct NodeType { Arg0, // Value matches the type of Arg0 Arg1, // Value matches the type of Arg1 Ptr, // Tree node is the type of the target pointer - - // Return types + Bool, // Always bool Void, // Tree node always returns void }; -- 2.34.1