Rollup merge of #58941 - wzssyqa:master, r=alexcrichton
MIPS: add r6 support MIPS r6 is quite different with the previous version. It use some new target triples: mipsisa32r6-unknown-linux-gnu mipsisa32r6el-unknown-linux-gnu mipsisa64r6-unknown-linux-gnuabi64 mipsisa64r6el-unknown-linux-gnuabi64 This patch has been tested with Debian Port for mips64r6el, and the support of these triples also is included in llvm: https://reviews.llvm.org/rGe58c45a695f39004710b6ce940d489fee800dbd3
This commit is contained in:
commit
9859b818c8
7 changed files with 115 additions and 0 deletions
23
src/librustc_target/spec/mipsisa32r6_unknown_linux_gnu.rs
Normal file
23
src/librustc_target/spec/mipsisa32r6_unknown_linux_gnu.rs
Normal file
|
@ -0,0 +1,23 @@
|
|||
use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
|
||||
|
||||
pub fn target() -> TargetResult {
|
||||
Ok(Target {
|
||||
llvm_target: "mipsisa32r6-unknown-linux-gnu".to_string(),
|
||||
target_endian: "big".to_string(),
|
||||
target_pointer_width: "32".to_string(),
|
||||
target_c_int_width: "32".to_string(),
|
||||
data_layout: "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64".to_string(),
|
||||
arch: "mips".to_string(),
|
||||
target_os: "linux".to_string(),
|
||||
target_env: "gnu".to_string(),
|
||||
target_vendor: "unknown".to_string(),
|
||||
linker_flavor: LinkerFlavor::Gcc,
|
||||
options: TargetOptions {
|
||||
cpu: "mips32r6".to_string(),
|
||||
features: "+mips32r6".to_string(),
|
||||
max_atomic_width: Some(32),
|
||||
|
||||
..super::linux_base::opts()
|
||||
},
|
||||
})
|
||||
}
|
24
src/librustc_target/spec/mipsisa32r6el_unknown_linux_gnu.rs
Normal file
24
src/librustc_target/spec/mipsisa32r6el_unknown_linux_gnu.rs
Normal file
|
@ -0,0 +1,24 @@
|
|||
use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
|
||||
|
||||
pub fn target() -> TargetResult {
|
||||
Ok(Target {
|
||||
llvm_target: "mipsisa32r6el-unknown-linux-gnu".to_string(),
|
||||
target_endian: "little".to_string(),
|
||||
target_pointer_width: "32".to_string(),
|
||||
target_c_int_width: "32".to_string(),
|
||||
data_layout: "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64".to_string(),
|
||||
arch: "mips".to_string(),
|
||||
target_os: "linux".to_string(),
|
||||
target_env: "gnu".to_string(),
|
||||
target_vendor: "unknown".to_string(),
|
||||
linker_flavor: LinkerFlavor::Gcc,
|
||||
|
||||
options: TargetOptions {
|
||||
cpu: "mips32r6".to_string(),
|
||||
features: "+mips32r6".to_string(),
|
||||
max_atomic_width: Some(32),
|
||||
|
||||
..super::linux_base::opts()
|
||||
},
|
||||
})
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
|
||||
|
||||
pub fn target() -> TargetResult {
|
||||
Ok(Target {
|
||||
llvm_target: "mipsisa64r6-unknown-linux-gnuabi64".to_string(),
|
||||
target_endian: "big".to_string(),
|
||||
target_pointer_width: "64".to_string(),
|
||||
target_c_int_width: "32".to_string(),
|
||||
data_layout: "E-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128".to_string(),
|
||||
arch: "mips64".to_string(),
|
||||
target_os: "linux".to_string(),
|
||||
target_env: "gnu".to_string(),
|
||||
target_vendor: "unknown".to_string(),
|
||||
linker_flavor: LinkerFlavor::Gcc,
|
||||
options: TargetOptions {
|
||||
// NOTE(mips64r6) matches C toolchain
|
||||
cpu: "mips64r6".to_string(),
|
||||
features: "+mips64r6".to_string(),
|
||||
max_atomic_width: Some(64),
|
||||
|
||||
..super::linux_base::opts()
|
||||
},
|
||||
})
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
|
||||
|
||||
pub fn target() -> TargetResult {
|
||||
Ok(Target {
|
||||
llvm_target: "mipsisa64r6el-unknown-linux-gnuabi64".to_string(),
|
||||
target_endian: "little".to_string(),
|
||||
target_pointer_width: "64".to_string(),
|
||||
target_c_int_width: "32".to_string(),
|
||||
data_layout: "e-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128".to_string(),
|
||||
arch: "mips64".to_string(),
|
||||
target_os: "linux".to_string(),
|
||||
target_env: "gnu".to_string(),
|
||||
target_vendor: "unknown".to_string(),
|
||||
linker_flavor: LinkerFlavor::Gcc,
|
||||
options: TargetOptions {
|
||||
// NOTE(mips64r6) matches C toolchain
|
||||
cpu: "mips64r6".to_string(),
|
||||
features: "+mips64r6".to_string(),
|
||||
max_atomic_width: Some(64),
|
||||
|
||||
..super::linux_base::opts()
|
||||
},
|
||||
})
|
||||
}
|
|
@ -335,6 +335,10 @@ supported_targets! {
|
|||
("mips-unknown-linux-gnu", mips_unknown_linux_gnu),
|
||||
("mips64-unknown-linux-gnuabi64", mips64_unknown_linux_gnuabi64),
|
||||
("mips64el-unknown-linux-gnuabi64", mips64el_unknown_linux_gnuabi64),
|
||||
("mipsisa32r6-unknown-linux-gnu", mipsisa32r6_unknown_linux_gnu),
|
||||
("mipsisa32r6el-unknown-linux-gnu", mipsisa32r6el_unknown_linux_gnu),
|
||||
("mipsisa64r6-unknown-linux-gnuabi64", mipsisa64r6_unknown_linux_gnuabi64),
|
||||
("mipsisa64r6el-unknown-linux-gnuabi64", mipsisa64r6el_unknown_linux_gnuabi64),
|
||||
("mipsel-unknown-linux-gnu", mipsel_unknown_linux_gnu),
|
||||
("powerpc-unknown-linux-gnu", powerpc_unknown_linux_gnu),
|
||||
("powerpc-unknown-linux-gnuspe", powerpc_unknown_linux_gnuspe),
|
||||
|
|
|
@ -23,6 +23,10 @@ static HOSTS: &'static [&'static str] = &[
|
|||
"mips64-unknown-linux-gnuabi64",
|
||||
"mips64el-unknown-linux-gnuabi64",
|
||||
"mipsel-unknown-linux-gnu",
|
||||
"mipsisa32r6-unknown-linux-gnu",
|
||||
"mipsisa32r6el-unknown-linux-gnu",
|
||||
"mipsisa64r6-unknown-linux-gnuabi64",
|
||||
"mipsisa64r6el-unknown-linux-gnuabi64",
|
||||
"powerpc-unknown-linux-gnu",
|
||||
"powerpc64-unknown-linux-gnu",
|
||||
"powerpc64le-unknown-linux-gnu",
|
||||
|
@ -77,6 +81,10 @@ static TARGETS: &'static [&'static str] = &[
|
|||
"mips-unknown-linux-musl",
|
||||
"mips64-unknown-linux-gnuabi64",
|
||||
"mips64el-unknown-linux-gnuabi64",
|
||||
"mipsisa32r6-unknown-linux-gnu",
|
||||
"mipsisa32r6el-unknown-linux-gnu",
|
||||
"mipsisa64r6-unknown-linux-gnuabi64",
|
||||
"mipsisa64r6el-unknown-linux-gnuabi64",
|
||||
"mipsel-unknown-linux-gnu",
|
||||
"mipsel-unknown-linux-musl",
|
||||
"nvptx64-nvidia-cuda",
|
||||
|
|
|
@ -49,7 +49,15 @@ const ARCH_TABLE: &'static [(&'static str, &'static str)] = &[
|
|||
("mips", "mips"),
|
||||
("mips64", "mips64"),
|
||||
("mips64el", "mips64"),
|
||||
("mipsisa32r6", "mips"),
|
||||
("mipsisa32r6el", "mips"),
|
||||
("mipsisa64r6", "mips64"),
|
||||
("mipsisa64r6el", "mips64"),
|
||||
("mipsel", "mips"),
|
||||
("mipsisa32r6", "mips"),
|
||||
("mipsisa32r6el", "mips"),
|
||||
("mipsisa64r6", "mips64"),
|
||||
("mipsisa64r6el", "mips64"),
|
||||
("msp430", "msp430"),
|
||||
("powerpc", "powerpc"),
|
||||
("powerpc64", "powerpc64"),
|
||||
|
|
Loading…
Reference in a new issue