LLVM
16.0.0git
lib
Target
ARC
ARCTargetTransformInfo.h
Go to the documentation of this file.
1
//===- ARCTargetTransformInfo.h - ARC specific TTI --------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
// \file
9
// This file contains a TargetTransformInfo::Concept conforming object specific
10
// to the ARC target machine. It uses the target's detailed information to
11
// provide more precise answers to certain TTI queries, while letting the
12
// target independent and default TTI implementations handle the rest.
13
//
14
//===----------------------------------------------------------------------===//
15
16
#ifndef LLVM_LIB_TARGET_ARC_ARCTARGETTRANSFORMINFO_H
17
#define LLVM_LIB_TARGET_ARC_ARCTARGETTRANSFORMINFO_H
18
19
#include "
ARC.h
"
20
#include "
llvm/Analysis/TargetTransformInfo.h
"
21
#include "
llvm/CodeGen/BasicTTIImpl.h
"
22
23
namespace
llvm
{
24
25
class
ARCSubtarget;
26
class
ARCTargetLowering;
27
class
ARCTargetMachine;
28
29
class
ARCTTIImpl
:
public
BasicTTIImplBase
<ARCTTIImpl> {
30
using
BaseT
=
BasicTTIImplBase<ARCTTIImpl>
;
31
friend
BaseT
;
32
33
const
ARCSubtarget
*ST;
34
const
ARCTargetLowering
*TLI;
35
36
const
ARCSubtarget
*getST()
const
{
return
ST; }
37
const
ARCTargetLowering
*getTLI()
const
{
return
TLI; }
38
39
public
:
40
explicit
ARCTTIImpl
(
const
ARCTargetMachine
*
TM
,
const
Function
&
F
)
41
:
BaseT
(
TM
,
F
.
getParent
()->
getDataLayout
()), ST(
TM
->getSubtargetImpl()),
42
TLI(ST->getTargetLowering()) {}
43
44
// Provide value semantics. MSVC requires that we spell all of these out.
45
ARCTTIImpl
(
const
ARCTTIImpl
&
Arg
)
46
:
BaseT
(static_cast<
const
BaseT
&>(
Arg
)), ST(
Arg
.ST), TLI(
Arg
.TLI) {}
47
ARCTTIImpl
(
ARCTTIImpl
&&
Arg
)
48
:
BaseT
(
std
::
move
(static_cast<
BaseT
&>(
Arg
))), ST(
std
::
move
(
Arg
.ST)),
49
TLI(
std
::
move
(
Arg
.TLI)) {}
50
};
51
52
}
// end namespace llvm
53
54
#endif // LLVM_LIB_TARGET_ARC_ARCTARGETTRANSFORMINFO_H
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition:
AddressRanges.h:18
llvm::ARCTTIImpl::ARCTTIImpl
ARCTTIImpl(const ARCTTIImpl &Arg)
Definition:
ARCTargetTransformInfo.h:45
llvm::Function
Definition:
Function.h:60
llvm::ARCTargetMachine
Definition:
ARCTargetMachine.h:23
llvm::ARCTTIImpl::ARCTTIImpl
ARCTTIImpl(const ARCTargetMachine *TM, const Function &F)
Definition:
ARCTargetTransformInfo.h:40
llvm::ARCTargetLowering
Definition:
ARCISelLowering.h:60
F
#define F(x, y, z)
Definition:
MD5.cpp:55
llvm::TargetTransformInfoImplBase::getDataLayout
const DataLayout & getDataLayout() const
Definition:
TargetTransformInfoImpl.h:46
Arg
amdgpu Simplify well known AMD library false FunctionCallee Value * Arg
Definition:
AMDGPULibCalls.cpp:186
llvm::ARCSubtarget
Definition:
ARCSubtarget.h:31
const
aarch64 promote const
Definition:
AArch64PromoteConstant.cpp:232
llvm::BasicTTIImplBase
Base class which can be used to help build a TTI implementation.
Definition:
BasicTTIImpl.h:77
llvm::move
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
Definition:
STLExtras.h:1676
getParent
static const Function * getParent(const Value *V)
Definition:
BasicAliasAnalysis.cpp:845
llvm::ARCTTIImpl::ARCTTIImpl
ARCTTIImpl(ARCTTIImpl &&Arg)
Definition:
ARCTargetTransformInfo.h:47
std
Definition:
BitVector.h:851
ARC.h
TargetTransformInfo.h
TM
const char LLVMTargetMachineRef TM
Definition:
PassBuilderBindings.cpp:47
BasicTTIImpl.h
llvm::ARCTTIImpl
Definition:
ARCTargetTransformInfo.h:29
Generated on Mon Aug 15 2022 06:45:02 for LLVM by
1.8.17