Add support for printing the sse scalar comparison instruction mnemonics.
authorNate Begeman <natebegeman@mac.com>
Thu, 14 Jul 2005 22:52:25 +0000 (22:52 +0000)
committerNate Begeman <natebegeman@mac.com>
Thu, 14 Jul 2005 22:52:25 +0000 (22:52 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22440 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86ATTAsmPrinter.cpp
lib/Target/X86/X86ATTAsmPrinter.h
lib/Target/X86/X86IntelAsmPrinter.cpp
lib/Target/X86/X86IntelAsmPrinter.h

index ca8630c3cb9284138dde7c2fb35e90d4cde4844f..230baad096ff95bede50436576de61e2dbefbc6a 100755 (executable)
@@ -143,6 +143,22 @@ void X86ATTAsmPrinter::printOp(const MachineOperand &MO, bool isCallOp) {
   }
 }
 
+void X86ATTAsmPrinter::printSSECC(const MachineInstr *MI, unsigned Op,
+                                  MVT::ValueType VT) {
+  unsigned char value = MI->getOperand(Op).getImmedValue();
+  assert(value <= 7 && "Invalid ssecc argument!");
+  switch (value) {
+  case 0: O << "eq"; break;
+  case 1: O << "lt"; break;
+  case 2: O << "le"; break;
+  case 3: O << "unord"; break;
+  case 4: O << "neq"; break;
+  case 5: O << "nlt"; break;
+  case 6: O << "nle"; break;
+  case 7: O << "ord"; break;
+  }
+}
+
 void X86ATTAsmPrinter::printMemReference(const MachineInstr *MI, unsigned Op){
   assert(isMem(MI, Op) && "Invalid memory reference!");
 
index ee91e8e0659afacced65569a6b3ef256111b440b..be5f0ddfbb39f58592b941813cc48f00ce7dd33e 100755 (executable)
@@ -51,6 +51,7 @@ struct X86ATTAsmPrinter : public X86SharedAsmPrinter {
 
   void printMachineInstruction(const MachineInstr *MI);
   void printOp(const MachineOperand &MO, bool isCallOperand = false);
+  void printSSECC(const MachineInstr *MI, unsigned Op, MVT::ValueType VT);
   void printMemReference(const MachineInstr *MI, unsigned Op);
   bool runOnMachineFunction(MachineFunction &F);
 };
index 91982977c4b09b9020c4e43c983e2fa838e55532..9cf7c29d77d1d919e315f8463dfb30c57705ec75 100755 (executable)
@@ -58,6 +58,22 @@ bool X86IntelAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
   return false;
 }
 
+void X86IntelAsmPrinter::printSSECC(const MachineInstr *MI, unsigned Op,
+                                  MVT::ValueType VT) {
+  unsigned char value = MI->getOperand(Op).getImmedValue();
+  assert(value <= 7 && "Invalid ssecc argument!");
+  switch (value) {
+  case 0: O << "eq"; break;
+  case 1: O << "lt"; break;
+  case 2: O << "le"; break;
+  case 3: O << "unord"; break;
+  case 4: O << "neq"; break;
+  case 5: O << "nlt"; break;
+  case 6: O << "nle"; break;
+  case 7: O << "ord"; break;
+  }
+}
+
 void X86IntelAsmPrinter::printOp(const MachineOperand &MO,
                                  bool elideOffsetKeyword /* = false */) {
   const MRegisterInfo &RI = *TM.getRegisterInfo();
index 4dec56aeaf26fe8ecceff0374befc55ee6658888..7d81e6b226f680198886b89287d3dd79d136807c 100755 (executable)
@@ -70,6 +70,7 @@ struct X86IntelAsmPrinter : public X86SharedAsmPrinter {
 
   void printMachineInstruction(const MachineInstr *MI);
   void printOp(const MachineOperand &MO, bool elideOffsetKeyword = false);
+  void printSSECC(const MachineInstr *MI, unsigned Op, MVT::ValueType VT);
   void printMemReference(const MachineInstr *MI, unsigned Op);
   bool runOnMachineFunction(MachineFunction &F);
   bool doInitialization(Module &M);