blob: 2f986b3cfe2070f185c2cfcbe7921b69436e2357 [file] [log] [blame]
Dan Gohmanf17a25c2007-07-18 16:29:46 +00001//===-- IA64.h - Top-level interface for IA64 representation ------*- C++ -*-===//
2// The LLVM Compiler Infrastructure
3//
Chris Lattner081ce942007-12-29 20:36:04 +00004// This file is distributed under the University of Illinois Open Source
5// License. See LICENSE.TXT for details.
Dan Gohmanf17a25c2007-07-18 16:29:46 +00006//
7//===----------------------------------------------------------------------===//
8//
9// This file contains the entry points for global functions defined in the IA64
10// target library, as used by the LLVM JIT.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef TARGET_IA64_H
15#define TARGET_IA64_H
16
Bill Wendling5ed22ac2009-04-29 23:29:43 +000017#include "llvm/Target/TargetMachine.h"
18
Dan Gohmanf17a25c2007-07-18 16:29:46 +000019namespace llvm {
20
21class IA64TargetMachine;
22class FunctionPass;
David Greene302008d2009-07-14 20:18:05 +000023class formatted_raw_ostream;
Dan Gohmanf17a25c2007-07-18 16:29:46 +000024
25/// createIA64DAGToDAGInstructionSelector - This pass converts an LLVM
26/// function into IA64 machine code in a sane, DAG->DAG transform.
27///
28FunctionPass *createIA64DAGToDAGInstructionSelector(IA64TargetMachine &TM);
29
30/// createIA64BundlingPass - This pass adds stop bits and bundles
31/// instructions.
32///
33FunctionPass *createIA64BundlingPass(IA64TargetMachine &TM);
34
35/// createIA64CodePrinterPass - Returns a pass that prints the IA64
36/// assembly code for a MachineFunction to the given output stream,
37/// using the given target machine description. This should work
38/// regardless of whether the function is in SSA form.
39///
David Greene302008d2009-07-14 20:18:05 +000040FunctionPass *createIA64CodePrinterPass(formatted_raw_ostream &o,
Daniel Dunbarfe5939f2009-07-15 20:24:03 +000041 TargetMachine &tm,
Bill Wendling5ed22ac2009-04-29 23:29:43 +000042 bool verbose);
Dan Gohmanf17a25c2007-07-18 16:29:46 +000043
Daniel Dunbar0b0441e2009-07-18 23:03:22 +000044extern Target TheIA64Target;
45
Dan Gohmanf17a25c2007-07-18 16:29:46 +000046} // End llvm namespace
47
48// Defines symbolic names for IA64 registers. This defines a mapping from
49// register name to register number.
50//
51#include "IA64GenRegisterNames.inc"
52
53// Defines symbolic names for the IA64 instructions.
54//
55#include "IA64GenInstrNames.inc"
56
57#endif
58
59