ARM.h 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. //===-- ARM.h - Top-level interface for ARM 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. // ARM back-end.
  11. //
  12. //===----------------------------------------------------------------------===//
  13. #ifndef LLVM_LIB_TARGET_ARM_ARM_H
  14. #define LLVM_LIB_TARGET_ARM_ARM_H
  15. #include "llvm/IR/LegacyPassManager.h"
  16. #include "llvm/Support/CodeGen.h"
  17. #include <functional>
  18. #include <vector>
  19. namespace llvm {
  20. class ARMAsmPrinter;
  21. class ARMBaseTargetMachine;
  22. class ARMRegisterBankInfo;
  23. class ARMSubtarget;
  24. class Function;
  25. class FunctionPass;
  26. class InstructionSelector;
  27. class MachineInstr;
  28. class MCInst;
  29. class PassRegistry;
  30. Pass *createMVETailPredicationPass();
  31. FunctionPass *createARMLowOverheadLoopsPass();
  32. FunctionPass *createARMBlockPlacementPass();
  33. Pass *createARMParallelDSPPass();
  34. FunctionPass *createARMISelDag(ARMBaseTargetMachine &TM,
  35. CodeGenOpt::Level OptLevel);
  36. FunctionPass *createA15SDOptimizerPass();
  37. FunctionPass *createARMLoadStoreOptimizationPass(bool PreAlloc = false);
  38. FunctionPass *createARMExpandPseudoPass();
  39. FunctionPass *createARMBranchTargetsPass();
  40. FunctionPass *createARMConstantIslandPass();
  41. FunctionPass *createMLxExpansionPass();
  42. FunctionPass *createThumb2ITBlockPass();
  43. FunctionPass *createMVEVPTBlockPass();
  44. FunctionPass *createMVETPAndVPTOptimisationsPass();
  45. FunctionPass *createARMOptimizeBarriersPass();
  46. FunctionPass *createThumb2SizeReductionPass(
  47. std::function<bool(const Function &)> Ftor = nullptr);
  48. InstructionSelector *
  49. createARMInstructionSelector(const ARMBaseTargetMachine &TM, const ARMSubtarget &STI,
  50. const ARMRegisterBankInfo &RBI);
  51. Pass *createMVEGatherScatterLoweringPass();
  52. FunctionPass *createARMSLSHardeningPass();
  53. FunctionPass *createARMIndirectThunks();
  54. Pass *createMVELaneInterleavingPass();
  55. void LowerARMMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI,
  56. ARMAsmPrinter &AP);
  57. void initializeARMParallelDSPPass(PassRegistry &);
  58. void initializeARMLoadStoreOptPass(PassRegistry &);
  59. void initializeARMPreAllocLoadStoreOptPass(PassRegistry &);
  60. void initializeARMBranchTargetsPass(PassRegistry &);
  61. void initializeARMConstantIslandsPass(PassRegistry &);
  62. void initializeARMExpandPseudoPass(PassRegistry &);
  63. void initializeThumb2SizeReducePass(PassRegistry &);
  64. void initializeThumb2ITBlockPass(PassRegistry &);
  65. void initializeMVEVPTBlockPass(PassRegistry &);
  66. void initializeMVETPAndVPTOptimisationsPass(PassRegistry &);
  67. void initializeARMLowOverheadLoopsPass(PassRegistry &);
  68. void initializeARMBlockPlacementPass(PassRegistry &);
  69. void initializeMVETailPredicationPass(PassRegistry &);
  70. void initializeMVEGatherScatterLoweringPass(PassRegistry &);
  71. void initializeARMSLSHardeningPass(PassRegistry &);
  72. void initializeMVELaneInterleavingPass(PassRegistry &);
  73. } // end namespace llvm
  74. #endif // LLVM_LIB_TARGET_ARM_ARM_H