]> git.proxmox.com Git - mirror_zfs.git/blame - config/toolchain-simd.m4
zfs.8: Improve mount option documentation
[mirror_zfs.git] / config / toolchain-simd.m4
CommitLineData
fc0c72b1
GN
1dnl #
2dnl # Checks if host toolchain supports SIMD instructions
3dnl #
4AC_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
19dnl #
20dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE
21dnl #
22AC_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
38dnl #
39dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE2
40dnl #
41AC_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
57dnl #
58dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE3
59dnl #
60AC_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
77dnl #
78dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSSE3
79dnl #
80AC_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
96dnl #
97dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_1
98dnl #
99AC_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
115dnl #
116dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_2
117dnl #
118AC_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
134dnl #
135dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX
136dnl #
137AC_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
154dnl #
155dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX2
156dnl #
157AC_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])