From d3460e05aaf2b0b6b989e595d8bd81f70b767865 Mon Sep 17 00:00:00 2001 From: SSE4 Date: Tue, 9 Feb 2021 20:52:29 -0800 Subject: [PATCH] Add support for Elbrus 2000 (e2k) architecture (#116) --- include/boost/predef/architecture.h | 1 + include/boost/predef/architecture/e2k.h | 54 +++++++++++++++++++++++ include/boost/predef/architecture/sparc.h | 6 ++- include/boost/predef/other/endian.h | 3 +- 4 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 include/boost/predef/architecture/e2k.h diff --git a/include/boost/predef/architecture.h b/include/boost/predef/architecture.h index 3048329..f43f946 100644 --- a/include/boost/predef/architecture.h +++ b/include/boost/predef/architecture.h @@ -14,6 +14,7 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include #include +#include #include #include #include diff --git a/include/boost/predef/architecture/e2k.h b/include/boost/predef/architecture/e2k.h new file mode 100644 index 0000000..92edc9e --- /dev/null +++ b/include/boost/predef/architecture/e2k.h @@ -0,0 +1,54 @@ +/* +Copyright Konstantin Ivlev 2021 +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_E2K_H +#define BOOST_PREDEF_ARCHITECTURE_E2K_H + +#include +#include + +/* tag::reference[] += `BOOST_ARCH_E2K` + +https://en.wikipedia.org/wiki/Elbrus_2000[E2K] architecture. + +[options="header"] +|=== +| {predef_symbol} | {predef_version} + +| `+__e2k__+` | {predef_detection} + +| `+__e2k__+` | V.0.0 +|=== +*/ // end::reference[] + +#define BOOST_ARCH_E2K BOOST_VERSION_NUMBER_NOT_AVAILABLE + +#if defined(__e2k__) +# undef BOOST_ARCH_E2K +# if !defined(BOOST_ARCH_E2K) && defined(__iset__) +# define BOOST_ARCH_E2K BOOST_VERSION_NUMBER(__iset__,0,0) +# endif +# if !defined(BOOST_ARCH_E2K) +# define BOOST_ARCH_E2K BOOST_VERSION_NUMBER_AVAILABLE +# endif +#endif + +#if BOOST_ARCH_E2K +# define BOOST_ARCH_E2K_AVAILABLE +#endif + +#if BOOST_ARCH_E2K +# define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE +#endif + +#define BOOST_ARCH_E2K_NAME "E2K" + +#endif + +#include +BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_E2K,BOOST_ARCH_E2K_NAME) diff --git a/include/boost/predef/architecture/sparc.h b/include/boost/predef/architecture/sparc.h index 52e9fcb..d7b94f0 100644 --- a/include/boost/predef/architecture/sparc.h +++ b/include/boost/predef/architecture/sparc.h @@ -24,7 +24,9 @@ http://en.wikipedia.org/wiki/SPARC[SPARC] architecture. | `+__sparc+` | {predef_detection} | `+__sparcv9+` | 9.0.0 +| `+__sparc_v9__+` | 9.0.0 | `+__sparcv8+` | 8.0.0 +| `+__sparc_v8__+` | 8.0.0 |=== */ // end::reference[] @@ -32,10 +34,10 @@ http://en.wikipedia.org/wiki/SPARC[SPARC] architecture. #if defined(__sparc__) || defined(__sparc) # undef BOOST_ARCH_SPARC -# if !defined(BOOST_ARCH_SPARC) && defined(__sparcv9) +# if !defined(BOOST_ARCH_SPARC) && (defined(__sparcv9) || defined(__sparc_v9__) # define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER(9,0,0) # endif -# if !defined(BOOST_ARCH_SPARC) && defined(__sparcv8) +# if !defined(BOOST_ARCH_SPARC) && (defined(__sparcv8) || defined(__sparc_v8__) # define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER(8,0,0) # endif # if !defined(BOOST_ARCH_SPARC) diff --git a/include/boost/predef/other/endian.h b/include/boost/predef/other/endian.h index 8f116de..d8ec63f 100644 --- a/include/boost/predef/other/endian.h +++ b/include/boost/predef/other/endian.h @@ -124,7 +124,8 @@ information and acquired knowledge: defined(_MIPSEL) || \ defined(__MIPSEL) || \ defined(__MIPSEL__) || \ - defined(__riscv) + defined(__riscv) || \ + defined(__e2k__) # undef BOOST_ENDIAN_LITTLE_BYTE # define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_AVAILABLE # endif