]>
Commit | Line | Data |
---|---|---|
cbe34bb5 | 1 | /* Copyright (C) 2012-2017 Free Software Foundation, Inc. |
43e9d192 IB |
2 | Contributed by ARM Ltd. |
3 | ||
4 | This file is part of GCC. | |
5 | ||
6 | GCC is free software; you can redistribute it and/or modify it | |
7 | under the terms of the GNU General Public License as published by | |
8 | the Free Software Foundation; either version 3, or (at your option) | |
9 | any later version. | |
10 | ||
11 | GCC is distributed in the hope that it will be useful, but | |
12 | WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 | General Public License for more details. | |
15 | ||
16 | You should have received a copy of the GNU General Public License | |
17 | along with GCC; see the file COPYING3. If not see | |
18 | <http://www.gnu.org/licenses/>. */ | |
19 | ||
20 | /* This is a list of ISA extentsions in AArch64. | |
21 | ||
22 | Before using #include to read this file, define a macro: | |
23 | ||
04a99ebe | 24 | AARCH64_OPT_EXTENSION(EXT_NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, FEATURE_STRING) |
43e9d192 IB |
25 | |
26 | EXT_NAME is the name of the extension, represented as a string constant. | |
04a99ebe JG |
27 | FLAGS_CANONICAL is the canonical internal name for this flag. |
28 | FLAGS_ON are the bitwise-or of the features that enabling the extension | |
29 | adds, or zero if enabling this extension has no effect on other features. | |
30 | FLAGS_OFF are the bitwise-or of the features that disabling the extension | |
31 | removes, or zero if disabling this extension has no effect on other | |
32 | features. | |
7e1bcce3 KT |
33 | FEAT_STRING is a string containing the entries in the 'Features' field of |
34 | /proc/cpuinfo on a GNU/Linux system that correspond to this architecture | |
35 | extension being available. Sometimes multiple entries are needed to enable | |
36 | the extension (for example, the 'crypto' extension depends on four | |
37 | entries: aes, pmull, sha1, sha2 being present). In that case this field | |
04a99ebe | 38 | should contain a space (" ") separated list of the strings in 'Features' |
7e1bcce3 | 39 | that are required. Their order is not important. */ |
43e9d192 | 40 | |
04a99ebe | 41 | /* Enabling "fp" just enables "fp". |
c61465bd MW |
42 | Disabling "fp" also disables "simd", "crypto" and "fp16". */ |
43 | AARCH64_OPT_EXTENSION("fp", AARCH64_FL_FP, 0, AARCH64_FL_SIMD | AARCH64_FL_CRYPTO | AARCH64_FL_F16, "fp") | |
04a99ebe JG |
44 | |
45 | /* Enabling "simd" also enables "fp". | |
46 | Disabling "simd" also disables "crypto". */ | |
47 | AARCH64_OPT_EXTENSION("simd", AARCH64_FL_SIMD, AARCH64_FL_FP, AARCH64_FL_CRYPTO, "asimd") | |
48 | ||
49 | /* Enabling "crypto" also enables "fp", "simd". | |
50 | Disabling "crypto" just disables "crypto". */ | |
51 | AARCH64_OPT_EXTENSION("crypto", AARCH64_FL_CRYPTO, AARCH64_FL_FP | AARCH64_FL_SIMD, 0, "aes pmull sha1 sha2") | |
52 | ||
53 | /* Enabling or disabling "crc" only changes "crc". */ | |
54 | AARCH64_OPT_EXTENSION("crc", AARCH64_FL_CRC, 0, 0, "crc32") | |
55 | ||
56 | /* Enabling or disabling "lse" only changes "lse". */ | |
57 | AARCH64_OPT_EXTENSION("lse", AARCH64_FL_LSE, 0, 0, "atomics") | |
c61465bd MW |
58 | |
59 | /* Enabling "fp16" also enables "fp". | |
60 | Disabling "fp16" just disables "fp16". */ | |
849ef9ca | 61 | AARCH64_OPT_EXTENSION("fp16", AARCH64_FL_F16, AARCH64_FL_FP, 0, "fphp asimdhp") |
cd8b19af | 62 | |
78295eff JG |
63 | /* Enabling or disabling "rcpc" only changes "rcpc". */ |
64 | AARCH64_OPT_EXTENSION("rcpc", AARCH64_FL_RCPC, 0, 0, "lrcpc") | |
65 | ||
43f84f6c JW |
66 | /* Enabling "rdma" also enables "fp", "simd". |
67 | Disabling "rdma" just disables "rdma". */ | |
e42e4a0d | 68 | AARCH64_OPT_EXTENSION("rdma", AARCH64_FL_RDMA, AARCH64_FL_FP | AARCH64_FL_SIMD, 0, "asimdrdm") |
43f84f6c | 69 | |
cd8b19af | 70 | #undef AARCH64_OPT_EXTENSION |