1 | //===- AArch64CPUFeatures.inc - AArch64 CPU Features enum -------*- C++ -*-===// |
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | // |
9 | // This file defines the CPUFeatures enum for AArch64 to facilitate better |
10 | // testing of this code between LLVM and compiler-rt, primarily that the files |
11 | // are an exact match. |
12 | // |
13 | // This file has two identical copies. The primary copy lives in LLVM and |
14 | // the other one sits in compiler-rt/lib/builtins/cpu_model directory. To make |
15 | // changes in this file, first modify the primary copy and copy it over to |
16 | // compiler-rt. compiler-rt tests will fail if the two files are not synced up. |
17 | // |
18 | //===----------------------------------------------------------------------===// |
19 | |
20 | #ifndef AARCH64_CPU_FEATURS_INC_H |
21 | #define AARCH64_CPU_FEATURS_INC_H |
22 | |
23 | // Function Multi Versioning CPU features. |
24 | enum CPUFeatures { |
25 | FEAT_RNG, |
26 | FEAT_FLAGM, |
27 | FEAT_FLAGM2, |
28 | FEAT_FP16FML, |
29 | FEAT_DOTPROD, |
30 | FEAT_SM4, |
31 | FEAT_RDM, |
32 | FEAT_LSE, |
33 | FEAT_FP, |
34 | FEAT_SIMD, |
35 | FEAT_CRC, |
36 | FEAT_CSSC, |
37 | FEAT_SHA2, |
38 | FEAT_SHA3, |
39 | RESERVED_FEAT_AES, // previously used and now ABI legacy |
40 | FEAT_PMULL, |
41 | FEAT_FP16, |
42 | FEAT_DIT, |
43 | FEAT_DPB, |
44 | FEAT_DPB2, |
45 | FEAT_JSCVT, |
46 | FEAT_FCMA, |
47 | FEAT_RCPC, |
48 | FEAT_RCPC2, |
49 | FEAT_FRINTTS, |
50 | RESERVED_FEAT_DGH, // previously used and now ABI legacy |
51 | FEAT_I8MM, |
52 | FEAT_BF16, |
53 | RESERVED_FEAT_EBF16, // previously used and now ABI legacy |
54 | RESERVED_FEAT_RPRES, // previously used and now ABI legacy |
55 | FEAT_SVE, |
56 | RESERVED_FEAT_SVE_BF16, // previously used and now ABI legacy |
57 | RESERVED_FEAT_SVE_EBF16, // previously used and now ABI legacy |
58 | RESERVED_FEAT_SVE_I8MM, // previously used and now ABI legacy |
59 | FEAT_SVE_F32MM, |
60 | FEAT_SVE_F64MM, |
61 | FEAT_SVE2, |
62 | RESERVED_FEAT_SVE_AES, // previously used and now ABI legacy |
63 | FEAT_SVE_PMULL128, |
64 | FEAT_SVE_BITPERM, |
65 | FEAT_SVE_SHA3, |
66 | FEAT_SVE_SM4, |
67 | FEAT_SME, |
68 | RESERVED_FEAT_MEMTAG, // previously used and now ABI legacy |
69 | FEAT_MEMTAG2, |
70 | RESERVED_FEAT_MEMTAG3, // previously used and now ABI legacy |
71 | FEAT_SB, |
72 | RESERVED_FEAT_PREDRES, // previously used and now ABI legacy |
73 | RESERVED_FEAT_SSBS, // previously used and now ABI legacy |
74 | FEAT_SSBS2, |
75 | FEAT_BTI, |
76 | RESERVED_FEAT_LS64, // previously used and now ABI legacy |
77 | RESERVED_FEAT_LS64_V, // previously used and now ABI legacy |
78 | RESERVED_FEAT_LS64_ACCDATA, // previously used and now ABI legacy |
79 | FEAT_WFXT, |
80 | FEAT_SME_F64, |
81 | FEAT_SME_I64, |
82 | FEAT_SME2, |
83 | FEAT_RCPC3, |
84 | FEAT_MOPS, |
85 | FEAT_MAX, |
86 | FEAT_EXT = 62, // Reserved to indicate presence of additional features field |
87 | // in __aarch64_cpu_features |
88 | FEAT_INIT // Used as flag of features initialization completion |
89 | }; |
90 | |
91 | #endif |
92 | |