466b44787c812b76623ed74e4c7384c448dbcd22
[oota-llvm.git] / lib / Target / SystemZ / SystemZ.h
1 //=-- SystemZ.h - Top-level interface for SystemZ representation -*- 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 the entry points for global functions defined in
11 // the LLVM SystemZ backend.
12 //
13 //===----------------------------------------------------------------------===//
14
15 #ifndef LLVM_TARGET_SystemZ_H
16 #define LLVM_TARGET_SystemZ_H
17
18 #include "llvm/Target/TargetMachine.h"
19
20 namespace llvm {
21   class SystemZTargetMachine;
22   class FunctionPass;
23   class formatted_raw_ostream;
24
25   namespace SystemZCC {
26     // SystemZ specific condition code. These correspond to SYSTEMZ_*_COND in
27     // SystemZInstrInfo.td. They must be kept in synch.
28     enum CondCodes {
29       O   = 0,
30       H   = 1,
31       NLE = 2,
32       L   = 3,
33       NHE = 4,
34       LH  = 5,
35       NE  = 6,
36       E   = 7,
37       NLH = 8,
38       HE  = 9,
39       NL  = 10,
40       LE  = 11,
41       NH  = 12,
42       NO  = 13,
43       INVALID = -1
44     };
45   }
46
47   FunctionPass *createSystemZISelDag(SystemZTargetMachine &TM,
48                                     CodeGenOpt::Level OptLevel);
49   FunctionPass *createSystemZCodePrinterPass(formatted_raw_ostream &o,
50                                              TargetMachine &tm,
51                                              bool verbose);
52
53   extern Target TheSystemZTarget;
54
55 } // end namespace llvm;
56
57 // Defines symbolic names for SystemZ registers.
58 // This defines a mapping from register name to register number.
59 #include "SystemZGenRegisterNames.inc"
60
61 // Defines symbolic names for the SystemZ instructions.
62 #include "SystemZGenInstrNames.inc"
63
64 #endif