about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--library/stdarch/crates/std_detect/src/detect/mod.rs7
-rw-r--r--library/stdarch/crates/std_detect/src/detect/os/x86.rs136
-rw-r--r--library/stdarch/crates/std_detect/tests/features.rs13
-rw-r--r--library/stdarch/crates/std_detect/tests/x86-specific.rs140
4 files changed, 153 insertions, 143 deletions
diff --git a/library/stdarch/crates/std_detect/src/detect/mod.rs b/library/stdarch/crates/std_detect/src/detect/mod.rs
index 748299f7f84..6389a3fd75b 100644
--- a/library/stdarch/crates/std_detect/src/detect/mod.rs
+++ b/library/stdarch/crates/std_detect/src/detect/mod.rs
@@ -135,10 +135,3 @@ pub fn features() -> impl Iterator<Item = (&'static str, bool)> {
     }
     impl_()
 }
-
-#[test]
-fn features_roundtrip() {
-    for (f, _) in features() {
-        let _ = Feature::from_str(f).unwrap();
-    }
-}
diff --git a/library/stdarch/crates/std_detect/src/detect/os/x86.rs b/library/stdarch/crates/std_detect/src/detect/os/x86.rs
index 9da3d77c50a..7888776335d 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/x86.rs
+++ b/library/stdarch/crates/std_detect/src/detect/os/x86.rs
@@ -243,139 +243,3 @@ pub(crate) fn detect_features() -> cache::Initializer {
 
     value
 }
