1//=-- Hexagon.h - Top-level interface for Hexagon representation --*- C++ -*-=//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file contains the entry points for global functions defined in the LLVM
10// Hexagon back-end.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_LIB_TARGET_HEXAGON_HEXAGON_H
15#define LLVM_LIB_TARGET_HEXAGON_HEXAGON_H
16
17#include "llvm/Support/CodeGen.h"
18
19namespace llvm {
20class HexagonTargetMachine;
21class ImmutablePass;
22class ModulePass;
23class PassRegistry;
24class FunctionPass;
25class Pass;
26
27extern char &HexagonCopyHoistingID;
28extern char &HexagonExpandCondsetsID;
29extern char &HexagonTfrCleanupID;
30extern char &HexagonLiveVariablesID;
31void initializeHexagonAlignGlobalArraysPass(PassRegistry &);
32void initializeHexagonAsmPrinterPass(PassRegistry &);
33void initializeHexagonBitSimplifyPass(PassRegistry &);
34void initializeHexagonBranchRelaxationPass(PassRegistry &);
35void initializeHexagonCFGOptimizerPass(PassRegistry &);
36void initializeHexagonCommonGEPPass(PassRegistry &);
37void initializeHexagonCopyHoistingPass(PassRegistry &);
38void initializeHexagonConstExtendersPass(PassRegistry &);
39void initializeHexagonConstPropagationPass(PassRegistry &);
40void initializeHexagonCopyToCombinePass(PassRegistry &);
41void initializeHexagonDAGToDAGISelLegacyPass(PassRegistry &);
42void initializeHexagonEarlyIfConversionPass(PassRegistry &);
43void initializeHexagonExpandCondsetsPass(PassRegistry &);
44void initializeHexagonGenMemAbsolutePass(PassRegistry &);
45void initializeHexagonGenMuxPass(PassRegistry &);
46void initializeHexagonGlobalSchedulerPass(PassRegistry &);
47void initializeHexagonHardwareLoopsPass(PassRegistry &);
48void initializeHexagonHVXSaveRemarkPass(PassRegistry &);
49void initializeHexagonLiveVariablesPass(PassRegistry &);
50void initializeHexagonLoopIdiomRecognizeLegacyPassPass(PassRegistry &);
51void initializeHexagonLoopAlignPass(PassRegistry &);
52void initializeHexagonLoopReschedulingPass(PassRegistry &);
53void initializeHexagonMaskPass(PassRegistry &);
54void initializeHexagonNewValueJumpPass(PassRegistry &);
55void initializeHexagonOptAddrModePass(PassRegistry &);
56void initializeHexagonPacketizerPass(PassRegistry &);
57void initializeHexagonRDFOptPass(PassRegistry &);
58void initializeHexagonSplitDoubleRegsPass(PassRegistry &);
59void initializeHexagonTfrCleanupPass(PassRegistry &);
60void initializeHexagonVExtractPass(PassRegistry &);
61void initializeHexagonVectorCombineLegacyPass(PassRegistry &);
62void initializeHexagonVectorLoopCarriedReuseLegacyPassPass(PassRegistry &);
63void initializeHexagonFixupHwLoopsPass(PassRegistry &);
64void initializeHexagonCallFrameInformationPass(PassRegistry &);
65void initializeHexagonGenExtractPass(PassRegistry &);
66void initializeHexagonGenInsertPass(PassRegistry &);
67void initializeHexagonGenPredicatePass(PassRegistry &);
68void initializeHexagonLoadWideningPass(PassRegistry &);
69void initializeHexagonStoreWideningPass(PassRegistry &);
70void initializeHexagonOptimizeSZextendsPass(PassRegistry &);
71void initializeHexagonPeepholePass(PassRegistry &);
72void initializeHexagonSplitConst32AndConst64Pass(PassRegistry &);
73void initializeHexagonVectorPrintPass(PassRegistry &);
74void initializeHexagonQFPOptimizerPass(PassRegistry &);
75void initializeHexagonPostRAHandleQFPPass(PassRegistry &);
76void initializeHexagonXQFloatGeneratorPass(PassRegistry &);
77
78Pass *createHexagonLoopIdiomPass();
79Pass *createHexagonVectorLoopCarriedReuseLegacyPass();
80
81ModulePass *createHexagonAlignGlobalArrays(bool ReduceRodataSize);
82
83FunctionPass *createHexagonBitSimplify();
84FunctionPass *createHexagonBranchRelaxation();
85FunctionPass *createHexagonCallFrameInformation();
86FunctionPass *createHexagonCFGOptimizer();
87FunctionPass *createHexagonCommonGEP();
88FunctionPass *createHexagonConstExtenders();
89FunctionPass *createHexagonConstPropagationPass();
90FunctionPass *createHexagonCopyHoisting();
91FunctionPass *createHexagonCopyToCombine();
92FunctionPass *createHexagonEarlyIfConversion();
93FunctionPass *createHexagonFixupHwLoops();
94FunctionPass *createHexagonGenExtract();
95FunctionPass *createHexagonGenInsert();
96FunctionPass *createHexagonGenMemAbsolute();
97FunctionPass *createHexagonGenMux();
98FunctionPass *createHexagonGenPredicate();
99FunctionPass *createHexagonGlobalScheduler();
100FunctionPass *createHexagonHardwareLoops();
101FunctionPass *createHexagonHVXSaveRemark();
102FunctionPass *createHexagonISelDag(HexagonTargetMachine &TM,
103 CodeGenOptLevel OptLevel);
104FunctionPass *createHexagonLoopAlign();
105FunctionPass *createHexagonLoopRescheduling();
106FunctionPass *createHexagonMask();
107FunctionPass *createHexagonNewValueJump();
108FunctionPass *createHexagonOptAddrMode();
109FunctionPass *createHexagonOptimizeSZextends();
110FunctionPass *createHexagonPacketizer(bool Minimal);
111FunctionPass *createHexagonPeephole();
112FunctionPass *createHexagonRDFOpt();
113FunctionPass *createHexagonSplitConst32AndConst64();
114FunctionPass *createHexagonSplitDoubleRegs();
115FunctionPass *createHexagonStoreWidening();
116FunctionPass *createHexagonLoadWidening();
117FunctionPass *createHexagonTfrCleanup();
118FunctionPass *createHexagonVectorCombineLegacyPass();
119FunctionPass *createHexagonVectorPrint();
120FunctionPass *createHexagonVExtract();
121FunctionPass *createHexagonExpandCondsets();
122FunctionPass *createHexagonQFPOptimizer();
123FunctionPass *createHexagonPostRAHandleQFP();
124FunctionPass *createHexagonXQFloatGenerator();
125
126} // end namespace llvm;
127
128#endif
129