diff options
author | Venkatraman Govindaraju <venkatra@cs.wisc.edu> | 2014-03-02 03:39:39 +0000 |
---|---|---|
committer | Venkatraman Govindaraju <venkatra@cs.wisc.edu> | 2014-03-02 03:39:39 +0000 |
commit | afad335cae8d1c811e2d4a9de843a36d36b4e8c5 (patch) | |
tree | 3635fcf8152acb693c12bfadec4981b48f9ac5d2 /lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp | |
parent | 80949c599fb8b2c5d14c517d2ef94ad974989a37 (diff) | |
download | llvm-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.cpp | 24 |
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; + } } } |