[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