2 dnl # Checks if host toolchain supports SIMD instructions
4 AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_TOOLCHAIN_SIMD], [
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
20 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE
22 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE], [
23 AC_MSG_CHECKING([whether host toolchain supports SSE])
25 AC_LINK_IFELSE([AC_LANG_SOURCE([[
28 __asm__ __volatile__("xorps %xmm0, %xmm1");
31 AC_DEFINE([HAVE_SSE], 1, [Define if host toolchain supports SSE])
39 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE2
41 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE2], [
42 AC_MSG_CHECKING([whether host toolchain supports SSE2])
44 AC_LINK_IFELSE([AC_LANG_SOURCE([[
47 __asm__ __volatile__("pxor %xmm0, %xmm1");
50 AC_DEFINE([HAVE_SSE2], 1, [Define if host toolchain supports SSE2])
58 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE3
60 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE3], [
61 AC_MSG_CHECKING([whether host toolchain supports SSE3])
63 AC_LINK_IFELSE([AC_LANG_SOURCE([[
67 __asm__ __volatile__("lddqu %0,%%xmm0" :: "m"(v[0]));
70 AC_DEFINE([HAVE_SSE3], 1, [Define if host toolchain supports SSE3])
78 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSSE3
80 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSSE3], [
81 AC_MSG_CHECKING([whether host toolchain supports SSSE3])
83 AC_LINK_IFELSE([AC_LANG_SOURCE([[
86 __asm__ __volatile__("pshufb %xmm0,%xmm1");
89 AC_DEFINE([HAVE_SSSE3], 1, [Define if host toolchain supports SSSE3])
97 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_1
99 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_1], [
100 AC_MSG_CHECKING([whether host toolchain supports SSE4.1])
102 AC_LINK_IFELSE([AC_LANG_SOURCE([[
105 __asm__ __volatile__("pmaxsb %xmm0,%xmm1");
108 AC_DEFINE([HAVE_SSE4_1], 1, [Define if host toolchain supports SSE4.1])
116 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_2
118 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_2], [
119 AC_MSG_CHECKING([whether host toolchain supports SSE4.2])
121 AC_LINK_IFELSE([AC_LANG_SOURCE([[
124 __asm__ __volatile__("pcmpgtq %xmm0, %xmm1");
127 AC_DEFINE([HAVE_SSE4_2], 1, [Define if host toolchain supports SSE4.2])
135 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX
137 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX], [
138 AC_MSG_CHECKING([whether host toolchain supports AVX])
140 AC_LINK_IFELSE([AC_LANG_SOURCE([[
144 __asm__ __volatile__("vmovdqa %0,%%ymm0" :: "m"(v[0]));
148 AC_DEFINE([HAVE_AVX], 1, [Define if host toolchain supports AVX])
155 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX2
157 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX2], [
158 AC_MSG_CHECKING([whether host toolchain supports AVX2])
160 AC_LINK_IFELSE([AC_LANG_SOURCE([
164 __asm__ __volatile__("vpshufb %ymm0,%ymm1,%ymm2");
168 AC_DEFINE([HAVE_AVX2], 1, [Define if host toolchain supports AVX2])