blob: fd106a8d9b0bcecaf973d7d7fc1874eeb431a8d6 [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();
Sebastian Popeb65d722016-10-08 12:30:07 +000038FunctionPass *createAArch64VectorByElementOptPass();
Tim Northover3b0846e2014-05-24 12:50:23 +000039ModulePass *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
Diana Picus850043b2016-08-01 05:56:57 +000049void initializeAArch64A53Fix835769Pass(PassRegistry&);
50void initializeAArch64A57FPLoadBalancingPass(PassRegistry&);
51void initializeAArch64AddressTypePromotionPass(PassRegistry&);
52void initializeAArch64AdvSIMDScalarPass(PassRegistry&);
Diana Picus850043b2016-08-01 05:56:57 +000053void initializeAArch64CollectLOHPass(PassRegistry&);
54void initializeAArch64ConditionalComparesPass(PassRegistry&);
55void initializeAArch64ConditionOptimizerPass(PassRegistry&);
56void initializeAArch64DeadRegisterDefinitionsPass(PassRegistry&);
Tim Northover5dad9df2016-04-01 23:14:52 +000057void initializeAArch64ExpandPseudoPass(PassRegistry&);
Geoff Berry24c81e82016-07-20 21:45:58 +000058void initializeAArch64LoadStoreOptPass(PassRegistry&);
Sebastian Popeb65d722016-10-08 12:30:07 +000059void initializeAArch64VectorByElementOptPass(PassRegistry&);
Diana Picus850043b2016-08-01 05:56:57 +000060void initializeAArch64PromoteConstantPass(PassRegistry&);
61void initializeAArch64RedundantCopyEliminationPass(PassRegistry&);
62void initializeAArch64StorePairSuppressPass(PassRegistry&);
63void initializeLDTLSCleanupPass(PassRegistry&);
Tim Northover3b0846e2014-05-24 12:50:23 +000064} // end namespace llvm
65
66#endif