mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
This patch that sets the Mips ELF header flag for
MicroMips architectures. Contributer: Zoran Jovanovic llvm-svn: 174360
This commit is contained in:
parent
3dfa61ae2c
commit
10d56b481a
@ -747,7 +747,8 @@ enum {
|
||||
EF_MIPS_ARCH_64 = 0x60000000, // MIPS64 instruction set per linux not elf.h
|
||||
EF_MIPS_ARCH_32R2 = 0x70000000, // mips32r2
|
||||
EF_MIPS_ARCH_64R2 = 0x80000000, // mips64r2
|
||||
EF_MIPS_ARCH = 0xf0000000 // Mask for applying EF_MIPS_ARCH_ variant
|
||||
EF_MIPS_ARCH = 0xf0000000, // Mask for applying EF_MIPS_ARCH_ variant
|
||||
EF_MIPS_MICROMIPS = 0x02000000 // microMIPS
|
||||
};
|
||||
|
||||
// ELF Relocation types for Mips
|
||||
|
@ -45,6 +45,9 @@ namespace llvm {
|
||||
else
|
||||
EFlags |= ELF::EF_MIPS_ARCH_32;
|
||||
|
||||
if (Subtarget.inMicroMipsMode())
|
||||
EFlags |= ELF::EF_MIPS_MICROMIPS;
|
||||
|
||||
// Relocation Model
|
||||
Reloc::Model RM = Subtarget.getRelocationModel();
|
||||
if (RM == Reloc::PIC_ || RM == Reloc::Default)
|
||||
|
@ -80,6 +80,9 @@ def FeatureDSP : SubtargetFeature<"dsp", "HasDSP", "true", "Mips DSP ASE">;
|
||||
def FeatureDSPR2 : SubtargetFeature<"dspr2", "HasDSPR2", "true",
|
||||
"Mips DSP-R2 ASE", [FeatureDSP]>;
|
||||
|
||||
def FeatureMicroMips : SubtargetFeature<"micromips", "InMicroMipsMode", "true",
|
||||
"microMips mode">;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Mips processors supported.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -32,7 +32,8 @@ MipsSubtarget::MipsSubtarget(const std::string &TT, const std::string &CPU,
|
||||
IsSingleFloat(false), IsFP64bit(false), IsGP64bit(false), HasVFPU(false),
|
||||
IsLinux(true), HasSEInReg(false), HasCondMov(false), HasSwap(false),
|
||||
HasBitCount(false), HasFPIdx(false),
|
||||
InMips16Mode(false), HasDSP(false), HasDSPR2(false), IsAndroid(false), RM(_RM)
|
||||
InMips16Mode(false), InMicroMipsMode(false), HasDSP(false), HasDSPR2(false),
|
||||
IsAndroid(false), RM(_RM)
|
||||
{
|
||||
std::string CPUName = CPU;
|
||||
if (CPUName.empty())
|
||||
|
@ -89,6 +89,9 @@ protected:
|
||||
// InMips16 -- can process Mips16 instructions
|
||||
bool InMips16Mode;
|
||||
|
||||
// InMicroMips -- can process MicroMips instructions
|
||||
bool InMicroMipsMode;
|
||||
|
||||
// HasDSP, HasDSPR2 -- supports DSP ASE.
|
||||
bool HasDSP, HasDSPR2;
|
||||
|
||||
@ -138,6 +141,7 @@ public:
|
||||
bool isNotSingleFloat() const { return !IsSingleFloat; }
|
||||
bool hasVFPU() const { return HasVFPU; }
|
||||
bool inMips16Mode() const { return InMips16Mode; }
|
||||
bool inMicroMipsMode() const { return InMicroMipsMode; }
|
||||
bool hasDSP() const { return HasDSP; }
|
||||
bool hasDSPR2() const { return HasDSPR2; }
|
||||
bool isAndroid() const { return IsAndroid; }
|
||||
|
@ -17,6 +17,8 @@
|
||||
; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32 %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-BE32_PIC %s
|
||||
; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32r2 -relocation-model=static %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-BE32R2 %s
|
||||
; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32r2 %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-BE32R2_PIC %s
|
||||
; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32r2 -mattr=+micromips -relocation-model=static %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-BE32R2-MICROMIPS %s
|
||||
; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips32r2 -mattr=+micromips %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-BE32R2-MICROMIPS_PIC %s
|
||||
|
||||
; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips64 -relocation-model=static %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-BE64 %s
|
||||
; RUN: llc -filetype=obj -mtriple mipsel-unknown-linux -mcpu=mips64 %s -o - | elf-dump --dump-section-data | FileCheck -check-prefix=CHECK-BE64_PIC %s
|
||||
@ -36,6 +38,12 @@
|
||||
; 32R2 bit with NO_REORDER and PIC
|
||||
; CHECK-BE32R2_PIC: ('e_flags', 0x70000003)
|
||||
;
|
||||
; 32R2 bit MICROMIPS with NO_REORDER and static
|
||||
; CHECK-BE32R2-MICROMIPS: ('e_flags', 0x72000001)
|
||||
;
|
||||
; 32R2 bit MICROMIPS with NO_REORDER and PIC
|
||||
;CHECK-BE32R2-MICROMIPS_PIC: ('e_flags', 0x72000003)
|
||||
;
|
||||
; 64(R1) bit with NO_REORDER and static
|
||||
; CHECK-BE64: ('e_flags', 0x60000001)
|
||||
;
|
||||
|
Loading…
Reference in New Issue
Block a user