-
-#[cfg(test)]
-mod tests {
-    extern crate cupid;
-
-    #[test]
-    fn dump() {
-        println!("aes: {:?}", is_x86_feature_detected!("aes"));
-        println!("pclmulqdq: {:?}", is_x86_feature_detected!("pclmulqdq"));
-        println!("rdrand: {:?}", is_x86_feature_detected!("rdrand"));
-        println!("rdseed: {:?}", is_x86_feature_detected!("rdseed"));
-        println!("tsc: {:?}", is_x86_feature_detected!("tsc"));
-        println!("sse: {:?}", is_x86_feature_detected!("sse"));
-        println!("sse2: {:?}", is_x86_feature_detected!("sse2"));
-        println!("sse3: {:?}", is_x86_feature_detected!("sse3"));
-        println!("ssse3: {:?}", is_x86_feature_detected!("ssse3"));
-        println!("sse4.1: {:?}", is_x86_feature_detected!("sse4.1"));
-        println!("sse4.2: {:?}", is_x86_feature_detected!("sse4.2"));
-        println!("sse4a: {:?}", is_x86_feature_detected!("sse4a"));
-        println!("sha: {:?}", is_x86_feature_detected!("sha"));
-        println!("avx: {:?}", is_x86_feature_detected!("avx"));
-        println!("avx2: {:?}", is_x86_feature_detected!("avx2"));
-        println!("avx512f {:?}", is_x86_feature_detected!("avx512f"));
-        println!("avx512cd {:?}", is_x86_feature_detected!("avx512cd"));
-        println!("avx512er {:?}", is_x86_feature_detected!("avx512er"));
-        println!("avx512pf {:?}", is_x86_feature_detected!("avx512pf"));
-        println!("avx512bw {:?}", is_x86_feature_detected!("avx512bw"));
-        println!("avx512dq {:?}", is_x86_feature_detected!("avx512dq"));
-        println!("avx512vl {:?}", is_x86_feature_detected!("avx512vl"));
-        println!("avx512_ifma {:?}", is_x86_feature_detected!("avx512ifma"));
-        println!("avx512_vbmi {:?}", is_x86_feature_detected!("avx512vbmi"));
-        println!(
-            "avx512_vpopcntdq {:?}",
-            is_x86_feature_detected!("avx512vpopcntdq")
-        );
-        println!("fma: {:?}", is_x86_feature_detected!("fma"));
-        println!("abm: {:?}", is_x86_feature_detected!("abm"));
-        println!("bmi: {:?}", is_x86_feature_detected!("bmi1"));
-        println!("bmi2: {:?}", is_x86_feature_detected!("bmi2"));
-        println!("tbm: {:?}", is_x86_feature_detected!("tbm"));
-        println!("popcnt: {:?}", is_x86_feature_detected!("popcnt"));
-        println!("lzcnt: {:?}", is_x86_feature_detected!("lzcnt"));
-        println!("fxsr: {:?}", is_x86_feature_detected!("fxsr"));
-        println!("xsave: {:?}", is_x86_feature_detected!("xsave"));
-        println!("xsaveopt: {:?}", is_x86_feature_detected!("xsaveopt"));
-        println!("xsaves: {:?}", is_x86_feature_detected!("xsaves"));
-        println!("xsavec: {:?}", is_x86_feature_detected!("xsavec"));
-        println!("cmpxchg16b: {:?}", is_x86_feature_detected!("cmpxchg16b"));
-        println!("adx: {:?}", is_x86_feature_detected!("adx"));
-        println!("rtm: {:?}", is_x86_feature_detected!("rtm"));
-    }
-
-    #[cfg(feature = "std_detect_env_override")]
-    #[test]
-    fn env_override_no_avx() {
-        if let Ok(disable) = crate::env::var("RUST_STD_DETECT_UNSTABLE") {
-            let information = cupid::master().unwrap();
-            for d in disable.split(" ") {
-                match d {
-                    "avx" => if information.avx() {
-                        assert_ne!(is_x86_feature_detected!("avx"), information.avx())
-                    }
-                    "avx2" => if information.avx2() {
-                        assert_ne!(is_x86_feature_detected!("avx2"), information.avx2())
-                    }
-                    _ => {}
-                }
-            }
-        }
-    }
-
-    #[test]
-    fn compare_with_cupid() {
-        let information = cupid::master().unwrap();
-        assert_eq!(is_x86_feature_detected!("aes"), information.aesni());
-        assert_eq!(
-            is_x86_feature_detected!("pclmulqdq"),
-            information.pclmulqdq()
-        );
-        assert_eq!(is_x86_feature_detected!("rdrand"), information.rdrand());
-        assert_eq!(is_x86_feature_detected!("rdseed"), information.rdseed());
-        assert_eq!(is_x86_feature_detected!("tsc"), information.tsc());
-        assert_eq!(is_x86_feature_detected!("sse"), information.sse());
-        assert_eq!(is_x86_feature_detected!("sse2"), information.sse2());
-        assert_eq!(is_x86_feature_detected!("sse3"), information.sse3());
-        assert_eq!(is_x86_feature_detected!("ssse3"), information.ssse3());
-        assert_eq!(is_x86_feature_detected!("sse4.1"), information.sse4_1());
-        assert_eq!(is_x86_feature_detected!("sse4.2"), information.sse4_2());
-        assert_eq!(is_x86_feature_detected!("sse4a"), information.sse4a());
-        assert_eq!(is_x86_feature_detected!("sha"), information.sha());
-        assert_eq!(is_x86_feature_detected!("avx"), information.avx());
-        assert_eq!(is_x86_feature_detected!("avx2"), information.avx2());
-        assert_eq!(is_x86_feature_detected!("avx512f"), information.avx512f());
-        assert_eq!(is_x86_feature_detected!("avx512cd"), information.avx512cd());
-        assert_eq!(is_x86_feature_detected!("avx512er"), information.avx512er());
-        assert_eq!(is_x86_feature_detected!("avx512pf"), information.avx512pf());
-        assert_eq!(is_x86_feature_detected!("avx512bw"), information.avx512bw());
-        assert_eq!(is_x86_feature_detected!("avx512dq"), information.avx512dq());
-        assert_eq!(is_x86_feature_detected!("avx512vl"), information.avx512vl());
-        assert_eq!(
-            is_x86_feature_detected!("avx512ifma"),
-            information.avx512_ifma()
-        );
-        assert_eq!(
-            is_x86_feature_detected!("avx512vbmi"),
-            information.avx512_vbmi()
-        );
-        assert_eq!(
-            is_x86_feature_detected!("avx512vpopcntdq"),
-            information.avx512_vpopcntdq()
-        );
-        assert_eq!(is_x86_feature_detected!("fma"), information.fma());
-        assert_eq!(is_x86_feature_detected!("bmi1"), information.bmi1());
-        assert_eq!(is_x86_feature_detected!("bmi2"), information.bmi2());
-        assert_eq!(is_x86_feature_detected!("popcnt"), information.popcnt());
-        assert_eq!(is_x86_feature_detected!("abm"), information.lzcnt());
-        assert_eq!(is_x86_feature_detected!("tbm"), information.tbm());
-        assert_eq!(is_x86_feature_detected!("lzcnt"), information.lzcnt());
-        assert_eq!(is_x86_feature_detected!("xsave"), information.xsave());
-        assert_eq!(is_x86_feature_detected!("xsaveopt"), information.xsaveopt());
-        assert_eq!(
-            is_x86_feature_detected!("xsavec"),
-            information.xsavec_and_xrstor()
-        );
-        assert_eq!(
-            is_x86_feature_detected!("xsaves"),
-            information.xsaves_xrstors_and_ia32_xss()
-        );
-        assert_eq!(
-            is_x86_feature_detected!("cmpxchg16b"),
-            information.cmpxchg16b(),
-        );
-        assert_eq!(is_x86_feature_detected!("adx"), information.adx(),);
-        assert_eq!(is_x86_feature_detected!("rtm"), information.rtm(),);
-    }
-}
diff --git a/library/stdarch/crates/std_detect/tests/features.rs b/library/stdarch/crates/std_detect/tests/features.rs
new file mode 100644
index 00000000000..7fe81d3e7fe
--- /dev/null
+++ b/library/stdarch/crates/std_detect/tests/features.rs
@@ -0,0 +1,13 @@
+#![feature(stdsimd)]
+#![feature(stdsimd_internal)]
+
+extern crate std_detect;
+
+use std_detect::detect::{features, Feature};
+
+#[test]
+fn features_roundtrip() {
+    for (f, _) in features() {
+        let _ = Feature::from_str(f).unwrap();
+    }
+}
diff --git a/library/stdarch/crates/std_detect/tests/x86-specific.rs b/library/stdarch/crates/std_detect/tests/x86-specific.rs
new file mode 100644
index 00000000000..cb51649725a
--- /dev/null
+++ b/library/stdarch/crates/std_detect/tests/x86-specific.rs
@@ -0,0 +1,140 @@
+#![feature(stdsimd)]
+
+extern crate cupid;
+#[macro_use]
+extern crate std_detect;
+
+#[test]
+fn dump() {
+    println!("aes: {:?}", is_x86_feature_detected!("aes"));
+    println!("pclmulqdq: {:?}", is_x86_feature_detected!("pclmulqdq"));
+    println!("rdrand: {:?}", is_x86_feature_detected!("rdrand"));
+    println!("rdseed: {:?}", is_x86_feature_detected!("rdseed"));
+    println!("tsc: {:?}", is_x86_feature_detected!("tsc"));
+    println!("sse: {:?}", is_x86_feature_detected!("sse"));
+    println!("sse2: {:?}", is_x86_feature_detected!("sse2"));
+    println!("sse3: {:?}", is_x86_feature_detected!("sse3"));
+    println!("ssse3: {:?}", is_x86_feature_detected!("ssse3"));
+    println!("sse4.1: {:?}", is_x86_feature_detected!("sse4.1"));
+    println!("sse4.2: {:?}", is_x86_feature_detected!("sse4.2"));
+    println!("sse4a: {:?}", is_x86_feature_detected!("sse4a"));
+    println!("sha: {:?}", is_x86_feature_detected!("sha"));
+    println!("avx: {:?}", is_x86_feature_detected!("avx"));
+    println!("avx2: {:?}", is_x86_feature_detected!("avx2"));
+    println!("avx512f {:?}", is_x86_feature_detected!("avx512f"));
+    println!("avx512cd {:?}", is_x86_feature_detected!("avx512cd"));
+    println!("avx512er {:?}", is_x86_feature_detected!("avx512er"));
+    println!("avx512pf {:?}", is_x86_feature_detected!("avx512pf"));
+    println!("avx512bw {:?}", is_x86_feature_detected!("avx512bw"));
+    println!("avx512dq {:?}", is_x86_feature_detected!("avx512dq"));
+    println!("avx512vl {:?}", is_x86_feature_detected!("avx512vl"));
+    println!("avx512_ifma {:?}", is_x86_feature_detected!("avx512ifma"));
+    println!("avx512_vbmi {:?}", is_x86_feature_detected!("avx512vbmi"));
+    println!(
+        "avx512_vpopcntdq {:?}",
+        is_x86_feature_detected!("avx512vpopcntdq")
+    );
+    println!("fma: {:?}", is_x86_feature_detected!("fma"));
+    println!("abm: {:?}", is_x86_feature_detected!("abm"));
+    println!("bmi: {:?}", is_x86_feature_detected!("bmi1"));
+    println!("bmi2: {:?}", is_x86_feature_detected!("bmi2"));
+    println!("tbm: {:?}", is_x86_feature_detected!("tbm"));
+    println!("popcnt: {:?}", is_x86_feature_detected!("popcnt"));
+    println!("lzcnt: {:?}", is_x86_feature_detected!("lzcnt"));
+    println!("fxsr: {:?}", is_x86_feature_detected!("fxsr"));
+    println!("xsave: {:?}", is_x86_feature_detected!("xsave"));
+    println!("xsaveopt: {:?}", is_x86_feature_detected!("xsaveopt"));
+    println!("xsaves: {:?}", is_x86_feature_detected!("xsaves"));
+    println!("xsavec: {:?}", is_x86_feature_detected!("xsavec"));
+    println!("cmpxchg16b: {:?}", is_x86_feature_detected!("cmpxchg16b"));
+    println!("adx: {:?}", is_x86_feature_detected!("adx"));
+    println!("rtm: {:?}", is_x86_feature_detected!("rtm"));
+}
+
+#[cfg(feature = "std_detect_env_override")]
+#[test]
+fn env_override_no_avx() {
+    if let Ok(disable) = std::env::var("RUST_STD_DETECT_UNSTABLE") {
+        let information = cupid::master().unwrap();
+        for d in disable.split(" ") {
+            match d {
+                "avx" => {
+                    if information.avx() {
+                        assert_ne!(is_x86_feature_detected!("avx"), information.avx())
+                    }
+                }
+                "avx2" => {
+                    if information.avx2() {
+                        assert_ne!(is_x86_feature_detected!("avx2"), information.avx2())
+                    }
+                }
+                _ => {}
+            }
+        }
+    }
+}
+
+#[test]
+fn compare_with_cupid() {
+    let information = cupid::master().unwrap();
+    assert_eq!(is_x86_feature_detected!("aes"), information.aesni());
+    assert_eq!(
+        is_x86_feature_detected!("pclmulqdq"),
+        information.pclmulqdq()
+    );
+    assert_eq!(is_x86_feature_detected!("rdrand"), information.rdrand());
+    assert_eq!(is_x86_feature_detected!("rdseed"), information.rdseed());
+    assert_eq!(is_x86_feature_detected!("tsc"), information.tsc());
+    assert_eq!(is_x86_feature_detected!("sse"), information.sse());
+    assert_eq!(is_x86_feature_detected!("sse2"), information.sse2());
+    assert_eq!(is_x86_feature_detected!("sse3"), information.sse3());
+    assert_eq!(is_x86_feature_detected!("ssse3"), information.ssse3());
+    assert_eq!(is_x86_feature_detected!("sse4.1"), information.sse4_1());
+    assert_eq!(is_x86_feature_detected!("sse4.2"), information.sse4_2());
+    assert_eq!(is_x86_feature_detected!("sse4a"), information.sse4a());
+    assert_eq!(is_x86_feature_detected!("sha"), information.sha());
+    assert_eq!(is_x86_feature_detected!("avx"), information.avx());
+    assert_eq!(is_x86_feature_detected!("avx2"), information.avx2());
+    assert_eq!(is_x86_feature_detected!("avx512f"), information.avx512f());
+    assert_eq!(is_x86_feature_detected!("avx512cd"), information.avx512cd());
+    assert_eq!(is_x86_feature_detected!("avx512er"), information.avx512er());
+    assert_eq!(is_x86_feature_detected!("avx512pf"), information.avx512pf());
+    assert_eq!(is_x86_feature_detected!("avx512bw"), information.avx512bw());
+    assert_eq!(is_x86_feature_detected!("avx512dq"), information.avx512dq());
+    assert_eq!(is_x86_feature_detected!("avx512vl"), information.avx512vl());
+    assert_eq!(
+        is_x86_feature_detected!("avx512ifma"),
+        information.avx512_ifma()
+    );
+    assert_eq!(
+        is_x86_feature_detected!("avx512vbmi"),
+        information.avx512_vbmi()
+    );
+    assert_eq!(
+        is_x86_feature_detected!("avx512vpopcntdq"),
+        information.avx512_vpopcntdq()
+    );
+    assert_eq!(is_x86_feature_detected!("fma"), information.fma());
+    assert_eq!(is_x86_feature_detected!("bmi1"), information.bmi1());
+    assert_eq!(is_x86_feature_detected!("bmi2"), information.bmi2());
+    assert_eq!(is_x86_feature_detected!("popcnt"), information.popcnt());
+    assert_eq!(is_x86_feature_detected!("abm"), information.lzcnt());
+    assert_eq!(is_x86_feature_detected!("tbm"), information.tbm());
+    assert_eq!(is_x86_feature_detected!("lzcnt"), information.lzcnt());
+    assert_eq!(is_x86_feature_detected!("xsave"), information.xsave());
+    assert_eq!(is_x86_feature_detected!("xsaveopt"), information.xsaveopt());
+    assert_eq!(
+        is_x86_feature_detected!("xsavec"),
+        information.xsavec_and_xrstor()
+    );
+    assert_eq!(
+        is_x86_feature_detected!("xsaves"),
+        information.xsaves_xrstors_and_ia32_xss()
+    );
+    assert_eq!(
+        is_x86_feature_detected!("cmpxchg16b"),
+        information.cmpxchg16b(),
+    );
+    assert_eq!(is_x86_feature_detected!("adx"), information.adx(),);
+    assert_eq!(is_x86_feature_detected!("rtm"), information.rtm(),);
+}