rustc_target: Add more RISC-V vector-related features
This commit is contained in:
parent
4e2b096ed6
commit
55add8fce3
3 changed files with 77 additions and 3 deletions
|
@ -274,7 +274,9 @@ pub(crate) fn to_llvm_features<'a>(sess: &Session, s: &'a str) -> Option<LLVMFea
|
||||||
("arm", "fp16") => Some(LLVMFeature::new("fullfp16")),
|
("arm", "fp16") => Some(LLVMFeature::new("fullfp16")),
|
||||||
// In LLVM 18, `unaligned-scalar-mem` was merged with `unaligned-vector-mem` into a single
|
// In LLVM 18, `unaligned-scalar-mem` was merged with `unaligned-vector-mem` into a single
|
||||||
// feature called `fast-unaligned-access`. In LLVM 19, it was split back out.
|
// feature called `fast-unaligned-access`. In LLVM 19, it was split back out.
|
||||||
("riscv32" | "riscv64", "unaligned-scalar-mem") if get_version().0 == 18 => {
|
("riscv32" | "riscv64", "unaligned-scalar-mem" | "unaligned-vector-mem")
|
||||||
|
if get_version().0 == 18 =>
|
||||||
|
{
|
||||||
Some(LLVMFeature::new("fast-unaligned-access"))
|
Some(LLVMFeature::new("fast-unaligned-access"))
|
||||||
}
|
}
|
||||||
// Filter out features that are not supported by the current LLVM version
|
// Filter out features that are not supported by the current LLVM version
|
||||||
|
|
|
@ -497,7 +497,8 @@ static RISCV_FEATURES: &[(&str, Stability, ImpliedFeatures)] = &[
|
||||||
("m", Stable, &[]),
|
("m", Stable, &[]),
|
||||||
("relax", Unstable(sym::riscv_target_feature), &[]),
|
("relax", Unstable(sym::riscv_target_feature), &[]),
|
||||||
("unaligned-scalar-mem", Unstable(sym::riscv_target_feature), &[]),
|
("unaligned-scalar-mem", Unstable(sym::riscv_target_feature), &[]),
|
||||||
("v", Unstable(sym::riscv_target_feature), &[]),
|
("unaligned-vector-mem", Unstable(sym::riscv_target_feature), &[]),
|
||||||
|
("v", Unstable(sym::riscv_target_feature), &["zvl128b", "zve64d"]),
|
||||||
("za128rs", Unstable(sym::riscv_target_feature), &[]),
|
("za128rs", Unstable(sym::riscv_target_feature), &[]),
|
||||||
("za64rs", Unstable(sym::riscv_target_feature), &[]),
|
("za64rs", Unstable(sym::riscv_target_feature), &[]),
|
||||||
("zaamo", Unstable(sym::riscv_target_feature), &[]),
|
("zaamo", Unstable(sym::riscv_target_feature), &[]),
|
||||||
|
@ -529,6 +530,41 @@ static RISCV_FEATURES: &[(&str, Stability, ImpliedFeatures)] = &[
|
||||||
("zksed", Stable, &[]),
|
("zksed", Stable, &[]),
|
||||||
("zksh", Stable, &[]),
|
("zksh", Stable, &[]),
|
||||||
("zkt", Stable, &[]),
|
("zkt", Stable, &[]),
|
||||||
|
("zvbb", Unstable(sym::riscv_target_feature), &["zvkb"]),
|
||||||
|
("zvbc", Unstable(sym::riscv_target_feature), &["zve64x"]),
|
||||||
|
("zve32f", Unstable(sym::riscv_target_feature), &["zve32x", "f"]),
|
||||||
|
("zve32x", Unstable(sym::riscv_target_feature), &["zvl32b"]),
|
||||||
|
("zve64d", Unstable(sym::riscv_target_feature), &["zve64f", "d"]),
|
||||||
|
("zve64f", Unstable(sym::riscv_target_feature), &["zve32f", "zve64x"]),
|
||||||
|
("zve64x", Unstable(sym::riscv_target_feature), &["zve32x", "zvl64b"]),
|
||||||
|
("zvfh", Unstable(sym::riscv_target_feature), &["zvfhmin", "zfhmin"]),
|
||||||
|
("zvfhmin", Unstable(sym::riscv_target_feature), &["zve32f"]),
|
||||||
|
("zvkb", Unstable(sym::riscv_target_feature), &["zve32x"]),
|
||||||
|
("zvkg", Unstable(sym::riscv_target_feature), &["zve32x"]),
|
||||||
|
("zvkn", Unstable(sym::riscv_target_feature), &["zvkned", "zvknhb", "zvkb", "zvkt"]),
|
||||||
|
("zvknc", Unstable(sym::riscv_target_feature), &["zvkn", "zvbc"]),
|
||||||
|
("zvkned", Unstable(sym::riscv_target_feature), &["zve32x"]),
|
||||||
|
("zvkng", Unstable(sym::riscv_target_feature), &["zvkn", "zvkg"]),
|
||||||
|
("zvknha", Unstable(sym::riscv_target_feature), &["zve32x"]),
|
||||||
|
("zvknhb", Unstable(sym::riscv_target_feature), &["zve64x"]),
|
||||||
|
("zvks", Unstable(sym::riscv_target_feature), &["zvksed", "zvksh", "zvkb", "zvkt"]),
|
||||||
|
("zvksc", Unstable(sym::riscv_target_feature), &["zvks", "zvbc"]),
|
||||||
|
("zvksed", Unstable(sym::riscv_target_feature), &["zve32x"]),
|
||||||
|
("zvksg", Unstable(sym::riscv_target_feature), &["zvks", "zvkg"]),
|
||||||
|
("zvksh", Unstable(sym::riscv_target_feature), &["zve32x"]),
|
||||||
|
("zvkt", Unstable(sym::riscv_target_feature), &[]),
|
||||||
|
("zvl1024b", Unstable(sym::riscv_target_feature), &["zvl512b"]),
|
||||||
|
("zvl128b", Unstable(sym::riscv_target_feature), &["zvl64b"]),
|
||||||
|
("zvl16384b", Unstable(sym::riscv_target_feature), &["zvl8192b"]),
|
||||||
|
("zvl2048b", Unstable(sym::riscv_target_feature), &["zvl1024b"]),
|
||||||
|
("zvl256b", Unstable(sym::riscv_target_feature), &["zvl128b"]),
|
||||||
|
("zvl32768b", Unstable(sym::riscv_target_feature), &["zvl16384b"]),
|
||||||
|
("zvl32b", Unstable(sym::riscv_target_feature), &[]),
|
||||||
|
("zvl4096b", Unstable(sym::riscv_target_feature), &["zvl2048b"]),
|
||||||
|
("zvl512b", Unstable(sym::riscv_target_feature), &["zvl256b"]),
|
||||||
|
("zvl64b", Unstable(sym::riscv_target_feature), &["zvl32b"]),
|
||||||
|
("zvl65536b", Unstable(sym::riscv_target_feature), &["zvl32768b"]),
|
||||||
|
("zvl8192b", Unstable(sym::riscv_target_feature), &["zvl4096b"]),
|
||||||
// tidy-alphabetical-end
|
// tidy-alphabetical-end
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -245,6 +245,7 @@ LL | cfg!(target_feature = "_UNEXPECTED_VALUE");
|
||||||
`trustzone`
|
`trustzone`
|
||||||
`ual`
|
`ual`
|
||||||
`unaligned-scalar-mem`
|
`unaligned-scalar-mem`
|
||||||
|
`unaligned-vector-mem`
|
||||||
`v`
|
`v`
|
||||||
`v5te`
|
`v5te`
|
||||||
`v6`
|
`v6`
|
||||||
|
@ -325,7 +326,42 @@ LL | cfg!(target_feature = "_UNEXPECTED_VALUE");
|
||||||
`zkr`
|
`zkr`
|
||||||
`zks`
|
`zks`
|
||||||
`zksed`
|
`zksed`
|
||||||
`zksh`, and `zkt`
|
`zksh`
|
||||||
|
`zkt`
|
||||||
|
`zvbb`
|
||||||
|
`zvbc`
|
||||||
|
`zve32f`
|
||||||
|
`zve32x`
|
||||||
|
`zve64d`
|
||||||
|
`zve64f`
|
||||||
|
`zve64x`
|
||||||
|
`zvfh`
|
||||||
|
`zvfhmin`
|
||||||
|
`zvkb`
|
||||||
|
`zvkg`
|
||||||
|
`zvkn`
|
||||||
|
`zvknc`
|
||||||
|
`zvkned`
|
||||||
|
`zvkng`
|
||||||
|
`zvknha`
|
||||||
|
`zvknhb`
|
||||||
|
`zvks`
|
||||||
|
`zvksc`
|
||||||
|
`zvksed`
|
||||||
|
`zvksg`
|
||||||
|
`zvksh`
|
||||||
|
`zvkt`
|
||||||
|
`zvl1024b`
|
||||||
|
`zvl128b`
|
||||||
|
`zvl16384b`
|
||||||
|
`zvl2048b`
|
||||||
|
`zvl256b`
|
||||||
|
`zvl32768b`
|
||||||
|
`zvl32b`
|
||||||
|
`zvl4096b`
|
||||||
|
`zvl512b`
|
||||||
|
`zvl64b`
|
||||||
|
`zvl65536b`, and `zvl8192b`
|
||||||
= note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration
|
= note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration
|
||||||
= note: `#[warn(unexpected_cfgs)]` on by default
|
= note: `#[warn(unexpected_cfgs)]` on by default
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue