xref: /dpdk/app/test/test_cpuflags.c (revision 2f1a90f0455b4920df3a767ab5d9be37dcbf0d12)
1a9de470cSBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause
2a9de470cSBruce Richardson  * Copyright(c) 2010-2014 Intel Corporation
3a9de470cSBruce Richardson  */
4a9de470cSBruce Richardson 
5a9de470cSBruce Richardson #include <stdio.h>
6a9de470cSBruce Richardson 
7a9de470cSBruce Richardson #include <errno.h>
8a9de470cSBruce Richardson #include <stdint.h>
9a9de470cSBruce Richardson #include <rte_cpuflags.h>
10a9de470cSBruce Richardson #include <rte_debug.h>
11a9de470cSBruce Richardson 
12a9de470cSBruce Richardson #include "test.h"
13a9de470cSBruce Richardson 
14a9de470cSBruce Richardson 
15a9de470cSBruce Richardson /* convenience define */
16a9de470cSBruce Richardson #define CHECK_FOR_FLAG(x) \
17a9de470cSBruce Richardson 			result = rte_cpu_get_flag_enabled(x);    \
18a9de470cSBruce Richardson 			printf("%s\n", cpu_flag_result(result)); \
19a9de470cSBruce Richardson 			if (result == -ENOENT)                   \
20a9de470cSBruce Richardson 				return -1;
21a9de470cSBruce Richardson 
22a9de470cSBruce Richardson /*
23a9de470cSBruce Richardson  * Helper function to display result
24a9de470cSBruce Richardson  */
25a9de470cSBruce Richardson static inline const char *
26a9de470cSBruce Richardson cpu_flag_result(int result)
27a9de470cSBruce Richardson {
28a9de470cSBruce Richardson 	switch (result) {
29a9de470cSBruce Richardson 	case 0:
30a9de470cSBruce Richardson 		return "NOT PRESENT";
31a9de470cSBruce Richardson 	case 1:
32a9de470cSBruce Richardson 		return "OK";
33a9de470cSBruce Richardson 	default:
34a9de470cSBruce Richardson 		return "ERROR";
35a9de470cSBruce Richardson 	}
36a9de470cSBruce Richardson }
37a9de470cSBruce Richardson 
38a9de470cSBruce Richardson 
39a9de470cSBruce Richardson 
40a9de470cSBruce Richardson /*
41a9de470cSBruce Richardson  * CPUID test
42a9de470cSBruce Richardson  * ===========
43a9de470cSBruce Richardson  *
44a9de470cSBruce Richardson  * - Check flags from different registers with rte_cpu_get_flag_enabled()
45a9de470cSBruce Richardson  */
46a9de470cSBruce Richardson 
47a9de470cSBruce Richardson static int
48a9de470cSBruce Richardson test_cpuflags(void)
49a9de470cSBruce Richardson {
50a9de470cSBruce Richardson 	int result;
51a9de470cSBruce Richardson 	printf("\nChecking for flags from different registers...\n");
52a9de470cSBruce Richardson 
53a9de470cSBruce Richardson #ifdef RTE_ARCH_PPC_64
54a9de470cSBruce Richardson 	printf("Check for PPC64:\t\t");
55a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_PPC64);
56a9de470cSBruce Richardson 
57a9de470cSBruce Richardson 	printf("Check for PPC32:\t\t");
58a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_PPC32);
59a9de470cSBruce Richardson 
60a9de470cSBruce Richardson 	printf("Check for VSX:\t\t");
61a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_VSX);
62a9de470cSBruce Richardson 
63a9de470cSBruce Richardson 	printf("Check for DFP:\t\t");
64a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_DFP);
65a9de470cSBruce Richardson 
66a9de470cSBruce Richardson 	printf("Check for FPU:\t\t");
67a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_FPU);
68a9de470cSBruce Richardson 
69a9de470cSBruce Richardson 	printf("Check for SMT:\t\t");
70a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_SMT);
71a9de470cSBruce Richardson 
72a9de470cSBruce Richardson 	printf("Check for MMU:\t\t");
73a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_MMU);
74a9de470cSBruce Richardson 
75a9de470cSBruce Richardson 	printf("Check for ALTIVEC:\t\t");
76a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_ALTIVEC);
77a9de470cSBruce Richardson 
78a9de470cSBruce Richardson 	printf("Check for ARCH_2_06:\t\t");
79a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_ARCH_2_06);
80a9de470cSBruce Richardson 
81a9de470cSBruce Richardson 	printf("Check for ARCH_2_07:\t\t");
82a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_ARCH_2_07);
83a9de470cSBruce Richardson 
84a9de470cSBruce Richardson 	printf("Check for ICACHE_SNOOP:\t\t");
85a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_ICACHE_SNOOP);
86a9de470cSBruce Richardson #endif
87a9de470cSBruce Richardson 
88e9b97392SRuifeng Wang #if defined(RTE_ARCH_ARM) && defined(RTE_ARCH_32)
89a9de470cSBruce Richardson 	printf("Check for NEON:\t\t");
90a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_NEON);
91a9de470cSBruce Richardson #endif
92a9de470cSBruce Richardson 
93a9de470cSBruce Richardson #if defined(RTE_ARCH_ARM64)
94a9de470cSBruce Richardson 	printf("Check for FP:\t\t");
95a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_FP);
96a9de470cSBruce Richardson 
97a9de470cSBruce Richardson 	printf("Check for ASIMD:\t");
98a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_NEON);
99a9de470cSBruce Richardson 
100a9de470cSBruce Richardson 	printf("Check for EVTSTRM:\t");
101a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_EVTSTRM);
102a9de470cSBruce Richardson 
103a9de470cSBruce Richardson 	printf("Check for AES:\t\t");
104a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_AES);
105a9de470cSBruce Richardson 
106a9de470cSBruce Richardson 	printf("Check for PMULL:\t");
107a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_PMULL);
108a9de470cSBruce Richardson 
109a9de470cSBruce Richardson 	printf("Check for SHA1:\t\t");
110a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_SHA1);
111a9de470cSBruce Richardson 
112a9de470cSBruce Richardson 	printf("Check for SHA2:\t\t");
113a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_SHA2);
114a9de470cSBruce Richardson 
115a9de470cSBruce Richardson 	printf("Check for CRC32:\t");
116a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_CRC32);
117a9de470cSBruce Richardson 
118a9de470cSBruce Richardson 	printf("Check for ATOMICS:\t");
119a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_ATOMICS);
120d9739192SWei Hu (Xavier) 
121d9739192SWei Hu (Xavier) 	printf("Check for SVE:\t\t");
122d9739192SWei Hu (Xavier) 	CHECK_FOR_FLAG(RTE_CPUFLAG_SVE);
123d9739192SWei Hu (Xavier) 
124d9739192SWei Hu (Xavier) 	printf("Check for SVE2:\t\t");
125d9739192SWei Hu (Xavier) 	CHECK_FOR_FLAG(RTE_CPUFLAG_SVE2);
126d9739192SWei Hu (Xavier) 
127d9739192SWei Hu (Xavier) 	printf("Check for SVEAES:\t");
128d9739192SWei Hu (Xavier) 	CHECK_FOR_FLAG(RTE_CPUFLAG_SVEAES);
129d9739192SWei Hu (Xavier) 
130d9739192SWei Hu (Xavier) 	printf("Check for SVEPMULL:\t");
131d9739192SWei Hu (Xavier) 	CHECK_FOR_FLAG(RTE_CPUFLAG_SVEPMULL);
132d9739192SWei Hu (Xavier) 
133d9739192SWei Hu (Xavier) 	printf("Check for SVEBITPERM:\t");
134d9739192SWei Hu (Xavier) 	CHECK_FOR_FLAG(RTE_CPUFLAG_SVEBITPERM);
135d9739192SWei Hu (Xavier) 
136d9739192SWei Hu (Xavier) 	printf("Check for SVESHA3:\t");
137d9739192SWei Hu (Xavier) 	CHECK_FOR_FLAG(RTE_CPUFLAG_SVESHA3);
138d9739192SWei Hu (Xavier) 
139d9739192SWei Hu (Xavier) 	printf("Check for SVESM4:\t");
140d9739192SWei Hu (Xavier) 	CHECK_FOR_FLAG(RTE_CPUFLAG_SVESM4);
141d9739192SWei Hu (Xavier) 
142d9739192SWei Hu (Xavier) 	printf("Check for FLAGM2:\t");
143d9739192SWei Hu (Xavier) 	CHECK_FOR_FLAG(RTE_CPUFLAG_FLAGM2);
144d9739192SWei Hu (Xavier) 
145d9739192SWei Hu (Xavier) 	printf("Check for FRINT:\t");
146d9739192SWei Hu (Xavier) 	CHECK_FOR_FLAG(RTE_CPUFLAG_FRINT);
147d9739192SWei Hu (Xavier) 
148d9739192SWei Hu (Xavier) 	printf("Check for SVEI8MM:\t");
149d9739192SWei Hu (Xavier) 	CHECK_FOR_FLAG(RTE_CPUFLAG_SVEI8MM);
150d9739192SWei Hu (Xavier) 
151d9739192SWei Hu (Xavier) 	printf("Check for SVEF32MM:\t");
152d9739192SWei Hu (Xavier) 	CHECK_FOR_FLAG(RTE_CPUFLAG_SVEF32MM);
153d9739192SWei Hu (Xavier) 
154d9739192SWei Hu (Xavier) 	printf("Check for SVEF64MM:\t");
155d9739192SWei Hu (Xavier) 	CHECK_FOR_FLAG(RTE_CPUFLAG_SVEF64MM);
156d9739192SWei Hu (Xavier) 
157d9739192SWei Hu (Xavier) 	printf("Check for SVEBF16:\t");
158d9739192SWei Hu (Xavier) 	CHECK_FOR_FLAG(RTE_CPUFLAG_SVEBF16);
159*2f1a90f0SWathsala Vithanage 
160*2f1a90f0SWathsala Vithanage 	printf("Check for WFXT:\t");
161*2f1a90f0SWathsala Vithanage 	CHECK_FOR_FLAG(RTE_CPUFLAG_WFXT);
162a9de470cSBruce Richardson #endif
163a9de470cSBruce Richardson 
164a9de470cSBruce Richardson #if defined(RTE_ARCH_X86_64) || defined(RTE_ARCH_I686)
165a9de470cSBruce Richardson 	printf("Check for SSE:\t\t");
166a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_SSE);
167a9de470cSBruce Richardson 
168a9de470cSBruce Richardson 	printf("Check for SSE2:\t\t");
169a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_SSE2);
170a9de470cSBruce Richardson 
171a9de470cSBruce Richardson 	printf("Check for SSE3:\t\t");
172a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_SSE3);
173a9de470cSBruce Richardson 
174a9de470cSBruce Richardson 	printf("Check for SSE4.1:\t");
175a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_SSE4_1);
176a9de470cSBruce Richardson 
177a9de470cSBruce Richardson 	printf("Check for SSE4.2:\t");
178a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_SSE4_2);
179a9de470cSBruce Richardson 
180a9de470cSBruce Richardson 	printf("Check for AVX:\t\t");
181a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_AVX);
182a9de470cSBruce Richardson 
183a9de470cSBruce Richardson 	printf("Check for AVX2:\t\t");
184a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_AVX2);
185a9de470cSBruce Richardson 
186a9de470cSBruce Richardson 	printf("Check for AVX512F:\t");
187a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_AVX512F);
188a9de470cSBruce Richardson 
189a9de470cSBruce Richardson 	printf("Check for TRBOBST:\t");
190a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_TRBOBST);
191a9de470cSBruce Richardson 
192a9de470cSBruce Richardson 	printf("Check for ENERGY_EFF:\t");
193a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_ENERGY_EFF);
194a9de470cSBruce Richardson 
195a9de470cSBruce Richardson 	printf("Check for LAHF_SAHF:\t");
196a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_LAHF_SAHF);
197a9de470cSBruce Richardson 
198a9de470cSBruce Richardson 	printf("Check for 1GB_PG:\t");
199a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_1GB_PG);
200a9de470cSBruce Richardson 
201a9de470cSBruce Richardson 	printf("Check for INVTSC:\t");
202a9de470cSBruce Richardson 	CHECK_FOR_FLAG(RTE_CPUFLAG_INVTSC);
203a9de470cSBruce Richardson #endif
204a9de470cSBruce Richardson 
2053dea1b26SMichal Mazurek #if defined(RTE_ARCH_RISCV)
2063dea1b26SMichal Mazurek 
2073dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_A:\t");
2083dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_A);
2093dea1b26SMichal Mazurek 
2103dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_B:\t");
2113dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_B);
2123dea1b26SMichal Mazurek 
2133dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_C:\t");
2143dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_C);
2153dea1b26SMichal Mazurek 
2163dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_D:\t");
2173dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_D);
2183dea1b26SMichal Mazurek 
2193dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_E:\t");
2203dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_E);
2213dea1b26SMichal Mazurek 
2223dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_F:\t");
2233dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_F);
2243dea1b26SMichal Mazurek 
2253dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_G:\t");
2263dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_G);
2273dea1b26SMichal Mazurek 
2283dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_H:\t");
2293dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_H);
2303dea1b26SMichal Mazurek 
2313dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_I:\t");
2323dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_I);
2333dea1b26SMichal Mazurek 
2343dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_J:\t");
2353dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_J);
2363dea1b26SMichal Mazurek 
2373dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_K:\t");
2383dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_K);
2393dea1b26SMichal Mazurek 
2403dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_L:\t");
2413dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_L);
2423dea1b26SMichal Mazurek 
2433dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_M:\t");
2443dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_M);
2453dea1b26SMichal Mazurek 
2463dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_N:\t");
2473dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_N);
2483dea1b26SMichal Mazurek 
2493dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_O:\t");
2503dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_O);
2513dea1b26SMichal Mazurek 
2523dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_P:\t");
2533dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_P);
2543dea1b26SMichal Mazurek 
2553dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_Q:\t");
2563dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_Q);
2573dea1b26SMichal Mazurek 
2583dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_R:\t");
2593dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_R);
2603dea1b26SMichal Mazurek 
2613dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_S:\t");
2623dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_S);
2633dea1b26SMichal Mazurek 
2643dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_T:\t");
2653dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_T);
2663dea1b26SMichal Mazurek 
2673dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_U:\t");
2683dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_U);
2693dea1b26SMichal Mazurek 
2703dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_V:\t");
2713dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_V);
2723dea1b26SMichal Mazurek 
2733dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_W:\t");
2743dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_W);
2753dea1b26SMichal Mazurek 
2763dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_X:\t");
2773dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_X);
2783dea1b26SMichal Mazurek 
2793dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_Y:\t");
2803dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_Y);
2813dea1b26SMichal Mazurek 
2823dea1b26SMichal Mazurek 	printf("Check for RISCV_ISA_Z:\t");
2833dea1b26SMichal Mazurek 	CHECK_FOR_FLAG(RTE_CPUFLAG_RISCV_ISA_Z);
2843dea1b26SMichal Mazurek #endif
2853dea1b26SMichal Mazurek 
286a8fc1e39SMin Zhou #if defined(RTE_ARCH_LOONGARCH)
287a8fc1e39SMin Zhou 	printf("Check for CPUCFG:\t");
288a8fc1e39SMin Zhou 	CHECK_FOR_FLAG(RTE_CPUFLAG_CPUCFG);
289a8fc1e39SMin Zhou 
290a8fc1e39SMin Zhou 	printf("Check for LAM:\t\t");
291a8fc1e39SMin Zhou 	CHECK_FOR_FLAG(RTE_CPUFLAG_LAM);
292a8fc1e39SMin Zhou 
293a8fc1e39SMin Zhou 	printf("Check for UAL:\t\t");
294a8fc1e39SMin Zhou 	CHECK_FOR_FLAG(RTE_CPUFLAG_UAL);
295a8fc1e39SMin Zhou 
296a8fc1e39SMin Zhou 	printf("Check for FPU:\t\t");
297a8fc1e39SMin Zhou 	CHECK_FOR_FLAG(RTE_CPUFLAG_FPU);
298a8fc1e39SMin Zhou 
299a8fc1e39SMin Zhou 	printf("Check for LSX:\t\t");
300a8fc1e39SMin Zhou 	CHECK_FOR_FLAG(RTE_CPUFLAG_LSX);
301a8fc1e39SMin Zhou 
302a8fc1e39SMin Zhou 	printf("Check for LASX:\t\t");
303a8fc1e39SMin Zhou 	CHECK_FOR_FLAG(RTE_CPUFLAG_LASX);
304a8fc1e39SMin Zhou 
305a8fc1e39SMin Zhou 	printf("Check for CRC32:\t");
306a8fc1e39SMin Zhou 	CHECK_FOR_FLAG(RTE_CPUFLAG_CRC32);
307a8fc1e39SMin Zhou 
308a8fc1e39SMin Zhou 	printf("Check for COMPLEX:\t");
309a8fc1e39SMin Zhou 	CHECK_FOR_FLAG(RTE_CPUFLAG_COMPLEX);
310a8fc1e39SMin Zhou 
311a8fc1e39SMin Zhou 	printf("Check for CRYPTO:\t");
312a8fc1e39SMin Zhou 	CHECK_FOR_FLAG(RTE_CPUFLAG_CRYPTO);
313a8fc1e39SMin Zhou 
314a8fc1e39SMin Zhou 	printf("Check for LVZ:\t\t");
315a8fc1e39SMin Zhou 	CHECK_FOR_FLAG(RTE_CPUFLAG_LVZ);
316a8fc1e39SMin Zhou 
317a8fc1e39SMin Zhou 	printf("Check for LBT_X86:\t");
318a8fc1e39SMin Zhou 	CHECK_FOR_FLAG(RTE_CPUFLAG_LBT_X86);
319a8fc1e39SMin Zhou 
320a8fc1e39SMin Zhou 	printf("Check for LBT_ARM:\t");
321a8fc1e39SMin Zhou 	CHECK_FOR_FLAG(RTE_CPUFLAG_LBT_ARM);
322a8fc1e39SMin Zhou 
323a8fc1e39SMin Zhou 	printf("Check for LBT_MIPS:\t");
324a8fc1e39SMin Zhou 	CHECK_FOR_FLAG(RTE_CPUFLAG_LBT_MIPS);
325a8fc1e39SMin Zhou #endif
326a8fc1e39SMin Zhou 
327a9de470cSBruce Richardson 	return 0;
328a9de470cSBruce Richardson }
329a9de470cSBruce Richardson 
330e0a8442cSBruce Richardson REGISTER_FAST_TEST(cpuflags_autotest, true, true, test_cpuflags);
331