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 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