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 PassRegistry;
23class FunctionPass;
24class Pass;
25
26extern char &HexagonCopyHoistingID;
27extern char &HexagonExpandCondsetsID;
28extern char &HexagonTfrCleanupID;
29extern char &HexagonLiveVariablesID;
30void initializeHexagonAsmPrinterPass(PassRegistry &);
31void initializeHexagonBitSimplifyPass(PassRegistry &);
32void initializeHexagonBranchRelaxationPass(PassRegistry &);
33void initializeHexagonCFGOptimizerPass(PassRegistry &);
34void initializeHexagonCommonGEPPass(PassRegistry &);
35void initializeHexagonCopyHoistingPass(PassRegistry &);
36void initializeHexagonConstExtendersPass(PassRegistry &);
37void initializeHexagonConstPropagationPass(PassRegistry &);
38void initializeHexagonCopyToCombinePass(PassRegistry &);
39void initializeHexagonDAGToDAGISelLegacyPass(PassRegistry &);
40void initializeHexagonEarlyIfConversionPass(PassRegistry &);
41void initializeHexagonExpandCondsetsPass(PassRegistry &);
42void initializeHexagonGenMemAbsolutePass(PassRegistry &);
43void initializeHexagonGenMuxPass(PassRegistry &);
44void initializeHexagonGlobalSchedulerPass(PassRegistry &);
45void initializeHexagonHardwareLoopsPass(PassRegistry &);
46void initializeHexagonLiveVariablesPass(PassRegistry &);
47void initializeHexagonLoopIdiomRecognizeLegacyPassPass(PassRegistry &);
48void initializeHexagonLoopAlignPass(PassRegistry &);
49void initializeHexagonLoopReschedulingPass(PassRegistry &);
50void initializeHexagonMaskPass(PassRegistry &);
51void initializeHexagonMergeActivateWeightPass(PassRegistry &);
52void initializeHexagonNewValueJumpPass(PassRegistry &);
53void initializeHexagonOptAddrModePass(PassRegistry &);
54void initializeHexagonPacketizerPass(PassRegistry &);
55void initializeHexagonRDFOptPass(PassRegistry &);
56void initializeHexagonSplitDoubleRegsPass(PassRegistry &);
57void initializeHexagonTfrCleanupPass(PassRegistry &);
58void initializeHexagonVExtractPass(PassRegistry &);
59void initializeHexagonVectorCombineLegacyPass(PassRegistry &);
60void initializeHexagonVectorLoopCarriedReuseLegacyPassPass(PassRegistry &);
61void initializeHexagonFixupHwLoopsPass(PassRegistry &);
62void initializeHexagonCallFrameInformationPass(PassRegistry &);
63void initializeHexagonGenExtractPass(PassRegistry &);
64void initializeHexagonGenInsertPass(PassRegistry &);
65void initializeHexagonGenPredicatePass(PassRegistry &);
66void initializeHexagonLoadWideningPass(PassRegistry &);
67void initializeHexagonStoreWideningPass(PassRegistry &);
68void initializeHexagonOptimizeSZextendsPass(PassRegistry &);
69void initializeHexagonPeepholePass(PassRegistry &);
70void initializeHexagonSplitConst32AndConst64Pass(PassRegistry &);
71void initializeHexagonVectorPrintPass(PassRegistry &);
72
73void initializeHexagonQFPOptimizerPass(PassRegistry &);
74
75Pass *createHexagonLoopIdiomPass();
76Pass *createHexagonVectorLoopCarriedReuseLegacyPass();
77
78/// Creates a Hexagon-specific Target Transformation Info pass.
79ImmutablePass *
80createHexagonTargetTransformInfoPass(const HexagonTargetMachine *TM);
81
82FunctionPass *createHexagonBitSimplify();
83FunctionPass *createHexagonBranchRelaxation();
84FunctionPass *createHexagonCallFrameInformation();
85FunctionPass *createHexagonCFGOptimizer();
86FunctionPass *createHexagonCommonGEP();
87FunctionPass *createHexagonConstExtenders();
88FunctionPass *createHexagonConstPropagationPass();
89FunctionPass *createHexagonCopyHoisting();
90FunctionPass *createHexagonCopyToCombine();
91FunctionPass *createHexagonEarlyIfConversion();
92FunctionPass *createHexagonFixupHwLoops();
93FunctionPass *createHexagonGenExtract();
94FunctionPass *createHexagonGenInsert();
95FunctionPass *createHexagonGenMemAbsolute();
96FunctionPass *createHexagonGenMux();
97FunctionPass *createHexagonGenPredicate();
98FunctionPass *createHexagonGlobalScheduler();
99FunctionPass *createHexagonHardwareLoops();
100FunctionPass *createHexagonISelDag(HexagonTargetMachine &TM,
101 CodeGenOptLevel OptLevel);
102FunctionPass *createHexagonLoopAlign();
103FunctionPass *createHexagonLoopRescheduling();
104FunctionPass *createHexagonMask();
105FunctionPass *createHexagonMergeActivateWeight();
106FunctionPass *createHexagonNewValueJump();
107FunctionPass *createHexagonOptAddrMode();
108FunctionPass *createHexagonOptimizeSZextends();
109FunctionPass *createHexagonPacketizer(bool Minimal);
110FunctionPass *createHexagonPeephole();
111FunctionPass *createHexagonRDFOpt();
112FunctionPass *createHexagonSplitConst32AndConst64();
113FunctionPass *createHexagonSplitDoubleRegs();
114FunctionPass *createHexagonStoreWidening();
115FunctionPass *createHexagonLoadWidening();
116FunctionPass *createHexagonTfrCleanup();
117FunctionPass *createHexagonVectorCombineLegacyPass();
118FunctionPass *createHexagonVectorPrint();
119FunctionPass *createHexagonVExtract();
120FunctionPass *createHexagonExpandCondsets();
121FunctionPass *createHexagonQFPOptimizer();
122
123} // end namespace llvm;
124
125#endif
126