]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - config/toolchain-simd.m4
Add support for devid and phys_path keys in vdev disk labels
[FreeBSD/FreeBSD.git] / config / toolchain-simd.m4
1 dnl #
2 dnl # Checks if host toolchain supports SIMD instructions
3 dnl #
4 AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_TOOLCHAIN_SIMD], [
5         case "$host_cpu" in
6                 x86_64 | x86 | i686)
7                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE
8                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE2
9                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE3
10                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSSE3
11                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_1
12                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_2
13                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX
14                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX2
15                         ;;
16         esac
17 ])
18
19 dnl #
20 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE
21 dnl #
22 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE], [
23         AC_MSG_CHECKING([whether host toolchain supports SSE])
24
25         AC_LINK_IFELSE([AC_LANG_SOURCE([[
26                 void main()
27                 {
28                         __asm__ __volatile__("xorps %xmm0, %xmm1");
29                 }
30         ]])], [
31                 AC_DEFINE([HAVE_SSE], 1, [Define if host toolchain supports SSE])
32                 AC_MSG_RESULT([yes])
33         ], [
34                 AC_MSG_RESULT([no])
35         ])
36 ])
37
38 dnl #
39 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE2
40 dnl #
41 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE2], [
42         AC_MSG_CHECKING([whether host toolchain supports SSE2])
43
44         AC_LINK_IFELSE([AC_LANG_SOURCE([[
45                 void main()
46                 {
47                         __asm__ __volatile__("pxor %xmm0, %xmm1");
48                 }
49         ]])], [
50                 AC_DEFINE([HAVE_SSE2], 1, [Define if host toolchain supports SSE2])
51                 AC_MSG_RESULT([yes])
52         ], [
53                 AC_MSG_RESULT([no])
54         ])
55 ])
56
57 dnl #
58 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE3
59 dnl #
60 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE3], [
61         AC_MSG_CHECKING([whether host toolchain supports SSE3])
62
63         AC_LINK_IFELSE([AC_LANG_SOURCE([[
64                 void main()
65                 {
66                         char v[16];
67                         __asm__ __volatile__("lddqu %0,%%xmm0" :: "m"(v[0]));
68                 }
69         ]])], [
70                 AC_DEFINE([HAVE_SSE3], 1, [Define if host toolchain supports SSE3])
71                 AC_MSG_RESULT([yes])
72         ], [
73                 AC_MSG_RESULT([no])
74         ])
75 ])
76
77 dnl #
78 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSSE3
79 dnl #
80 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSSE3], [
81         AC_MSG_CHECKING([whether host toolchain supports SSSE3])
82
83         AC_LINK_IFELSE([AC_LANG_SOURCE([[
84                 void main()
85                 {
86                         __asm__ __volatile__("pshufb %xmm0,%xmm1");
87                 }
88         ]])], [
89                 AC_DEFINE([HAVE_SSSE3], 1, [Define if host toolchain supports SSSE3])
90                 AC_MSG_RESULT([yes])
91         ], [
92                 AC_MSG_RESULT([no])
93         ])
94 ])
95
96 dnl #
97 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_1
98 dnl #
99 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_1], [
100         AC_MSG_CHECKING([whether host toolchain supports SSE4.1])
101
102         AC_LINK_IFELSE([AC_LANG_SOURCE([[
103                 void main()
104                 {
105                         __asm__ __volatile__("pmaxsb %xmm0,%xmm1");
106                 }
107         ]])], [
108                 AC_DEFINE([HAVE_SSE4_1], 1, [Define if host toolchain supports SSE4.1])
109                 AC_MSG_RESULT([yes])
110         ], [
111                 AC_MSG_RESULT([no])
112         ])
113 ])
114
115 dnl #
116 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_2
117 dnl #
118 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_2], [
119         AC_MSG_CHECKING([whether host toolchain supports SSE4.2])
120
121         AC_LINK_IFELSE([AC_LANG_SOURCE([[
122                 void main()
123                 {
124                         __asm__ __volatile__("pcmpgtq %xmm0, %xmm1");
125                 }
126         ]])], [
127                 AC_DEFINE([HAVE_SSE4_2], 1, [Define if host toolchain supports SSE4.2])
128                 AC_MSG_RESULT([yes])
129         ], [
130                 AC_MSG_RESULT([no])
131         ])
132 ])
133
134 dnl #
135 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX
136 dnl #
137 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX], [
138         AC_MSG_CHECKING([whether host toolchain supports AVX])
139
140         AC_LINK_IFELSE([AC_LANG_SOURCE([[
141                 void main()
142                 {
143                         char v[32];
144                         __asm__ __volatile__("vmovdqa %0,%%ymm0" :: "m"(v[0]));
145                 }
146         ]])], [
147                 AC_MSG_RESULT([yes])
148                 AC_DEFINE([HAVE_AVX], 1, [Define if host toolchain supports AVX])
149         ], [
150                 AC_MSG_RESULT([no])
151         ])
152 ])
153
154 dnl #
155 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX2
156 dnl #
157 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX2], [
158         AC_MSG_CHECKING([whether host toolchain supports AVX2])
159
160         AC_LINK_IFELSE([AC_LANG_SOURCE([
161         [
162                 void main()
163                 {
164                         __asm__ __volatile__("vpshufb %ymm0,%ymm1,%ymm2");
165                 }
166         ]])], [
167                 AC_MSG_RESULT([yes])
168                 AC_DEFINE([HAVE_AVX2], 1, [Define if host toolchain supports AVX2])
169         ], [
170                 AC_MSG_RESULT([no])
171         ])
172 ])