1//===-- ARMBuildAttrs.cpp - ARM Build Attributes --------------------------===//
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#include "llvm/Support/ARMBuildAttributes.h"
10
11using namespace llvm;
12
13static const TagNameItem tagData[] = {
14 {.attr: ARMBuildAttrs::File, .tagName: "Tag_File"},
15 {.attr: ARMBuildAttrs::Section, .tagName: "Tag_Section"},
16 {.attr: ARMBuildAttrs::Symbol, .tagName: "Tag_Symbol"},
17 {.attr: ARMBuildAttrs::CPU_raw_name, .tagName: "Tag_CPU_raw_name"},
18 {.attr: ARMBuildAttrs::CPU_name, .tagName: "Tag_CPU_name"},
19 {.attr: ARMBuildAttrs::CPU_arch, .tagName: "Tag_CPU_arch"},
20 {.attr: ARMBuildAttrs::CPU_arch_profile, .tagName: "Tag_CPU_arch_profile"},
21 {.attr: ARMBuildAttrs::ARM_ISA_use, .tagName: "Tag_ARM_ISA_use"},
22 {.attr: ARMBuildAttrs::THUMB_ISA_use, .tagName: "Tag_THUMB_ISA_use"},
23 {.attr: ARMBuildAttrs::FP_arch, .tagName: "Tag_FP_arch"},
24 {.attr: ARMBuildAttrs::WMMX_arch, .tagName: "Tag_WMMX_arch"},
25 {.attr: ARMBuildAttrs::Advanced_SIMD_arch, .tagName: "Tag_Advanced_SIMD_arch"},
26 {.attr: ARMBuildAttrs::MVE_arch, .tagName: "Tag_MVE_arch"},
27 {.attr: ARMBuildAttrs::PCS_config, .tagName: "Tag_PCS_config"},
28 {.attr: ARMBuildAttrs::ABI_PCS_R9_use, .tagName: "Tag_ABI_PCS_R9_use"},
29 {.attr: ARMBuildAttrs::ABI_PCS_RW_data, .tagName: "Tag_ABI_PCS_RW_data"},
30 {.attr: ARMBuildAttrs::ABI_PCS_RO_data, .tagName: "Tag_ABI_PCS_RO_data"},
31 {.attr: ARMBuildAttrs::ABI_PCS_GOT_use, .tagName: "Tag_ABI_PCS_GOT_use"},
32 {.attr: ARMBuildAttrs::ABI_PCS_wchar_t, .tagName: "Tag_ABI_PCS_wchar_t"},
33 {.attr: ARMBuildAttrs::ABI_FP_rounding, .tagName: "Tag_ABI_FP_rounding"},
34 {.attr: ARMBuildAttrs::ABI_FP_denormal, .tagName: "Tag_ABI_FP_denormal"},
35 {.attr: ARMBuildAttrs::ABI_FP_exceptions, .tagName: "Tag_ABI_FP_exceptions"},
36 {.attr: ARMBuildAttrs::ABI_FP_user_exceptions, .tagName: "Tag_ABI_FP_user_exceptions"},
37 {.attr: ARMBuildAttrs::ABI_FP_number_model, .tagName: "Tag_ABI_FP_number_model"},
38 {.attr: ARMBuildAttrs::ABI_align_needed, .tagName: "Tag_ABI_align_needed"},
39 {.attr: ARMBuildAttrs::ABI_align_preserved, .tagName: "Tag_ABI_align_preserved"},
40 {.attr: ARMBuildAttrs::ABI_enum_size, .tagName: "Tag_ABI_enum_size"},
41 {.attr: ARMBuildAttrs::ABI_HardFP_use, .tagName: "Tag_ABI_HardFP_use"},
42 {.attr: ARMBuildAttrs::ABI_VFP_args, .tagName: "Tag_ABI_VFP_args"},
43 {.attr: ARMBuildAttrs::ABI_WMMX_args, .tagName: "Tag_ABI_WMMX_args"},
44 {.attr: ARMBuildAttrs::ABI_optimization_goals, .tagName: "Tag_ABI_optimization_goals"},
45 {.attr: ARMBuildAttrs::ABI_FP_optimization_goals, .tagName: "Tag_ABI_FP_optimization_goals"},
46 {.attr: ARMBuildAttrs::compatibility, .tagName: "Tag_compatibility"},
47 {.attr: ARMBuildAttrs::CPU_unaligned_access, .tagName: "Tag_CPU_unaligned_access"},
48 {.attr: ARMBuildAttrs::FP_HP_extension, .tagName: "Tag_FP_HP_extension"},
49 {.attr: ARMBuildAttrs::ABI_FP_16bit_format, .tagName: "Tag_ABI_FP_16bit_format"},
50 {.attr: ARMBuildAttrs::MPextension_use, .tagName: "Tag_MPextension_use"},
51 {.attr: ARMBuildAttrs::DIV_use, .tagName: "Tag_DIV_use"},
52 {.attr: ARMBuildAttrs::DSP_extension, .tagName: "Tag_DSP_extension"},
53 {.attr: ARMBuildAttrs::PAC_extension, .tagName: "Tag_PAC_extension"},
54 {.attr: ARMBuildAttrs::BTI_extension, .tagName: "Tag_BTI_extension"},
55 {.attr: ARMBuildAttrs::BTI_use, .tagName: "Tag_BTI_use"},
56 {.attr: ARMBuildAttrs::PACRET_use, .tagName: "Tag_PACRET_use"},
57 {.attr: ARMBuildAttrs::nodefaults, .tagName: "Tag_nodefaults"},
58 {.attr: ARMBuildAttrs::also_compatible_with, .tagName: "Tag_also_compatible_with"},
59 {.attr: ARMBuildAttrs::T2EE_use, .tagName: "Tag_T2EE_use"},
60 {.attr: ARMBuildAttrs::conformance, .tagName: "Tag_conformance"},
61 {.attr: ARMBuildAttrs::Virtualization_use, .tagName: "Tag_Virtualization_use"},
62
63 // Legacy Names
64 {.attr: ARMBuildAttrs::FP_arch, .tagName: "Tag_VFP_arch"},
65 {.attr: ARMBuildAttrs::FP_HP_extension, .tagName: "Tag_VFP_HP_extension"},
66 {.attr: ARMBuildAttrs::ABI_align_needed, .tagName: "Tag_ABI_align8_needed"},
67 {.attr: ARMBuildAttrs::ABI_align_preserved, .tagName: "Tag_ABI_align8_preserved"},
68};
69
70constexpr TagNameMap ARMAttributeTags{tagData};
71const TagNameMap &llvm::ARMBuildAttrs::getARMAttributeTags() {
72 return ARMAttributeTags;
73}
74