[llvm-commits] CVS: llvm/lib/VMCore/AsmWriter.cpp Instruction.cpp
Reid Spencer
reid at x10sys.com
Sat Dec 2 22:27:44 PST 2006
Changes in directory llvm/lib/VMCore:
AsmWriter.cpp updated: 1.214 -> 1.215
Instruction.cpp updated: 1.59 -> 1.60
---
Log message:
Allow the ICmp and FCmp instructions to be written by the AsmWriter
---
Diffs of the changes: (+41 -0)
AsmWriter.cpp | 39 +++++++++++++++++++++++++++++++++++++++
Instruction.cpp | 2 ++
2 files changed, 41 insertions(+)
Index: llvm/lib/VMCore/AsmWriter.cpp
diff -u llvm/lib/VMCore/AsmWriter.cpp:1.214 llvm/lib/VMCore/AsmWriter.cpp:1.215
--- llvm/lib/VMCore/AsmWriter.cpp:1.214 Mon Nov 27 20:09:03 2006
+++ llvm/lib/VMCore/AsmWriter.cpp Sun Dec 3 00:27:29 2006
@@ -1125,6 +1125,45 @@
// Print out the opcode...
Out << I.getOpcodeName();
+ // Print out the compare instruction predicates
+ if (const FCmpInst *FCI = dyn_cast<FCmpInst>(&I)) {
+ const char *pred = 0;
+ switch (FCI->getPredicate()) {
+ case FCmpInst::FCMP_FALSE: pred = "false";
+ case FCmpInst::FCMP_OEQ: pred = "ordeq";
+ case FCmpInst::FCMP_OGT: pred = "ordgt";
+ case FCmpInst::FCMP_OGE: pred = "ordge";
+ case FCmpInst::FCMP_OLT: pred = "ordlt";
+ case FCmpInst::FCMP_OLE: pred = "ordle";
+ case FCmpInst::FCMP_ONE: pred = "ordne";
+ case FCmpInst::FCMP_ORD: pred = "ord";
+ case FCmpInst::FCMP_UNO: pred = "uno";
+ case FCmpInst::FCMP_UEQ: pred = "unoeq";
+ case FCmpInst::FCMP_UGT: pred = "unogt";
+ case FCmpInst::FCMP_UGE: pred = "unoge";
+ case FCmpInst::FCMP_ULT: pred = "unolt";
+ case FCmpInst::FCMP_ULE: pred = "unole";
+ case FCmpInst::FCMP_UNE: pred = "unone";
+ case FCmpInst::FCMP_TRUE: pred = "true";
+ }
+ Out << " " << pred;
+ } else if (const ICmpInst *ICI = dyn_cast<ICmpInst>(&I)) {
+ const char *pred = 0;
+ switch (ICI->getPredicate()) {
+ case ICmpInst::ICMP_EQ: pred = "eq";
+ case ICmpInst::ICMP_NE: pred = "ne";
+ case ICmpInst::ICMP_SGT: pred = "sgt";
+ case ICmpInst::ICMP_SGE: pred = "sge";
+ case ICmpInst::ICMP_SLT: pred = "slt";
+ case ICmpInst::ICMP_SLE: pred = "sle";
+ case ICmpInst::ICMP_UGT: pred = "ugt";
+ case ICmpInst::ICMP_UGE: pred = "uge";
+ case ICmpInst::ICMP_ULT: pred = "ult";
+ case ICmpInst::ICMP_ULE: pred = "ule";
+ }
+ Out << " " << pred;
+ }
+
// Print out the type of the operands...
const Value *Operand = I.getNumOperands() ? I.getOperand(0) : 0;
Index: llvm/lib/VMCore/Instruction.cpp
diff -u llvm/lib/VMCore/Instruction.cpp:1.59 llvm/lib/VMCore/Instruction.cpp:1.60
--- llvm/lib/VMCore/Instruction.cpp:1.59 Sun Nov 26 19:05:10 2006
+++ llvm/lib/VMCore/Instruction.cpp Sun Dec 3 00:27:29 2006
@@ -137,6 +137,8 @@
case BitCast: return "bitcast";
// Other instructions...
+ case ICmp: return "icmp";
+ case FCmp: return "fcmp";
case PHI: return "phi";
case Select: return "select";
case Call: return "call";
More information about the llvm-commits
mailing list