blob: bf80e662f82a3d36e2395478b6d5318ca147d4e5 [file] [log] [blame]
Tim Northover3b0846e2014-05-24 12:50:23 +00001//==-- AArch64.h - Top-level interface for AArch64 --------------*- C++ -*-==//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file contains the entry points for global functions defined in the LLVM
11// AArch64 back-end.
12//
13//===----------------------------------------------------------------------===//
14
Benjamin Kramera7c40ef2014-08-13 16:26:38 +000015#ifndef LLVM_LIB_TARGET_AARCH64_AARCH64_H
16#define LLVM_LIB_TARGET_AARCH64_AARCH64_H
Tim Northover3b0846e2014-05-24 12:50:23 +000017
Tim Northover3b0846e2014-05-24 12:50:23 +000018#include "MCTargetDesc/AArch64MCTargetDesc.h"
Benjamin Kramer1f8930e2014-07-25 11:42:14 +000019#include "Utils/AArch64BaseInfo.h"
Tim Northover3b0846e2014-05-24 12:50:23 +000020#include "llvm/Support/DataTypes.h"
Benjamin Kramer1f8930e2014-07-25 11:42:14 +000021#include "llvm/Target/TargetMachine.h"
Tim Northover3b0846e2014-05-24 12:50:23 +000022
23namespace llvm {
24
25class AArch64TargetMachine;
26class FunctionPass;
27class MachineFunctionPass;
28
29FunctionPass *createAArch64DeadRegisterDefinitions();
Jun Bum Limb389d9b2016-02-16 20:02:39 +000030FunctionPass *createAArch64RedundantCopyEliminationPass();
Tim Northover3b0846e2014-05-24 12:50:23 +000031FunctionPass *createAArch64ConditionalCompares();
32FunctionPass *createAArch64AdvSIMDScalar();
Tim Northover3b0846e2014-05-24 12:50:23 +000033FunctionPass *createAArch64ISelDag(AArch64TargetMachine &TM,
34 CodeGenOpt::Level OptLevel);
35FunctionPass *createAArch64StorePairSuppressPass();
36FunctionPass *createAArch64ExpandPseudoPass();
37FunctionPass *createAArch64LoadStoreOptimizationPass();
38ModulePass *createAArch64PromoteConstantPass();
Jiangning Liu1a486da2014-09-05 02:55:24 +000039FunctionPass *createAArch64ConditionOptimizerPass();
Tim Northover3b0846e2014-05-24 12:50:23 +000040FunctionPass *createAArch64AddressTypePromotionPass();
James Molloy3feea9c2014-08-08 12:33:21 +000041FunctionPass *createAArch64A57FPLoadBalancing();
Bradley Smithf2a801d2014-10-13 10:12:35 +000042FunctionPass *createAArch64A53Fix835769();
Tim Northover3b0846e2014-05-24 12:50:23 +000043
44FunctionPass *createAArch64CleanupLocalDynamicTLSPass();
45
46FunctionPass *createAArch64CollectLOHPass();
Tim Northover5dad9df2016-04-01 23:14:52 +000047
Diana Picus850043b2016-08-01 05:56:57 +000048void initializeAArch64A53Fix835769Pass(PassRegistry&);
49void initializeAArch64A57FPLoadBalancingPass(PassRegistry&);
50void initializeAArch64AddressTypePromotionPass(PassRegistry&);
51void initializeAArch64AdvSIMDScalarPass(PassRegistry&);
Diana Picus850043b2016-08-01 05:56:57 +000052void initializeAArch64CollectLOHPass(PassRegistry&);
53void initializeAArch64ConditionalComparesPass(PassRegistry&);
54void initializeAArch64ConditionOptimizerPass(PassRegistry&);
55void initializeAArch64DeadRegisterDefinitionsPass(PassRegistry&);
Tim Northover5dad9df2016-04-01 23:14:52 +000056void initializeAArch64ExpandPseudoPass(PassRegistry&);
Geoff Berry24c81e82016-07-20 21:45:58 +000057void initializeAArch64LoadStoreOptPass(PassRegistry&);
Diana Picus850043b2016-08-01 05:56:57 +000058void initializeAArch64PromoteConstantPass(PassRegistry&);
59void initializeAArch64RedundantCopyEliminationPass(PassRegistry&);
60void initializeAArch64StorePairSuppressPass(PassRegistry&);
61void initializeLDTLSCleanupPass(PassRegistry&);
Tim Northover3b0846e2014-05-24 12:50:23 +000062} // end namespace llvm
63
64#endif