MLIR  20.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_ARMSME_TRANSFORMS_PASSES_H
10 #define MLIR_DIALECT_ARMSME_TRANSFORMS_PASSES_H
11 
13 #include "mlir/Dialect/ArmSME/Transforms/PassesEnums.h.inc"
14 #include "mlir/Pass/Pass.h"
15 
16 namespace mlir {
17 
18 class RewritePatternSet;
19 
20 namespace arm_sme {
21 //===----------------------------------------------------------------------===//
22 // The EnableArmStreaming pass.
23 //===----------------------------------------------------------------------===//
24 #define GEN_PASS_DECL
25 #include "mlir/Dialect/ArmSME/Transforms/Passes.h.inc"
26 
27 /// Pass to enable Armv9 Streaming SVE mode.
28 std::unique_ptr<Pass> createEnableArmStreamingPass(
29  const ArmStreamingMode = ArmStreamingMode::Streaming,
30  const ArmZaMode = ArmZaMode::Disabled, bool ifRequiredByOps = false,
31  bool ifContainsScalableVectors = false);
32 
33 /// Pass that fuses 'arm_sme.outerproduct' ops into 2-way or 4-way widening
34 /// variants.
35 std::unique_ptr<Pass> createOuterProductFusionPass();
36 
37 /// Pass that legalizes vectors so they can be lowered to ArmSME.
38 std::unique_ptr<Pass> createVectorLegalizationPass();
39 
40 //===----------------------------------------------------------------------===//
41 // Registration
42 //===----------------------------------------------------------------------===//
43 
44 /// Generate the code for registering passes.
45 #define GEN_PASS_REGISTRATION
46 #include "mlir/Dialect/ArmSME/Transforms/Passes.h.inc"
47 
48 } // namespace arm_sme
49 } // namespace mlir
50 
51 #endif // MLIR_DIALECT_ARMSME_TRANSFORMS_PASSES_H
std::unique_ptr< Pass > createOuterProductFusionPass()
Pass that fuses 'arm_sme.outerproduct' ops into 2-way or 4-way widening variants.
std::unique_ptr< Pass > createVectorLegalizationPass()
Pass that legalizes vectors so they can be lowered to ArmSME.
std::unique_ptr< Pass > createEnableArmStreamingPass(const ArmStreamingMode=ArmStreamingMode::Streaming, const ArmZaMode=ArmZaMode::Disabled, bool ifRequiredByOps=false, bool ifContainsScalableVectors=false)
Pass to enable Armv9 Streaming SVE mode.
Include the generated interface declarations.