SystemZ.h revision 22fee2dff4c43b551aefa44a96ca74fcade6bfac
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
20namespace 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
50  extern Target TheSystemZTarget;
51
52} // end namespace llvm;
53
54// Defines symbolic names for SystemZ registers.
55// This defines a mapping from register name to register number.
56#define GET_REGINFO_ENUM
57#include "SystemZGenRegisterInfo.inc"
58
59// Defines symbolic names for the SystemZ instructions.
60#define GET_INSTRINFO_ENUM
61#include "SystemZGenInstrInfo.inc"
62
63#endif
64