From 6c7cb2903836905f5ac483e8cd5382e541fa73f3 Mon Sep 17 00:00:00 2001 From: Nate Begeman Date: Thu, 14 Jul 2005 22:52:25 +0000 Subject: [PATCH] Add support for printing the sse scalar comparison instruction mnemonics. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22440 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/X86ATTAsmPrinter.cpp | 16 ++++++++++++++++ lib/Target/X86/X86ATTAsmPrinter.h | 1 + lib/Target/X86/X86IntelAsmPrinter.cpp | 16 ++++++++++++++++ lib/Target/X86/X86IntelAsmPrinter.h | 1 + 4 files changed, 34 insertions(+) diff --git a/lib/Target/X86/X86ATTAsmPrinter.cpp b/lib/Target/X86/X86ATTAsmPrinter.cpp index ca8630c3cb9..230baad096f 100755 --- a/lib/Target/X86/X86ATTAsmPrinter.cpp +++ b/lib/Target/X86/X86ATTAsmPrinter.cpp @@ -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!"); diff --git a/lib/Target/X86/X86ATTAsmPrinter.h b/lib/Target/X86/X86ATTAsmPrinter.h index ee91e8e0659..be5f0ddfbb3 100755 --- a/lib/Target/X86/X86ATTAsmPrinter.h +++ b/lib/Target/X86/X86ATTAsmPrinter.h @@ -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); }; diff --git a/lib/Target/X86/X86IntelAsmPrinter.cpp b/lib/Target/X86/X86IntelAsmPrinter.cpp index 91982977c4b..9cf7c29d77d 100755 --- a/lib/Target/X86/X86IntelAsmPrinter.cpp +++ b/lib/Target/X86/X86IntelAsmPrinter.cpp @@ -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(); diff --git a/lib/Target/X86/X86IntelAsmPrinter.h b/lib/Target/X86/X86IntelAsmPrinter.h index 4dec56aeaf2..7d81e6b226f 100755 --- a/lib/Target/X86/X86IntelAsmPrinter.h +++ b/lib/Target/X86/X86IntelAsmPrinter.h @@ -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); -- 2.34.1