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