blob: db270739ea4201e61ba333593aad090a9a1e0199 [file] [log] [blame]
Rafael Espindola7bc59bc2006-05-14 22:18:28 +00001//===-- ARM.h - Top-level interface for ARM representation---- --*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file was developed by the "Instituto Nokia de Tecnologia" and
6// is distributed under the University of Illinois Open Source
7// License. See LICENSE.TXT for details.
8//
9//===----------------------------------------------------------------------===//
10//
11// This file contains the entry points for global functions defined in the LLVM
12// ARM back-end.
13//
14//===----------------------------------------------------------------------===//
15
16#ifndef TARGET_ARM_H
17#define TARGET_ARM_H
18
19#include <iosfwd>
20#include <cassert>
21
22namespace llvm {
Rafael Espindola6f602de2006-08-24 16:13:15 +000023 // Enums corresponding to ARM condition codes
24 namespace ARMCC {
25 enum CondCodes {
Rafael Espindola5f450d22006-09-02 20:24:25 +000026 EQ,
Rafael Espindolacdda88c2006-08-24 17:19:08 +000027 NE,
Rafael Espindola5f450d22006-09-02 20:24:25 +000028 CS,
29 CC,
30 MI,
31 PL,
32 VS,
33 VC,
34 HI,
35 LS,
36 GE,
37 LT,
38 GT,
39 LE,
40 AL
Rafael Espindola6f602de2006-08-24 16:13:15 +000041 };
42 }
43
Rafael Espindola3ad5e5c2006-09-13 12:09:43 +000044 namespace ARMShift {
45 enum ShiftTypes {
46 LSL,
47 LSR,
48 ASR,
49 ROR,
50 RRX
51 };
52 }
53
Rafael Espindola7bc59bc2006-05-14 22:18:28 +000054 class FunctionPass;
55 class TargetMachine;
56
57 FunctionPass *createARMISelDag(TargetMachine &TM);
58 FunctionPass *createARMCodePrinterPass(std::ostream &OS, TargetMachine &TM);
Rafael Espindola71f3b942006-09-19 15:49:25 +000059 FunctionPass *createARMFixMulPass();
Rafael Espindola7bc59bc2006-05-14 22:18:28 +000060} // end namespace llvm;
61
62// Defines symbolic names for ARM registers. This defines a mapping from
63// register name to register number.
64//
65#include "ARMGenRegisterNames.inc"
66
67// Defines symbolic names for the ARM instructions.
68//
69#include "ARMGenInstrNames.inc"
70
71
72#endif