Skip to content

Commit f0c7d4b

Browse files
committed
Remove redundant implied features
1 parent b4aa986 commit f0c7d4b

File tree

2 files changed

+6
-36
lines changed

2 files changed

+6
-36
lines changed

compiler/rustc_codegen_llvm/src/llvm_util.rs

+2-34
Original file line numberDiff line numberDiff line change
@@ -239,40 +239,8 @@ pub fn to_llvm_features<'a>(sess: &Session, s: &'a str) -> LLVMFeature<'a> {
239239
}
240240
// In LLVM neon implicitly enables fp, but we manually enable
241241
// neon when a feature only implicitly enables fp
242-
("aarch64", "f32mm") => {
243-
LLVMFeature::with_dependency("f32mm", TargetFeatureFoldStrength::EnableOnly("neon"))
244-
}
245-
("aarch64", "f64mm") => {
246-
LLVMFeature::with_dependency("f64mm", TargetFeatureFoldStrength::EnableOnly("neon"))
247-
}
248-
("aarch64", "fhm") => {
249-
LLVMFeature::with_dependency("fp16fml", TargetFeatureFoldStrength::EnableOnly("neon"))
250-
}
251-
("aarch64", "fp16") => {
252-
LLVMFeature::with_dependency("fullfp16", TargetFeatureFoldStrength::EnableOnly("neon"))
253-
}
254-
("aarch64", "jsconv") => {
255-
LLVMFeature::with_dependency("jsconv", TargetFeatureFoldStrength::EnableOnly("neon"))
256-
}
257-
("aarch64", "sve") => {
258-
LLVMFeature::with_dependency("sve", TargetFeatureFoldStrength::EnableOnly("neon"))
259-
}
260-
("aarch64", "sve2") => {
261-
LLVMFeature::with_dependency("sve2", TargetFeatureFoldStrength::EnableOnly("neon"))
262-
}
263-
("aarch64", "sve2-aes") => {
264-
LLVMFeature::with_dependency("sve2-aes", TargetFeatureFoldStrength::EnableOnly("neon"))
265-
}
266-
("aarch64", "sve2-sm4") => {
267-
LLVMFeature::with_dependency("sve2-sm4", TargetFeatureFoldStrength::EnableOnly("neon"))
268-
}
269-
("aarch64", "sve2-sha3") => {
270-
LLVMFeature::with_dependency("sve2-sha3", TargetFeatureFoldStrength::EnableOnly("neon"))
271-
}
272-
("aarch64", "sve2-bitperm") => LLVMFeature::with_dependency(
273-
"sve2-bitperm",
274-
TargetFeatureFoldStrength::EnableOnly("neon"),
275-
),
242+
("aarch64", "fhm") => LLVMFeature::new("fp16fml"),
243+
("aarch64", "fp16") => LLVMFeature::new("fullfp16"),
276244
// In LLVM 18, `unaligned-scalar-mem` was merged with `unaligned-vector-mem` into a single feature called
277245
// `fast-unaligned-access`. In LLVM 19, it was split back out.
278246
("riscv32" | "riscv64", "unaligned-scalar-mem") if get_version().0 == 18 => {

compiler/rustc_target/src/target_features.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -118,13 +118,15 @@ const AARCH64_ALLOWED_FEATURES: &[(&str, Stability, ImpliedFeatures)] = &[
118118
// FEAT_FLAGM
119119
("flagm", Stable, &[]),
120120
// FEAT_FP16
121-
("fp16", Stable, &[]),
121+
// Rust ties FP and Neon: https://github.com/rust-lang/rust/pull/91608
122+
("fp16", Stable, &["neon"]),
122123
// FEAT_FRINTTS
123124
("frintts", Stable, &[]),
124125
// FEAT_I8MM
125126
("i8mm", Stable, &[]),
126127
// FEAT_JSCVT
127-
("jsconv", Stable, &[]),
128+
// Rust ties FP and Neon: https://github.com/rust-lang/rust/pull/91608
129+
("jsconv", Stable, &["neon"]),
128130
// FEAT_LOR
129131
("lor", Stable, &[]),
130132
// FEAT_LSE

0 commit comments

Comments
 (0)