MLIR  21.0.0git
Passes.h
Go to the documentation of this file.
1 //===- Passes.h - Pass Entrypoints ------------------------------*- 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 #ifndef MLIR_DIALECT_MATH_TRANSFORMS_PASSES_H_
10 #define MLIR_DIALECT_MATH_TRANSFORMS_PASSES_H_
11 
12 #include "mlir/IR/PatternMatch.h"
13 #include "mlir/Pass/Pass.h"
14 
15 namespace mlir {
16 namespace math {
17 #define GEN_PASS_DECL
18 #define GEN_PASS_REGISTRATION
19 #include "mlir/Dialect/Math/Transforms/Passes.h.inc"
20 } // namespace math
21 
22 class ConversionTarget;
23 class RewritePatternSet;
24 class TypeConverter;
25 
26 void populateExpandCtlzPattern(RewritePatternSet &patterns);
27 void populateExpandTanPattern(RewritePatternSet &patterns);
28 void populateExpandSinhPattern(RewritePatternSet &patterns);
29 void populateExpandCoshPattern(RewritePatternSet &patterns);
30 void populateExpandTanhPattern(RewritePatternSet &patterns);
31 void populateExpandAsinhPattern(RewritePatternSet &patterns);
32 void populateExpandAcoshPattern(RewritePatternSet &patterns);
33 void populateExpandAtanhPattern(RewritePatternSet &patterns);
34 void populateExpandFmaFPattern(RewritePatternSet &patterns);
35 void populateExpandCeilFPattern(RewritePatternSet &patterns);
36 void populateExpandExp2FPattern(RewritePatternSet &patterns);
37 void populateExpandPowFPattern(RewritePatternSet &patterns);
38 void populateExpandFPowIPattern(RewritePatternSet &patterns);
39 void populateExpandRoundFPattern(RewritePatternSet &patterns);
40 void populateExpandRoundEvenPattern(RewritePatternSet &patterns);
41 void populateExpandRsqrtPattern(RewritePatternSet &patterns);
43 
45  // Enables the use of AVX2 intrinsics in some of the approximations.
46  bool enableAvx2 = false;
47 };
48 
52 
53 // Adds patterns to convert to f32 around math functions for which `predicate`
54 // returns true.
56  RewritePatternSet &patterns, llvm::function_ref<bool(StringRef)> predicate,
57  PatternBenefit = 1);
58 
59 // Adds patterns to enable polynomial approximations for math functions for
60 // which `predicate` returns true.
62  RewritePatternSet &patterns, llvm::function_ref<bool(StringRef)> predicate,
63  PatternBenefit = 1);
64 
65 // Legacy. Calls both populateMathF32ExpansionPatterns and
66 // populateMathPolynomialApproximationPatterns with predicates enabling a
67 // certain set of math function rewrites, that probably can't be changed for
68 // compatibility reasons. Notice that unlike
69 // populateMathPolynomialApproximationPatterns(patterns, predicate), this
70 // overload also calls populateMathF32ExpansionPatterns.
71 // Prefer calling these functions directly:
72 // * populateMathF32ExpansionPatterns(patterns, predicate)
73 // * populateMathPolynomialApproximationPatterns(patterns, predicate)
77 
78 void populateUpliftToFMAPatterns(RewritePatternSet &patterns);
79 
80 namespace math {
82  TypeConverter &typeConverter, const SetVector<Type> &sourceTypes,
83  Type targetType);
85  ConversionTarget &target, TypeConverter &typeConverter);
86 void populateExtendToSupportedTypesPatterns(RewritePatternSet &patterns,
87  const TypeConverter &typeConverter);
88 } // namespace math
89 } // namespace mlir
90 
91 #endif // MLIR_DIALECT_MATH_TRANSFORMS_PASSES_H_
static llvm::ManagedStatic< PassManagerOptions > options
This class represents the benefit of a pattern match in a unitless scheme that ranges from 0 (very li...
Definition: PatternMatch.h:34
void populateExtendToSupportedTypesPatterns(RewritePatternSet &patterns, const TypeConverter &typeConverter)
void populateExtendToSupportedTypesConversionTarget(ConversionTarget &target, TypeConverter &typeConverter)
void populateExtendToSupportedTypesTypeConverter(TypeConverter &typeConverter, const SetVector< Type > &sourceTypes, Type targetType)
Include the generated interface declarations.
void populateExpandSinhPattern(RewritePatternSet &patterns)
void populatePolynomialApproximateErfcPattern(RewritePatternSet &patterns)
void populateExpandRsqrtPattern(RewritePatternSet &patterns)
void populateMathF32ExpansionPatterns(RewritePatternSet &patterns, llvm::function_ref< bool(StringRef)> predicate, PatternBenefit=1)
void populateExpandTanhPattern(RewritePatternSet &patterns)
void populatePolynomialApproximateErfPattern(RewritePatternSet &patterns)
void populatePolynomialApproximateTanhPattern(RewritePatternSet &patterns)
void populateExpandFmaFPattern(RewritePatternSet &patterns)
void populateExpandAcoshPattern(RewritePatternSet &patterns)
void populateExpandFPowIPattern(RewritePatternSet &patterns)
void populateUpliftToFMAPatterns(RewritePatternSet &patterns)
Definition: UpliftToFMA.cpp:76
void populateMathAlgebraicSimplificationPatterns(RewritePatternSet &patterns)
void populateExpandPowFPattern(RewritePatternSet &patterns)
void populateExpandTanPattern(RewritePatternSet &patterns)
const FrozenRewritePatternSet & patterns
void populateExpandCoshPattern(RewritePatternSet &patterns)
void populateExpandRoundFPattern(RewritePatternSet &patterns)
void populateExpandExp2FPattern(RewritePatternSet &patterns)
void populateExpandCeilFPattern(RewritePatternSet &patterns)
void populateExpandCtlzPattern(RewritePatternSet &patterns)
void populateExpandAsinhPattern(RewritePatternSet &patterns)
void populateExpandRoundEvenPattern(RewritePatternSet &patterns)
void populateExpandAtanhPattern(RewritePatternSet &patterns)
void populateMathPolynomialApproximationPatterns(RewritePatternSet &patterns, llvm::function_ref< bool(StringRef)> predicate, PatternBenefit=1)