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/Pass/Pass.h"
13
14namespace mlir {
15namespace math {
16#define GEN_PASS_DECL
17#include "mlir/Dialect/Math/Transforms/Passes.h.inc"
18#define GEN_PASS_DECL_MATHUPLIFTTOFMA
19#define GEN_PASS_DECL_MATHLEGALIZETOF32
20#include "mlir/Dialect/Math/Transforms/Passes.h.inc"
21#define GEN_PASS_REGISTRATION
22#include "mlir/Dialect/Math/Transforms/Passes.h.inc"
23} // namespace math
24
25class ConversionTarget;
26class RewritePatternSet;
27class TypeConverter;
28
29void populateExpandCtlzPattern(RewritePatternSet &patterns);
30void populateExpandTanPattern(RewritePatternSet &patterns);
31void populateExpandSinhPattern(RewritePatternSet &patterns);
32void populateExpandCoshPattern(RewritePatternSet &patterns);
33void populateExpandTanhPattern(RewritePatternSet &patterns);
34void populateExpandFmaFPattern(RewritePatternSet &patterns);
35void populateExpandFloorFPattern(RewritePatternSet &patterns);
36void populateExpandCeilFPattern(RewritePatternSet &patterns);
37void populateExpandExp2FPattern(RewritePatternSet &patterns);
38void populateExpandPowFPattern(RewritePatternSet &patterns);
39void populateExpandFPowIPattern(RewritePatternSet &patterns);
40void populateExpandRoundFPattern(RewritePatternSet &patterns);
41void populateExpandRoundEvenPattern(RewritePatternSet &patterns);
42void populateMathAlgebraicSimplificationPatterns(RewritePatternSet &patterns);
43
44struct MathPolynomialApproximationOptions {
45 // Enables the use of AVX2 intrinsics in some of the approximations.
46 bool enableAvx2 = false;
47};
48
49void populatePolynomialApproximateTanhPattern(RewritePatternSet &patterns);
50void populatePolynomialApproximateErfPattern(RewritePatternSet &patterns);
51
52void populateMathPolynomialApproximationPatterns(
53 RewritePatternSet &patterns,
54 const MathPolynomialApproximationOptions &options = {});
55
56void populateUpliftToFMAPatterns(RewritePatternSet &patterns);
57
58namespace math {
59void populateLegalizeToF32TypeConverter(TypeConverter &typeConverter);
60void populateLegalizeToF32ConversionTarget(ConversionTarget &target,
61 TypeConverter &typeConverter);
62void populateLegalizeToF32Patterns(RewritePatternSet &patterns,
63 TypeConverter &typeConverter);
64} // namespace math
65} // namespace mlir
66
67#endif // MLIR_DIALECT_MATH_TRANSFORMS_PASSES_H_
68

source code of mlir/include/mlir/Dialect/Math/Transforms/Passes.h