Skip to content

Commit 20238f5

Browse files
committed
Add power9 and power8 target-features
1 parent 8795aeb commit 20238f5

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

crates/std_detect/src/detect/arch/powerpc64.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,17 @@ features! {
1414
@FEATURE: #[unstable(feature = "stdarch_powerpc_feature_detection", issue = "111191")] power8: "power8";
1515
without cfg check: true;
1616
/// Power8
17+
@FEATURE: #[unstable(feature = "stdarch_powerpc_feature_detection", issue = "111191")] power8_altivec: "power8-altivec";
18+
/// Power8 altivec
19+
@FEATURE: #[unstable(feature = "stdarch_powerpc_feature_detection", issue = "111191")] power8_vector: "power8-vector";
20+
/// Power8 vector
21+
@FEATURE: #[unstable(feature = "stdarch_powerpc_feature_detection", issue = "111191")] power8_crypto: "power8-crypto";
22+
/// Power8 crypto
23+
@FEATURE: #[unstable(feature = "stdarch_powerpc_feature_detection", issue = "111191")] power9: "power9";
24+
without cfg check: true;
25+
/// Power9
26+
@FEATURE: #[unstable(feature = "stdarch_powerpc_feature_detection", issue = "111191")] power9_altivec: "power9-altivec";
27+
/// Power9 altivec
28+
@FEATURE: #[unstable(feature = "stdarch_powerpc_feature_detection", issue = "111191")] power9_vector: "power9-vector";
29+
/// Power9 vector
1730
}

crates/std_detect/src/detect/os/linux/powerpc.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//! Run-time feature detection for PowerPC on Linux.
22
33
use super::auxvec;
4-
use crate::detect::{Feature, cache};
4+
use crate::detect::{cache, Feature};
55

66
/// Try to read the features from the auxiliary vector, and if that fails, try
77
/// to read them from /proc/cpuinfo.
@@ -21,7 +21,15 @@ pub(crate) fn detect_features() -> cache::Initializer {
2121
// index of the bit to test like in ARM and Aarch64)
2222
enable_feature(&mut value, Feature::altivec, auxv.hwcap & 0x10000000 != 0);
2323
enable_feature(&mut value, Feature::vsx, auxv.hwcap & 0x00000080 != 0);
24-
enable_feature(&mut value, Feature::power8, auxv.hwcap2 & 0x80000000 != 0);
24+
let power8_features = auxv.hwcap2 & 0x80000000 != 0;
25+
enable_feature(&mut value, Feature::power8, power8_features);
26+
enable_feature(&mut value, Feature::power8_altivec, power8_features);
27+
enable_feature(&mut value, Feature::power8_crypto, power8_features);
28+
enable_feature(&mut value, Feature::power8_vector, power8_features);
29+
let power9_features = auxv.hwcap2 & 0x00800000 != 0;
30+
enable_feature(&mut value, Feature::power9, power9_features);
31+
enable_feature(&mut value, Feature::power9_altivec, power9_features);
32+
enable_feature(&mut value, Feature::power9_vector, power9_features);
2533
return value;
2634
}
2735

crates/std_detect/tests/cpu-detection.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,7 @@ fn powerpc64_linux_or_freebsd() {
340340
println!("altivec: {}", is_powerpc64_feature_detected!("altivec"));
341341
println!("vsx: {}", is_powerpc64_feature_detected!("vsx"));
342342
println!("power8: {}", is_powerpc64_feature_detected!("power8"));
343+
println!("power9: {}", is_powerpc64_feature_detected!("power9"));
343344
}
344345

345346
#[test]

0 commit comments

Comments
 (0)