SystemZ.h revision ae46db85a946ef49f9febc3eca85b8cfad622ccb
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 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(raw_ostream &o,
50                                            SystemZTargetMachine &tm,
51                                            CodeGenOpt::Level OptLevel,
52                                            bool verbose);
53
54} // end namespace llvm;
55
56// Defines symbolic names for SystemZ registers.
57// This defines a mapping from register name to register number.
58#include "SystemZGenRegisterNames.inc"
59
60// Defines symbolic names for the SystemZ instructions.
61#include "SystemZGenInstrNames.inc"
62
63#endif
64