LLVM 20.0.0git
AArch64BuildAttributes.h
Go to the documentation of this file.
1//===-- AArch64BuildAttributes.h - AARch64 Build Attributes -----*- 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 contains enumerations and support routines for AArch64 build
10// attributes as defined in Build Attributes for the AArch64 document.
11//
12// Build Attributes for the ArmĀ® 64-bit Architecture (AArch64) 2024Q1
13//
14// https://github.com/ARM-software/abi-aa/pull/230
15//
16//===----------------------------------------------------------------------===//
17
18#ifndef LLVM_SUPPORT_AARCH64BUILDATTRIBUTES_H
19#define LLVM_SUPPORT_AARCH64BUILDATTRIBUTES_H
20
21#include "llvm/ADT/StringRef.h"
22
23namespace llvm {
24
25namespace AArch64BuildAttributes {
26
27/// AArch64 build attributes vendors IDs (a.k.a subsection name)
28enum VendorID : unsigned {
31 VENDOR_UNKNOWN = 404 // Treated as a private subsection name
32};
33StringRef getVendorName(unsigned const Vendor);
34VendorID getVendorID(StringRef const Vendor);
35
36enum SubsectionOptional : unsigned {
40};
41StringRef getOptionalStr(unsigned Optional);
44
45enum SubsectionType : unsigned { ULEB128 = 0, NTBS = 1, TYPE_NOT_FOUND = 404 };
46StringRef getTypeStr(unsigned Type);
49
50enum PauthABITags : unsigned {
54};
55StringRef getPauthABITagsStr(unsigned PauthABITag);
57
58enum FeatureAndBitsTags : unsigned {
63};
64StringRef getFeatureAndBitsTagsStr(unsigned FeatureAndBitsTag);
66
67enum FeatureAndBitsFlag : unsigned {
70 Feature_GCS_Flag = 1 << 2
71};
72} // namespace AArch64BuildAttributes
73} // namespace llvm
74
75#endif // LLVM_SUPPORT_AARCH64BUILDATTRIBUTES_H
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:51
The instances of the Type class are immutable: once they are created, they are never changed.
Definition: Type.h:45
SubsectionType getTypeID(StringRef Type)
StringRef getPauthABITagsStr(unsigned PauthABITag)
StringRef getVendorName(unsigned const Vendor)
StringRef getOptionalStr(unsigned Optional)
VendorID
AArch64 build attributes vendors IDs (a.k.a subsection name)
SubsectionOptional getOptionalID(StringRef Optional)
FeatureAndBitsTags getFeatureAndBitsTagsID(StringRef FeatureAndBitsTag)
VendorID getVendorID(StringRef const Vendor)
PauthABITags getPauthABITagsID(StringRef PauthABITag)
StringRef getTypeStr(unsigned Type)
StringRef getFeatureAndBitsTagsStr(unsigned FeatureAndBitsTag)
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18