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 20 namespace llvm { 21 22 /// HexagonII - This namespace holds all of the target specific flags that 23 /// instruction info tracks. 24 /// 25 namespace 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