Skip to content

Commit 6d0d7ef

Browse files
Detect MOVBE (rust-lang#1356)
1 parent f151316 commit 6d0d7ef

File tree

4 files changed

+7
-0
lines changed

4 files changed

+7
-0
lines changed

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

+3
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ features! {
9191
/// * `"cmpxchg16b"`
9292
/// * `"adx"`
9393
/// * `"rtm"`
94+
/// * `"movbe"`
9495
///
9596
/// [docs]: https://software.intel.com/sites/landingpage/IntrinsicsGuide
9697
#[stable(feature = "simd_x86", since = "1.27.0")]
@@ -197,4 +198,6 @@ features! {
197198
/// ADX, Intel ADX (Multi-Precision Add-Carry Instruction Extensions)
198199
@FEATURE: #[stable(feature = "simd_x86", since = "1.27.0")] rtm: "rtm";
199200
/// RTM, Intel (Restricted Transactional Memory)
201+
@FEATURE: #[stable(feature = "movbe_target_feature", since = "1.67.0")] movbe: "movbe";
202+
/// MOVBE (Move Data After Swapping Bytes)
200203
}

crates/std_detect/src/detect/os/x86.rs

+1
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ pub(crate) fn detect_features() -> cache::Initializer {
111111
enable(proc_info_ecx, 13, Feature::cmpxchg16b);
112112
enable(proc_info_ecx, 19, Feature::sse4_1);
113113
enable(proc_info_ecx, 20, Feature::sse4_2);
114+
enable(proc_info_ecx, 22, Feature::movbe);
114115
enable(proc_info_ecx, 23, Feature::popcnt);
115116
enable(proc_info_ecx, 25, Feature::aes);
116117
enable(proc_info_ecx, 29, Feature::f16c);

crates/std_detect/tests/cpu-detection.rs

+1
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ fn x86_all() {
152152
println!("abm: {:?}", is_x86_feature_detected!("abm"));
153153
println!("lzcnt: {:?}", is_x86_feature_detected!("lzcnt"));
154154
println!("tbm: {:?}", is_x86_feature_detected!("tbm"));
155+
println!("movbe: {:?}", is_x86_feature_detected!("movbe"));
155156
println!("popcnt: {:?}", is_x86_feature_detected!("popcnt"));
156157
println!("fxsr: {:?}", is_x86_feature_detected!("fxsr"));
157158
println!("xsave: {:?}", is_x86_feature_detected!("xsave"));

crates/std_detect/tests/x86-specific.rs

+2
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ fn dump() {
6464
println!("cmpxchg16b: {:?}", is_x86_feature_detected!("cmpxchg16b"));
6565
println!("adx: {:?}", is_x86_feature_detected!("adx"));
6666
println!("rtm: {:?}", is_x86_feature_detected!("rtm"));
67+
println!("movbe: {:?}", is_x86_feature_detected!("movbe"));
6768
}
6869

6970
#[cfg(feature = "std_detect_env_override")]
@@ -152,4 +153,5 @@ fn compare_with_cupid() {
152153
);
153154
assert_eq!(is_x86_feature_detected!("adx"), information.adx(),);
154155
assert_eq!(is_x86_feature_detected!("rtm"), information.rtm(),);
156+
assert_eq!(is_x86_feature_detected!("movbe"), information.movbe(),);
155157
}

0 commit comments

Comments
 (0)