source: icGREP/icgrep-devel/icgrep/pablo/passes/flattenassociativedfg.h @ 4896

Last change on this file since 4896 was 4896, checked in by nmedfort, 3 years ago

Work on coalescing algorithm + minor changes.

File size: 983 bytes
Line 
1#ifndef FLATTENASSOCIATIVEDFG_H
2#define FLATTENASSOCIATIVEDFG_H
3
4namespace pablo {
5
6class PabloFunction;
7class PabloBlock;
8class Statement;
9class Variadic;
10class Not;
11class Assign;
12
13class FlattenAssociativeDFG {
14    friend class DistributivePass;
15    friend class FactorizeDFG;
16public:
17    static void transform(PabloFunction & function);
18protected:
19    static void coalesce(PabloBlock * const block, const bool traverse);
20    static void coalesce(Variadic * const var);
21    static void deMorgansExpansion(Not * const var, PabloBlock * const block);
22    static void deMorgansReduction(PabloBlock * const block);
23    static void deMorgansReduction(Variadic * const var, PabloBlock * const block);
24    static void removeFalseScopeDependencies(PabloBlock * const block);
25    static void removeFalseScopeDependencies(Assign * const def);
26    static void tryToPartiallyExtractVariadic(Variadic * const var);
27    FlattenAssociativeDFG() = default;
28};
29
30}
31
32#endif // FLATTENASSOCIATIVEDFG_H
Note: See TracBrowser for help on using the repository browser.