Path: blob/main/contrib/llvm-project/llvm/lib/Target/ARM/ARM.h
35294 views
//===-- ARM.h - Top-level interface for ARM representation ------*- C++ -*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//7//8// This file contains the entry points for global functions defined in the LLVM9// ARM back-end.10//11//===----------------------------------------------------------------------===//1213#ifndef LLVM_LIB_TARGET_ARM_ARM_H14#define LLVM_LIB_TARGET_ARM_ARM_H1516#include "llvm/IR/LegacyPassManager.h"17#include "llvm/Support/CodeGen.h"18#include <functional>1920namespace llvm {2122class ARMAsmPrinter;23class ARMBaseTargetMachine;24class ARMRegisterBankInfo;25class ARMSubtarget;26class Function;27class FunctionPass;28class InstructionSelector;29class MCInst;30class MachineInstr;31class PassRegistry;3233Pass *createMVETailPredicationPass();34FunctionPass *createARMLowOverheadLoopsPass();35FunctionPass *createARMBlockPlacementPass();36Pass *createARMParallelDSPPass();37FunctionPass *createARMISelDag(ARMBaseTargetMachine &TM,38CodeGenOptLevel OptLevel);39FunctionPass *createA15SDOptimizerPass();40FunctionPass *createARMLoadStoreOptimizationPass(bool PreAlloc = false);41FunctionPass *createARMExpandPseudoPass();42FunctionPass *createARMBranchTargetsPass();43FunctionPass *createARMConstantIslandPass();44FunctionPass *createMLxExpansionPass();45FunctionPass *createThumb2ITBlockPass();46FunctionPass *createMVEVPTBlockPass();47FunctionPass *createMVETPAndVPTOptimisationsPass();48FunctionPass *createARMOptimizeBarriersPass();49FunctionPass *createThumb2SizeReductionPass(50std::function<bool(const Function &)> Ftor = nullptr);51InstructionSelector *52createARMInstructionSelector(const ARMBaseTargetMachine &TM, const ARMSubtarget &STI,53const ARMRegisterBankInfo &RBI);54Pass *createMVEGatherScatterLoweringPass();55FunctionPass *createARMSLSHardeningPass();56FunctionPass *createARMIndirectThunks();57Pass *createMVELaneInterleavingPass();58FunctionPass *createARMFixCortexA57AES1742098Pass();5960void LowerARMMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI,61ARMAsmPrinter &AP);6263void initializeARMBlockPlacementPass(PassRegistry &);64void initializeARMBranchTargetsPass(PassRegistry &);65void initializeARMConstantIslandsPass(PassRegistry &);66void initializeARMDAGToDAGISelLegacyPass(PassRegistry &);67void initializeARMExpandPseudoPass(PassRegistry &);68void initializeARMFixCortexA57AES1742098Pass(PassRegistry &);69void initializeARMLoadStoreOptPass(PassRegistry &);70void initializeARMLowOverheadLoopsPass(PassRegistry &);71void initializeARMParallelDSPPass(PassRegistry &);72void initializeARMPreAllocLoadStoreOptPass(PassRegistry &);73void initializeARMSLSHardeningPass(PassRegistry &);74void initializeMVEGatherScatterLoweringPass(PassRegistry &);75void initializeMVELaneInterleavingPass(PassRegistry &);76void initializeMVETPAndVPTOptimisationsPass(PassRegistry &);77void initializeMVETailPredicationPass(PassRegistry &);78void initializeMVEVPTBlockPass(PassRegistry &);79void initializeThumb2ITBlockPass(PassRegistry &);80void initializeThumb2SizeReducePass(PassRegistry &);8182} // end namespace llvm8384#endif // LLVM_LIB_TARGET_ARM_ARM_H858687