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_SHA1, 37 FEAT_SHA2, 38 FEAT_SHA3, 39 FEAT_AES, 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 FEAT_DGH, 51 FEAT_I8MM, 52 FEAT_BF16, 53 FEAT_EBF16, 54 FEAT_RPRES, 55 FEAT_SVE, 56 FEAT_SVE_BF16, 57 FEAT_SVE_EBF16, 58 FEAT_SVE_I8MM, 59 FEAT_SVE_F32MM, 60 FEAT_SVE_F64MM, 61 FEAT_SVE2, 62 FEAT_SVE_AES, 63 FEAT_SVE_PMULL128, 64 FEAT_SVE_BITPERM, 65 FEAT_SVE_SHA3, 66 FEAT_SVE_SM4, 67 FEAT_SME, 68 FEAT_MEMTAG, 69 FEAT_MEMTAG2, 70 FEAT_MEMTAG3, 71 FEAT_SB, 72 FEAT_PREDRES, 73 FEAT_SSBS, 74 FEAT_SSBS2, 75 FEAT_BTI, 76 FEAT_LS64, 77 FEAT_LS64_V, 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 92