]>
Commit | Line | Data |
---|---|---|
7c673cae | 1 | /* |
92f5a8d4 | 2 | Copyright Rene Rivera 2008-2019 |
7c673cae FG |
3 | Copyright Franz Detro 2014 |
4 | Copyright (c) Microsoft Corporation 2014 | |
5 | Distributed under the Boost Software License, Version 1.0. | |
6 | (See accompanying file LICENSE_1_0.txt or copy at | |
7 | http://www.boost.org/LICENSE_1_0.txt) | |
8 | */ | |
9 | ||
10 | #ifndef BOOST_PREDEF_ARCHITECTURE_ARM_H | |
11 | #define BOOST_PREDEF_ARCHITECTURE_ARM_H | |
12 | ||
13 | #include <boost/predef/version_number.h> | |
14 | #include <boost/predef/make.h> | |
15 | ||
f67539c2 TL |
16 | /* tag::reference[] |
17 | = `BOOST_ARCH_ARM` | |
7c673cae | 18 | |
f67539c2 | 19 | http://en.wikipedia.org/wiki/ARM_architecture[ARM] architecture. |
7c673cae | 20 | |
f67539c2 TL |
21 | [options="header"] |
22 | |=== | |
23 | | {predef_symbol} | {predef_version} | |
7c673cae | 24 | |
f67539c2 TL |
25 | | `+__ARM_ARCH+` | {predef_detection} |
26 | | `+__TARGET_ARCH_ARM+` | {predef_detection} | |
27 | | `+__TARGET_ARCH_THUMB+` | {predef_detection} | |
28 | | `+_M_ARM+` | {predef_detection} | |
29 | | `+__arm__+` | {predef_detection} | |
30 | | `+__arm64+` | {predef_detection} | |
31 | | `+__thumb__+` | {predef_detection} | |
32 | | `+_M_ARM64+` | {predef_detection} | |
33 | | `+__aarch64__+` | {predef_detection} | |
34 | | `+__AARCH64EL__+` | {predef_detection} | |
35 | | `+__ARM_ARCH_7__+` | {predef_detection} | |
36 | | `+__ARM_ARCH_7A__+` | {predef_detection} | |
37 | | `+__ARM_ARCH_7R__+` | {predef_detection} | |
38 | | `+__ARM_ARCH_7M__+` | {predef_detection} | |
39 | | `+__ARM_ARCH_6K__+` | {predef_detection} | |
40 | | `+__ARM_ARCH_6Z__+` | {predef_detection} | |
41 | | `+__ARM_ARCH_6KZ__+` | {predef_detection} | |
42 | | `+__ARM_ARCH_6T2__+` | {predef_detection} | |
43 | | `+__ARM_ARCH_5TE__+` | {predef_detection} | |
44 | | `+__ARM_ARCH_5TEJ__+` | {predef_detection} | |
45 | | `+__ARM_ARCH_4T__+` | {predef_detection} | |
46 | | `+__ARM_ARCH_4__+` | {predef_detection} | |
7c673cae | 47 | |
f67539c2 TL |
48 | | `+__ARM_ARCH+` | V.0.0 |
49 | | `+__TARGET_ARCH_ARM+` | V.0.0 | |
50 | | `+__TARGET_ARCH_THUMB+` | V.0.0 | |
51 | | `+_M_ARM+` | V.0.0 | |
52 | | `+__arm64+` | 8.0.0 | |
53 | | `+_M_ARM64+` | 8.0.0 | |
54 | | `+__aarch64__+` | 8.0.0 | |
55 | | `+__AARCH64EL__+` | 8.0.0 | |
56 | | `+__ARM_ARCH_7__+` | 7.0.0 | |
57 | | `+__ARM_ARCH_7A__+` | 7.0.0 | |
58 | | `+__ARM_ARCH_7R__+` | 7.0.0 | |
59 | | `+__ARM_ARCH_7M__+` | 7.0.0 | |
60 | | `+__ARM_ARCH_6K__+` | 6.0.0 | |
61 | | `+__ARM_ARCH_6Z__+` | 6.0.0 | |
62 | | `+__ARM_ARCH_6KZ__+` | 6.0.0 | |
63 | | `+__ARM_ARCH_6T2__+` | 6.0.0 | |
64 | | `+__ARM_ARCH_5TE__+` | 5.0.0 | |
65 | | `+__ARM_ARCH_5TEJ__+` | 5.0.0 | |
66 | | `+__ARM_ARCH_4T__+` | 4.0.0 | |
67 | | `+__ARM_ARCH_4__+` | 4.0.0 | |
68 | |=== | |
69 | */ // end::reference[] | |
7c673cae FG |
70 | |
71 | #define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE | |
72 | ||
92f5a8d4 TL |
73 | #if \ |
74 | defined(__ARM_ARCH) || defined(__TARGET_ARCH_ARM) || \ | |
75 | defined(__TARGET_ARCH_THUMB) || defined(_M_ARM) || \ | |
76 | defined(__arm__) || defined(__arm64) || defined(__thumb__) || \ | |
77 | defined(_M_ARM64) || defined(__aarch64__) || defined(__AARCH64EL__) || \ | |
78 | defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \ | |
79 | defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || \ | |
80 | defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || \ | |
81 | defined(__ARM_ARCH_6KZ__) || defined(__ARM_ARCH_6T2__) || \ | |
82 | defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__) || \ | |
83 | defined(__ARM_ARCH_4T__) || defined(__ARM_ARCH_4__) | |
7c673cae | 84 | # undef BOOST_ARCH_ARM |
92f5a8d4 TL |
85 | # if !defined(BOOST_ARCH_ARM) && defined(__ARM_ARCH) |
86 | # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__ARM_ARCH,0,0) | |
7c673cae FG |
87 | # endif |
88 | # if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_ARM) | |
89 | # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_ARM,0,0) | |
90 | # endif | |
91 | # if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_THUMB) | |
92 | # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_THUMB,0,0) | |
93 | # endif | |
94 | # if !defined(BOOST_ARCH_ARM) && defined(_M_ARM) | |
95 | # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(_M_ARM,0,0) | |
96 | # endif | |
92f5a8d4 TL |
97 | # if !defined(BOOST_ARCH_ARM) && ( \ |
98 | defined(__arm64) || defined(_M_ARM64) || defined(__aarch64__) || \ | |
99 | defined(__AARCH64EL__) ) | |
100 | # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(8,0,0) | |
101 | # endif | |
102 | # if !defined(BOOST_ARCH_ARM) && ( \ | |
103 | defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \ | |
104 | defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) ) | |
105 | # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(7,0,0) | |
106 | # endif | |
107 | # if !defined(BOOST_ARCH_ARM) && ( \ | |
108 | defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || \ | |
109 | defined(__ARM_ARCH_6KZ__) || defined(__ARM_ARCH_6T2__) ) | |
110 | # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(6,0,0) | |
111 | # endif | |
112 | # if !defined(BOOST_ARCH_ARM) && ( \ | |
113 | defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__) ) | |
114 | # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(5,0,0) | |
115 | # endif | |
116 | # if !defined(BOOST_ARCH_ARM) && ( \ | |
117 | defined(__ARM_ARCH_4T__) || defined(__ARM_ARCH_4__) ) | |
118 | # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(4,0,0) | |
119 | # endif | |
7c673cae FG |
120 | # if !defined(BOOST_ARCH_ARM) |
121 | # define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_AVAILABLE | |
122 | # endif | |
123 | #endif | |
124 | ||
125 | #if BOOST_ARCH_ARM | |
126 | # define BOOST_ARCH_ARM_AVAILABLE | |
127 | #endif | |
128 | ||
1e59de90 TL |
129 | #if BOOST_ARCH_ARM |
130 | # if BOOST_ARCH_ARM >= BOOST_VERSION_NUMBER(8,0,0) | |
131 | # undef BOOST_ARCH_WORD_BITS_64 | |
132 | # define BOOST_ARCH_WORD_BITS_64 BOOST_VERSION_NUMBER_AVAILABLE | |
133 | # else | |
134 | # undef BOOST_ARCH_WORD_BITS_32 | |
135 | # define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE | |
136 | # endif | |
137 | #endif | |
138 | ||
7c673cae FG |
139 | #define BOOST_ARCH_ARM_NAME "ARM" |
140 | ||
141 | #endif | |
142 | ||
143 | #include <boost/predef/detail/test.h> | |
144 | BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_ARM,BOOST_ARCH_ARM_NAME) |