LLVM 20.0.0git
AArch64CPUFeatures.inc
Go to the documentation of this file.
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.
24enum 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 RESERVED_FEAT_SHA1, // previously used and now ABI legacy
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 FEAT_PREDRES,
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 FEAT_LS64_ACCDATA,
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