|
10 | 10 |
|
11 | 11 | * populateDecomposeCallGraphTypesPatterns: get types along callgraph edges; used in bufferize passes
|
12 | 12 | * getEffectsOnSymbol(): override to specify sideeffects on symbols
|
13 |
| -* CallOpInterfaceLowering: good examples of lowering/conversion |
14 |
| -* Function Signature rewriting: |
15 |
| - * https://github.com/google/iree/blob/main/iree/compiler/Dialect/Shape/Utils/TypeConversion.h |
16 |
| - * https://llvm.discourse.group/t/rewriting-function-calls-and-signatures/1953/4 |
17 |
| -* |
| 13 | +* CallOpInterfaceLowering: good examples of lowering/conversio |
| 14 | +* Function Signature rewriting |
| 15 | + * <https://github.com/google/iree/blob/main/iree/compiler/Dialect/Shape/Utils/TypeConversion.h> |
| 16 | + * <https://llvm.discourse.group/t/rewriting-function-calls-and-signatures/1953/4> |
18 | 17 |
|
19 | 18 | ## Graph Algorithms
|
20 | 19 |
|
|
25 | 24 | * `GraphWriter`: graph emitter
|
26 | 25 | * BreadthFirstIterator.h
|
27 | 26 |
|
28 |
| ---- |
29 |
| - |
30 |
| -BarePtrFuncOpConversion |
31 |
| - |
32 |
| -getBranchSuccessorArgument |
33 |
| - |
34 |
| -verifyBranchSuccessorOperands |
35 |
| -verifyTypesAlongControlFlowEdges |
36 |
| - |
37 |
| -RegionSuccessor::getSuccessor,isParent,getSuccessorInputs |
38 |
| - |
39 |
| -CallOpOpConversion |
40 |
| - |
41 |
| -struct CallOpSignatureConversion : public OpConversionPattern<CallOp> { |
42 |
| - |
43 |
| ---- |
44 |
| - |
45 |
| -generateOpgraphAst |
46 |
| -generate Node Ast |
47 |
| - |
48 |
| -* Needs to be an object |
49 |
| - - contains unoptimized code/syntax tree |
50 |
| - - Compile to code instance/funcpointer |
51 |
| - - UI binds to unoptimized version |
52 |
| - * UI modifies AST |
53 |
| - - Generate MLIR |
54 |
| - * MLIR parses unoptimized version |
55 |
| - * MLIR spits out ast of optimized versoin |
56 |
| - |
57 |
| -```` |
58 |
| --Code to ast |
59 |
| --Ast to mlir |
60 |
| --mlir to emitted optimized version |
61 |
| -```` |
62 |
| - |
63 |
| ---- |
64 |
| - |
65 |
| -struct TileAndVectorizeWorkgroups |
66 |
| -: public PassWrapper\<TileAndVectorizeWorkgroups, FunctionPass> { |
67 |
| -void getDependentDialects(DialectRegistry ®istry) const override { |
68 |
| -registry.insert\<linalg::LinalgDialect, AffineDialect, scf::SCFDialect, |
69 |
| -vector::VectorDialect>(); |
70 |
| -} |
71 |
| -void runOnFunction() override; |
72 |
| -}; |
73 |
| -} // namespace |
74 |
| - |
75 |
| -void TileAndVectorizeWorkgroups::runOnFunction() { |
76 |
| - |
| 27 | +## Misc Code Fragments |
| 28 | + |
| 29 | +````cpp |
| 30 | +struct BarePtrFuncOpConversion; |
| 31 | +getBranchSuccessorArgument() |
| 32 | +verifyBranchSuccessorOperands() |
| 33 | +verifyTypesAlongControlFlowEdges() |
| 34 | + |
| 35 | +RegionSuccessor::getSuccessor() |
| 36 | +RegionSuccessor::isParent() |
| 37 | +RegionSuccessor::getSuccessorInputs() |
| 38 | + |
| 39 | +struct CallOpSignatureConversion; |
| 40 | + |
| 41 | +struct TileAndVectorizeWorkgroups : public PassWrapper<TileAndVectorizeWorkgroups, FunctionPass> { |
| 42 | + void getDependentDialects(DialectRegistry ®istry) const override { |
| 43 | + registry.insert<linalg::LinalgDialect, AffineDialect, scf::SCFDialect, |
| 44 | + vector::VectorDialect>(); |
| 45 | + } |
| 46 | +}; |
| 47 | + |
77 | 48 | /// Distribute linalg ops among iree.workgroup logical threads.
|
78 |
| -std::unique_ptr\<OperationPass<ModuleOp>\> createLinalgTileAndDistributePass(); |
| 49 | +std::unique_ptr<OperationPass<ModuleOp>> createLinalgTileAndDistributePass(); |
79 | 50 |
|
80 | 51 | /// Vectorize linalg ops executed in the same iree.workgroup.
|
81 | 52 | std::unique_ptr<FunctionPass> createLinalgTileAndVectorizeWorkgroupsPass();
|
82 |
| - |
83 |
| -FuncBufferize |
84 |
| -createFuncBufferizePass |
| 53 | + |
| 54 | + |
| 55 | +mlir::createFuncBufferizePass(); |
| 56 | + struct FuncBufferize; |
85 | 57 |
|
86 | 58 | Linalgop::DeduplicateInputs
|
| 59 | +```` |
0 commit comments