| 
 | 1 | +//! These tests just check that the macros are available in libstd.  | 
 | 2 | +
  | 
 | 3 | +#![cfg_attr(  | 
 | 4 | +    any(  | 
 | 5 | +        all(target_arch = "arm", any(target_os = "linux", target_os = "android")),  | 
 | 6 | +        all(target_arch = "aarch64", any(target_os = "linux", target_os = "android")),  | 
 | 7 | +        all(target_arch = "powerpc", target_os = "linux"),  | 
 | 8 | +        all(target_arch = "powerpc64", target_os = "linux"),  | 
 | 9 | +    ),  | 
 | 10 | +    feature(stdsimd)  | 
 | 11 | +)]  | 
 | 12 | + | 
 | 13 | +#[test]  | 
 | 14 | +#[cfg(all(target_arch = "arm",  | 
 | 15 | +          any(target_os = "linux", target_os = "android")))]  | 
 | 16 | +fn arm_linux() {  | 
 | 17 | +    println!("neon: {}", is_arm_feature_detected!("neon"));  | 
 | 18 | +    println!("pmull: {}", is_arm_feature_detected!("pmull"));  | 
 | 19 | +}  | 
 | 20 | + | 
 | 21 | +#[test]  | 
 | 22 | +#[cfg(all(  | 
 | 23 | +    target_arch = "aarch64",  | 
 | 24 | +    any(target_os = "linux", target_os = "android")  | 
 | 25 | +))]  | 
 | 26 | +fn aarch64_linux() {  | 
 | 27 | +    println!("fp: {}", is_aarch64_feature_detected!("fp"));  | 
 | 28 | +    println!("fp16: {}", is_aarch64_feature_detected!("fp16"));  | 
 | 29 | +    println!("neon: {}", is_aarch64_feature_detected!("neon"));  | 
 | 30 | +    println!("asimd: {}", is_aarch64_feature_detected!("asimd"));  | 
 | 31 | +    println!("sve: {}", is_aarch64_feature_detected!("sve"));  | 
 | 32 | +    println!("crc: {}", is_aarch64_feature_detected!("crc"));  | 
 | 33 | +    println!("crypto: {}", is_aarch64_feature_detected!("crypto"));  | 
 | 34 | +    println!("lse: {}", is_aarch64_feature_detected!("lse"));  | 
 | 35 | +    println!("rdm: {}", is_aarch64_feature_detected!("rdm"));  | 
 | 36 | +    println!("rcpc: {}", is_aarch64_feature_detected!("rcpc"));  | 
 | 37 | +    println!("dotprod: {}", is_aarch64_feature_detected!("dotprod"));  | 
 | 38 | +}  | 
 | 39 | + | 
 | 40 | +#[test]  | 
 | 41 | +#[cfg(all(target_arch = "powerpc", target_os = "linux"))]  | 
 | 42 | +fn powerpc_linux() {  | 
 | 43 | +    println!("altivec: {}", is_powerpc_feature_detected!("altivec"));  | 
 | 44 | +    println!("vsx: {}", is_powerpc_feature_detected!("vsx"));  | 
 | 45 | +    println!("power8: {}", is_powerpc_feature_detected!("power8"));  | 
 | 46 | +}  | 
 | 47 | + | 
 | 48 | +#[test]  | 
 | 49 | +#[cfg(all(target_arch = "powerpc64", target_os = "linux"))]  | 
 | 50 | +fn powerpc64_linux() {  | 
 | 51 | +    println!("altivec: {}", is_powerpc64_feature_detected!("altivec"));  | 
 | 52 | +    println!("vsx: {}", is_powerpc64_feature_detected!("vsx"));  | 
 | 53 | +    println!("power8: {}", is_powerpc64_feature_detected!("power8"));  | 
 | 54 | +}  | 
 | 55 | + | 
 | 56 | +#[test]  | 
 | 57 | +#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]  | 
 | 58 | +fn x86_all() {  | 
 | 59 | +    println!("aes: {:?}", is_x86_feature_detected!("aes"));  | 
 | 60 | +    println!("pcmulqdq: {:?}", is_x86_feature_detected!("pclmulqdq"));  | 
 | 61 | +    println!("rdrand: {:?}", is_x86_feature_detected!("rdrand"));  | 
 | 62 | +    println!("rdseed: {:?}", is_x86_feature_detected!("rdseed"));  | 
 | 63 | +    println!("tsc: {:?}", is_x86_feature_detected!("tsc"));  | 
 | 64 | +    println!("mmx: {:?}", is_x86_feature_detected!("mmx"));  | 
 | 65 | +    println!("sse: {:?}", is_x86_feature_detected!("sse"));  | 
 | 66 | +    println!("sse2: {:?}", is_x86_feature_detected!("sse2"));  | 
 | 67 | +    println!("sse3: {:?}", is_x86_feature_detected!("sse3"));  | 
 | 68 | +    println!("ssse3: {:?}", is_x86_feature_detected!("ssse3"));  | 
 | 69 | +    println!("sse4.1: {:?}", is_x86_feature_detected!("sse4.1"));  | 
 | 70 | +    println!("sse4.2: {:?}", is_x86_feature_detected!("sse4.2"));  | 
 | 71 | +    println!("sse4a: {:?}", is_x86_feature_detected!("sse4a"));  | 
 | 72 | +    println!("sha: {:?}", is_x86_feature_detected!("sha"));  | 
 | 73 | +    println!("avx: {:?}", is_x86_feature_detected!("avx"));  | 
 | 74 | +    println!("avx2: {:?}", is_x86_feature_detected!("avx2"));  | 
 | 75 | +    println!("avx512f {:?}", is_x86_feature_detected!("avx512f"));  | 
 | 76 | +    println!("avx512cd {:?}", is_x86_feature_detected!("avx512cd"));  | 
 | 77 | +    println!("avx512er {:?}", is_x86_feature_detected!("avx512er"));  | 
 | 78 | +    println!("avx512pf {:?}", is_x86_feature_detected!("avx512pf"));  | 
 | 79 | +    println!("avx512bw {:?}", is_x86_feature_detected!("avx512bw"));  | 
 | 80 | +    println!("avx512dq {:?}", is_x86_feature_detected!("avx512dq"));  | 
 | 81 | +    println!("avx512vl {:?}", is_x86_feature_detected!("avx512vl"));  | 
 | 82 | +    println!("avx512_ifma {:?}", is_x86_feature_detected!("avx512ifma"));  | 
 | 83 | +    println!("avx512_vbmi {:?}", is_x86_feature_detected!("avx512vbmi"));  | 
 | 84 | +    println!(  | 
 | 85 | +        "avx512_vpopcntdq {:?}",  | 
 | 86 | +        is_x86_feature_detected!("avx512vpopcntdq")  | 
 | 87 | +    );  | 
 | 88 | +    println!("fma: {:?}", is_x86_feature_detected!("fma"));  | 
 | 89 | +    println!("bmi1: {:?}", is_x86_feature_detected!("bmi1"));  | 
 | 90 | +    println!("bmi2: {:?}", is_x86_feature_detected!("bmi2"));  | 
 | 91 | +    println!("abm: {:?}", is_x86_feature_detected!("abm"));  | 
 | 92 | +    println!("lzcnt: {:?}", is_x86_feature_detected!("lzcnt"));  | 
 | 93 | +    println!("tbm: {:?}", is_x86_feature_detected!("tbm"));  | 
 | 94 | +    println!("popcnt: {:?}", is_x86_feature_detected!("popcnt"));  | 
 | 95 | +    println!("fxsr: {:?}", is_x86_feature_detected!("fxsr"));  | 
 | 96 | +    println!("xsave: {:?}", is_x86_feature_detected!("xsave"));  | 
 | 97 | +    println!("xsaveopt: {:?}", is_x86_feature_detected!("xsaveopt"));  | 
 | 98 | +    println!("xsaves: {:?}", is_x86_feature_detected!("xsaves"));  | 
 | 99 | +    println!("xsavec: {:?}", is_x86_feature_detected!("xsavec"));  | 
 | 100 | +}  | 
0 commit comments