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

Chris Lattner lattner at cs.uiuc.edu
Thu Mar 23 17:14:07 PST 2006



Changes in directory llvm/utils/TableGen:

IntrinsicEmitter.cpp updated: 1.14 -> 1.15
IntrinsicEmitter.h updated: 1.8 -> 1.9
---
Log message:

extract some more information from the intrinsic table


---
Diffs of the changes:  (+25 -1)

 IntrinsicEmitter.cpp |   24 +++++++++++++++++++++++-
 IntrinsicEmitter.h   |    2 ++
 2 files changed, 25 insertions(+), 1 deletion(-)


Index: llvm/utils/TableGen/IntrinsicEmitter.cpp
diff -u llvm/utils/TableGen/IntrinsicEmitter.cpp:1.14 llvm/utils/TableGen/IntrinsicEmitter.cpp:1.15
--- llvm/utils/TableGen/IntrinsicEmitter.cpp:1.14	Wed Mar 15 13:15:26 2006
+++ llvm/utils/TableGen/IntrinsicEmitter.cpp	Thu Mar 23 19:13:55 2006
@@ -124,7 +124,10 @@
   // Emit mod/ref info for each function.
   EmitModRefInfo(Ints, OS);
   
-  // Emit side effect info for each function.
+  // Emit table of non-memory accessing intrinsics.
+  EmitNoMemoryInfo(Ints, OS);
+  
+  // Emit side effect info for each intrinsic.
   EmitSideEffectInfo(Ints, OS);
 
   // Emit a list of intrinsics with corresponding GCC builtins.
@@ -254,6 +257,25 @@
 }
 
 void IntrinsicEmitter::
+EmitNoMemoryInfo(const std::vector<CodeGenIntrinsic> &Ints, std::ostream &OS) {
+  OS << "// SelectionDAGIsel code.\n";
+  OS << "#ifdef GET_NO_MEMORY_INTRINSICS\n";
+  OS << "  switch (IntrinsicID) {\n";
+  OS << "  default: break;\n";
+  for (unsigned i = 0, e = Ints.size(); i != e; ++i) {
+    switch (Ints[i].ModRef) {
+    default: break;
+    case CodeGenIntrinsic::NoMem:
+      OS << "  case Intrinsic::" << Ints[i].EnumName << ":\n";
+      break;
+    }
+  }
+  OS << "    return true; // These intrinsics have no side effects.\n";
+  OS << "  }\n";
+  OS << "#endif\n\n";
+}
+
+void IntrinsicEmitter::
 EmitSideEffectInfo(const std::vector<CodeGenIntrinsic> &Ints, std::ostream &OS){
   OS << "// isInstructionTriviallyDead code.\n";
   OS << "#ifdef GET_SIDE_EFFECT_INFO\n";


Index: llvm/utils/TableGen/IntrinsicEmitter.h
diff -u llvm/utils/TableGen/IntrinsicEmitter.h:1.8 llvm/utils/TableGen/IntrinsicEmitter.h:1.9
--- llvm/utils/TableGen/IntrinsicEmitter.h:1.8	Tue Mar 14 19:55:21 2006
+++ llvm/utils/TableGen/IntrinsicEmitter.h	Thu Mar 23 19:13:55 2006
@@ -37,6 +37,8 @@
                       std::ostream &OS);
     void EmitModRefInfo(const std::vector<CodeGenIntrinsic> &Ints, 
                         std::ostream &OS);
+    void EmitNoMemoryInfo(const std::vector<CodeGenIntrinsic> &Ints, 
+                          std::ostream &OS);
     void EmitSideEffectInfo(const std::vector<CodeGenIntrinsic> &Ints, 
                             std::ostream &OS);
     void EmitGCCBuiltinList(const std::vector<CodeGenIntrinsic> &Ints, 






More information about the llvm-commits mailing list