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