summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNate Begeman <natebegeman@mac.com>2005-07-14 22:52:25 +0000
committerNate Begeman <natebegeman@mac.com>2005-07-14 22:52:25 +0000
commit0f38dc4970f87788a04e9e453838f876b57038f2 (patch)
tree5452cbced448f2dce4a31f0dbf77584203dec452
parent4f229d5197da69d6774473a03211b58019169f09 (diff)
downloadbcm5719-llvm-0f38dc4970f87788a04e9e453838f876b57038f2.tar.gz
bcm5719-llvm-0f38dc4970f87788a04e9e453838f876b57038f2.zip
Add support for printing the sse scalar comparison instruction mnemonics.
llvm-svn: 22440
-rwxr-xr-xllvm/lib/Target/X86/X86ATTAsmPrinter.cpp16
-rwxr-xr-xllvm/lib/Target/X86/X86ATTAsmPrinter.h1
-rwxr-xr-xllvm/lib/Target/X86/X86IntelAsmPrinter.cpp16
-rwxr-xr-xllvm/lib/Target/X86/X86IntelAsmPrinter.h1
4 files changed, 34 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp b/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp
index ca8630c3cb9..230baad096f 100755
--- a/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp
+++ b/llvm/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/llvm/lib/Target/X86/X86ATTAsmPrinter.h b/llvm/lib/Target/X86/X86ATTAsmPrinter.h
index ee91e8e0659..be5f0ddfbb3 100755
--- a/llvm/lib/Target/X86/X86ATTAsmPrinter.h
+++ b/llvm/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/llvm/lib/Target/X86/X86IntelAsmPrinter.cpp b/llvm/lib/Target/X86/X86IntelAsmPrinter.cpp
index 91982977c4b..9cf7c29d77d 100755
--- a/llvm/lib/Target/X86/X86IntelAsmPrinter.cpp
+++ b/llvm/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/llvm/lib/Target/X86/X86IntelAsmPrinter.h b/llvm/lib/Target/X86/X86IntelAsmPrinter.h
index 4dec56aeaf2..7d81e6b226f 100755
--- a/llvm/lib/Target/X86/X86IntelAsmPrinter.h
+++ b/llvm/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);
OpenPOWER on IntegriCloud