Hexagon.h revision d239ff67f210094c205be7e57332948caecf6a24
1b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum//=-- Hexagon.h - Top-level interface for Hexagon representation --*- C++ -*-=// 2b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum// 3b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum// The LLVM Compiler Infrastructure 4b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum// 5b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum// This file is distributed under the University of Illinois Open Source 6b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum// License. See LICENSE.TXT for details. 7b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum// 8b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum//===----------------------------------------------------------------------===// 9b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum// 10b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum// This file contains the entry points for global functions defined in the LLVM 11b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum// Hexagon back-end. 12b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum// 13b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum//===----------------------------------------------------------------------===// 14b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum 15b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum#ifndef TARGET_Hexagon_H 16b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum#define TARGET_Hexagon_H 17b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum 18b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum#include <cassert> 19d239ff67f210094c205be7e57332948caecf6a24Tony Linthicum#include "MCTargetDesc/HexagonMCTargetDesc.h" 20b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum#include "llvm/Target/TargetLowering.h" 21b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum 22b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicumnamespace llvm { 23b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum class FunctionPass; 24b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum class TargetMachine; 25b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum class HexagonTargetMachine; 26b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum class raw_ostream; 27b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum 28b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum FunctionPass *createHexagonISelDag(HexagonTargetMachine &TM); 29b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum FunctionPass *createHexagonDelaySlotFillerPass(TargetMachine &TM); 30b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum FunctionPass *createHexagonFPMoverPass(TargetMachine &TM); 31b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum FunctionPass *createHexagonRemoveExtendOps(HexagonTargetMachine &TM); 32b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum FunctionPass *createHexagonCFGOptimizer(HexagonTargetMachine &TM); 33b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum 34b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum FunctionPass* createHexagonSplitTFRCondSets(HexagonTargetMachine &TM); 35b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum FunctionPass* createHexagonExpandPredSpillCode(HexagonTargetMachine &TM); 36b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum 37b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum FunctionPass *createHexagonHardwareLoops(); 38b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum FunctionPass *createHexagonOptimizeSZExtends(); 39b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum FunctionPass *createHexagonFixupHwLoops(); 40b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum 41b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum} // end namespace llvm; 42b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum 43b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum#define Hexagon_POINTER_SIZE 4 44b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum 45b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum#define Hexagon_PointerSize (Hexagon_POINTER_SIZE) 46b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum#define Hexagon_PointerSize_Bits (Hexagon_POINTER_SIZE * 8) 47b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum#define Hexagon_WordSize Hexagon_PointerSize 48b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum#define Hexagon_WordSize_Bits Hexagon_PointerSize_Bits 49b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum 50b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum// allocframe saves LR and FP on stack before allocating 51b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum// a new stack frame. This takes 8 bytes. 52b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum#define HEXAGON_LRFP_SIZE 8 53b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum 54b4b54153ad760c69a00a08531abef4ed434a5092Tony Linthicum#endif 55