]> git.proxmox.com Git - rustc.git/blob - src/stdsimd/crates/stdsimd/tests/cpu-detection.rs
New upstream version 1.31.0~beta.4+dfsg1
[rustc.git] / src / stdsimd / crates / stdsimd / tests / cpu-detection.rs
1 #![feature(stdsimd)]
2 #![cfg_attr(stdsimd_strict, deny(warnings))]
3 #![cfg_attr(
4 feature = "cargo-clippy",
5 allow(option_unwrap_used, use_debug, print_stdout)
6 )]
7
8 #[cfg(any(
9 target_arch = "arm",
10 target_arch = "aarch64",
11 target_arch = "x86",
12 target_arch = "x86_64",
13 target_arch = "powerpc",
14 target_arch = "powerpc64"
15 ))]
16 #[macro_use]
17 extern crate stdsimd;
18
19 #[test]
20 #[cfg(all(
21 target_arch = "arm",
22 any(target_os = "linux", target_os = "android")
23 ))]
24 fn arm_linux() {
25 println!("neon: {}", is_arm_feature_detected!("neon"));
26 println!("pmull: {}", is_arm_feature_detected!("pmull"));
27 }
28
29 #[test]
30 #[cfg(all(
31 target_arch = "aarch64",
32 any(target_os = "linux", target_os = "android")
33 ))]
34 fn aarch64_linux() {
35 println!("fp: {}", is_aarch64_feature_detected!("fp"));
36 println!("fp16: {}", is_aarch64_feature_detected!("fp16"));
37 println!("neon: {}", is_aarch64_feature_detected!("neon"));
38 println!("asimd: {}", is_aarch64_feature_detected!("asimd"));
39 println!("sve: {}", is_aarch64_feature_detected!("sve"));
40 println!("crc: {}", is_aarch64_feature_detected!("crc"));
41 println!("crypto: {}", is_aarch64_feature_detected!("crypto"));
42 println!("lse: {}", is_aarch64_feature_detected!("lse"));
43 println!("rdm: {}", is_aarch64_feature_detected!("rdm"));
44 println!("rcpc: {}", is_aarch64_feature_detected!("rcpc"));
45 println!("dotprod: {}", is_aarch64_feature_detected!("dotprod"));
46 }
47
48 #[test]
49 #[cfg(all(target_arch = "powerpc", target_os = "linux"))]
50 fn powerpc_linux() {
51 println!("altivec: {}", is_powerpc_feature_detected!("altivec"));
52 println!("vsx: {}", is_powerpc_feature_detected!("vsx"));
53 println!("power8: {}", is_powerpc_feature_detected!("power8"));
54 }
55
56 #[test]
57 #[cfg(all(target_arch = "powerpc64", target_os = "linux"))]
58 fn powerpc64_linux() {
59 println!("altivec: {}", is_powerpc64_feature_detected!("altivec"));
60 println!("vsx: {}", is_powerpc64_feature_detected!("vsx"));
61 println!("power8: {}", is_powerpc64_feature_detected!("power8"));
62 }
63
64 #[test]
65 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
66 fn x86_all() {
67 println!("aes: {:?}", is_x86_feature_detected!("aes"));
68 println!("pcmulqdq: {:?}", is_x86_feature_detected!("pclmulqdq"));
69 println!("rdrand: {:?}", is_x86_feature_detected!("rdrand"));
70 println!("rdseed: {:?}", is_x86_feature_detected!("rdseed"));
71 println!("tsc: {:?}", is_x86_feature_detected!("tsc"));
72 println!("mmx: {:?}", is_x86_feature_detected!("mmx"));
73 println!("sse: {:?}", is_x86_feature_detected!("sse"));
74 println!("sse2: {:?}", is_x86_feature_detected!("sse2"));
75 println!("sse3: {:?}", is_x86_feature_detected!("sse3"));
76 println!("ssse3: {:?}", is_x86_feature_detected!("ssse3"));
77 println!("sse4.1: {:?}", is_x86_feature_detected!("sse4.1"));
78 println!("sse4.2: {:?}", is_x86_feature_detected!("sse4.2"));
79 println!("sse4a: {:?}", is_x86_feature_detected!("sse4a"));
80 println!("sha: {:?}", is_x86_feature_detected!("sha"));
81 println!("avx: {:?}", is_x86_feature_detected!("avx"));
82 println!("avx2: {:?}", is_x86_feature_detected!("avx2"));
83 println!("avx512f {:?}", is_x86_feature_detected!("avx512f"));
84 println!("avx512cd {:?}", is_x86_feature_detected!("avx512cd"));
85 println!("avx512er {:?}", is_x86_feature_detected!("avx512er"));
86 println!("avx512pf {:?}", is_x86_feature_detected!("avx512pf"));
87 println!("avx512bw {:?}", is_x86_feature_detected!("avx512bw"));
88 println!("avx512dq {:?}", is_x86_feature_detected!("avx512dq"));
89 println!("avx512vl {:?}", is_x86_feature_detected!("avx512vl"));
90 println!("avx512_ifma {:?}", is_x86_feature_detected!("avx512ifma"));
91 println!("avx512_vbmi {:?}", is_x86_feature_detected!("avx512vbmi"));
92 println!(
93 "avx512_vpopcntdq {:?}",
94 is_x86_feature_detected!("avx512vpopcntdq")
95 );
96 println!("fma: {:?}", is_x86_feature_detected!("fma"));
97 println!("bmi1: {:?}", is_x86_feature_detected!("bmi1"));
98 println!("bmi2: {:?}", is_x86_feature_detected!("bmi2"));
99 println!("abm: {:?}", is_x86_feature_detected!("abm"));
100 println!("lzcnt: {:?}", is_x86_feature_detected!("lzcnt"));
101 println!("tbm: {:?}", is_x86_feature_detected!("tbm"));
102 println!("popcnt: {:?}", is_x86_feature_detected!("popcnt"));
103 println!("fxsr: {:?}", is_x86_feature_detected!("fxsr"));
104 println!("xsave: {:?}", is_x86_feature_detected!("xsave"));
105 println!("xsaveopt: {:?}", is_x86_feature_detected!("xsaveopt"));
106 println!("xsaves: {:?}", is_x86_feature_detected!("xsaves"));
107 println!("xsavec: {:?}", is_x86_feature_detected!("xsavec"));
108 }