[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