1dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines//==-- AArch64.h - Top-level interface for AArch64  --------------*- C++ -*-==//
272062f5744557e270a38192554c3126ea5f97434Tim Northover//
372062f5744557e270a38192554c3126ea5f97434Tim Northover//                     The LLVM Compiler Infrastructure
472062f5744557e270a38192554c3126ea5f97434Tim Northover//
572062f5744557e270a38192554c3126ea5f97434Tim Northover// This file is distributed under the University of Illinois Open Source
672062f5744557e270a38192554c3126ea5f97434Tim Northover// License. See LICENSE.TXT for details.
772062f5744557e270a38192554c3126ea5f97434Tim Northover//
872062f5744557e270a38192554c3126ea5f97434Tim Northover//===----------------------------------------------------------------------===//
972062f5744557e270a38192554c3126ea5f97434Tim Northover//
1072062f5744557e270a38192554c3126ea5f97434Tim Northover// This file contains the entry points for global functions defined in the LLVM
1172062f5744557e270a38192554c3126ea5f97434Tim Northover// AArch64 back-end.
1272062f5744557e270a38192554c3126ea5f97434Tim Northover//
1372062f5744557e270a38192554c3126ea5f97434Tim Northover//===----------------------------------------------------------------------===//
1472062f5744557e270a38192554c3126ea5f97434Tim Northover
15dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#ifndef TARGET_AArch64_H
16dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#define TARGET_AArch64_H
1772062f5744557e270a38192554c3126ea5f97434Tim Northover
18dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#include "Utils/AArch64BaseInfo.h"
1972062f5744557e270a38192554c3126ea5f97434Tim Northover#include "MCTargetDesc/AArch64MCTargetDesc.h"
2072062f5744557e270a38192554c3126ea5f97434Tim Northover#include "llvm/Target/TargetMachine.h"
21dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines#include "llvm/Support/DataTypes.h"
2272062f5744557e270a38192554c3126ea5f97434Tim Northover
2372062f5744557e270a38192554c3126ea5f97434Tim Northovernamespace llvm {
2472062f5744557e270a38192554c3126ea5f97434Tim Northover
2572062f5744557e270a38192554c3126ea5f97434Tim Northoverclass AArch64TargetMachine;
26dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesclass FunctionPass;
27dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hinesclass MachineFunctionPass;
28dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines
29dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesFunctionPass *createAArch64DeadRegisterDefinitions();
30dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesFunctionPass *createAArch64ConditionalCompares();
31dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesFunctionPass *createAArch64AdvSIMDScalar();
32dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesFunctionPass *createAArch64BranchRelaxation();
33dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesFunctionPass *createAArch64ISelDag(AArch64TargetMachine &TM,
34dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines                                 CodeGenOpt::Level OptLevel);
35dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesFunctionPass *createAArch64StorePairSuppressPass();
36dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesFunctionPass *createAArch64ExpandPseudoPass();
37dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesFunctionPass *createAArch64LoadStoreOptimizationPass();
38dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesModulePass *createAArch64PromoteConstantPass();
39dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesFunctionPass *createAArch64AddressTypePromotionPass();
4022c310d78ce9630af15b0de94c18a409705b7496Tim MurrayFunctionPass *createAArch64A57FPLoadBalancing();
4122c310d78ce9630af15b0de94c18a409705b7496Tim MurrayFunctionPass *createAArch64A53Fix835769();
42dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines/// \brief Creates an ARM-specific Target Transformation Info pass.
43dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesImmutablePass *
44dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinescreateAArch64TargetTransformInfoPass(const AArch64TargetMachine *TM);
4572062f5744557e270a38192554c3126ea5f97434Tim Northover
4672062f5744557e270a38192554c3126ea5f97434Tim NorthoverFunctionPass *createAArch64CleanupLocalDynamicTLSPass();
4772062f5744557e270a38192554c3126ea5f97434Tim Northover
48dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen HinesFunctionPass *createAArch64CollectLOHPass();
49dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines} // end namespace llvm
5072062f5744557e270a38192554c3126ea5f97434Tim Northover
5172062f5744557e270a38192554c3126ea5f97434Tim Northover#endif
52