Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. //===- ARMAttributeParser.h - ARM Attribute Information Printer -*- 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. #ifndef LLVM_SUPPORT_ARMATTRIBUTEPARSER_H
  10. #define LLVM_SUPPORT_ARMATTRIBUTEPARSER_H
  11.  
  12. #include "ARMBuildAttributes.h"
  13. #include "ELFAttributeParser.h"
  14. #include "llvm/ADT/StringRef.h"
  15. #include "llvm/Support/Error.h"
  16.  
  17. namespace llvm {
  18.  
  19. class ScopedPrinter;
  20.  
  21. class ARMAttributeParser : public ELFAttributeParser {
  22.   struct DisplayHandler {
  23.     ARMBuildAttrs::AttrType attribute;
  24.     Error (ARMAttributeParser::*routine)(ARMBuildAttrs::AttrType);
  25.   };
  26.   static const DisplayHandler displayRoutines[];
  27.  
  28.   Error handler(uint64_t tag, bool &handled) override;
  29.  
  30.   Error stringAttribute(ARMBuildAttrs::AttrType tag);
  31.  
  32.   Error CPU_arch(ARMBuildAttrs::AttrType tag);
  33.   Error CPU_arch_profile(ARMBuildAttrs::AttrType tag);
  34.   Error ARM_ISA_use(ARMBuildAttrs::AttrType tag);
  35.   Error THUMB_ISA_use(ARMBuildAttrs::AttrType tag);
  36.   Error FP_arch(ARMBuildAttrs::AttrType tag);
  37.   Error WMMX_arch(ARMBuildAttrs::AttrType tag);
  38.   Error Advanced_SIMD_arch(ARMBuildAttrs::AttrType tag);
  39.   Error MVE_arch(ARMBuildAttrs::AttrType tag);
  40.   Error PCS_config(ARMBuildAttrs::AttrType tag);
  41.   Error ABI_PCS_R9_use(ARMBuildAttrs::AttrType tag);
  42.   Error ABI_PCS_RW_data(ARMBuildAttrs::AttrType tag);
  43.   Error ABI_PCS_RO_data(ARMBuildAttrs::AttrType tag);
  44.   Error ABI_PCS_GOT_use(ARMBuildAttrs::AttrType tag);
  45.   Error ABI_PCS_wchar_t(ARMBuildAttrs::AttrType tag);
  46.   Error ABI_FP_rounding(ARMBuildAttrs::AttrType tag);
  47.   Error ABI_FP_denormal(ARMBuildAttrs::AttrType tag);
  48.   Error ABI_FP_exceptions(ARMBuildAttrs::AttrType tag);
  49.   Error ABI_FP_user_exceptions(ARMBuildAttrs::AttrType tag);
  50.   Error ABI_FP_number_model(ARMBuildAttrs::AttrType tag);
  51.   Error ABI_align_needed(ARMBuildAttrs::AttrType tag);
  52.   Error ABI_align_preserved(ARMBuildAttrs::AttrType tag);
  53.   Error ABI_enum_size(ARMBuildAttrs::AttrType tag);
  54.   Error ABI_HardFP_use(ARMBuildAttrs::AttrType tag);
  55.   Error ABI_VFP_args(ARMBuildAttrs::AttrType tag);
  56.   Error ABI_WMMX_args(ARMBuildAttrs::AttrType tag);
  57.   Error ABI_optimization_goals(ARMBuildAttrs::AttrType tag);
  58.   Error ABI_FP_optimization_goals(ARMBuildAttrs::AttrType tag);
  59.   Error compatibility(ARMBuildAttrs::AttrType tag);
  60.   Error CPU_unaligned_access(ARMBuildAttrs::AttrType tag);
  61.   Error FP_HP_extension(ARMBuildAttrs::AttrType tag);
  62.   Error ABI_FP_16bit_format(ARMBuildAttrs::AttrType tag);
  63.   Error MPextension_use(ARMBuildAttrs::AttrType tag);
  64.   Error DIV_use(ARMBuildAttrs::AttrType tag);
  65.   Error DSP_extension(ARMBuildAttrs::AttrType tag);
  66.   Error T2EE_use(ARMBuildAttrs::AttrType tag);
  67.   Error Virtualization_use(ARMBuildAttrs::AttrType tag);
  68.   Error PAC_extension(ARMBuildAttrs::AttrType tag);
  69.   Error BTI_extension(ARMBuildAttrs::AttrType tag);
  70.   Error PACRET_use(ARMBuildAttrs::AttrType tag);
  71.   Error BTI_use(ARMBuildAttrs::AttrType tag);
  72.   Error nodefaults(ARMBuildAttrs::AttrType tag);
  73.   Error also_compatible_with(ARMBuildAttrs::AttrType tag);
  74.  
  75. public:
  76.   ARMAttributeParser(ScopedPrinter *sw)
  77.       : ELFAttributeParser(sw, ARMBuildAttrs::getARMAttributeTags(), "aeabi") {}
  78.   ARMAttributeParser()
  79.       : ELFAttributeParser(ARMBuildAttrs::getARMAttributeTags(), "aeabi") {}
  80. };
  81. }
  82.  
  83. #endif
  84.