//===- HexagonBaseInfo.h - Top level definitions for Hexagon ----*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file contains small standalone helper functions and enum definitions for // the Hexagon target useful for the compiler back-end and the MC libraries. // As such, it deliberately does not include references to LLVM core // code gen types, passes, etc.. // //===----------------------------------------------------------------------===// #ifndef LLVM_LIB_TARGET_HEXAGON_MCTARGETDESC_HEXAGONBASEINFO_H #define LLVM_LIB_TARGET_HEXAGON_MCTARGETDESC_HEXAGONBASEINFO_H #include "HexagonDepITypes.h" #include "MCTargetDesc/HexagonMCTargetDesc.h" namespace llvm { /// HexagonII - This namespace holds all of the target specific flags that /// instruction info tracks. namespace HexagonII { unsigned const TypeCVI_FIRST = …; unsigned const TypeCVI_LAST = …; enum AddrMode { … }; enum MemAccessSize { … }; // MCInstrDesc TSFlags // *** Must match HexagonInstrFormat*.td *** enum { … }; // *** The code above must match HexagonInstrFormat*.td *** // // Hexagon specific MO operand flag mask. enum HexagonMOTargetFlagVal { … }; // Hexagon Sub-instruction classes. enum SubInstructionGroup { … }; // Hexagon Compound classes. enum CompoundGroup { … }; enum InstParseBits { … }; enum InstIClassBits : unsigned { … }; LLVM_ATTRIBUTE_UNUSED static unsigned getMemAccessSizeInBytes(MemAccessSize S) { … } } // end namespace HexagonII } // end namespace llvm #endif // LLVM_LIB_TARGET_HEXAGON_MCTARGETDESC_HEXAGONBASEINFO_H