blob: c767c75fce5735e890e44d00e7710b4137fe892b [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();
33FunctionPass *createAArch64BranchRelaxation();
34FunctionPass *createAArch64ISelDag(AArch64TargetMachine &TM,
35 CodeGenOpt::Level OptLevel);
36FunctionPass *createAArch64StorePairSuppressPass();
37FunctionPass *createAArch64ExpandPseudoPass();
38FunctionPass *createAArch64LoadStoreOptimizationPass();
39ModulePass *createAArch64PromoteConstantPass();
Jiangning Liu1a486da2014-09-05 02:55:24 +000040FunctionPass *createAArch64ConditionOptimizerPass();
Tim Northover3b0846e2014-05-24 12:50:23 +000041FunctionPass *createAArch64AddressTypePromotionPass();
James Molloy3feea9c2014-08-08 12:33:21 +000042FunctionPass *createAArch64A57FPLoadBalancing();
Bradley Smithf2a801d2014-10-13 10:12:35 +000043FunctionPass *createAArch64A53Fix835769();
Tim Northover3b0846e2014-05-24 12:50:23 +000044
45FunctionPass *createAArch64CleanupLocalDynamicTLSPass();
46
47FunctionPass *createAArch64CollectLOHPass();
Tim Northover5dad9df2016-04-01 23:14:52 +000048
49void initializeAArch64ExpandPseudoPass(PassRegistry&);
Tim Northover3b0846e2014-05-24 12:50:23 +000050} // end namespace llvm
51
52#endif