diff options
author | Tony Linthicum <tlinth@codeaurora.org> | 2011-12-12 21:14:40 +0000 |
---|---|---|
committer | Tony Linthicum <tlinth@codeaurora.org> | 2011-12-12 21:14:40 +0000 |
commit | 1213a7a57fdcb6c875b3f79103fc96d3e9d30b40 (patch) | |
tree | 531d34e916e847cebbd717082d4f696a51610812 /llvm/lib/Target/Hexagon/Hexagon.h | |
parent | 45c41641664d8ff44c03f6205312d347081882b0 (diff) | |
download | bcm5719-llvm-1213a7a57fdcb6c875b3f79103fc96d3e9d30b40.tar.gz bcm5719-llvm-1213a7a57fdcb6c875b3f79103fc96d3e9d30b40.zip |
Hexagon backend support
llvm-svn: 146412
Diffstat (limited to 'llvm/lib/Target/Hexagon/Hexagon.h')
-rw-r--r-- | llvm/lib/Target/Hexagon/Hexagon.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/llvm/lib/Target/Hexagon/Hexagon.h b/llvm/lib/Target/Hexagon/Hexagon.h new file mode 100644 index 00000000000..ced3e9f8469 --- /dev/null +++ b/llvm/lib/Target/Hexagon/Hexagon.h @@ -0,0 +1,68 @@ +//=-- Hexagon.h - Top-level interface for Hexagon representation --*- C++ -*-=// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file contains the entry points for global functions defined in the LLVM +// Hexagon back-end. +// +//===----------------------------------------------------------------------===// + +#ifndef TARGET_Hexagon_H +#define TARGET_Hexagon_H + +#include <cassert> +#include "llvm/Target/TargetLowering.h" + +namespace llvm { + class FunctionPass; + class TargetMachine; + class HexagonTargetMachine; + class raw_ostream; + + FunctionPass *createHexagonISelDag(HexagonTargetMachine &TM); + FunctionPass *createHexagonDelaySlotFillerPass(TargetMachine &TM); + FunctionPass *createHexagonFPMoverPass(TargetMachine &TM); + FunctionPass *createHexagonRemoveExtendOps(HexagonTargetMachine &TM); + FunctionPass *createHexagonCFGOptimizer(HexagonTargetMachine &TM); + + FunctionPass* createHexagonSplitTFRCondSets(HexagonTargetMachine &TM); + FunctionPass* createHexagonExpandPredSpillCode(HexagonTargetMachine &TM); + + FunctionPass *createHexagonHardwareLoops(); + FunctionPass *createHexagonOptimizeSZExtends(); + FunctionPass *createHexagonFixupHwLoops(); + + extern Target TheHexagonTarget; + +} // end namespace llvm; + +// Defines symbolic names for Hexagon instructions and registers. +// This defines a mapping from register name to register number. +// + +#define GET_REGINFO_ENUM +#include "HexagonGenRegisterInfo.inc" + +#define GET_INSTRINFO_ENUM +#include "HexagonGenInstrInfo.inc" + +#define GET_SUBTARGETINFO_ENUM +#include "HexagonGenSubtargetInfo.inc" + +#define Hexagon_POINTER_SIZE 4 + +#define Hexagon_PointerSize (Hexagon_POINTER_SIZE) +#define Hexagon_PointerSize_Bits (Hexagon_POINTER_SIZE * 8) +#define Hexagon_WordSize Hexagon_PointerSize +#define Hexagon_WordSize_Bits Hexagon_PointerSize_Bits + +// allocframe saves LR and FP on stack before allocating +// a new stack frame. This takes 8 bytes. +#define HEXAGON_LRFP_SIZE 8 + +#endif |