[llvm-commits] CVS: llvm/utils/TableGen/DAGISelEmitter.cpp DAGISelEmitter.h

Chris Lattner lattner at cs.uiuc.edu
Wed Sep 14 19:38:14 PDT 2005



Changes in directory llvm/utils/TableGen:

DAGISelEmitter.cpp updated: 1.27 -> 1.28
DAGISelEmitter.h updated: 1.16 -> 1.17
---
Log message:

rename a couple of methods, add structure for pattern parsing


---
Diffs of the changes:  (+29 -17)

 DAGISelEmitter.cpp |   41 ++++++++++++++++++++++++++---------------
 DAGISelEmitter.h   |    5 +++--
 2 files changed, 29 insertions(+), 17 deletions(-)


Index: llvm/utils/TableGen/DAGISelEmitter.cpp
diff -u llvm/utils/TableGen/DAGISelEmitter.cpp:1.27 llvm/utils/TableGen/DAGISelEmitter.cpp:1.28
--- llvm/utils/TableGen/DAGISelEmitter.cpp:1.27	Wed Sep 14 18:05:13 2005
+++ llvm/utils/TableGen/DAGISelEmitter.cpp	Wed Sep 14 21:38:02 2005
@@ -527,14 +527,14 @@
 
 
 
-/// ParseAndResolvePatternFragments - Parse all of the PatFrag definitions in
-/// the .td file, building up the PatternFragments map.  After we've collected
-/// them all, inline fragments together as necessary, so that there are no
-/// references left inside a pattern fragment to a pattern fragment.
+/// ParsePatternFragments - Parse all of the PatFrag definitions in the .td
+/// file, building up the PatternFragments map.  After we've collected them all,
+/// inline fragments together as necessary, so that there are no references left
+/// inside a pattern fragment to a pattern fragment.
 ///
 /// This also emits all of the predicate functions to the output file.
 ///
-void DAGISelEmitter::ParseAndResolvePatternFragments(std::ostream &OS) {
+void DAGISelEmitter::ParsePatternFragments(std::ostream &OS) {
   std::vector<Record*> Fragments = Records.getAllDerivedDefinitions("PatFrag");
   
   // First step, parse all of the fragments and emit predicate functions.
@@ -739,10 +739,10 @@
 }
 
 
-/// ParseAndResolveInstructions - Parse all of the instructions, inlining and
-/// resolving any fragments involved.  This populates the Instructions list with
-/// fully resolved instructions.
-void DAGISelEmitter::ParseAndResolveInstructions() {
+/// ParseInstructions - Parse all of the instructions, inlining and resolving
+/// any fragments involved.  This populates the Instructions list with fully
+/// resolved instructions.
+void DAGISelEmitter::ParseInstructions() {
   std::vector<Record*> Instrs = Records.getAllDerivedDefinitions("Instruction");
   
   for (unsigned i = 0, e = Instrs.size(); i != e; ++i) {
@@ -888,12 +888,22 @@
     TreePatternNode *SrcPattern = Pattern->getChild(1)->clone();
     TreePatternNode *DstPattern = Instructions[i].getResultPattern();
     PatternsToMatch.push_back(std::make_pair(SrcPattern, DstPattern));
-    DEBUG(std::cerr << "PATTERN TO MATCH: "; SrcPattern->dump();
-          std::cerr << "\nRESULT DAG      : ";
-          DstPattern->dump(); std::cerr << "\n");
   }
 }
 
+void DAGISelEmitter::ParsePatterns() {
+
+
+
+
+  DEBUG(std::cerr << "\n\nPARSED PATTERNS TO MATCH:\n\n";
+        for (unsigned i = 0, e = PatternsToMatch.size(); i != e; ++i) {
+          std::cerr << "PATTERN: ";  PatternsToMatch[i].first->dump();
+          std::cerr << "\nRESULT:  ";PatternsToMatch[i].second->dump();
+          std::cerr << "\n";
+        });
+}
+
 void DAGISelEmitter::EmitInstructionSelector(std::ostream &OS) {
   // Emit boilerplate.
   OS << "// The main instruction selector code.\n"
@@ -929,9 +939,10 @@
      << "methods.\n\n";
   ParseNodeInfo();
   ParseNodeTransforms(OS);
-  ParseAndResolvePatternFragments(OS);
-  ParseAndResolveInstructions();
-  
+  ParsePatternFragments(OS);
+  ParseInstructions();
+  ParsePatterns();
+
   // TODO: convert some instructions to expanders if needed or something.
   
   EmitInstructionSelector(OS);  


Index: llvm/utils/TableGen/DAGISelEmitter.h
diff -u llvm/utils/TableGen/DAGISelEmitter.h:1.16 llvm/utils/TableGen/DAGISelEmitter.h:1.17
--- llvm/utils/TableGen/DAGISelEmitter.h:1.16	Wed Sep 14 17:55:26 2005
+++ llvm/utils/TableGen/DAGISelEmitter.h	Wed Sep 14 21:38:02 2005
@@ -333,8 +333,9 @@
 private:
   void ParseNodeInfo();
   void ParseNodeTransforms(std::ostream &OS);
-  void ParseAndResolvePatternFragments(std::ostream &OS);
-  void ParseAndResolveInstructions();
+  void ParsePatternFragments(std::ostream &OS);
+  void ParseInstructions();
+  void ParsePatterns();
   void FindPatternInputsAndOutputs(TreePattern *I, TreePatternNode *Pat,
                                    std::map<std::string,
                                             TreePatternNode*> &InstInputs,






More information about the llvm-commits mailing list