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),
|
("mips-unknown-linux-gnu", mips_unknown_linux_gnu),
|
||||||
("mips64-unknown-linux-gnuabi64", mips64_unknown_linux_gnuabi64),
|
("mips64-unknown-linux-gnuabi64", mips64_unknown_linux_gnuabi64),
|
||||||
("mips64el-unknown-linux-gnuabi64", mips64el_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),
|
("mipsel-unknown-linux-gnu", mipsel_unknown_linux_gnu),
|
||||||
("powerpc-unknown-linux-gnu", powerpc_unknown_linux_gnu),
|
("powerpc-unknown-linux-gnu", powerpc_unknown_linux_gnu),
|
||||||
("powerpc-unknown-linux-gnuspe", powerpc_unknown_linux_gnuspe),
|
("powerpc-unknown-linux-gnuspe", powerpc_unknown_linux_gnuspe),
|
||||||
|
|
|
@ -23,6 +23,10 @@ static HOSTS: &'static [&'static str] = &[
|
||||||
"mips64-unknown-linux-gnuabi64",
|
"mips64-unknown-linux-gnuabi64",
|
||||||
"mips64el-unknown-linux-gnuabi64",
|
"mips64el-unknown-linux-gnuabi64",
|
||||||
"mipsel-unknown-linux-gnu",
|
"mipsel-unknown-linux-gnu",
|
||||||
|
"mipsisa32r6-unknown-linux-gnu",
|
||||||
|
"mipsisa32r6el-unknown-linux-gnu",
|
||||||
|
"mipsisa64r6-unknown-linux-gnuabi64",
|
||||||
|
"mipsisa64r6el-unknown-linux-gnuabi64",
|
||||||
"powerpc-unknown-linux-gnu",
|
"powerpc-unknown-linux-gnu",
|
||||||
"powerpc64-unknown-linux-gnu",
|
"powerpc64-unknown-linux-gnu",
|
||||||
"powerpc64le-unknown-linux-gnu",
|
"powerpc64le-unknown-linux-gnu",
|
||||||
|
@ -77,6 +81,10 @@ static TARGETS: &'static [&'static str] = &[
|
||||||
"mips-unknown-linux-musl",
|
"mips-unknown-linux-musl",
|
||||||
"mips64-unknown-linux-gnuabi64",
|
"mips64-unknown-linux-gnuabi64",
|
||||||
"mips64el-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-gnu",
|
||||||
"mipsel-unknown-linux-musl",
|
"mipsel-unknown-linux-musl",
|
||||||
"nvptx64-nvidia-cuda",
|
"nvptx64-nvidia-cuda",
|
||||||
|
|
|
@ -49,7 +49,15 @@ const ARCH_TABLE: &'static [(&'static str, &'static str)] = &[
|
||||||
("mips", "mips"),
|
("mips", "mips"),
|
||||||
("mips64", "mips64"),
|
("mips64", "mips64"),
|
||||||
("mips64el", "mips64"),
|
("mips64el", "mips64"),
|
||||||
|
("mipsisa32r6", "mips"),
|
||||||
|
("mipsisa32r6el", "mips"),
|
||||||
|
("mipsisa64r6", "mips64"),
|
||||||
|
("mipsisa64r6el", "mips64"),
|
||||||
("mipsel", "mips"),
|
("mipsel", "mips"),
|
||||||
|
("mipsisa32r6", "mips"),
|
||||||
|
("mipsisa32r6el", "mips"),
|
||||||
|
("mipsisa64r6", "mips64"),
|
||||||
|
("mipsisa64r6el", "mips64"),
|
||||||
("msp430", "msp430"),
|
("msp430", "msp430"),
|
||||||
("powerpc", "powerpc"),
|
("powerpc", "powerpc"),
|
||||||
("powerpc64", "powerpc64"),
|
("powerpc64", "powerpc64"),
|
||||||
|
|
Loading…
Reference in a new issue