123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- /*
- Copyright Charly Chevalier 2015
- Copyright Joel Falcou 2015
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
- */
- #include <msgpack/predef/hardware/simd/x86.h>
- #include <msgpack/predef/hardware/simd/x86_amd.h>
- #include <msgpack/predef/hardware/simd/arm.h>
- #include <msgpack/predef/hardware/simd/ppc.h>
- #ifndef MSGPACK_PREDEF_HARDWARE_SIMD_H
- #define MSGPACK_PREDEF_HARDWARE_SIMD_H
- #include <msgpack/predef/version_number.h>
- /*`
- [section Using the `MSGPACK_HW_SIMD_*` predefs]
- [include ../doc/hardware_simd.qbk]
- [endsect]
- [/ --------------------------- ]
- [section `MSGPACK_HW_SIMD_*`]
- [heading `MSGPACK_HW_SIMD`]
- The SIMD extension detected for a specific architectures.
- Version number depends on the detected extension.
- [table
- [[__predef_symbol__] [__predef_version__]]
- [[`MSGPACK_HW_SIMD_X86_AVAILABLE`] [__predef_detection__]]
- [[`MSGPACK_HW_SIMD_X86_AMD_AVAILABLE`] [__predef_detection__]]
- [[`MSGPACK_HW_SIMD_ARM_AVAILABLE`] [__predef_detection__]]
- [[`MSGPACK_HW_SIMD_PPC_AVAILABLE`] [__predef_detection__]]
- ]
- [include ../include/msgpack/predef/hardware/simd/x86.h]
- [include ../include/msgpack/predef/hardware/simd/x86_amd.h]
- [include ../include/msgpack/predef/hardware/simd/arm.h]
- [include ../include/msgpack/predef/hardware/simd/ppc.h]
- [endsect]
- [/ --------------------------- ]
- [section `MSGPACK_HW_SIMD_X86_*_VERSION`]
- [include ../include/msgpack/predef/hardware/simd/x86/versions.h]
- [endsect]
- [section `MSGPACK_HW_SIMD_X86_AMD_*_VERSION`]
- [include ../include/msgpack/predef/hardware/simd/x86_amd/versions.h]
- [endsect]
- [section `MSGPACK_HW_SIMD_ARM_*_VERSION`]
- [include ../include/msgpack/predef/hardware/simd/arm/versions.h]
- [endsect]
- [section `MSGPACK_HW_SIMD_PPC_*_VERSION`]
- [include ../include/msgpack/predef/hardware/simd/ppc/versions.h]
- [endsect]
- */
- // We check if SIMD extension of multiples architectures have been detected,
- // if yes, then this is an error!
- //
- // NOTE: _X86_AMD implies _X86, so there is no need to check for it here!
- //
- #if defined(MSGPACK_HW_SIMD_ARM_AVAILABLE) && defined(MSGPACK_HW_SIMD_PPC_AVAILABLE) ||\
- defined(MSGPACK_HW_SIMD_ARM_AVAILABLE) && defined(MSGPACK_HW_SIMD_X86_AVAILABLE) ||\
- defined(MSGPACK_HW_SIMD_PPC_AVAILABLE) && defined(MSGPACK_HW_SIMD_X86_AVAILABLE)
- # error "Multiple SIMD architectures detected, this cannot happen!"
- #endif
- #if defined(MSGPACK_HW_SIMD_X86_AVAILABLE) && defined(MSGPACK_HW_SIMD_X86_AMD_AVAILABLE)
- // If both standard _X86 and _X86_AMD are available,
- // then take the biggest version of the two!
- # if MSGPACK_HW_SIMD_X86 >= MSGPACK_HW_SIMD_X86_AMD
- # define MSGPACK_HW_SIMD MSGPACK_HW_SIMD_X86
- # else
- # define MSGPACK_HW_SIMD MSGPACK_HW_SIMD_X86_AMD
- # endif
- #endif
- #if !defined(MSGPACK_HW_SIMD)
- // At this point, only one of these two is defined
- # if defined(MSGPACK_HW_SIMD_X86_AVAILABLE)
- # define MSGPACK_HW_SIMD MSGPACK_HW_SIMD_X86
- # endif
- # if defined(MSGPACK_HW_SIMD_X86_AMD_AVAILABLE)
- # define MSGPACK_HW_SIMD MSGPACK_HW_SIMD_X86_AMD
- # endif
- #endif
- #if defined(MSGPACK_HW_SIMD_ARM_AVAILABLE)
- # define MSGPACK_HW_SIMD MSGPACK_HW_SIMD_ARM
- #endif
- #if defined(MSGPACK_HW_SIMD_PPC_AVAILABLE)
- # define MSGPACK_HW_SIMD MSGPACK_HW_SIMD_PPC
- #endif
- #if defined(MSGPACK_HW_SIMD)
- # define MSGPACK_HW_SIMD_AVAILABLE
- #else
- # define MSGPACK_HW_SIMD MSGPACK_VERSION_NUMBER_NOT_AVAILABLE
- #endif
- #define MSGPACK_HW_SIMD_NAME "Hardware SIMD"
- #endif
- #include <msgpack/predef/detail/test.h>
- MSGPACK_PREDEF_DECLARE_TEST(MSGPACK_HW_SIMD, MSGPACK_HW_SIMD_NAME)
|