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