summaryrefslogtreecommitdiff
path: root/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp
diff options
context:
space:
mode:
authorVenkatraman Govindaraju <venkatra@cs.wisc.edu>2014-03-02 03:39:39 +0000
committerVenkatraman Govindaraju <venkatra@cs.wisc.edu>2014-03-02 03:39:39 +0000
commitafad335cae8d1c811e2d4a9de843a36d36b4e8c5 (patch)
tree3635fcf8152acb693c12bfadec4981b48f9ac5d2 /lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp
parent80949c599fb8b2c5d14c517d2ef94ad974989a37 (diff)
downloadllvm-afad335cae8d1c811e2d4a9de843a36d36b4e8c5.tar.gz
llvm-afad335cae8d1c811e2d4a9de843a36d36b4e8c5.tar.bz2
llvm-afad335cae8d1c811e2d4a9de843a36d36b4e8c5.tar.xz
[Sparc] Add support for parsing fcmp with %fcc registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@202610 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp')
-rw-r--r--lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp b/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp
index f887b945a3..66b4b519f7 100644
--- a/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp
+++ b/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp
@@ -32,6 +32,10 @@ namespace Sparc {
#define PRINT_ALIAS_INSTR
#include "SparcGenAsmWriter.inc"
+bool SparcInstPrinter::isV9() const {
+ return (STI.getFeatureBits() & Sparc::FeatureV9) != 0;
+}
+
void SparcInstPrinter::printRegName(raw_ostream &OS, unsigned RegNo) const
{
OS << '%' << StringRef(getRegisterName(RegNo)).lower();
@@ -65,6 +69,26 @@ bool SparcInstPrinter::printSparcAliasInstr(const MCInst *MI, raw_ostream &O)
return true;
}
}
+ case SP::V9FCMPS:
+ case SP::V9FCMPD:
+ case SP::V9FCMPQ: {
+ if (isV9()
+ || (MI->getNumOperands() != 3)
+ || (!MI->getOperand(0).isReg())
+ || (MI->getOperand(0).getReg() != SP::FCC0))
+ return false;
+ // if V8, skip printing %fcc0.
+ switch(MI->getOpcode()) {
+ default:
+ case SP::V9FCMPS: O << "\tfcmps "; break;
+ case SP::V9FCMPD: O << "\tfcmpd "; break;
+ case SP::V9FCMPQ: O << "\tfcmpq "; break;
+ }
+ printOperand(MI, 1, O);
+ O << ", ";
+ printOperand(MI, 2, O);
+ return true;
+ }
}
}