//===-- VPlanHCFGBuilder.h --------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// /// /// \file /// This file defines the VPlanHCFGBuilder class which contains the public /// interface (buildHierarchicalCFG) to build a VPlan-based Hierarchical CFG /// (H-CFG) for an incoming IR. /// /// A H-CFG in VPlan is a control-flow graph whose nodes are VPBasicBlocks /// and/or VPRegionBlocks (i.e., other H-CFGs). The outermost H-CFG of a VPlan /// consists of a VPRegionBlock, denoted Top Region, which encloses any other /// VPBlockBase in the H-CFG. This guarantees that any VPBlockBase in the H-CFG /// other than the Top Region will have a parent VPRegionBlock and allows us /// to easily add more nodes before/after the main vector loop (such as the /// reduction epilogue). /// //===----------------------------------------------------------------------===// #ifndef LLVM_TRANSFORMS_VECTORIZE_VPLAN_VPLANHCFGBUILDER_H #define LLVM_TRANSFORMS_VECTORIZE_VPLAN_VPLANHCFGBUILDER_H #include "VPlanDominatorTree.h" namespace llvm { class Loop; class LoopInfo; class VPRegionBlock; class VPlan; class VPlanTestBase; /// Main class to build the VPlan H-CFG for an incoming IR. class VPlanHCFGBuilder { … }; } // namespace llvm #endif // LLVM_TRANSFORMS_VECTORIZE_VPLAN_VPLANHCFGBUILDER_H