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

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

Continued work on multiplexing pass.

File size: 776 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    FlattenAssociativeDFG() = default;
25};
26
27}
28
29#endif // FLATTENASSOCIATIVEDFG_H
Note: See TracBrowser for help on using the repository browser.