LLVM 20.0.0git
LoopIdiomRecognize.h
Go to the documentation of this file.
1//===- LoopIdiomRecognize.h - Loop Idiom Recognize Pass ---------*- 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// This pass implements an idiom recognizer that transforms simple loops into a
10// non-loop form. In cases that this kicks in, it can be a significant
11// performance win.
12//
13//===----------------------------------------------------------------------===//
14
15#ifndef LLVM_TRANSFORMS_SCALAR_LOOPIDIOMRECOGNIZE_H
16#define LLVM_TRANSFORMS_SCALAR_LOOPIDIOMRECOGNIZE_H
17
19#include "llvm/IR/PassManager.h"
20
21namespace llvm {
22
23class Loop;
24class LPMUpdater;
25
26/// Options to disable Loop Idiom Recognize, which can be shared with other
27/// passes.
29 /// When true, the entire pass is disabled.
30 static bool All;
31
32 /// When true, Memset is disabled.
33 static bool Memset;
34
35 /// When true, Memcpy is disabled.
36 static bool Memcpy;
37};
38
39/// Performs Loop Idiom Recognize Pass.
40class LoopIdiomRecognizePass : public PassInfoMixin<LoopIdiomRecognizePass> {
41public:
44};
45
46} // end namespace llvm
47
48#endif // LLVM_TRANSFORMS_SCALAR_LOOPIDIOMRECOGNIZE_H
This header provides classes for managing per-loop analyses.
This header defines various interfaces for pass management in LLVM.
A container for analyses that lazily runs them and caches their results.
Definition: PassManager.h:253
This class provides an interface for updating the loop pass manager based on mutations to the loop ne...
Performs Loop Idiom Recognize Pass.
PreservedAnalyses run(Loop &L, LoopAnalysisManager &AM, LoopStandardAnalysisResults &AR, LPMUpdater &U)
Represents a single loop in the control flow graph.
Definition: LoopInfo.h:39
A set of analyses that are preserved following a run of a transformation pass.
Definition: Analysis.h:111
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
Options to disable Loop Idiom Recognize, which can be shared with other passes.
static bool Memset
When true, Memset is disabled.
static bool All
When true, the entire pass is disabled.
static bool Memcpy
When true, Memcpy is disabled.
The adaptor from a function pass to a loop pass computes these analyses and makes them available to t...
A CRTP mix-in to automatically provide informational APIs needed for passes.
Definition: PassManager.h:69