mirror of
https://github.com/boostorg/predef.git
synced 2025-07-29 11:37:13 +02:00
Merge pull request #31 from jfalcou/simd_support
Add support, macros and versionning for SIMD extensions
This commit is contained in:
89
doc/hardware_simd.qbk
Normal file
89
doc/hardware_simd.qbk
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
SIMD predefs depend on compiler options. For example, you will have to add the
|
||||||
|
option `-msse3` to clang or gcc to enable SSE3. SIMD predefs are also inclusive.
|
||||||
|
This means that if SSE3 is enabled, then every other extensions with a lower
|
||||||
|
version number will implicitly be enabled and detected. However, some extensions
|
||||||
|
are CPU specific, they may not be detected nor enabled when an upper version is
|
||||||
|
enabled.
|
||||||
|
|
||||||
|
[note SSE(1) and SSE2 are automatically enabled by default when using x86-64
|
||||||
|
architecture.]
|
||||||
|
|
||||||
|
To check if any SIMD extension has been enabled, you can use:
|
||||||
|
|
||||||
|
``
|
||||||
|
#include <boost/predef/hardware/simd.h>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
#if defined(BOOST_HW_SIMD_AVAILABLE)
|
||||||
|
std::cout << "SIMD detected!" << std::endl;
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
``
|
||||||
|
|
||||||
|
When writing SIMD specific code, you may want to check if a particular extension
|
||||||
|
has been detected. To do so you have to use the right architecture predef and
|
||||||
|
compare it. Those predef are of the form `BOOST_HW_SIMD_"ARCH"` (where `"ARCH"`
|
||||||
|
is either `ARM`, `PPC`, or `X86`). For example, if you compile code for x86
|
||||||
|
architecture, you will have to use `BOOST_HW_SIMD_X86`. Its value will be the
|
||||||
|
version number of the most recent SIMD extension detected for the architecture.
|
||||||
|
|
||||||
|
To check if an extension has been enabled:
|
||||||
|
|
||||||
|
``
|
||||||
|
#include <boost/predef/hardware/simd.h>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
#if BOOST_HW_SIMD_X86 >= BOOST_HW_SIMD_X86_SSE3_VERSION
|
||||||
|
std::cout << "This is SSE3!" << std::endl;
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
``
|
||||||
|
|
||||||
|
[note The *_VERSION* defines that map version number to actual real
|
||||||
|
identifiers. This way it is easier to write comparisons without messing up with
|
||||||
|
version numbers.]
|
||||||
|
|
||||||
|
To *"stricly"* check the most recent detected extension:
|
||||||
|
|
||||||
|
``
|
||||||
|
#include <boost/predef/hardware/simd.h>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
#if BOOST_HW_SIMD_X86 == BOOST_HW_SIMD_X86_SSE3_VERSION
|
||||||
|
std::cout << "This is SSE3 and this is the most recent enabled extension!"
|
||||||
|
<< std::endl;
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
``
|
||||||
|
|
||||||
|
Because of the version systems of predefs and of the inclusive property of SIMD
|
||||||
|
extensions macros, you can easily check for ranges of supported extensions:
|
||||||
|
|
||||||
|
``
|
||||||
|
#include <boost/predef/hardware/simd.h>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
#if BOOST_HW_SIMD_X86 >= BOOST_HW_SIMD_X86_SSE2_VERSION &&\
|
||||||
|
BOOST_HW_SIMD_X86 <= BOOST_HW_SIMD_X86_SSSE3_VERSION
|
||||||
|
std::cout << "This is SSE2, SSE3 and SSSE3!" << std::endl;
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
``
|
||||||
|
|
||||||
|
[note Unlike gcc and clang, Visual Studio does not allow you to specify precisely
|
||||||
|
the SSE variants you want to use, the only detections that will take place are
|
||||||
|
SSE, SSE2, AVX and AVX2. For more informations,
|
||||||
|
see [@https://msdn.microsoft.com/en-us/library/b0084kay.aspx here].]
|
||||||
|
|
@ -3,6 +3,8 @@
|
|||||||
[version 1.3]
|
[version 1.3]
|
||||||
[authors [Rivera, Rene]]
|
[authors [Rivera, Rene]]
|
||||||
[copyright 2005, 2008-2015 Rene Rivera]
|
[copyright 2005, 2008-2015 Rene Rivera]
|
||||||
|
[copyright 2015 Charly Chevalier]
|
||||||
|
[copyright 2015 Joel Falcou]
|
||||||
[purpose Identification and specification of predefined macros.]
|
[purpose Identification and specification of predefined macros.]
|
||||||
[license
|
[license
|
||||||
Distributed under the Boost Software License, Version 1.0.
|
Distributed under the Boost Software License, Version 1.0.
|
||||||
@ -143,6 +145,8 @@ macros of a particular prefix:
|
|||||||
* `BOOST_OS_` for the operating system we are compiling to.
|
* `BOOST_OS_` for the operating system we are compiling to.
|
||||||
* `BOOST_PLAT_` for platforms on top of operating system or compilers.
|
* `BOOST_PLAT_` for platforms on top of operating system or compilers.
|
||||||
* `BOOST_ENDIAN_` for endianness of the os and architecture combination.
|
* `BOOST_ENDIAN_` for endianness of the os and architecture combination.
|
||||||
|
* `BOOST_HW_` for hardware specific features.
|
||||||
|
* `BOOST_HW_SIMD` for SIMD (Single Instruction Multiple Data) detection.
|
||||||
|
|
||||||
[note The detected definitions are for the configuration one is targeting
|
[note The detected definitions are for the configuration one is targeting
|
||||||
during the compile. In particular in a cross-compile this means the target
|
during the compile. In particular in a cross-compile this means the target
|
||||||
@ -547,6 +551,10 @@ and "Y", "M", "D" for dates.
|
|||||||
[include ../include/boost/predef/platform/*.h]
|
[include ../include/boost/predef/platform/*.h]
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
|
[section `BOOST_HW` hardware macros]
|
||||||
|
[include ../include/boost/predef/hardware/*.h]
|
||||||
|
[endsect]
|
||||||
|
|
||||||
[section Other macros]
|
[section Other macros]
|
||||||
[include ../include/boost/predef/other/*.h]
|
[include ../include/boost/predef/other/*.h]
|
||||||
[endsect]
|
[endsect]
|
||||||
|
@ -17,6 +17,7 @@ http://www.boost.org/LICENSE_1_0.txt)
|
|||||||
#include <boost/predef/os.h>
|
#include <boost/predef/os.h>
|
||||||
#include <boost/predef/other.h>
|
#include <boost/predef/other.h>
|
||||||
#include <boost/predef/platform.h>
|
#include <boost/predef/platform.h>
|
||||||
|
#include <boost/predef/hardware.h>
|
||||||
|
|
||||||
#include <boost/predef/version.h>
|
#include <boost/predef/version.h>
|
||||||
|
|
||||||
|
16
include/boost/predef/hardware.h
Normal file
16
include/boost/predef/hardware.h
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
/*
|
||||||
|
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)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if !defined(BOOST_PREDEF_HARDWARE_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
|
||||||
|
#ifndef BOOST_PREDEF_HARDWARE_H
|
||||||
|
#define BOOST_PREDEF_HARDWARE_H
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <boost/predef/hardware/simd.h>
|
||||||
|
|
||||||
|
#endif
|
107
include/boost/predef/hardware/simd.h
Normal file
107
include/boost/predef/hardware/simd.h
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
/*
|
||||||
|
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 <boost/predef/hardware/simd/x86.h>
|
||||||
|
#include <boost/predef/hardware/simd/x86_amd.h>
|
||||||
|
#include <boost/predef/hardware/simd/arm.h>
|
||||||
|
#include <boost/predef/hardware/simd/ppc.h>
|
||||||
|
|
||||||
|
#ifndef BOOST_PREDEF_HARDWARE_SIMD_H
|
||||||
|
#define BOOST_PREDEF_HARDWARE_SIMD_H
|
||||||
|
|
||||||
|
#include <boost/predef/version_number.h>
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[section Using the `BOOST_HW_SIMD_*` predefs]
|
||||||
|
[include ../doc/hardware_simd.qbk]
|
||||||
|
[endsect]
|
||||||
|
|
||||||
|
[/ --------------------------- ]
|
||||||
|
|
||||||
|
[section `BOOST_HW_SIMD_*`]
|
||||||
|
|
||||||
|
[heading `BOOST_HW_SIMD`]
|
||||||
|
|
||||||
|
The SIMD extension detected for a specific architectures.
|
||||||
|
Version number depends on the detected extension.
|
||||||
|
|
||||||
|
[table
|
||||||
|
[[__predef_symbol__] [__predef_version__]]
|
||||||
|
|
||||||
|
[[`BOOST_HW_SIMD_X86_AVAILABLE`] [__predef_detection__]]
|
||||||
|
[[`BOOST_HW_SIMD_X86_AMD_AVAILABLE`] [__predef_detection__]]
|
||||||
|
[[`BOOST_HW_SIMD_ARM_AVAILABLE`] [__predef_detection__]]
|
||||||
|
[[`BOOST_HW_SIMD_PPC_AVAILABLE`] [__predef_detection__]]
|
||||||
|
]
|
||||||
|
|
||||||
|
[include ../include/boost/predef/hardware/simd/x86.h]
|
||||||
|
[include ../include/boost/predef/hardware/simd/x86_amd.h]
|
||||||
|
[include ../include/boost/predef/hardware/simd/arm.h]
|
||||||
|
[include ../include/boost/predef/hardware/simd/ppc.h]
|
||||||
|
|
||||||
|
[endsect]
|
||||||
|
|
||||||
|
[/ --------------------------- ]
|
||||||
|
|
||||||
|
[section `BOOST_HW_SIMD_X86_*_VERSION`]
|
||||||
|
[include ../include/boost/predef/hardware/simd/x86/versions.h]
|
||||||
|
[endsect]
|
||||||
|
|
||||||
|
[section `BOOST_HW_SIMD_X86_AMD_*_VERSION`]
|
||||||
|
[include ../include/boost/predef/hardware/simd/x86_amd/versions.h]
|
||||||
|
[endsect]
|
||||||
|
|
||||||
|
[section `BOOST_HW_SIMD_ARM_*_VERSION`]
|
||||||
|
[include ../include/boost/predef/hardware/simd/arm/versions.h]
|
||||||
|
[endsect]
|
||||||
|
|
||||||
|
[section `BOOST_HW_SIMD_PPC_*_VERSION`]
|
||||||
|
[include ../include/boost/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(BOOST_HW_SIMD_ARM_AVAILABLE) && defined(BOOST_HW_SIMD_PPC_AVAILABLE) ||\
|
||||||
|
defined(BOOST_HW_SIMD_ARM_AVAILABLE) && defined(BOOST_HW_SIMD_X86_AVAILABLE) ||\
|
||||||
|
defined(BOOST_HW_SIMD_PPC_AVAILABLE) && defined(BOOST_HW_SIMD_X86_AVAILABLE)
|
||||||
|
# error "Multiple SIMD architectures detected, this cannot happen!"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(BOOST_HW_SIMD_X86_AVAILABLE)
|
||||||
|
# define BOOST_HW_SIMD BOOST_HW_SIMD_X86
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(BOOST_HW_SIMD_X86_AMD_AVAILABLE)
|
||||||
|
# define BOOST_HW_SIMD BOOST_HW_SIMD_X86_AMD
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(BOOST_HW_SIMD_ARM_AVAILABLE)
|
||||||
|
# define BOOST_HW_SIMD BOOST_HW_SIMD_ARM
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(BOOST_HW_SIMD_PPC_AVAILABLE)
|
||||||
|
# define BOOST_HW_SIMD BOOST_HW_SIMD_PPC
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(BOOST_HW_SIMD)
|
||||||
|
# define BOOST_HW_SIMD_AVAILABLE
|
||||||
|
#else
|
||||||
|
# define BOOST_HW_SIMD BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BOOST_HW_SIMD_NAME "Hardware SIMD"
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <boost/predef/detail/test.h>
|
||||||
|
BOOST_PREDEF_DECLARE_TEST(BOOST_HW_SIMD, BOOST_HW_SIMD_NAME)
|
57
include/boost/predef/hardware/simd/arm.h
Normal file
57
include/boost/predef/hardware/simd/arm.h
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
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)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BOOST_PREDEF_HARDWARE_SIMD_ARM_H
|
||||||
|
#define BOOST_PREDEF_HARDWARE_SIMD_ARM_H
|
||||||
|
|
||||||
|
#include <boost/predef/version_number.h>
|
||||||
|
#include <boost/predef/hardware/simd/arm/versions.h>
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_ARM`]
|
||||||
|
|
||||||
|
The SIMD extension for ARM (*if detected*).
|
||||||
|
Version number depends on the most recent detected extension.
|
||||||
|
|
||||||
|
[table
|
||||||
|
[[__predef_symbol__] [__predef_version__]]
|
||||||
|
|
||||||
|
[[`__ARM_NEON__`] [__predef_detection__]]
|
||||||
|
[[`__aarch64__`] [__predef_detection__]]
|
||||||
|
[[`_M_ARM`] [__predef_detection__]]
|
||||||
|
]
|
||||||
|
|
||||||
|
[table
|
||||||
|
[[__predef_symbol__] [__predef_version__]]
|
||||||
|
|
||||||
|
[[`__ARM_NEON__`] [BOOST_HW_SIMD_ARM_NEON_VERSION]]
|
||||||
|
[[`__aarch64__`] [BOOST_HW_SIMD_ARM_NEON_VERSION]]
|
||||||
|
[[`_M_ARM`] [BOOST_HW_SIMD_ARM_NEON_VERSION]]
|
||||||
|
]
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define BOOST_HW_SIMD_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||||
|
|
||||||
|
#undef BOOST_HW_SIMD_ARM
|
||||||
|
#if !defined(BOOST_HW_SIMD_ARM) && (defined(__ARM_NEON__) || defined(__aarch64__) || defined (_M_ARM))
|
||||||
|
# define BOOST_HW_SIMD_ARM BOOST_HW_SIMD_ARM_NEON_VERSION
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(BOOST_HW_SIMD_ARM)
|
||||||
|
# define BOOST_HW_SIMD_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||||
|
#else
|
||||||
|
# define BOOST_HW_SIMD_ARM_AVAILABLE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BOOST_HW_SIMD_ARM_NAME "ARM SIMD"
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <boost/predef/detail/test.h>
|
||||||
|
BOOST_PREDEF_DECLARE_TEST(BOOST_HW_SIMD_ARM, BOOST_HW_SIMD_ARM_NAME)
|
32
include/boost/predef/hardware/simd/arm/versions.h
Normal file
32
include/boost/predef/hardware/simd/arm/versions.h
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
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)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BOOST_PREDEF_HARDWARE_SIMD_ARM_VERSIONS_H
|
||||||
|
#define BOOST_PREDEF_HARDWARE_SIMD_ARM_VERSIONS_H
|
||||||
|
|
||||||
|
#include <boost/predef/version_number.h>
|
||||||
|
|
||||||
|
/*`
|
||||||
|
Those defines represent ARM SIMD extensions versions.
|
||||||
|
|
||||||
|
[note You *MUST* compare them with the predef `BOOST_HW_SIMD_ARM`.]
|
||||||
|
*/
|
||||||
|
|
||||||
|
// ---------------------------------
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_ARM_NEON_VERSION`]
|
||||||
|
|
||||||
|
The [@https://en.wikipedia.org/wiki/ARM_architecture#Advanced_SIMD_.28NEON.29 NEON]
|
||||||
|
ARM extension version number.
|
||||||
|
|
||||||
|
Version number is: *1.0.0*.
|
||||||
|
*/
|
||||||
|
#define BOOST_HW_SIMD_ARM_NEON_VERSION BOOST_VERSION_NUMBER(1, 0, 0)
|
||||||
|
|
||||||
|
#endif
|
69
include/boost/predef/hardware/simd/ppc.h
Normal file
69
include/boost/predef/hardware/simd/ppc.h
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
/*
|
||||||
|
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)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BOOST_PREDEF_HARDWARE_SIMD_PPC_H
|
||||||
|
#define BOOST_PREDEF_HARDWARE_SIMD_PPC_H
|
||||||
|
|
||||||
|
#include <boost/predef/version_number.h>
|
||||||
|
#include <boost/predef/hardware/simd/ppc/versions.h>
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_PPC`]
|
||||||
|
|
||||||
|
The SIMD extension for PowerPC (*if detected*).
|
||||||
|
Version number depends on the most recent detected extension.
|
||||||
|
|
||||||
|
[table
|
||||||
|
[[__predef_symbol__] [__predef_version__]]
|
||||||
|
|
||||||
|
[[`__VECTOR4DOUBLE__`] [__predef_detection__]]
|
||||||
|
|
||||||
|
[[`__ALTIVEC__`] [__predef_detection__]]
|
||||||
|
[[`__VEC__`] [__predef_detection__]]
|
||||||
|
|
||||||
|
[[`__VSX__`] [__predef_detection__]]
|
||||||
|
]
|
||||||
|
|
||||||
|
[table
|
||||||
|
[[__predef_symbol__] [__predef_version__]]
|
||||||
|
|
||||||
|
[[`__VECTOR4DOUBLE__`] [BOOST_HW_SIMD_PPC_QPX_VERSION]]
|
||||||
|
|
||||||
|
[[`__ALTIVEC__`] [BOOST_HW_SIMD_PPC_VMX_VERSION]]
|
||||||
|
[[`__VEC__`] [BOOST_HW_SIMD_PPC_VMX_VERSION]]
|
||||||
|
|
||||||
|
[[`__VSX__`] [BOOST_HW_SIMD_PPC_VSX_VERSION]]
|
||||||
|
]
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define BOOST_HW_SIMD_PPC BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||||
|
|
||||||
|
#undef BOOST_HW_SIMD_PPC
|
||||||
|
#if !defined(BOOST_HW_SIMD_PPC) && defined(__VECTOR4DOUBLE__)
|
||||||
|
# define BOOST_HW_SIMD_PPC BOOST_HW_SIMD_PPC_QPX_VERSION
|
||||||
|
#endif
|
||||||
|
#if !defined(BOOST_HW_SIMD_PPC) && defined(__VSX__)
|
||||||
|
# define BOOST_HW_SIMD_PPC BOOST_HW_SIMD_PPC_VSX_VERSION
|
||||||
|
#endif
|
||||||
|
#if !defined(BOOST_HW_SIMD_PPC) && (defined(__ALTIVEC__) || defined(__VEC__))
|
||||||
|
# define BOOST_HW_SIMD_PPC BOOST_HW_SIMD_PPC_VMX_VERSION
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(BOOST_HW_SIMD_PPC)
|
||||||
|
# define BOOST_HW_SIMD_PPC BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||||
|
#else
|
||||||
|
# define BOOST_HW_SIMD_PPC_AVAILABLE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BOOST_HW_SIMD_PPC_NAME "PPC SIMD"
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <boost/predef/detail/test.h>
|
||||||
|
BOOST_PREDEF_DECLARE_TEST(BOOST_HW_SIMD_PPC, BOOST_HW_SIMD_PPC_NAME)
|
51
include/boost/predef/hardware/simd/ppc/versions.h
Normal file
51
include/boost/predef/hardware/simd/ppc/versions.h
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
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)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BOOST_PREDEF_HARDWARE_SIMD_PPC_VERSIONS_H
|
||||||
|
#define BOOST_PREDEF_HARDWARE_SIMD_PPC_VERSIONS_H
|
||||||
|
|
||||||
|
#include <boost/predef/version_number.h>
|
||||||
|
|
||||||
|
/*`
|
||||||
|
Those defines represent Power PC SIMD extensions versions.
|
||||||
|
|
||||||
|
[note You *MUST* compare them with the predef `BOOST_HW_SIMD_PPC`.]
|
||||||
|
*/
|
||||||
|
|
||||||
|
// ---------------------------------
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_PPC_VMX_VERSION`]
|
||||||
|
|
||||||
|
The [@https://en.wikipedia.org/wiki/AltiVec#VMX128 VMX] powerpc extension
|
||||||
|
version number.
|
||||||
|
|
||||||
|
Version number is: *1.0.0*.
|
||||||
|
*/
|
||||||
|
#define BOOST_HW_SIMD_PPC_VMX_VERSION BOOST_VERSION_NUMBER(1, 0, 0)
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_PPC_VSX_VERSION`]
|
||||||
|
|
||||||
|
The [@https://en.wikipedia.org/wiki/AltiVec#VSX VSX] powerpc extension version
|
||||||
|
number.
|
||||||
|
|
||||||
|
Version number is: *1.1.0*.
|
||||||
|
*/
|
||||||
|
#define BOOST_HW_SIMD_PPC_VSX_VERSION BOOST_VERSION_NUMBER(1, 1, 0)
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_PPC_QPX_VERSION`]
|
||||||
|
|
||||||
|
The QPX powerpc extension version number.
|
||||||
|
|
||||||
|
Version number is: *2.0.0*.
|
||||||
|
*/
|
||||||
|
#define BOOST_HW_SIMD_PPC_QPX_VERSION BOOST_VERSION_NUMBER(2, 0, 0)
|
||||||
|
|
||||||
|
#endif
|
123
include/boost/predef/hardware/simd/x86.h
Normal file
123
include/boost/predef/hardware/simd/x86.h
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
/*
|
||||||
|
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)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BOOST_PREDEF_HARDWARE_SIMD_X86_H
|
||||||
|
#define BOOST_PREDEF_HARDWARE_SIMD_X86_H
|
||||||
|
|
||||||
|
#include <boost/predef/version_number.h>
|
||||||
|
#include <boost/predef/hardware/simd/x86/versions.h>
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_X86`]
|
||||||
|
|
||||||
|
The SIMD extension for x86 (*if detected*).
|
||||||
|
Version number depends on the most recent detected extension.
|
||||||
|
|
||||||
|
[table
|
||||||
|
[[__predef_symbol__] [__predef_version__]]
|
||||||
|
|
||||||
|
[[`__SSE__`] [__predef_detection__]]
|
||||||
|
[[`_M_X64`] [__predef_detection__]]
|
||||||
|
[[`_M_IX86_FP >= 1`] [__predef_detection__]]
|
||||||
|
|
||||||
|
[[`__SSE2__`] [__predef_detection__]]
|
||||||
|
[[`_M_X64`] [__predef_detection__]]
|
||||||
|
[[`_M_IX86_FP >= 2`] [__predef_detection__]]
|
||||||
|
|
||||||
|
[[`__SSE3__`] [__predef_detection__]]
|
||||||
|
|
||||||
|
[[`__SSSE3__`] [__predef_detection__]]
|
||||||
|
|
||||||
|
[[`__SSE4_1__`] [__predef_detection__]]
|
||||||
|
|
||||||
|
[[`__SSE4_2__`] [__predef_detection__]]
|
||||||
|
|
||||||
|
[[`__AVX__`] [__predef_detection__]]
|
||||||
|
|
||||||
|
[[`__FMA__`] [__predef_detection__]]
|
||||||
|
|
||||||
|
[[`__AVX2__`] [__predef_detection__]]
|
||||||
|
]
|
||||||
|
|
||||||
|
[table
|
||||||
|
[[__predef_symbol__] [__predef_version__]]
|
||||||
|
|
||||||
|
[[`__SSE__`] [BOOST_HW_SIMD_X86_SSE_VERSION]]
|
||||||
|
[[`_M_X64`] [BOOST_HW_SIMD_X86_SSE_VERSION]]
|
||||||
|
[[`_M_IX86_FP >= 1`] [BOOST_HW_SIMD_X86_SSE_VERSION]]
|
||||||
|
|
||||||
|
[[`__SSE2__`] [BOOST_HW_SIMD_X86_SSE2_VERSION]]
|
||||||
|
[[`_M_X64`] [BOOST_HW_SIMD_X86_SSE2_VERSION]]
|
||||||
|
[[`_M_IX86_FP >= 2`] [BOOST_HW_SIMD_X86_SSE2_VERSION]]
|
||||||
|
|
||||||
|
[[`__SSE3__`] [BOOST_HW_SIMD_X86_SSE3_VERSION]]
|
||||||
|
|
||||||
|
[[`__SSSE3__`] [BOOST_HW_SIMD_X86_SSSE3_VERSION]]
|
||||||
|
|
||||||
|
[[`__SSE4_1__`] [BOOST_HW_SIMD_X86_SSE4_1_VERSION]]
|
||||||
|
|
||||||
|
[[`__SSE4_2__`] [BOOST_HW_SIMD_X86_SSE4_2_VERSION]]
|
||||||
|
|
||||||
|
[[`__AVX__`] [BOOST_HW_SIMD_X86_AVX_VERSION]]
|
||||||
|
|
||||||
|
[[`__FMA__`] [BOOST_HW_SIMD_X86_FMA3_VERSION]]
|
||||||
|
|
||||||
|
[[`__AVX2__`] [BOOST_HW_SIMD_x86_AVX2_VERSION]]
|
||||||
|
]
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define BOOST_HW_SIMD_X86 BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||||
|
|
||||||
|
#undef BOOST_HW_SIMD_X86
|
||||||
|
#if !defined(BOOST_HW_SIMD_X86) && defined(__MIC__)
|
||||||
|
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_MIC_VERSION
|
||||||
|
#endif
|
||||||
|
#if !defined(BOOST_HW_SIMD_X86) && defined(__AVX2__)
|
||||||
|
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_AVX2_VERSION
|
||||||
|
#endif
|
||||||
|
#if !defined(BOOST_HW_SIMD_X86) && defined(__AVX__)
|
||||||
|
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_AVX_VERSION
|
||||||
|
#endif
|
||||||
|
#if !defined(BOOST_HW_SIMD_X86) && defined(__FMA__)
|
||||||
|
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_FMA_VERSION
|
||||||
|
#endif
|
||||||
|
#if !defined(BOOST_HW_SIMD_X86) && defined(__SSE4_2__)
|
||||||
|
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSE4_2_VERSION
|
||||||
|
#endif
|
||||||
|
#if !defined(BOOST_HW_SIMD_X86) && defined(__SSE4_1__)
|
||||||
|
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSE4_1_VERSION
|
||||||
|
#endif
|
||||||
|
#if !defined(BOOST_HW_SIMD_X86) && defined(__SSSE3__)
|
||||||
|
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSSE3_VERSION
|
||||||
|
#endif
|
||||||
|
#if !defined(BOOST_HW_SIMD_X86) && defined(__SSE3__)
|
||||||
|
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSE3_VERSION
|
||||||
|
#endif
|
||||||
|
#if !defined(BOOST_HW_SIMD_X86) && (defined(__SSE2__) || defined(_M_X64) || _M_IX86_FP >= 2)
|
||||||
|
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSE2_VERSION
|
||||||
|
#endif
|
||||||
|
#if !defined(BOOST_HW_SIMD_X86) && (defined(__SSE__) || defined(_M_X64) || _M_IX86_FP >= 1)
|
||||||
|
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSE_VERSION
|
||||||
|
#endif
|
||||||
|
#if !defined(BOOST_HW_SIMD_X86) && defined(__MMX__)
|
||||||
|
# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_MMX_VERSION
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(BOOST_HW_SIMD_X86)
|
||||||
|
# define BOOST_HW_SIMD_X86 BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||||
|
#else
|
||||||
|
# define BOOST_HW_SIMD_X86_AVAILABLE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BOOST_HW_SIMD_X86_NAME "x86 SIMD"
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <boost/predef/detail/test.h>
|
||||||
|
BOOST_PREDEF_DECLARE_TEST(BOOST_HW_SIMD_X86, BOOST_HW_SIMD_X86_NAME)
|
129
include/boost/predef/hardware/simd/x86/versions.h
Normal file
129
include/boost/predef/hardware/simd/x86/versions.h
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
/*
|
||||||
|
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)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BOOST_PREDEF_HARDWARE_SIMD_X86_VERSIONS_H
|
||||||
|
#define BOOST_PREDEF_HARDWARE_SIMD_X86_VERSIONS_H
|
||||||
|
|
||||||
|
#include <boost/predef/version_number.h>
|
||||||
|
|
||||||
|
/*`
|
||||||
|
Those defines represent x86 SIMD extensions versions.
|
||||||
|
|
||||||
|
[note You *MUST* compare them with the predef `BOOST_HW_SIMD_X86`.]
|
||||||
|
*/
|
||||||
|
|
||||||
|
// ---------------------------------
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_X86_MMX_VERSION`]
|
||||||
|
|
||||||
|
The [@https://en.wikipedia.org/wiki/MMX_(instruction_set) MMX] x86 extension
|
||||||
|
version number.
|
||||||
|
|
||||||
|
Version number is: *0.99.0*.
|
||||||
|
*/
|
||||||
|
#define BOOST_HW_SIMD_X86_MMX_VERSION BOOST_VERSION_NUMBER(0, 99, 0)
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_X86_SSE_VERSION`]
|
||||||
|
|
||||||
|
The [@https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions SSE] x86 extension
|
||||||
|
version number.
|
||||||
|
|
||||||
|
Version number is: *1.0.0*.
|
||||||
|
*/
|
||||||
|
#define BOOST_HW_SIMD_X86_SSE_VERSION BOOST_VERSION_NUMBER(1, 0, 0)
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_X86_SSE2_VERSION`]
|
||||||
|
|
||||||
|
The [@https://en.wikipedia.org/wiki/SSE2 SSE2] x86 extension version number.
|
||||||
|
|
||||||
|
Version number is: *2.0.0*.
|
||||||
|
*/
|
||||||
|
#define BOOST_HW_SIMD_X86_SSE2_VERSION BOOST_VERSION_NUMBER(2, 0, 0)
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_X86_SSE3_VERSION`]
|
||||||
|
|
||||||
|
The [@https://en.wikipedia.org/wiki/SSE3 SSE3] x86 extension version number.
|
||||||
|
|
||||||
|
Version number is: *3.0.0*.
|
||||||
|
*/
|
||||||
|
#define BOOST_HW_SIMD_X86_SSE3_VERSION BOOST_VERSION_NUMBER(3, 0, 0)
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_X86_SSSE3_VERSION`]
|
||||||
|
|
||||||
|
The [@https://en.wikipedia.org/wiki/SSSE3 SSSE3] x86 extension version number.
|
||||||
|
|
||||||
|
Version number is: *3.1.0*.
|
||||||
|
*/
|
||||||
|
#define BOOST_HW_SIMD_X86_SSSE3_VERSION BOOST_VERSION_NUMBER(3, 1, 0)
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_X86_SSE4_1_VERSION`]
|
||||||
|
|
||||||
|
The [@https://en.wikipedia.org/wiki/SSE4#SSE4.1 SSE4_1] x86 extension version
|
||||||
|
number.
|
||||||
|
|
||||||
|
Version number is: *4.1.0*.
|
||||||
|
*/
|
||||||
|
#define BOOST_HW_SIMD_X86_SSE4_1_VERSION BOOST_VERSION_NUMBER(4, 1, 0)
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_X86_SSE4_2_VERSION`]
|
||||||
|
|
||||||
|
The [@https://en.wikipedia.org/wiki/SSE4##SSE4.2 SSE4_2] x86 extension version
|
||||||
|
number.
|
||||||
|
|
||||||
|
Version number is: *4.2.0*.
|
||||||
|
*/
|
||||||
|
#define BOOST_HW_SIMD_X86_SSE4_2_VERSION BOOST_VERSION_NUMBER(4, 2, 0)
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_X86_AVX_VERSION`]
|
||||||
|
|
||||||
|
The [@https://en.wikipedia.org/wiki/Advanced_Vector_Extensions AVX] x86
|
||||||
|
extension version number.
|
||||||
|
|
||||||
|
Version number is: *5.0.0*.
|
||||||
|
*/
|
||||||
|
#define BOOST_HW_SIMD_X86_AVX_VERSION BOOST_VERSION_NUMBER(5, 0, 0)
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_X86_FMA3_VERSION`]
|
||||||
|
|
||||||
|
The [@https://en.wikipedia.org/wiki/FMA_instruction_set FMA3] x86 extension
|
||||||
|
version number.
|
||||||
|
|
||||||
|
Version number is: *5.2.0*.
|
||||||
|
*/
|
||||||
|
#define BOOST_HW_SIMD_X86_FMA3_VERSION BOOST_VERSION_NUMBER(5, 2, 0)
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_X86_AVX2_VERSION`]
|
||||||
|
|
||||||
|
The [@https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#Advanced_Vector_Extensions_2 AVX2]
|
||||||
|
x86 extension version number.
|
||||||
|
|
||||||
|
Version number is: *5.3.0*.
|
||||||
|
*/
|
||||||
|
#define BOOST_HW_SIMD_X86_AVX2_VERSION BOOST_VERSION_NUMBER(5, 3, 0)
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_X86_MIC_VERSION`]
|
||||||
|
|
||||||
|
The [@https://en.wikipedia.org/wiki/Xeon_Phi MIC] (Xeon Phi) x86 extension
|
||||||
|
version number.
|
||||||
|
|
||||||
|
Version number is: *9.0.0*.
|
||||||
|
*/
|
||||||
|
#define BOOST_HW_SIMD_X86_MIC_VERSION BOOST_VERSION_NUMBER(9, 0, 0)
|
||||||
|
|
||||||
|
#endif
|
87
include/boost/predef/hardware/simd/x86_amd.h
Normal file
87
include/boost/predef/hardware/simd/x86_amd.h
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
/*
|
||||||
|
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)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BOOST_PREDEF_HARDWARE_SIMD_X86_AMD_H
|
||||||
|
#define BOOST_PREDEF_HARDWARE_SIMD_X86_AMD_H
|
||||||
|
|
||||||
|
#include <boost/predef/version_number.h>
|
||||||
|
#include <boost/predef/hardware/simd/x86_amd/versions.h>
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_X86_AMD`]
|
||||||
|
|
||||||
|
The SIMD extension for x86 (AMD) (*if detected*).
|
||||||
|
Version number depends on the most recent detected extension.
|
||||||
|
|
||||||
|
[table
|
||||||
|
[[__predef_symbol__] [__predef_version__]]
|
||||||
|
|
||||||
|
[[`__SSE4A__`] [__predef_detection__]]
|
||||||
|
|
||||||
|
[[`__FMA4__`] [__predef_detection__]]
|
||||||
|
|
||||||
|
[[`__XOP__`] [__predef_detection__]]
|
||||||
|
|
||||||
|
[[`BOOST_HW_SIMD_X86`] [__predef_detection__]]
|
||||||
|
]
|
||||||
|
|
||||||
|
[table
|
||||||
|
[[__predef_symbol__] [__predef_version__]]
|
||||||
|
|
||||||
|
[[`__SSE4A__`] [BOOST_HW_SIMD_x86_SSE4A_VERSION]]
|
||||||
|
|
||||||
|
[[`__FMA4__`] [BOOST_HW_SIMD_x86_FMA4_VERSION]]
|
||||||
|
|
||||||
|
[[`__XOP__`] [BOOST_HW_SIMD_x86_XOP_VERSION]]
|
||||||
|
|
||||||
|
[[`BOOST_HW_SIMD_X86`] [BOOST_HW_SIMD_x86]]
|
||||||
|
]
|
||||||
|
|
||||||
|
[note This predef includes every other x86 SIMD extensions and also has other
|
||||||
|
more specific extensions (FMA4, XOP, SSE4a). You should use this predef
|
||||||
|
instead of `BOOST_HW_SIMD_X86` to test if those specific extensions have
|
||||||
|
been detected.]
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define BOOST_HW_SIMD_X86_AMD BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||||
|
|
||||||
|
// AMD CPUs also use x86 architecture. We first try to detect if any AMD
|
||||||
|
// specific extension are detected, if yes, then try to detect more recent x86
|
||||||
|
// common extensions.
|
||||||
|
|
||||||
|
#undef BOOST_HW_SIMD_X86_AMD
|
||||||
|
#if !defined(BOOST_HW_SIMD_X86_AMD) && defined(__XOP__)
|
||||||
|
# define BOOST_HW_SIMD_X86_AMD BOOST_HW_SIMD_X86_AMD_XOP_VERSION
|
||||||
|
#endif
|
||||||
|
#if !defined(BOOST_HW_SIMD_X86_AMD) && defined(__FMA4__)
|
||||||
|
# define BOOST_HW_SIMD_X86_AMD BOOST_HW_SIMD_X86_AMD_FMA4_VERSION
|
||||||
|
#endif
|
||||||
|
#if !defined(BOOST_HW_SIMD_X86_AMD) && defined(__SSE4A__)
|
||||||
|
# define BOOST_HW_SIMD_X86_AMD BOOST_HW_SIMD_X86_AMD_SSE4A_VERSION
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(BOOST_HW_SIMD_X86_AMD)
|
||||||
|
# define BOOST_HW_SIMD_X86_AMD BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||||
|
#else
|
||||||
|
// At this point, we know that we have an AMD CPU, we do need to check for
|
||||||
|
// other x86 extensions to determine the final version number.
|
||||||
|
# include <boost/predef/hardware/simd/x86.h>
|
||||||
|
# if BOOST_HW_SIMD_X86 > BOOST_HW_SIMD_X86_AMD
|
||||||
|
# undef BOOST_HW_SIMD_X86_AMD
|
||||||
|
# define BOOST_HW_SIMD_X86_AMD BOOST_HW_SIMD_X86
|
||||||
|
# endif
|
||||||
|
# define BOOST_HW_SIMD_X86_AMD_AVAILABLE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BOOST_HW_SIMD_X86_AMD_NAME "x86 (AMD) SIMD"
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <boost/predef/detail/test.h>
|
||||||
|
BOOST_PREDEF_DECLARE_TEST(BOOST_HW_SIMD_X86_AMD, BOOST_HW_SIMD_X86_AMD_NAME)
|
51
include/boost/predef/hardware/simd/x86_amd/versions.h
Normal file
51
include/boost/predef/hardware/simd/x86_amd/versions.h
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
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)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BOOST_PREDEF_HARDWARE_SIMD_X86_AMD_VERSIONS_H
|
||||||
|
#define BOOST_PREDEF_HARDWARE_SIMD_X86_AMD_VERSIONS_H
|
||||||
|
|
||||||
|
#include <boost/predef/version_number.h>
|
||||||
|
|
||||||
|
/*`
|
||||||
|
Those defines represent x86 (AMD specific) SIMD extensions versions.
|
||||||
|
|
||||||
|
[note You *MUST* compare them with the predef `BOOST_HW_SIMD_X86_AMD`.]
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
// ---------------------------------
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_X86_SSE4A_VERSION`]
|
||||||
|
|
||||||
|
[@https://en.wikipedia.org/wiki/SSE4##SSE4A SSE4A] x86 extension (AMD specific).
|
||||||
|
|
||||||
|
Version number is: *4.0.0*.
|
||||||
|
*/
|
||||||
|
#define BOOST_HW_SIMD_X86_AMD_SSE4A_VERSION BOOST_VERSION_NUMBER(4, 0, 0)
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_X86_XOP_VERSION`]
|
||||||
|
|
||||||
|
[@https://en.wikipedia.org/wiki/XOP_instruction_set XOP] x86 extension (AMD specific).
|
||||||
|
|
||||||
|
Version number is: *5.1.0*.
|
||||||
|
*/
|
||||||
|
#define BOOST_HW_SIMD_X86_AMD_FMA4_VERSION BOOST_VERSION_NUMBER(5, 1, 0)
|
||||||
|
|
||||||
|
/*`
|
||||||
|
[heading `BOOST_HW_SIMD_X86_XOP_VERSION`]
|
||||||
|
|
||||||
|
[@https://en.wikipedia.org/wiki/XOP_instruction_set XOP] x86 extension (AMD specific).
|
||||||
|
|
||||||
|
Version number is: *5.1.1*.
|
||||||
|
*/
|
||||||
|
#define BOOST_HW_SIMD_X86_AMD_XOP_VERSION BOOST_VERSION_NUMBER(5, 1, 1)
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
Reference in New Issue
Block a user