mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
[mips] Add initial (experimental) MIPS-IV support.
Summary: Adds the 'mips4' processor and a simple test of the ELF e_flags. Patch by David Chisnall His work was sponsored by: DARPA, AFRL I made one small change to the testcase so that it uses mips64-unknown-linux instead of mips4-unknown-linux. This patch indirectly adds FeatureCondMov to FeatureMips64. This is ok because it's supposed to be there anyway and it turns out that FeatureCondMov is not a predicate of any instructions at the moment (this is a bug that hasn't been noticed because there are no targets without the conditional move instructions yet). CC: theraven Differential Revision: http://llvm-reviews.chandlerc.com/D3244 llvm-svn: 205530
This commit is contained in:
parent
7bc582d828
commit
baa1451096
0
lib/Target/Mips/AsmParser/.MipsAsmParser.cpp.swo
Normal file
0
lib/Target/Mips/AsmParser/.MipsAsmParser.cpp.swo
Normal file
@ -156,6 +156,8 @@ MipsTargetELFStreamer::MipsTargetELFStreamer(MCStreamer &S,
|
||||
EFlags |= ELF::EF_MIPS_ARCH_64R2;
|
||||
else if (Features & Mips::FeatureMips64)
|
||||
EFlags |= ELF::EF_MIPS_ARCH_64;
|
||||
else if (Features & Mips::FeatureMips4)
|
||||
EFlags |= ELF::EF_MIPS_ARCH_4;
|
||||
else if (Features & Mips::FeatureMips32r2)
|
||||
EFlags |= ELF::EF_MIPS_ARCH_32R2;
|
||||
else if (Features & Mips::FeatureMips32)
|
||||
|
@ -63,10 +63,13 @@ def FeatureMips32r2 : SubtargetFeature<"mips32r2", "MipsArchVersion",
|
||||
"Mips32r2", "Mips32r2 ISA Support",
|
||||
[FeatureMips32, FeatureSEInReg, FeatureSwap,
|
||||
FeatureFPIdx]>;
|
||||
def FeatureMips4 : SubtargetFeature<"mips4", "MipsArchVersion",
|
||||
"Mips4", "MIPS IV ISA Support",
|
||||
[FeatureGP64Bit, FeatureFP64Bit,
|
||||
FeatureCondMov]>;
|
||||
def FeatureMips64 : SubtargetFeature<"mips64", "MipsArchVersion",
|
||||
"Mips64", "Mips64 ISA Support",
|
||||
[FeatureGP64Bit, FeatureFP64Bit,
|
||||
FeatureMips32, FeatureFPIdx]>;
|
||||
[FeatureMips4, FeatureMips32, FeatureFPIdx]>;
|
||||
def FeatureMips64r2 : SubtargetFeature<"mips64r2", "MipsArchVersion",
|
||||
"Mips64r2", "Mips64r2 ISA Support",
|
||||
[FeatureMips64, FeatureMips32r2]>;
|
||||
@ -96,6 +99,7 @@ class Proc<string Name, list<SubtargetFeature> Features>
|
||||
|
||||
def : Proc<"mips32", [FeatureMips32, FeatureO32]>;
|
||||
def : Proc<"mips32r2", [FeatureMips32r2, FeatureO32]>;
|
||||
def : Proc<"mips4", [FeatureMips4, FeatureN64]>;
|
||||
def : Proc<"mips64", [FeatureMips64, FeatureN64]>;
|
||||
def : Proc<"mips64r2", [FeatureMips64r2, FeatureN64]>;
|
||||
def : Proc<"mips16", [FeatureMips16, FeatureO32]>;
|
||||
|
@ -37,10 +37,7 @@ public:
|
||||
};
|
||||
|
||||
protected:
|
||||
|
||||
enum MipsArchEnum {
|
||||
Mips32, Mips32r2, Mips64, Mips64r2
|
||||
};
|
||||
enum MipsArchEnum { Mips32, Mips32r2, Mips4, Mips64, Mips64r2 };
|
||||
|
||||
// Mips architecture version
|
||||
MipsArchEnum MipsArchVersion;
|
||||
|
@ -28,6 +28,9 @@
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64r2 -mattr=-n64,o32 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64R2-O32 %s
|
||||
# MIPS64EL-MIPS64R2-O32: Flags [ (0x80001100)
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64-unknown-linux -mcpu=mips4 %s -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS4 %s
|
||||
# MIPS4: Flags [ (0x30000000)
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple mips64el-unknown-linux -mcpu=mips64 %s -mattr=-n64,o32 -o -| llvm-readobj -h | FileCheck --check-prefix=MIPS64EL-MIPS64-O32 %s
|
||||
# MIPS64EL-MIPS64-O32: Flags [ (0x60001100)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user