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

Last change on this file since 5239 was 4922, checked in by nmedfort, 4 years ago

Incorporated a few common case boolean optimizations in the Simplifier.

File size: 1.0 KB
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;
12class PabloAST;
13
14class CanonicalizeDFG {
15    friend class DistributivePass;
16    friend class FactorizeDFG;
17public:
18    static void transform(PabloFunction & function);
19protected:
20    static void canonicalize(PabloBlock * const block);
21    static Variadic * canonicalize(Variadic * var);
22    static void deMorgansExpansion(PabloBlock * const block);
23    static void deMorgansExpansion(Not * const negation, PabloBlock * const block);
24    static void deMorgansReduction(PabloBlock * const block);
25    static void deMorgansReduction(Variadic * const var, PabloBlock * const block);
26    static void tryToPartiallyExtractVariadic(PabloBlock * const block);
27    static void tryToPartiallyExtractVariadic(Variadic * const var);
28    static void removeFalseScopeDependencies(PabloFunction & function);
29    CanonicalizeDFG() = default;
30};
31
32}
33
34#endif // FLATTENASSOCIATIVEDFG_H
Note: See TracBrowser for help on using the repository browser.