Hexagon.h revision 11241abca5e2a313412fed594bb9d9fa2a2057fb
1//=-- Hexagon.h - Top-level interface for Hexagon 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 the LLVM 11// Hexagon back-end. 12// 13//===----------------------------------------------------------------------===// 14 15#ifndef TARGET_Hexagon_H 16#define TARGET_Hexagon_H 17 18#include <cassert> 19#include "MCTargetDesc/HexagonMCTargetDesc.h" 20#include "llvm/Target/TargetLowering.h" 21 22namespace llvm { 23 class FunctionPass; 24 class TargetMachine; 25 class HexagonTargetMachine; 26 class raw_ostream; 27 28 FunctionPass *createHexagonISelDag(HexagonTargetMachine &TM); 29 FunctionPass *createHexagonDelaySlotFillerPass(TargetMachine &TM); 30 FunctionPass *createHexagonFPMoverPass(TargetMachine &TM); 31 FunctionPass *createHexagonRemoveExtendOps(HexagonTargetMachine &TM); 32 FunctionPass *createHexagonCFGOptimizer(HexagonTargetMachine &TM); 33 34 FunctionPass* createHexagonSplitTFRCondSets(HexagonTargetMachine &TM); 35 FunctionPass* createHexagonExpandPredSpillCode(HexagonTargetMachine &TM); 36 37 FunctionPass *createHexagonHardwareLoops(); 38 FunctionPass *createHexagonPeephole(); 39 FunctionPass *createHexagonFixupHwLoops(); 40 41} // end namespace llvm; 42 43#define Hexagon_POINTER_SIZE 4 44 45#define Hexagon_PointerSize (Hexagon_POINTER_SIZE) 46#define Hexagon_PointerSize_Bits (Hexagon_POINTER_SIZE * 8) 47#define Hexagon_WordSize Hexagon_PointerSize 48#define Hexagon_WordSize_Bits Hexagon_PointerSize_Bits 49 50// allocframe saves LR and FP on stack before allocating 51// a new stack frame. This takes 8 bytes. 52#define HEXAGON_LRFP_SIZE 8 53 54#endif 55