blob: 1c022aaf86bd5e7a65284278cc5bd2b1e09d23ce [file] [log] [blame]
Stephen Hinesdce4a402014-05-29 02:49:00 -07001//==-- AArch64.h - Top-level interface for AArch64 --------------*- C++ -*-==//
Tim Northover72062f52013-01-31 12:12:40 +00002//
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
Stephen Hinesdce4a402014-05-29 02:49:00 -070015#ifndef TARGET_AArch64_H
16#define TARGET_AArch64_H
Tim Northover72062f52013-01-31 12:12:40 +000017
Stephen Hinesdce4a402014-05-29 02:49:00 -070018#include "Utils/AArch64BaseInfo.h"
Tim Northover72062f52013-01-31 12:12:40 +000019#include "MCTargetDesc/AArch64MCTargetDesc.h"
20#include "llvm/Target/TargetMachine.h"
Stephen Hinesdce4a402014-05-29 02:49:00 -070021#include "llvm/Support/DataTypes.h"
Tim Northover72062f52013-01-31 12:12:40 +000022
23namespace llvm {
24
Tim Northover72062f52013-01-31 12:12:40 +000025class AArch64TargetMachine;
Stephen Hinesdce4a402014-05-29 02:49:00 -070026class FunctionPass;
27class MachineFunctionPass;
Tim Northover72062f52013-01-31 12:12:40 +000028
Stephen Hinesdce4a402014-05-29 02:49:00 -070029FunctionPass *createAArch64DeadRegisterDefinitions();
30FunctionPass *createAArch64ConditionalCompares();
31FunctionPass *createAArch64AdvSIMDScalar();
32FunctionPass *createAArch64BranchRelaxation();
33FunctionPass *createAArch64ISelDag(AArch64TargetMachine &TM,
34 CodeGenOpt::Level OptLevel);
35FunctionPass *createAArch64StorePairSuppressPass();
36FunctionPass *createAArch64ExpandPseudoPass();
37FunctionPass *createAArch64LoadStoreOptimizationPass();
38ModulePass *createAArch64PromoteConstantPass();
39FunctionPass *createAArch64AddressTypePromotionPass();
40/// \brief Creates an ARM-specific Target Transformation Info pass.
41ImmutablePass *
42createAArch64TargetTransformInfoPass(const AArch64TargetMachine *TM);
Tim Northover72062f52013-01-31 12:12:40 +000043
Tim Northover72062f52013-01-31 12:12:40 +000044FunctionPass *createAArch64CleanupLocalDynamicTLSPass();
45
Stephen Hinesdce4a402014-05-29 02:49:00 -070046FunctionPass *createAArch64CollectLOHPass();
47} // end namespace llvm
Tim Northover72062f52013-01-31 12:12:40 +000048
49#endif