xref: /llvm-project/llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/RegionsFromMetadata.cpp (revision 4b209c5d87c8b8eb4bbf2750ea9daa5927a13699)
12e8ad49eSJorge Gorbe Moya //===- RegionsFromMetadata.cpp - A helper to test RegionPasses -----------===//
22e8ad49eSJorge Gorbe Moya //
32e8ad49eSJorge Gorbe Moya // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42e8ad49eSJorge Gorbe Moya // See https://llvm.org/LICENSE.txt for license information.
52e8ad49eSJorge Gorbe Moya // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
62e8ad49eSJorge Gorbe Moya //
72e8ad49eSJorge Gorbe Moya //===----------------------------------------------------------------------===//
82e8ad49eSJorge Gorbe Moya 
92e8ad49eSJorge Gorbe Moya #include "llvm/Transforms/Vectorize/SandboxVectorizer/Passes/RegionsFromMetadata.h"
102e8ad49eSJorge Gorbe Moya 
112e8ad49eSJorge Gorbe Moya #include "llvm/SandboxIR/Region.h"
122e8ad49eSJorge Gorbe Moya #include "llvm/Transforms/Vectorize/SandboxVectorizer/SandboxVectorizerPassBuilder.h"
132e8ad49eSJorge Gorbe Moya 
142e8ad49eSJorge Gorbe Moya namespace llvm::sandboxir {
152e8ad49eSJorge Gorbe Moya 
162e8ad49eSJorge Gorbe Moya RegionsFromMetadata::RegionsFromMetadata(StringRef Pipeline)
172e8ad49eSJorge Gorbe Moya     : FunctionPass("regions-from-metadata"),
182e8ad49eSJorge Gorbe Moya       RPM("rpm", Pipeline, SandboxVectorizerPassBuilder::createRegionPass) {}
192e8ad49eSJorge Gorbe Moya 
20a461869dSvporpo bool RegionsFromMetadata::runOnFunction(Function &F, const Analyses &A) {
212e8ad49eSJorge Gorbe Moya   SmallVector<std::unique_ptr<sandboxir::Region>> Regions =
22*4b209c5dSvporpo       sandboxir::Region::createRegionsFromMD(F, A.getTTI());
232e8ad49eSJorge Gorbe Moya   for (auto &R : Regions) {
24a461869dSvporpo     RPM.runOnRegion(*R, A);
252e8ad49eSJorge Gorbe Moya   }
262e8ad49eSJorge Gorbe Moya   return false;
272e8ad49eSJorge Gorbe Moya }
282e8ad49eSJorge Gorbe Moya 
292e8ad49eSJorge Gorbe Moya } // namespace llvm::sandboxir
30