From 11569d270c77c2c38735c4279524adbd3d61e4d5 Mon Sep 17 00:00:00 2001 From: Benjamin Worpitz Date: Tue, 12 Jun 2018 14:39:43 +0200 Subject: [PATCH] add detection for PTX architecture (#73) --- include/boost/predef/architecture.h | 1 + include/boost/predef/architecture/ptx.h | 44 +++++++++++++++++++++++++ include/boost/predef/make.h | 2 ++ test/make.cpp | 1 + 4 files changed, 48 insertions(+) create mode 100644 include/boost/predef/architecture/ptx.h diff --git a/include/boost/predef/architecture.h b/include/boost/predef/architecture.h index c433d43..120d557 100644 --- a/include/boost/predef/architecture.h +++ b/include/boost/predef/architecture.h @@ -19,6 +19,7 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include #include +#include #include #include #include diff --git a/include/boost/predef/architecture/ptx.h b/include/boost/predef/architecture/ptx.h new file mode 100644 index 0000000..335517b --- /dev/null +++ b/include/boost/predef/architecture/ptx.h @@ -0,0 +1,44 @@ +/* +Copyright Benjamin Worpitz 2018 +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_ARCHITECTURE_PTX_H +#define BOOST_PREDEF_ARCHITECTURE_PTX_H + +#include +#include + +/*` +[heading `BOOST_ARCH_PTX`] + +[@https://en.wikipedia.org/wiki/Parallel_Thread_Execution PTX] architecture. + +[table + [[__predef_symbol__] [__predef_version__]] + + [[`__CUDA_ARCH__`] [__predef_detection__]] + + [[`__CUDA_ARCH__`] [V.R.0]] + ] + */ + +#define BOOST_ARCH_PTX BOOST_VERSION_NUMBER_NOT_AVAILABLE + +#if defined(__CUDA_ARCH__) +# undef BOOST_ARCH_PTX +# define BOOST_ARCH_PTX BOOST_PREDEF_MAKE_10_VR0(__CUDA_ARCH__) +#endif + +#if BOOST_ARCH_PTX +# define BOOST_ARCH_PTX_AVAILABLE +#endif + +#define BOOST_ARCH_PTX_NAME "PTX" + +#endif + +#include +BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_PTX,BOOST_ARCH_PTX_NAME) diff --git a/include/boost/predef/make.h b/include/boost/predef/make.h index e9ba6c8..fccd2d3 100644 --- a/include/boost/predef/make.h +++ b/include/boost/predef/make.h @@ -46,6 +46,8 @@ Macros are: #define BOOST_PREDEF_MAKE_0X_VVRRPP(V) BOOST_VERSION_NUMBER((V&0xFF0000)>>16,(V&0xFF00)>>8,(V&0xFF)) /*` `BOOST_PREDEF_MAKE_10_VPPP(V)` */ #define BOOST_PREDEF_MAKE_10_VPPP(V) BOOST_VERSION_NUMBER(((V)/1000)%10,0,(V)%1000) +/*` `BOOST_PREDEF_MAKE_10_VR0(V)` */ +#define BOOST_PREDEF_MAKE_10_VR0(V) BOOST_VERSION_NUMBER(((V)/100)%10,((V)/10)%10,0) /*` `BOOST_PREDEF_MAKE_10_VRP(V)` */ #define BOOST_PREDEF_MAKE_10_VRP(V) BOOST_VERSION_NUMBER(((V)/100)%10,((V)/10)%10,(V)%10) /*` `BOOST_PREDEF_MAKE_10_VRP000(V)` */ diff --git a/test/make.cpp b/test/make.cpp index 0e19f02..6b84624 100644 --- a/test/make.cpp +++ b/test/make.cpp @@ -38,6 +38,7 @@ void test_BOOST_VERSION_NUMBER() PREDEF_CHECK(BOOST_PREDEF_MAKE_0X_VRRPP000(0xFFFFF000) == BOOST_VERSION_NUMBER(0xF,0xFF,0xFF)); PREDEF_CHECK(BOOST_PREDEF_MAKE_0X_VVRRPP(0xFFFFFF) == BOOST_VERSION_NUMBER(0xFF,0xFF,0xFF)); + PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VR0(980) == BOOST_VERSION_NUMBER(9,8,0)); PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VRP(999) == BOOST_VERSION_NUMBER(9,9,9)); PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VPPP(9999) == BOOST_VERSION_NUMBER(9,0,999)); PREDEF_CHECK(BOOST_PREDEF_MAKE_10_VVRRPP(999999) == BOOST_VERSION_NUMBER(99,99,99));