1//===- BasicTargetTransformInfo.cpp - Basic target-independent TTI impl ---===// 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/// \file 10/// This file provides the implementation of a basic TargetTransformInfo pass 11/// predicated on the target abstractions present in the target independent 12/// code generator. It uses these (primarily TargetLowering) to model as much 13/// of the TTI query interface as possible. It is included by most targets so 14/// that they can specialize only a small subset of the query space. 15/// 16//===----------------------------------------------------------------------===// 17 18#include "llvm/CodeGen/BasicTTIImpl.h" 19#include "llvm/Analysis/LoopInfo.h" 20#include "llvm/Analysis/TargetTransformInfo.h" 21#include "llvm/Analysis/TargetTransformInfoImpl.h" 22#include "llvm/CodeGen/Passes.h" 23#include "llvm/Support/CommandLine.h" 24#include <utility> 25using namespace llvm; 26 27#define DEBUG_TYPE "basictti" 28 29// This flag is used by the template base class for BasicTTIImpl, and here to 30// provide a definition. 31cl::opt<unsigned> 32 llvm::PartialUnrollingThreshold("partial-unrolling-threshold", cl::init(0), 33 cl::desc("Threshold for partial unrolling"), 34 cl::Hidden); 35 36BasicTTIImpl::BasicTTIImpl(const TargetMachine *TM, const Function &F) 37 : BaseT(TM, F.getParent()->getDataLayout()), ST(TM->getSubtargetImpl(F)), 38 TLI(ST->getTargetLowering()) {} 39