blob: 7221e906342ed2d1e7d98d0b0b0bdaa5f8a34730 [file] [log] [blame]
Jia Liub22310f2012-02-18 12:03:15 +00001//===-- HexagonBaseInfo.h - Top level definitions for Hexagon --*- C++ -*--===//
Brendon Cahoon6f358372012-02-08 18:25:47 +00002//
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 {
Sirish Pande545983e2012-02-09 15:20:33 +000026 // *** The code below must match HexagonInstrFormat*.td *** //
Brendon Cahoon6f358372012-02-08 18:25:47 +000027
Sirish Pandef8e5e3c2012-05-03 21:52:53 +000028 // 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
Brendon Cahoon6f358372012-02-08 18:25:47 +000048 // MCInstrDesc TSFlags
Sirish Pandef8e5e3c2012-05-03 21:52:53 +000049 // *** Must match HexagonInstrFormat*.td ***
Brendon Cahoon6f358372012-02-08 18:25:47 +000050 enum {
Sirish Pandef8e5e3c2012-05-03 21:52:53 +000051 // This 5-bit field describes the insn type.
52 TypePos = 0,
53 TypeMask = 0x1f,
54
55 // Solo instructions.
56 SoloPos = 5,
57 SoloMask = 0x1,
Brendon Cahoon6f358372012-02-08 18:25:47 +000058
59 // Predicated instructions.
Sirish Pandef8e5e3c2012-05-03 21:52:53 +000060 PredicatedPos = 6,
Brendon Cahoon6f358372012-02-08 18:25:47 +000061 PredicatedMask = 0x1
62 };
63
Sirish Pande545983e2012-02-09 15:20:33 +000064 // *** The code above must match HexagonInstrFormat*.td *** //
Brendon Cahoon6f358372012-02-08 18:25:47 +000065
66} // End namespace HexagonII.
67
68} // End namespace llvm.
69
70#endif