Skip to content

Commit 710988a

Browse files
committedMar 5, 2019
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
1 parent f22dca0 commit 710988a

File tree

7 files changed

+115
-0
lines changed

7 files changed

+115
-0
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
2+
3+
pub fn target() -> TargetResult {
4+
Ok(Target {
5+
llvm_target: "mipsisa32r6-unknown-linux-gnu".to_string(),
6+
target_endian: "big".to_string(),
7+
target_pointer_width: "32".to_string(),
8+
target_c_int_width: "32".to_string(),
9+
data_layout: "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64".to_string(),
10+
arch: "mips".to_string(),
11+
target_os: "linux".to_string(),
12+
target_env: "gnu".to_string(),
13+
target_vendor: "unknown".to_string(),
14+
linker_flavor: LinkerFlavor::Gcc,
15+
options: TargetOptions {
16+
cpu: "mips32r6".to_string(),
17+
features: "+mips32r6".to_string(),
18+
max_atomic_width: Some(32),
19+
20+
..super::linux_base::opts()
21+
},
22+
})
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
2+
3+
pub fn target() -> TargetResult {
4+
Ok(Target {
5+
llvm_target: "mipsisa32r6el-unknown-linux-gnu".to_string(),
6+
target_endian: "little".to_string(),
7+
target_pointer_width: "32".to_string(),
8+
target_c_int_width: "32".to_string(),
9+
data_layout: "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64".to_string(),
10+
arch: "mips".to_string(),
11+
target_os: "linux".to_string(),
12+
target_env: "gnu".to_string(),
13+
target_vendor: "unknown".to_string(),
14+
linker_flavor: LinkerFlavor::Gcc,
15+
16+
options: TargetOptions {
17+
cpu: "mips32r6".to_string(),
18+
features: "+mips32r6".to_string(),
19+
max_atomic_width: Some(32),
20+
21+
..super::linux_base::opts()
22+
},
23+
})
24+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
2+
3+
pub fn target() -> TargetResult {
4+
Ok(Target {
5+
llvm_target: "mipsisa64r6-unknown-linux-gnuabi64".to_string(),
6+
target_endian: "big".to_string(),
7+
target_pointer_width: "64".to_string(),
8+
target_c_int_width: "32".to_string(),
9+
data_layout: "E-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128".to_string(),
10+
arch: "mips64".to_string(),
11+
target_os: "linux".to_string(),
12+
target_env: "gnu".to_string(),
13+
target_vendor: "unknown".to_string(),
14+
linker_flavor: LinkerFlavor::Gcc,
15+
options: TargetOptions {
16+
// NOTE(mips64r6) matches C toolchain
17+
cpu: "mips64r6".to_string(),
18+
features: "+mips64r6".to_string(),
19+
max_atomic_width: Some(64),
20+
21+
..super::linux_base::opts()
22+
},
23+
})
24+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
use crate::spec::{LinkerFlavor, Target, TargetOptions, TargetResult};
2+
3+
pub fn target() -> TargetResult {
4+
Ok(Target {
5+
llvm_target: "mipsisa64r6el-unknown-linux-gnuabi64".to_string(),
6+
target_endian: "little".to_string(),
7+
target_pointer_width: "64".to_string(),
8+
target_c_int_width: "32".to_string(),
9+
data_layout: "e-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128".to_string(),
10+
arch: "mips64".to_string(),
11+
target_os: "linux".to_string(),
12+
target_env: "gnu".to_string(),
13+
target_vendor: "unknown".to_string(),
14+
linker_flavor: LinkerFlavor::Gcc,
15+
options: TargetOptions {
16+
// NOTE(mips64r6) matches C toolchain
17+
cpu: "mips64r6".to_string(),
18+
features: "+mips64r6".to_string(),
19+
max_atomic_width: Some(64),
20+
21+
..super::linux_base::opts()
22+
},
23+
})
24+
}

‎src/librustc_target/spec/mod.rs

+4
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,10 @@ supported_targets! {
335335
("mips-unknown-linux-gnu", mips_unknown_linux_gnu),
336336
("mips64-unknown-linux-gnuabi64", mips64_unknown_linux_gnuabi64),
337337
("mips64el-unknown-linux-gnuabi64", mips64el_unknown_linux_gnuabi64),
338+
("mipsisa32r6-unknown-linux-gnu", mipsisa32r6_unknown_linux_gnu),
339+
("mipsisa32r6el-unknown-linux-gnu", mipsisa32r6el_unknown_linux_gnu),
340+
("mipsisa64r6-unknown-linux-gnuabi64", mipsisa64r6_unknown_linux_gnuabi64),
341+
("mipsisa64r6el-unknown-linux-gnuabi64", mipsisa64r6el_unknown_linux_gnuabi64),
338342
("mipsel-unknown-linux-gnu", mipsel_unknown_linux_gnu),
339343
("powerpc-unknown-linux-gnu", powerpc_unknown_linux_gnu),
340344
("powerpc-unknown-linux-gnuspe", powerpc_unknown_linux_gnuspe),

‎src/tools/build-manifest/src/main.rs

+8
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ static HOSTS: &'static [&'static str] = &[
2323
"mips64-unknown-linux-gnuabi64",
2424
"mips64el-unknown-linux-gnuabi64",
2525
"mipsel-unknown-linux-gnu",
26+
"mipsisa32r6-unknown-linux-gnu",
27+
"mipsisa32r6el-unknown-linux-gnu",
28+
"mipsisa64r6-unknown-linux-gnuabi64",
29+
"mipsisa64r6el-unknown-linux-gnuabi64",
2630
"powerpc-unknown-linux-gnu",
2731
"powerpc64-unknown-linux-gnu",
2832
"powerpc64le-unknown-linux-gnu",
@@ -77,6 +81,10 @@ static TARGETS: &'static [&'static str] = &[
7781
"mips-unknown-linux-musl",
7882
"mips64-unknown-linux-gnuabi64",
7983
"mips64el-unknown-linux-gnuabi64",
84+
"mipsisa32r6-unknown-linux-gnu",
85+
"mipsisa32r6el-unknown-linux-gnu",
86+
"mipsisa64r6-unknown-linux-gnuabi64",
87+
"mipsisa64r6el-unknown-linux-gnuabi64",
8088
"mipsel-unknown-linux-gnu",
8189
"mipsel-unknown-linux-musl",
8290
"nvptx64-nvidia-cuda",

‎src/tools/compiletest/src/util.rs

+8
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,15 @@ const ARCH_TABLE: &'static [(&'static str, &'static str)] = &[
4949
("mips", "mips"),
5050
("mips64", "mips64"),
5151
("mips64el", "mips64"),
52+
("mipsisa32r6", "mips"),
53+
("mipsisa32r6el", "mips"),
54+
("mipsisa64r6", "mips64"),
55+
("mipsisa64r6el", "mips64"),
5256
("mipsel", "mips"),
57+
("mipsisa32r6", "mips"),
58+
("mipsisa32r6el", "mips"),
59+
("mipsisa64r6", "mips64"),
60+
("mipsisa64r6el", "mips64"),
5361
("msp430", "msp430"),
5462
("powerpc", "powerpc"),
5563
("powerpc64", "powerpc64"),

0 commit comments

Comments
 (0)
Please sign in to comment.