[llvm-commits] [llvm] r147924 - in /llvm/trunk: lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.h test/MC/Mips/elf_basic.s
Rafael Espindola
rafael.espindola at gmail.com
Tue Jan 10 20:04:15 PST 2012
Author: rafael
Date: Tue Jan 10 22:04:14 2012
New Revision: 147924
URL: http://llvm.org/viewvc/llvm-project?rev=147924&view=rev
Log:
Add big endian mips support. Based on a patch by Jack Carter.
Modified:
llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp
llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.h
llvm/trunk/test/MC/Mips/elf_basic.s
Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp?rev=147924&r1=147923&r2=147924&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp (original)
+++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp Tue Jan 10 22:04:14 2012
@@ -71,7 +71,9 @@
namespace {
class MipsAsmBackend : public MCAsmBackend {
public:
- MipsAsmBackend(const Target &T) : MCAsmBackend() {}
+ uint8_t OSABI;
+ MipsAsmBackend(const Target &T, uint8_t OSABI_) :
+ MCAsmBackend(), OSABI(OSABI_) {}
/// ApplyFixup - Apply the \arg Value for given \arg Fixup into the provided
/// data fragment, at the offset specified by the fixup and following the
@@ -191,10 +193,8 @@
class MipsEB_AsmBackend : public MipsAsmBackend {
public:
- uint8_t OSABI;
-
MipsEB_AsmBackend(const Target &T, uint8_t _OSABI)
- : MipsAsmBackend(T), OSABI(_OSABI) {}
+ : MipsAsmBackend(T, _OSABI) {}
MCObjectWriter *createObjectWriter(raw_ostream &OS) const {
return createMipsELFObjectWriter(OS, /*IsLittleEndian*/ false, OSABI);
@@ -203,10 +203,8 @@
class MipsEL_AsmBackend : public MipsAsmBackend {
public:
- uint8_t OSABI;
-
MipsEL_AsmBackend(const Target &T, uint8_t _OSABI)
- : MipsAsmBackend(T), OSABI(_OSABI) {}
+ : MipsAsmBackend(T, _OSABI) {}
MCObjectWriter *createObjectWriter(raw_ostream &OS) const {
return createMipsELFObjectWriter(OS, /*IsLittleEndian*/ true, OSABI);
@@ -214,11 +212,12 @@
};
} // namespace
-MCAsmBackend *llvm::createMipsAsmBackend(const Target &T, StringRef TT) {
- Triple TheTriple(TT);
+MCAsmBackend *llvm::createMipsBEAsmBackend(const Target &T, StringRef TT) {
+ uint8_t OSABI = MCELFObjectTargetWriter::getOSABI(Triple(TT).getOS());
+ return new MipsEB_AsmBackend(T, OSABI);
+}
- // just return little endian for now
- //
+MCAsmBackend *llvm::createMipsLEAsmBackend(const Target &T, StringRef TT) {
uint8_t OSABI = MCELFObjectTargetWriter::getOSABI(Triple(TT).getOS());
return new MipsEL_AsmBackend(T, OSABI);
}
Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp?rev=147924&r1=147923&r2=147924&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp (original)
+++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.cpp Tue Jan 10 22:04:14 2012
@@ -136,10 +136,14 @@
TargetRegistry::RegisterMCObjectStreamer(TheMips64elTarget, createMCStreamer);
// Register the asm backend.
- TargetRegistry::RegisterMCAsmBackend(TheMipsTarget, createMipsAsmBackend);
- TargetRegistry::RegisterMCAsmBackend(TheMipselTarget, createMipsAsmBackend);
- TargetRegistry::RegisterMCAsmBackend(TheMips64Target, createMipsAsmBackend);
- TargetRegistry::RegisterMCAsmBackend(TheMips64elTarget, createMipsAsmBackend);
+ TargetRegistry::RegisterMCAsmBackend(TheMipsTarget,
+ createMipsBEAsmBackend);
+ TargetRegistry::RegisterMCAsmBackend(TheMipselTarget,
+ createMipsLEAsmBackend);
+ TargetRegistry::RegisterMCAsmBackend(TheMips64Target,
+ createMipsBEAsmBackend);
+ TargetRegistry::RegisterMCAsmBackend(TheMips64elTarget,
+ createMipsLEAsmBackend);
TargetRegistry::RegisterMCCodeEmitter(TheMipsTarget, createMipsMCCodeEmitter);
TargetRegistry::RegisterMCCodeEmitter(TheMipselTarget,
Modified: llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.h?rev=147924&r1=147923&r2=147924&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.h (original)
+++ llvm/trunk/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.h Tue Jan 10 22:04:14 2012
@@ -36,7 +36,8 @@
const MCSubtargetInfo &STI,
MCContext &Ctx);
-MCAsmBackend *createMipsAsmBackend(const Target &T, StringRef TT);
+MCAsmBackend *createMipsBEAsmBackend(const Target &T, StringRef TT);
+MCAsmBackend *createMipsLEAsmBackend(const Target &T, StringRef TT);
MCObjectWriter *createMipsELFObjectWriter(raw_ostream &OS,
bool IsLittleEndian,
Modified: llvm/trunk/test/MC/Mips/elf_basic.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/elf_basic.s?rev=147924&r1=147923&r2=147924&view=diff
==============================================================================
--- llvm/trunk/test/MC/Mips/elf_basic.s (original)
+++ llvm/trunk/test/MC/Mips/elf_basic.s Tue Jan 10 22:04:14 2012
@@ -1,5 +1,7 @@
+; RUN: llc -filetype=obj -mtriple mips-unknown-linux %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-BE %s
; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-LE %s
; Check that we produce the correct endian.
+; CHECK-BE: ('e_indent[EI_DATA]', 0x02)
; CHECK-LE: ('e_indent[EI_DATA]', 0x01)
More information about the llvm-commits
mailing list