The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/openzfs/config/toolchain-simd.m4

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    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                 amd64 | 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                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512F
   16                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512CD
   17                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512DQ
   18                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512BW
   19                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512IFMA
   20                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512VBMI
   21                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512PF
   22                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512ER
   23                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512VL
   24                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AES
   25                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_PCLMULQDQ
   26                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_MOVBE
   27                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_XSAVE
   28                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_XSAVEOPT
   29                         ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_XSAVES
   30                         ;;
   31         esac
   32 ])
   33 
   34 dnl #
   35 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE
   36 dnl #
   37 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE], [
   38         AC_MSG_CHECKING([whether host toolchain supports SSE])
   39 
   40         AC_LINK_IFELSE([AC_LANG_SOURCE([[
   41                 void main()
   42                 {
   43                         __asm__ __volatile__("xorps %xmm0, %xmm1");
   44                 }
   45         ]])], [
   46                 AC_DEFINE([HAVE_SSE], 1, [Define if host toolchain supports SSE])
   47                 AC_MSG_RESULT([yes])
   48         ], [
   49                 AC_MSG_RESULT([no])
   50         ])
   51 ])
   52 
   53 dnl #
   54 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE2
   55 dnl #
   56 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE2], [
   57         AC_MSG_CHECKING([whether host toolchain supports SSE2])
   58 
   59         AC_LINK_IFELSE([AC_LANG_SOURCE([[
   60                 void main()
   61                 {
   62                         __asm__ __volatile__("pxor %xmm0, %xmm1");
   63                 }
   64         ]])], [
   65                 AC_DEFINE([HAVE_SSE2], 1, [Define if host toolchain supports SSE2])
   66                 AC_MSG_RESULT([yes])
   67         ], [
   68                 AC_MSG_RESULT([no])
   69         ])
   70 ])
   71 
   72 dnl #
   73 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE3
   74 dnl #
   75 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE3], [
   76         AC_MSG_CHECKING([whether host toolchain supports SSE3])
   77 
   78         AC_LINK_IFELSE([AC_LANG_SOURCE([[
   79                 void main()
   80                 {
   81                         char v[16];
   82                         __asm__ __volatile__("lddqu %0,%%xmm0" :: "m"(v[0]));
   83                 }
   84         ]])], [
   85                 AC_DEFINE([HAVE_SSE3], 1, [Define if host toolchain supports SSE3])
   86                 AC_MSG_RESULT([yes])
   87         ], [
   88                 AC_MSG_RESULT([no])
   89         ])
   90 ])
   91 
   92 dnl #
   93 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSSE3
   94 dnl #
   95 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSSE3], [
   96         AC_MSG_CHECKING([whether host toolchain supports SSSE3])
   97 
   98         AC_LINK_IFELSE([AC_LANG_SOURCE([[
   99                 void main()
  100                 {
  101                         __asm__ __volatile__("pshufb %xmm0,%xmm1");
  102                 }
  103         ]])], [
  104                 AC_DEFINE([HAVE_SSSE3], 1, [Define if host toolchain supports SSSE3])
  105                 AC_MSG_RESULT([yes])
  106         ], [
  107                 AC_MSG_RESULT([no])
  108         ])
  109 ])
  110 
  111 dnl #
  112 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_1
  113 dnl #
  114 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_1], [
  115         AC_MSG_CHECKING([whether host toolchain supports SSE4.1])
  116 
  117         AC_LINK_IFELSE([AC_LANG_SOURCE([[
  118                 void main()
  119                 {
  120                         __asm__ __volatile__("pmaxsb %xmm0,%xmm1");
  121                 }
  122         ]])], [
  123                 AC_DEFINE([HAVE_SSE4_1], 1, [Define if host toolchain supports SSE4.1])
  124                 AC_MSG_RESULT([yes])
  125         ], [
  126                 AC_MSG_RESULT([no])
  127         ])
  128 ])
  129 
  130 dnl #
  131 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_2
  132 dnl #
  133 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_2], [
  134         AC_MSG_CHECKING([whether host toolchain supports SSE4.2])
  135 
  136         AC_LINK_IFELSE([AC_LANG_SOURCE([[
  137                 void main()
  138                 {
  139                         __asm__ __volatile__("pcmpgtq %xmm0, %xmm1");
  140                 }
  141         ]])], [
  142                 AC_DEFINE([HAVE_SSE4_2], 1, [Define if host toolchain supports SSE4.2])
  143                 AC_MSG_RESULT([yes])
  144         ], [
  145                 AC_MSG_RESULT([no])
  146         ])
  147 ])
  148 
  149 dnl #
  150 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX
  151 dnl #
  152 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX], [
  153         AC_MSG_CHECKING([whether host toolchain supports AVX])
  154 
  155         AC_LINK_IFELSE([AC_LANG_SOURCE([[
  156                 void main()
  157                 {
  158                         char v[32];
  159                         __asm__ __volatile__("vmovdqa %0,%%ymm0" :: "m"(v[0]));
  160                 }
  161         ]])], [
  162                 AC_MSG_RESULT([yes])
  163                 AC_DEFINE([HAVE_AVX], 1, [Define if host toolchain supports AVX])
  164         ], [
  165                 AC_MSG_RESULT([no])
  166         ])
  167 ])
  168 
  169 dnl #
  170 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX2
  171 dnl #
  172 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX2], [
  173         AC_MSG_CHECKING([whether host toolchain supports AVX2])
  174 
  175         AC_LINK_IFELSE([AC_LANG_SOURCE([
  176         [
  177                 void main()
  178                 {
  179                         __asm__ __volatile__("vpshufb %ymm0,%ymm1,%ymm2");
  180                 }
  181         ]])], [
  182                 AC_MSG_RESULT([yes])
  183                 AC_DEFINE([HAVE_AVX2], 1, [Define if host toolchain supports AVX2])
  184         ], [
  185                 AC_MSG_RESULT([no])
  186         ])
  187 ])
  188 
  189 dnl #
  190 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512F
  191 dnl #
  192 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512F], [
  193         AC_MSG_CHECKING([whether host toolchain supports AVX512F])
  194 
  195         AC_LINK_IFELSE([AC_LANG_SOURCE([
  196         [
  197                 void main()
  198                 {
  199                         __asm__ __volatile__("vpandd %zmm0,%zmm1,%zmm2");
  200                 }
  201         ]])], [
  202                 AC_MSG_RESULT([yes])
  203                 AC_DEFINE([HAVE_AVX512F], 1, [Define if host toolchain supports AVX512F])
  204         ], [
  205                 AC_MSG_RESULT([no])
  206         ])
  207 ])
  208 
  209 dnl #
  210 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512CD
  211 dnl #
  212 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512CD], [
  213         AC_MSG_CHECKING([whether host toolchain supports AVX512CD])
  214 
  215         AC_LINK_IFELSE([AC_LANG_SOURCE([
  216         [
  217                 void main()
  218                 {
  219                         __asm__ __volatile__("vplzcntd %zmm0,%zmm1");
  220                 }
  221         ]])], [
  222                 AC_MSG_RESULT([yes])
  223                 AC_DEFINE([HAVE_AVX512CD], 1, [Define if host toolchain supports AVX512CD])
  224         ], [
  225                 AC_MSG_RESULT([no])
  226         ])
  227 ])
  228 
  229 dnl #
  230 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512DQ
  231 dnl #
  232 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512DQ], [
  233         AC_MSG_CHECKING([whether host toolchain supports AVX512DQ])
  234 
  235         AC_LINK_IFELSE([AC_LANG_SOURCE([
  236         [
  237                 void main()
  238                 {
  239                         __asm__ __volatile__("vandpd %zmm0,%zmm1,%zmm2");
  240                 }
  241         ]])], [
  242                 AC_MSG_RESULT([yes])
  243                 AC_DEFINE([HAVE_AVX512DQ], 1, [Define if host toolchain supports AVX512DQ])
  244         ], [
  245                 AC_MSG_RESULT([no])
  246         ])
  247 ])
  248 
  249 dnl #
  250 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512BW
  251 dnl #
  252 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512BW], [
  253         AC_MSG_CHECKING([whether host toolchain supports AVX512BW])
  254 
  255         AC_LINK_IFELSE([AC_LANG_SOURCE([
  256         [
  257                 void main()
  258                 {
  259                         __asm__ __volatile__("vpshufb %zmm0,%zmm1,%zmm2");
  260                 }
  261         ]])], [
  262                 AC_MSG_RESULT([yes])
  263                 AC_DEFINE([HAVE_AVX512BW], 1, [Define if host toolchain supports AVX512BW])
  264         ], [
  265                 AC_MSG_RESULT([no])
  266         ])
  267 ])
  268 
  269 dnl #
  270 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512IFMA
  271 dnl #
  272 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512IFMA], [
  273         AC_MSG_CHECKING([whether host toolchain supports AVX512IFMA])
  274 
  275         AC_LINK_IFELSE([AC_LANG_SOURCE([
  276         [
  277                 void main()
  278                 {
  279                         __asm__ __volatile__("vpmadd52luq %zmm0,%zmm1,%zmm2");
  280                 }
  281         ]])], [
  282                 AC_MSG_RESULT([yes])
  283                 AC_DEFINE([HAVE_AVX512IFMA], 1, [Define if host toolchain supports AVX512IFMA])
  284         ], [
  285                 AC_MSG_RESULT([no])
  286         ])
  287 ])
  288 
  289 dnl #
  290 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512VBMI
  291 dnl #
  292 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512VBMI], [
  293         AC_MSG_CHECKING([whether host toolchain supports AVX512VBMI])
  294 
  295         AC_LINK_IFELSE([AC_LANG_SOURCE([
  296         [
  297                 void main()
  298                 {
  299                         __asm__ __volatile__("vpermb %zmm0,%zmm1,%zmm2");
  300                 }
  301         ]])], [
  302                 AC_MSG_RESULT([yes])
  303                 AC_DEFINE([HAVE_AVX512VBMI], 1, [Define if host toolchain supports AVX512VBMI])
  304         ], [
  305                 AC_MSG_RESULT([no])
  306         ])
  307 ])
  308 
  309 dnl #
  310 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512PF
  311 dnl #
  312 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512PF], [
  313         AC_MSG_CHECKING([whether host toolchain supports AVX512PF])
  314 
  315         AC_LINK_IFELSE([AC_LANG_SOURCE([
  316         [
  317                 void main()
  318                 {
  319                         __asm__ __volatile__("vgatherpf0dps (%rsi,%zmm0,4){%k1}");
  320                 }
  321         ]])], [
  322                 AC_MSG_RESULT([yes])
  323                 AC_DEFINE([HAVE_AVX512PF], 1, [Define if host toolchain supports AVX512PF])
  324         ], [
  325                 AC_MSG_RESULT([no])
  326         ])
  327 ])
  328 
  329 dnl #
  330 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512ER
  331 dnl #
  332 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512ER], [
  333         AC_MSG_CHECKING([whether host toolchain supports AVX512ER])
  334 
  335         AC_LINK_IFELSE([AC_LANG_SOURCE([
  336         [
  337                 void main()
  338                 {
  339                         __asm__ __volatile__("vexp2pd %zmm0,%zmm1");
  340                 }
  341         ]])], [
  342                 AC_MSG_RESULT([yes])
  343                 AC_DEFINE([HAVE_AVX512ER], 1, [Define if host toolchain supports AVX512ER])
  344         ], [
  345                 AC_MSG_RESULT([no])
  346         ])
  347 ])
  348 
  349 dnl #
  350 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512VL
  351 dnl #
  352 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512VL], [
  353         AC_MSG_CHECKING([whether host toolchain supports AVX512VL])
  354 
  355         AC_LINK_IFELSE([AC_LANG_SOURCE([
  356         [
  357                 void main()
  358                 {
  359                         __asm__ __volatile__("vpabsq %zmm0,%zmm1");
  360                 }
  361         ]])], [
  362                 AC_MSG_RESULT([yes])
  363                 AC_DEFINE([HAVE_AVX512VL], 1, [Define if host toolchain supports AVX512VL])
  364         ], [
  365                 AC_MSG_RESULT([no])
  366         ])
  367 ])
  368 
  369 dnl #
  370 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AES
  371 dnl #
  372 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AES], [
  373         AC_MSG_CHECKING([whether host toolchain supports AES])
  374 
  375         AC_LINK_IFELSE([AC_LANG_SOURCE([
  376         [
  377                 void main()
  378                 {
  379                         __asm__ __volatile__("aesenc %xmm0, %xmm1");
  380                 }
  381         ]])], [
  382                 AC_MSG_RESULT([yes])
  383                 AC_DEFINE([HAVE_AES], 1, [Define if host toolchain supports AES])
  384         ], [
  385                 AC_MSG_RESULT([no])
  386         ])
  387 ])
  388 
  389 dnl #
  390 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_PCLMULQDQ
  391 dnl #
  392 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_PCLMULQDQ], [
  393         AC_MSG_CHECKING([whether host toolchain supports PCLMULQDQ])
  394 
  395         AC_LINK_IFELSE([AC_LANG_SOURCE([
  396         [
  397                 void main()
  398                 {
  399                         __asm__ __volatile__("pclmulqdq %0, %%xmm0, %%xmm1" :: "i"(0));
  400                 }
  401         ]])], [
  402                 AC_MSG_RESULT([yes])
  403                 AC_DEFINE([HAVE_PCLMULQDQ], 1, [Define if host toolchain supports PCLMULQDQ])
  404         ], [
  405                 AC_MSG_RESULT([no])
  406         ])
  407 ])
  408 
  409 dnl #
  410 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_MOVBE
  411 dnl #
  412 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_MOVBE], [
  413         AC_MSG_CHECKING([whether host toolchain supports MOVBE])
  414 
  415         AC_LINK_IFELSE([AC_LANG_SOURCE([
  416         [
  417                 void main()
  418                 {
  419                         __asm__ __volatile__("movbe 0(%eax), %eax");
  420                 }
  421         ]])], [
  422                 AC_MSG_RESULT([yes])
  423                 AC_DEFINE([HAVE_MOVBE], 1, [Define if host toolchain supports MOVBE])
  424         ], [
  425                 AC_MSG_RESULT([no])
  426         ])
  427 ])
  428 
  429 dnl #
  430 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_XSAVE
  431 dnl #
  432 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_XSAVE], [
  433         AC_MSG_CHECKING([whether host toolchain supports XSAVE])
  434 
  435         AC_LINK_IFELSE([AC_LANG_SOURCE([
  436         [
  437                 void main()
  438                 {
  439                   char b[4096] __attribute__ ((aligned (64)));
  440                   __asm__ __volatile__("xsave %[b]\n" : : [b] "m" (*b) : "memory");
  441                 }
  442         ]])], [
  443                 AC_MSG_RESULT([yes])
  444                 AC_DEFINE([HAVE_XSAVE], 1, [Define if host toolchain supports XSAVE])
  445         ], [
  446                 AC_MSG_RESULT([no])
  447         ])
  448 ])
  449 
  450 dnl #
  451 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_XSAVEOPT
  452 dnl #
  453 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_XSAVEOPT], [
  454         AC_MSG_CHECKING([whether host toolchain supports XSAVEOPT])
  455 
  456         AC_LINK_IFELSE([AC_LANG_SOURCE([
  457         [
  458                 void main()
  459                 {
  460                   char b[4096] __attribute__ ((aligned (64)));
  461                   __asm__ __volatile__("xsaveopt %[b]\n" : : [b] "m" (*b) : "memory");
  462                 }
  463         ]])], [
  464                 AC_MSG_RESULT([yes])
  465                 AC_DEFINE([HAVE_XSAVEOPT], 1, [Define if host toolchain supports XSAVEOPT])
  466         ], [
  467                 AC_MSG_RESULT([no])
  468         ])
  469 ])
  470 
  471 dnl #
  472 dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_XSAVES
  473 dnl #
  474 AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_XSAVES], [
  475         AC_MSG_CHECKING([whether host toolchain supports XSAVES])
  476 
  477         AC_LINK_IFELSE([AC_LANG_SOURCE([
  478         [
  479                 void main()
  480                 {
  481                   char b[4096] __attribute__ ((aligned (64)));
  482                   __asm__ __volatile__("xsaves %[b]\n" : : [b] "m" (*b) : "memory");
  483                 }
  484         ]])], [
  485                 AC_MSG_RESULT([yes])
  486                 AC_DEFINE([HAVE_XSAVES], 1, [Define if host toolchain supports XSAVES])
  487         ], [
  488                 AC_MSG_RESULT([no])
  489         ])
  490 ])

Cache object: aa46eedf1515cb7a4a6f41f8dc5cddf5


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.