1//===-- HexagonBaseInfo.h - Top level definitions for Hexagon --*- C++ -*--===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file contains small standalone helper functions and enum definitions for 11// the Hexagon target useful for the compiler back-end and the MC libraries. 12// As such, it deliberately does not include references to LLVM core 13// code gen types, passes, etc.. 14// 15//===----------------------------------------------------------------------===// 16 17#ifndef HEXAGONBASEINFO_H 18#define HEXAGONBASEINFO_H 19 20namespace llvm { 21 22/// HexagonII - This namespace holds all of the target specific flags that 23/// instruction info tracks. 24/// 25namespace HexagonII { 26 // *** The code below must match HexagonInstrFormat*.td *** // 27 28 // Insn types. 29 // *** Must match HexagonInstrFormat*.td *** 30 enum Type { 31 TypePSEUDO = 0, 32 TypeALU32 = 1, 33 TypeCR = 2, 34 TypeJR = 3, 35 TypeJ = 4, 36 TypeLD = 5, 37 TypeST = 6, 38 TypeSYSTEM = 7, 39 TypeXTYPE = 8, 40 TypeMEMOP = 9, 41 TypeNV = 10, 42 TypePREFIX = 30, // Such as extenders. 43 TypeMARKER = 31 // Such as end of a HW loop. 44 }; 45 46 47 48 // MCInstrDesc TSFlags 49 // *** Must match HexagonInstrFormat*.td *** 50 enum { 51 // This 5-bit field describes the insn type. 52 TypePos = 0, 53 TypeMask = 0x1f, 54 55 // Solo instructions. 56 SoloPos = 5, 57 SoloMask = 0x1, 58 59 // Predicated instructions. 60 PredicatedPos = 6, 61 PredicatedMask = 0x1 62 }; 63 64 // *** The code above must match HexagonInstrFormat*.td *** // 65 66} // End namespace HexagonII. 67 68} // End namespace llvm. 69 70#endif 71