LLVM
15.0.0git
lib
Transforms
Vectorize
VPlanLoopInfo.h
Go to the documentation of this file.
1
//===-- VPLoopInfo.h --------------------------------------------*- 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
///
9
/// \file
10
/// This file defines VPLoopInfo analysis and VPLoop class. VPLoopInfo is a
11
/// specialization of LoopInfoBase for VPBlockBase. VPLoops is a specialization
12
/// of LoopBase that is used to hold loop metadata from VPLoopInfo. Further
13
/// information can be found in VectorizationPlanner.rst.
14
///
15
//===----------------------------------------------------------------------===//
16
17
#ifndef LLVM_TRANSFORMS_VECTORIZE_VPLOOPINFO_H
18
#define LLVM_TRANSFORMS_VECTORIZE_VPLOOPINFO_H
19
20
#include "
llvm/Analysis/LoopInfoImpl.h
"
21
22
namespace
llvm
{
23
class
VPBlockBase;
24
25
/// Hold analysis information for every loop detected by VPLoopInfo. It is an
26
/// instantiation of LoopBase.
27
class
VPLoop
:
public
LoopBase
<VPBlockBase, VPLoop> {
28
private
:
29
friend
class
LoopInfoBase
<
VPBlockBase
,
VPLoop
>;
30
explicit
VPLoop
(
VPBlockBase
*VPB) :
LoopBase
<
VPBlockBase
,
VPLoop
>(VPB) {}
31
};
32
33
/// VPLoopInfo provides analysis of natural loop for VPBlockBase-based
34
/// Hierarchical CFG. It is a specialization of LoopInfoBase class.
35
// TODO: VPLoopInfo is initially computed on top of the VPlan plain CFG, which
36
// is the same as the incoming IR CFG. If it's more efficient than running the
37
// whole loop detection algorithm, we may want to create a mechanism to
38
// translate LoopInfo into VPLoopInfo. However, that would require significant
39
// changes in LoopInfoBase class.
40
typedef
LoopInfoBase<VPBlockBase, VPLoop>
VPLoopInfo
;
41
42
}
// namespace llvm
43
44
#endif // LLVM_TRANSFORMS_VECTORIZE_VPLOOPINFO_H
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition:
AddressRanges.h:17
llvm::VPLoop
Hold analysis information for every loop detected by VPLoopInfo.
Definition:
VPlanLoopInfo.h:27
LoopInfoImpl.h
llvm::LoopBase
Instances of this class are used to represent loops that are detected in the flow graph.
Definition:
LoopInfo.h:67
llvm::VPBlockBase
VPBlockBase is the building block of the Hierarchical Control-Flow Graph.
Definition:
VPlan.h:394
llvm::VPLoopInfo
LoopInfoBase< VPBlockBase, VPLoop > VPLoopInfo
VPLoopInfo provides analysis of natural loop for VPBlockBase-based Hierarchical CFG.
Definition:
VPlanLoopInfo.h:40
llvm::LoopInfoBase
This class builds and contains all of the top-level loop structures in the specified function.
Definition:
LoopInfo.h:66
Generated on Sun May 22 2022 19:23:29 for LLVM by
1.8.17