122 lines · c
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-exception6//7//===----------------------------------------------------------------------===//8//9// This file contains the entry points for global functions defined in the LLVM10// Hexagon back-end.11//12//===----------------------------------------------------------------------===//13 14#ifndef LLVM_LIB_TARGET_HEXAGON_HEXAGON_H15#define LLVM_LIB_TARGET_HEXAGON_HEXAGON_H16 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 70void initializeHexagonQFPOptimizerPass(PassRegistry &);71 72Pass *createHexagonLoopIdiomPass();73Pass *createHexagonVectorLoopCarriedReuseLegacyPass();74 75/// Creates a Hexagon-specific Target Transformation Info pass.76ImmutablePass *77createHexagonTargetTransformInfoPass(const HexagonTargetMachine *TM);78 79FunctionPass *createHexagonBitSimplify();80FunctionPass *createHexagonBranchRelaxation();81FunctionPass *createHexagonCallFrameInformation();82FunctionPass *createHexagonCFGOptimizer();83FunctionPass *createHexagonCommonGEP();84FunctionPass *createHexagonConstExtenders();85FunctionPass *createHexagonConstPropagationPass();86FunctionPass *createHexagonCopyHoisting();87FunctionPass *createHexagonCopyToCombine();88FunctionPass *createHexagonEarlyIfConversion();89FunctionPass *createHexagonFixupHwLoops();90FunctionPass *createHexagonGenExtract();91FunctionPass *createHexagonGenInsert();92FunctionPass *createHexagonGenMemAbsolute();93FunctionPass *createHexagonGenMux();94FunctionPass *createHexagonGenPredicate();95FunctionPass *createHexagonHardwareLoops();96FunctionPass *createHexagonISelDag(HexagonTargetMachine &TM,97 CodeGenOptLevel OptLevel);98FunctionPass *createHexagonLoopAlign();99FunctionPass *createHexagonLoopRescheduling();100FunctionPass *createHexagonMask();101FunctionPass *createHexagonMergeActivateWeight();102FunctionPass *createHexagonNewValueJump();103FunctionPass *createHexagonOptAddrMode();104FunctionPass *createHexagonOptimizeSZextends();105FunctionPass *createHexagonPacketizer(bool Minimal);106FunctionPass *createHexagonPeephole();107FunctionPass *createHexagonRDFOpt();108FunctionPass *createHexagonSplitConst32AndConst64();109FunctionPass *createHexagonSplitDoubleRegs();110FunctionPass *createHexagonStoreWidening();111FunctionPass *createHexagonLoadWidening();112FunctionPass *createHexagonTfrCleanup();113FunctionPass *createHexagonVectorCombineLegacyPass();114FunctionPass *createHexagonVectorPrint();115FunctionPass *createHexagonVExtract();116FunctionPass *createHexagonExpandCondsets();117FunctionPass *createHexagonQFPOptimizer();118 119} // end namespace llvm;120 121#endif122