Coverage Report

Created: 2019-07-24 05:18

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/lib/Transforms/Vectorize/VPlanLoopInfo.h
Line
Count
Source
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
34
  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