]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/lib/CodeGen/BasicTargetTransformInfo.cpp
Merge llvm, clang, lld, lldb, compiler-rt and libc++ r304149, and update
[FreeBSD/FreeBSD.git] / contrib / llvm / lib / CodeGen / BasicTargetTransformInfo.cpp
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>
25 using namespace llvm;
26
27 // This flag is used by the template base class for BasicTTIImpl, and here to
28 // provide a definition.
29 cl::opt<unsigned>
30     llvm::PartialUnrollingThreshold("partial-unrolling-threshold", cl::init(0),
31                                     cl::desc("Threshold for partial unrolling"),
32                                     cl::Hidden);
33
34 BasicTTIImpl::BasicTTIImpl(const TargetMachine *TM, const Function &F)
35     : BaseT(TM, F.getParent()->getDataLayout()), ST(TM->getSubtargetImpl(F)),
36       TLI(ST->getTargetLowering()) {}