Optimize: Remove redundant variables during Dfg Peephole pass
Many rules in the Dfg Peephole pass check if a node has more than one sinks. Redundant variables that will ultimately be removed can prevent these from matching. Remove such variables during the Peeophole pass itself to enable more matches.
This commit is contained in:
parent
e0c626e48a
commit
158e9c19ca
|
|
@ -150,11 +150,7 @@ class V3DfgPeephole final : public DfgVisitor {
|
|||
return true;
|
||||
}
|
||||
|
||||
void addToWorkList(DfgVertex* vtxp) {
|
||||
// We only process actual operation vertices
|
||||
if (vtxp->is<DfgConst>() || vtxp->is<DfgVertexVar>()) return;
|
||||
m_workList.push_front(*vtxp);
|
||||
}
|
||||
void addToWorkList(DfgVertex* vtxp) { m_workList.push_front(*vtxp); }
|
||||
|
||||
void addSourcesToWorkList(DfgVertex* vtxp) {
|
||||
vtxp->foreachSource([&](DfgVertex& src) {
|
||||
|
|
@ -179,10 +175,17 @@ class V3DfgPeephole final : public DfgVisitor {
|
|||
// Otherwise we can delete it now.
|
||||
// Remove from cache
|
||||
m_cache.invalidateByValue(vtxp);
|
||||
// This pass only removes variables that are either not driven in this graph,
|
||||
// or are not observable outside the graph. If there is also no external write
|
||||
// to the variable and no references in other graph then delete the Ast var too.
|
||||
const DfgVertexVar* const varp = vtxp->cast<DfgVertexVar>();
|
||||
AstNode* const nodep
|
||||
= varp && !varp->isVolatile() && !varp->hasDfgRefs() ? varp->nodep() : nullptr;
|
||||
// Should not have sinks
|
||||
UASSERT_OBJ(!vtxp->hasSinks(), vtxp, "Should not delete used vertex");
|
||||
//
|
||||
// Delete vertex and Ast variable if any
|
||||
VL_DO_DANGLING(vtxp->unlinkDelete(m_dfg), vtxp);
|
||||
if (nodep) VL_DO_DANGLING(nodep->unlinkFrBack()->deleteTree(), nodep);
|
||||
}
|
||||
|
||||
void replace(DfgVertex* vtxp, DfgVertex* replacementp) {
|
||||
|
|
@ -899,12 +902,9 @@ class V3DfgPeephole final : public DfgVisitor {
|
|||
if (replacementp) {
|
||||
// Replace with sel from driver
|
||||
APPLYING(PUSH_SEL_THROUGH_SPLICE) {
|
||||
addToWorkList(varp); // In case it became redundant and can be removed
|
||||
replace(vtxp, replacementp);
|
||||
// Special case just for this pattern: delete temporary if became unsued
|
||||
if (!varp->hasSinks() && !varp->hasDfgRefs()) {
|
||||
addToWorkList(splicep); // So it can be delete itself if unused
|
||||
VL_DO_DANGLING(varp->unlinkDelete(m_dfg), varp); // Delete it
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1738,22 +1738,58 @@ class V3DfgPeephole final : public DfgVisitor {
|
|||
}
|
||||
}
|
||||
|
||||
void visit(DfgVertexVar* vtxp) override {
|
||||
if (vtxp->hasSinks()) return;
|
||||
if (vtxp->isObserved()) return;
|
||||
if (vtxp->defaultp()) return;
|
||||
|
||||
// If undriven, or driven from another var, it is completely redundant.
|
||||
if (!vtxp->srcp() || vtxp->srcp()->is<DfgVertexVar>()) {
|
||||
APPLYING(REMOVE_VAR) {
|
||||
deleteVertex(vtxp);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Otherwise remove if there is only one sink that is not a removable variable
|
||||
bool foundOne = false;
|
||||
const bool keep = vtxp->srcp()->foreachSink([&](DfgVertex& sink) {
|
||||
// Ignore non observable variable sinks. These can be eliminated.
|
||||
if (const DfgVertexVar* const varp = sink.cast<DfgVertexVar>()) {
|
||||
if (!varp->hasSinks() && !varp->isObserved()) return false;
|
||||
}
|
||||
if (foundOne) return true;
|
||||
foundOne = true;
|
||||
return false;
|
||||
});
|
||||
if (!keep) {
|
||||
APPLYING(REMOVE_VAR) {
|
||||
deleteVertex(vtxp);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#undef APPLYING
|
||||
|
||||
V3DfgPeephole(DfgGraph& dfg, V3DfgPeepholeContext& ctx)
|
||||
: m_dfg{dfg}
|
||||
, m_ctx{ctx} {
|
||||
|
||||
// Add all variable vertices to the work list. Do this first so they are processed last.
|
||||
// This order has a better chance of preserving original variables in case they are needed.
|
||||
for (DfgVertexVar& vtx : m_dfg.varVertices()) addToWorkList(&vtx);
|
||||
|
||||
// Add all operation vertices to the work list and cache
|
||||
for (DfgVertex& vtx : m_dfg.opVertices()) {
|
||||
m_workList.push_front(vtx);
|
||||
addToWorkList(&vtx);
|
||||
m_cache.cache(&vtx);
|
||||
}
|
||||
|
||||
// Process the work list
|
||||
m_workList.foreach([&](DfgVertex& vtx) {
|
||||
// Remove unused vertices as we go
|
||||
if (!vtx.hasSinks()) {
|
||||
// Remove unused operations as we go. Some vars may be removed in the visit method.
|
||||
if (!vtx.hasSinks() && !vtx.is<DfgVertexVar>()) {
|
||||
deleteVertex(&vtx);
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -64,6 +64,7 @@
|
|||
_FOR_EACH_DFG_PEEPHOLE_OPTIMIZATION_APPLY(macro, REMOVE_SEL_FROM_LHS_OF_CONCAT) \
|
||||
_FOR_EACH_DFG_PEEPHOLE_OPTIMIZATION_APPLY(macro, REMOVE_SEL_FROM_RHS_OF_CONCAT) \
|
||||
_FOR_EACH_DFG_PEEPHOLE_OPTIMIZATION_APPLY(macro, REMOVE_SUB_ZERO) \
|
||||
_FOR_EACH_DFG_PEEPHOLE_OPTIMIZATION_APPLY(macro, REMOVE_VAR) \
|
||||
_FOR_EACH_DFG_PEEPHOLE_OPTIMIZATION_APPLY(macro, REMOVE_WIDTH_ONE_REDUCTION) \
|
||||
_FOR_EACH_DFG_PEEPHOLE_OPTIMIZATION_APPLY(macro, REMOVE_XOR_WITH_ZERO) \
|
||||
_FOR_EACH_DFG_PEEPHOLE_OPTIMIZATION_APPLY(macro, REPLACE_AND_OF_NOT_AND_NEQ) \
|
||||
|
|
|
|||
|
|
@ -1,96 +1,98 @@
|
|||
DFG 'post inline' patterns with depth 1
|
||||
9 (CONCAT _A:1 _B:a):b
|
||||
8 (REDXOR _A:a):1
|
||||
3 (AND _A:a _B:a)*:a
|
||||
3 (NOT vA:a)*:a
|
||||
2 (REPLICATE _A:a cA:a)*:b
|
||||
1 (CONCAT '0:a _A:b):A
|
||||
2 (AND _A:a _B:a):a
|
||||
1 (AND _A:a _B:a)*:a
|
||||
1 (CONCAT _A:1 _B:1):a
|
||||
1 (NOT _A:a):a
|
||||
1 (REDXOR _A:a)*:1
|
||||
1 (REPLICATE _A:1 cA:a)*:b
|
||||
1 (REPLICATE _A:a cA:a)*:b
|
||||
1 (REPLICATE _A:a cA:a):b
|
||||
1 (REPLICATE _A:a cA:b)*:b
|
||||
1 (REPLICATE _A:a cA:b)*:c
|
||||
1 (SEL@0 _A:a)*:1
|
||||
1 (SEL@0 _A:a)*:b
|
||||
1 (SEL@0 _A:a):1
|
||||
1 (SEL@0 _A:a):b
|
||||
1 (SEL@A _A:a):1
|
||||
|
||||
DFG 'post inline' patterns with depth 2
|
||||
6 (CONCAT (REDXOR _A:a):1 (CONCAT _B:1 _C:b):c):d
|
||||
3 (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a
|
||||
3 (REDXOR (AND _A:a _B:a)*:a):1
|
||||
1 (CONCAT '0:a (REPLICATE _A:a cA:a)*:b):A
|
||||
2 (AND (NOT vA:a)*:a (NOT vB:a)*:a):a
|
||||
2 (REDXOR (AND _A:a _B:a):a):1
|
||||
1 (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a
|
||||
1 (CONCAT (REDXOR _A:a)*:1 (CONCAT _B:1 _C:b):c):d
|
||||
1 (CONCAT (REDXOR _A:a):1 (CONCAT _B:1 _C:1):b):c
|
||||
1 (CONCAT (REDXOR _A:a):1 (REDXOR _B:b)*:1):c
|
||||
1 (CONCAT (SEL@0 _A:a)*:1 (CONCAT _B:1 _C:b):c):d
|
||||
1 (CONCAT (SEL@0 _A:a):1 (CONCAT _B:1 _C:b):c):d
|
||||
1 (NOT (REPLICATE _A:a cA:b)*:b):b
|
||||
1 (REDXOR (AND _A:a _B:a)*:a):1
|
||||
1 (REDXOR (REPLICATE _A:1 cA:a)*:b):1
|
||||
1 (REDXOR (REPLICATE _A:a cA:a)*:b)*:1
|
||||
1 (REDXOR (REPLICATE _A:a cA:a)*:b):1
|
||||
1 (REDXOR (REPLICATE _A:a cA:a):b)*:1
|
||||
1 (REDXOR (REPLICATE _A:a cA:b)*:b):1
|
||||
1 (REDXOR (REPLICATE _A:a cA:b)*:c):1
|
||||
1 (REDXOR (SEL@0 _A:a)*:b):1
|
||||
1 (REDXOR (SEL@0 _A:a):b):1
|
||||
1 (REPLICATE (NOT _A:a):a cA:a)*:b
|
||||
1 (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c
|
||||
1 (REPLICATE (REPLICATE _A:a cA:b)*:b cA:b)*:c
|
||||
1 (REPLICATE (REPLICATE _A:a cA:b)*:b cA:b):c
|
||||
1 (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b
|
||||
1 (REPLICATE (SEL@A _A:a):1 cA:b)*:c
|
||||
1 (SEL@0 (AND _A:a _B:a)*:a)*:1
|
||||
1 (SEL@0 (REPLICATE _A:a cA:a)*:b)*:c
|
||||
1 (SEL@0 (AND _A:a _B:a)*:a):1
|
||||
1 (SEL@0 (REPLICATE _A:a cA:a)*:b):c
|
||||
1 (SEL@A (AND _A:a _B:a)*:a):1
|
||||
|
||||
DFG 'post inline' patterns with depth 3
|
||||
3 (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1
|
||||
2 (CONCAT (REDXOR (AND _A:a _B:a)*:a):1 (CONCAT (REDXOR _C:a):1 (CONCAT _D:1 _E:b):c):d):e
|
||||
1 (CONCAT '0:a (REPLICATE (REPLICATE _A:b cA:a)*:a cA:a)*:c):A
|
||||
1 (CONCAT (REDXOR (AND _A:a _B:a)*:a):1 (CONCAT (SEL@0 _C:a)*:1 (CONCAT _D:1 _E:b):c):d):e
|
||||
2 (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a):a):1
|
||||
1 (CONCAT (REDXOR (AND _A:a _B:a)*:a):1 (CONCAT (REDXOR _C:a):1 (CONCAT _D:1 _E:b):c):d):e
|
||||
1 (CONCAT (REDXOR (AND _A:a _B:a):a):1 (CONCAT (REDXOR _C:a):1 (CONCAT _D:1 _E:b):c):d):e
|
||||
1 (CONCAT (REDXOR (AND _A:a _B:a):a):1 (CONCAT (SEL@0 _C:a):1 (CONCAT _D:1 _E:b):c):d):e
|
||||
1 (CONCAT (REDXOR (REPLICATE _A:1 cA:a)*:b):1 (CONCAT (REDXOR _B:c):1 (CONCAT _C:1 _D:d):e):f):g
|
||||
1 (CONCAT (REDXOR (REPLICATE _A:a cA:a)*:b)*:1 (CONCAT (REDXOR _B:b):1 (CONCAT _C:1 _D:1):c):d):e
|
||||
1 (CONCAT (REDXOR (REPLICATE _A:a cA:a)*:b):1 (CONCAT (REDXOR _B:c):1 (REDXOR _C:b)*:1):d):e
|
||||
1 (CONCAT (REDXOR (REPLICATE _A:a cA:a):b)*:1 (CONCAT (REDXOR _B:b):1 (CONCAT _C:1 _D:1):c):d):e
|
||||
1 (CONCAT (REDXOR (REPLICATE _A:a cA:b)*:b):1 (CONCAT (REDXOR _B:c)*:1 (CONCAT _C:1 _D:d):e):f):g
|
||||
1 (CONCAT (REDXOR (REPLICATE _A:a cA:b)*:c):1 (CONCAT (REDXOR _B:b):1 (CONCAT _C:1 _D:d):e):f):g
|
||||
1 (CONCAT (REDXOR (SEL@0 _A:a)*:b):1 (REDXOR (REPLICATE _B:c cA:c)*:a)*:1):d
|
||||
1 (CONCAT (SEL@0 (AND _A:a _B:a)*:a)*:1 (CONCAT (REDXOR _C:b):1 (CONCAT _D:1 _E:c):d):e):b
|
||||
1 (CONCAT (REDXOR (SEL@0 _A:a):b):1 (REDXOR (REPLICATE _B:c cA:c):a)*:1):d
|
||||
1 (CONCAT (SEL@0 (AND _A:a _B:a)*:a):1 (CONCAT (REDXOR _C:b):1 (CONCAT _D:1 _E:c):d):e):b
|
||||
1 (NOT (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b):b
|
||||
1 (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1
|
||||
1 (REDXOR (REPLICATE (NOT _A:a):a cA:a)*:b):1
|
||||
1 (REDXOR (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c):1
|
||||
1 (REDXOR (REPLICATE (REPLICATE _A:a cA:b)*:b cA:b)*:c)*:1
|
||||
1 (REDXOR (REPLICATE (REPLICATE _A:a cA:b)*:b cA:b):c)*:1
|
||||
1 (REDXOR (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b):1
|
||||
1 (REDXOR (REPLICATE (SEL@A _A:a):1 cA:b)*:c):1
|
||||
1 (REDXOR (SEL@0 (REPLICATE _A:a cA:a)*:b)*:c):1
|
||||
1 (REDXOR (SEL@0 (REPLICATE _A:a cA:a)*:b):c):1
|
||||
1 (REPLICATE (NOT (REPLICATE _A:a cA:b)*:b):b cA:b)*:c
|
||||
1 (REPLICATE (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c cB:a)*:a
|
||||
1 (REPLICATE (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b cA:b)*:d
|
||||
1 (REPLICATE (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b cA:b):d
|
||||
1 (REPLICATE (REPLICATE (SEL@A _A:a):1 cA:b)*:c cB:b)*:d
|
||||
1 (REPLICATE (SEL@A (AND _A:a _B:a)*:a):1 cA:b)*:c
|
||||
1 (SEL@0 (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a)*:1
|
||||
1 (SEL@0 (REPLICATE (NOT _A:a):a cA:a)*:b)*:c
|
||||
1 (SEL@0 (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1
|
||||
1 (SEL@0 (REPLICATE (NOT _A:a):a cA:a)*:b):c
|
||||
1 (SEL@A (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1
|
||||
|
||||
DFG 'post inline' patterns with depth 4
|
||||
1 (CONCAT '0:a (REPLICATE (REPLICATE (REPLICATE _A:b cA:a)*:c cA:a)*:a cA:a)*:d):A
|
||||
1 (CONCAT (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1 (CONCAT (REDXOR (AND _A:a _B:a)*:a):1 (CONCAT (REDXOR _C:a):1 (CONCAT _D:1 _E:b):c):d):e):f
|
||||
1 (CONCAT (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1 (CONCAT (REDXOR (AND _A:a _B:a)*:a):1 (CONCAT (SEL@0 _C:a)*:1 (CONCAT _D:1 _E:b):c):d):e):f
|
||||
1 (CONCAT (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1 (CONCAT (SEL@0 (AND _A:a _B:a)*:a)*:1 (CONCAT (REDXOR _C:b):1 (CONCAT _D:1 _E:c):d):e):b):f
|
||||
1 (CONCAT (REDXOR (REPLICATE (NOT _A:a):a cA:a)*:b):1 (CONCAT (REDXOR (SEL@0 _B:b)*:c):1 (REDXOR (REPLICATE _A:a cA:a)*:b)*:1):d):e
|
||||
1 (CONCAT (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1 (CONCAT (REDXOR (AND _A:a _B:a):a):1 (CONCAT (REDXOR _C:a):1 (CONCAT _D:1 _E:b):c):d):e):f
|
||||
1 (CONCAT (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a):a):1 (CONCAT (REDXOR (AND _A:a _B:a):a):1 (CONCAT (SEL@0 _C:a):1 (CONCAT _D:1 _E:b):c):d):e):f
|
||||
1 (CONCAT (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a):a):1 (CONCAT (SEL@0 (AND _A:a _B:a)*:a):1 (CONCAT (REDXOR _C:b):1 (CONCAT _D:1 _E:c):d):e):b):f
|
||||
1 (CONCAT (REDXOR (REPLICATE (NOT _A:a):a cA:a)*:b):1 (CONCAT (REDXOR (SEL@0 _B:b):c):1 (REDXOR (REPLICATE _A:a cA:a):b)*:1):d):e
|
||||
1 (CONCAT (REDXOR (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c):1 (CONCAT (REDXOR (REPLICATE _B:c cB:a)*:a):1 (CONCAT (REDXOR _C:d)*:1 (CONCAT _D:1 _E:e):f):g):h):i
|
||||
1 (CONCAT (REDXOR (REPLICATE (REPLICATE _A:a cA:b)*:b cA:b)*:c)*:1 (CONCAT (REDXOR (REPLICATE _B:b cA:b)*:c):1 (CONCAT (REDXOR _C:d):1 (REDXOR _D:c)*:1):e):f):g
|
||||
1 (CONCAT (REDXOR (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b):1 (CONCAT (REDXOR (REPLICATE _B:b cA:b)*:d)*:1 (CONCAT (REDXOR _C:d):1 (CONCAT _D:1 _E:1):e):f):g):h
|
||||
1 (CONCAT (REDXOR (REPLICATE (REPLICATE _A:a cA:b)*:b cA:b):c)*:1 (CONCAT (REDXOR (REPLICATE _B:b cA:b)*:c):1 (CONCAT (REDXOR _C:d):1 (REDXOR _D:c)*:1):e):f):g
|
||||
1 (CONCAT (REDXOR (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b):1 (CONCAT (REDXOR (REPLICATE _B:b cA:b):d)*:1 (CONCAT (REDXOR _C:d):1 (CONCAT _D:1 _E:1):e):f):g):h
|
||||
1 (CONCAT (REDXOR (REPLICATE (SEL@A _A:a):1 cA:b)*:c):1 (CONCAT (REDXOR (REPLICATE _B:c cB:b)*:d):1 (CONCAT (REDXOR _C:b):1 (CONCAT _D:1 _E:e):a):f):g):h
|
||||
1 (CONCAT (REDXOR (SEL@0 (REPLICATE _A:a cA:a)*:b)*:c):1 (REDXOR (REPLICATE (REPLICATE _B:d cA:a)*:a cA:a)*:b)*:1):e
|
||||
1 (CONCAT (SEL@0 (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a)*:1 (CONCAT (REDXOR (REPLICATE _A:1 cA:b)*:c):1 (CONCAT (REDXOR _B:d):1 (CONCAT _C:1 _D:a):e):f):g):c
|
||||
1 (CONCAT (REDXOR (SEL@0 (REPLICATE _A:a cA:a)*:b):c):1 (REDXOR (REPLICATE (REPLICATE _B:d cA:a)*:a cA:a):b)*:1):e
|
||||
1 (CONCAT (SEL@0 (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1 (CONCAT (REDXOR (REPLICATE _A:1 cA:b)*:c):1 (CONCAT (REDXOR _B:d):1 (CONCAT _C:1 _D:a):e):f):g):c
|
||||
1 (NOT (REPLICATE (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c cB:a)*:a):a
|
||||
1 (REDXOR (REPLICATE (NOT (REPLICATE _A:a cA:b)*:b):b cA:b)*:c):1
|
||||
1 (REDXOR (REPLICATE (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c cB:a)*:a):1
|
||||
1 (REDXOR (REPLICATE (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b cA:b)*:d)*:1
|
||||
1 (REDXOR (REPLICATE (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b cA:b):d)*:1
|
||||
1 (REDXOR (REPLICATE (REPLICATE (SEL@A _A:a):1 cA:b)*:c cB:b)*:d):1
|
||||
1 (REDXOR (REPLICATE (SEL@A (AND _A:a _B:a)*:a):1 cA:b)*:c):1
|
||||
1 (REDXOR (SEL@0 (REPLICATE (NOT _A:a):a cA:a)*:b)*:c):1
|
||||
1 (REDXOR (SEL@0 (REPLICATE (NOT _A:a):a cA:a)*:b):c):1
|
||||
1 (REPLICATE (NOT (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b):b cA:b)*:d
|
||||
1 (REPLICATE (REPLICATE (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c cB:a)*:a cB:a)*:d
|
||||
1 (REPLICATE (REPLICATE (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c cB:a)*:a cB:a):d
|
||||
1 (REPLICATE (REPLICATE (REPLICATE (SEL@A _A:a):1 cA:b)*:c cB:b)*:d cB:b)*:b
|
||||
1 (REPLICATE (REPLICATE (SEL@A (AND _A:a _B:a)*:a):1 cA:b)*:c cB:b)*:d
|
||||
1 (REPLICATE (SEL@A (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1 cA:b)*:c
|
||||
1 (SEL@0 (REPLICATE (NOT (REPLICATE _A:a cA:b)*:b):b cA:b)*:c)*:d
|
||||
1 (SEL@0 (REPLICATE (NOT (REPLICATE _A:a cA:b)*:b):b cA:b)*:c):d
|
||||
|
||||
|
|
|
|||
|
|
@ -1,96 +1,98 @@
|
|||
DFG 'pre inline' patterns with depth 1
|
||||
9 (CONCAT _A:1 _B:a):b
|
||||
8 (REDXOR _A:a):1
|
||||
3 (AND _A:a _B:a)*:a
|
||||
3 (NOT vA:a)*:a
|
||||
2 (REPLICATE _A:a cA:a)*:b
|
||||
1 (CONCAT '0:a _A:b):A
|
||||
2 (AND _A:a _B:a):a
|
||||
1 (AND _A:a _B:a)*:a
|
||||
1 (CONCAT _A:1 _B:1):a
|
||||
1 (NOT _A:a):a
|
||||
1 (REDXOR _A:a)*:1
|
||||
1 (REPLICATE _A:1 cA:a)*:b
|
||||
1 (REPLICATE _A:a cA:a)*:b
|
||||
1 (REPLICATE _A:a cA:a):b
|
||||
1 (REPLICATE _A:a cA:b)*:b
|
||||
1 (REPLICATE _A:a cA:b)*:c
|
||||
1 (SEL@0 _A:a)*:1
|
||||
1 (SEL@0 _A:a)*:b
|
||||
1 (SEL@0 _A:a):1
|
||||
1 (SEL@0 _A:a):b
|
||||
1 (SEL@A _A:a):1
|
||||
|
||||
DFG 'pre inline' patterns with depth 2
|
||||
6 (CONCAT (REDXOR _A:a):1 (CONCAT _B:1 _C:b):c):d
|
||||
3 (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a
|
||||
3 (REDXOR (AND _A:a _B:a)*:a):1
|
||||
1 (CONCAT '0:a (REPLICATE _A:a cA:a)*:b):A
|
||||
2 (AND (NOT vA:a)*:a (NOT vB:a)*:a):a
|
||||
2 (REDXOR (AND _A:a _B:a):a):1
|
||||
1 (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a
|
||||
1 (CONCAT (REDXOR _A:a)*:1 (CONCAT _B:1 _C:b):c):d
|
||||
1 (CONCAT (REDXOR _A:a):1 (CONCAT _B:1 _C:1):b):c
|
||||
1 (CONCAT (REDXOR _A:a):1 (REDXOR _B:b)*:1):c
|
||||
1 (CONCAT (SEL@0 _A:a)*:1 (CONCAT _B:1 _C:b):c):d
|
||||
1 (CONCAT (SEL@0 _A:a):1 (CONCAT _B:1 _C:b):c):d
|
||||
1 (NOT (REPLICATE _A:a cA:b)*:b):b
|
||||
1 (REDXOR (AND _A:a _B:a)*:a):1
|
||||
1 (REDXOR (REPLICATE _A:1 cA:a)*:b):1
|
||||
1 (REDXOR (REPLICATE _A:a cA:a)*:b)*:1
|
||||
1 (REDXOR (REPLICATE _A:a cA:a)*:b):1
|
||||
1 (REDXOR (REPLICATE _A:a cA:a):b)*:1
|
||||
1 (REDXOR (REPLICATE _A:a cA:b)*:b):1
|
||||
1 (REDXOR (REPLICATE _A:a cA:b)*:c):1
|
||||
1 (REDXOR (SEL@0 _A:a)*:b):1
|
||||
1 (REDXOR (SEL@0 _A:a):b):1
|
||||
1 (REPLICATE (NOT _A:a):a cA:a)*:b
|
||||
1 (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c
|
||||
1 (REPLICATE (REPLICATE _A:a cA:b)*:b cA:b)*:c
|
||||
1 (REPLICATE (REPLICATE _A:a cA:b)*:b cA:b):c
|
||||
1 (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b
|
||||
1 (REPLICATE (SEL@A _A:a):1 cA:b)*:c
|
||||
1 (SEL@0 (AND _A:a _B:a)*:a)*:1
|
||||
1 (SEL@0 (REPLICATE _A:a cA:a)*:b)*:c
|
||||
1 (SEL@0 (AND _A:a _B:a)*:a):1
|
||||
1 (SEL@0 (REPLICATE _A:a cA:a)*:b):c
|
||||
1 (SEL@A (AND _A:a _B:a)*:a):1
|
||||
|
||||
DFG 'pre inline' patterns with depth 3
|
||||
3 (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1
|
||||
2 (CONCAT (REDXOR (AND _A:a _B:a)*:a):1 (CONCAT (REDXOR _C:a):1 (CONCAT _D:1 _E:b):c):d):e
|
||||
1 (CONCAT '0:a (REPLICATE (REPLICATE _A:b cA:a)*:a cA:a)*:c):A
|
||||
1 (CONCAT (REDXOR (AND _A:a _B:a)*:a):1 (CONCAT (SEL@0 _C:a)*:1 (CONCAT _D:1 _E:b):c):d):e
|
||||
2 (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a):a):1
|
||||
1 (CONCAT (REDXOR (AND _A:a _B:a)*:a):1 (CONCAT (REDXOR _C:a):1 (CONCAT _D:1 _E:b):c):d):e
|
||||
1 (CONCAT (REDXOR (AND _A:a _B:a):a):1 (CONCAT (REDXOR _C:a):1 (CONCAT _D:1 _E:b):c):d):e
|
||||
1 (CONCAT (REDXOR (AND _A:a _B:a):a):1 (CONCAT (SEL@0 _C:a):1 (CONCAT _D:1 _E:b):c):d):e
|
||||
1 (CONCAT (REDXOR (REPLICATE _A:1 cA:a)*:b):1 (CONCAT (REDXOR _B:c):1 (CONCAT _C:1 _D:d):e):f):g
|
||||
1 (CONCAT (REDXOR (REPLICATE _A:a cA:a)*:b)*:1 (CONCAT (REDXOR _B:b):1 (CONCAT _C:1 _D:1):c):d):e
|
||||
1 (CONCAT (REDXOR (REPLICATE _A:a cA:a)*:b):1 (CONCAT (REDXOR _B:c):1 (REDXOR _C:b)*:1):d):e
|
||||
1 (CONCAT (REDXOR (REPLICATE _A:a cA:a):b)*:1 (CONCAT (REDXOR _B:b):1 (CONCAT _C:1 _D:1):c):d):e
|
||||
1 (CONCAT (REDXOR (REPLICATE _A:a cA:b)*:b):1 (CONCAT (REDXOR _B:c)*:1 (CONCAT _C:1 _D:d):e):f):g
|
||||
1 (CONCAT (REDXOR (REPLICATE _A:a cA:b)*:c):1 (CONCAT (REDXOR _B:b):1 (CONCAT _C:1 _D:d):e):f):g
|
||||
1 (CONCAT (REDXOR (SEL@0 _A:a)*:b):1 (REDXOR (REPLICATE _B:c cA:c)*:a)*:1):d
|
||||
1 (CONCAT (SEL@0 (AND _A:a _B:a)*:a)*:1 (CONCAT (REDXOR _C:b):1 (CONCAT _D:1 _E:c):d):e):b
|
||||
1 (CONCAT (REDXOR (SEL@0 _A:a):b):1 (REDXOR (REPLICATE _B:c cA:c):a)*:1):d
|
||||
1 (CONCAT (SEL@0 (AND _A:a _B:a)*:a):1 (CONCAT (REDXOR _C:b):1 (CONCAT _D:1 _E:c):d):e):b
|
||||
1 (NOT (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b):b
|
||||
1 (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1
|
||||
1 (REDXOR (REPLICATE (NOT _A:a):a cA:a)*:b):1
|
||||
1 (REDXOR (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c):1
|
||||
1 (REDXOR (REPLICATE (REPLICATE _A:a cA:b)*:b cA:b)*:c)*:1
|
||||
1 (REDXOR (REPLICATE (REPLICATE _A:a cA:b)*:b cA:b):c)*:1
|
||||
1 (REDXOR (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b):1
|
||||
1 (REDXOR (REPLICATE (SEL@A _A:a):1 cA:b)*:c):1
|
||||
1 (REDXOR (SEL@0 (REPLICATE _A:a cA:a)*:b)*:c):1
|
||||
1 (REDXOR (SEL@0 (REPLICATE _A:a cA:a)*:b):c):1
|
||||
1 (REPLICATE (NOT (REPLICATE _A:a cA:b)*:b):b cA:b)*:c
|
||||
1 (REPLICATE (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c cB:a)*:a
|
||||
1 (REPLICATE (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b cA:b)*:d
|
||||
1 (REPLICATE (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b cA:b):d
|
||||
1 (REPLICATE (REPLICATE (SEL@A _A:a):1 cA:b)*:c cB:b)*:d
|
||||
1 (REPLICATE (SEL@A (AND _A:a _B:a)*:a):1 cA:b)*:c
|
||||
1 (SEL@0 (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a)*:1
|
||||
1 (SEL@0 (REPLICATE (NOT _A:a):a cA:a)*:b)*:c
|
||||
1 (SEL@0 (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1
|
||||
1 (SEL@0 (REPLICATE (NOT _A:a):a cA:a)*:b):c
|
||||
1 (SEL@A (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1
|
||||
|
||||
DFG 'pre inline' patterns with depth 4
|
||||
1 (CONCAT '0:a (REPLICATE (REPLICATE (REPLICATE _A:b cA:a)*:c cA:a)*:a cA:a)*:d):A
|
||||
1 (CONCAT (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1 (CONCAT (REDXOR (AND _A:a _B:a)*:a):1 (CONCAT (REDXOR _C:a):1 (CONCAT _D:1 _E:b):c):d):e):f
|
||||
1 (CONCAT (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1 (CONCAT (REDXOR (AND _A:a _B:a)*:a):1 (CONCAT (SEL@0 _C:a)*:1 (CONCAT _D:1 _E:b):c):d):e):f
|
||||
1 (CONCAT (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1 (CONCAT (SEL@0 (AND _A:a _B:a)*:a)*:1 (CONCAT (REDXOR _C:b):1 (CONCAT _D:1 _E:c):d):e):b):f
|
||||
1 (CONCAT (REDXOR (REPLICATE (NOT _A:a):a cA:a)*:b):1 (CONCAT (REDXOR (SEL@0 _B:b)*:c):1 (REDXOR (REPLICATE _A:a cA:a)*:b)*:1):d):e
|
||||
1 (CONCAT (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1 (CONCAT (REDXOR (AND _A:a _B:a):a):1 (CONCAT (REDXOR _C:a):1 (CONCAT _D:1 _E:b):c):d):e):f
|
||||
1 (CONCAT (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a):a):1 (CONCAT (REDXOR (AND _A:a _B:a):a):1 (CONCAT (SEL@0 _C:a):1 (CONCAT _D:1 _E:b):c):d):e):f
|
||||
1 (CONCAT (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a):a):1 (CONCAT (SEL@0 (AND _A:a _B:a)*:a):1 (CONCAT (REDXOR _C:b):1 (CONCAT _D:1 _E:c):d):e):b):f
|
||||
1 (CONCAT (REDXOR (REPLICATE (NOT _A:a):a cA:a)*:b):1 (CONCAT (REDXOR (SEL@0 _B:b):c):1 (REDXOR (REPLICATE _A:a cA:a):b)*:1):d):e
|
||||
1 (CONCAT (REDXOR (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c):1 (CONCAT (REDXOR (REPLICATE _B:c cB:a)*:a):1 (CONCAT (REDXOR _C:d)*:1 (CONCAT _D:1 _E:e):f):g):h):i
|
||||
1 (CONCAT (REDXOR (REPLICATE (REPLICATE _A:a cA:b)*:b cA:b)*:c)*:1 (CONCAT (REDXOR (REPLICATE _B:b cA:b)*:c):1 (CONCAT (REDXOR _C:d):1 (REDXOR _D:c)*:1):e):f):g
|
||||
1 (CONCAT (REDXOR (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b):1 (CONCAT (REDXOR (REPLICATE _B:b cA:b)*:d)*:1 (CONCAT (REDXOR _C:d):1 (CONCAT _D:1 _E:1):e):f):g):h
|
||||
1 (CONCAT (REDXOR (REPLICATE (REPLICATE _A:a cA:b)*:b cA:b):c)*:1 (CONCAT (REDXOR (REPLICATE _B:b cA:b)*:c):1 (CONCAT (REDXOR _C:d):1 (REDXOR _D:c)*:1):e):f):g
|
||||
1 (CONCAT (REDXOR (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b):1 (CONCAT (REDXOR (REPLICATE _B:b cA:b):d)*:1 (CONCAT (REDXOR _C:d):1 (CONCAT _D:1 _E:1):e):f):g):h
|
||||
1 (CONCAT (REDXOR (REPLICATE (SEL@A _A:a):1 cA:b)*:c):1 (CONCAT (REDXOR (REPLICATE _B:c cB:b)*:d):1 (CONCAT (REDXOR _C:b):1 (CONCAT _D:1 _E:e):a):f):g):h
|
||||
1 (CONCAT (REDXOR (SEL@0 (REPLICATE _A:a cA:a)*:b)*:c):1 (REDXOR (REPLICATE (REPLICATE _B:d cA:a)*:a cA:a)*:b)*:1):e
|
||||
1 (CONCAT (SEL@0 (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a)*:1 (CONCAT (REDXOR (REPLICATE _A:1 cA:b)*:c):1 (CONCAT (REDXOR _B:d):1 (CONCAT _C:1 _D:a):e):f):g):c
|
||||
1 (CONCAT (REDXOR (SEL@0 (REPLICATE _A:a cA:a)*:b):c):1 (REDXOR (REPLICATE (REPLICATE _B:d cA:a)*:a cA:a):b)*:1):e
|
||||
1 (CONCAT (SEL@0 (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1 (CONCAT (REDXOR (REPLICATE _A:1 cA:b)*:c):1 (CONCAT (REDXOR _B:d):1 (CONCAT _C:1 _D:a):e):f):g):c
|
||||
1 (NOT (REPLICATE (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c cB:a)*:a):a
|
||||
1 (REDXOR (REPLICATE (NOT (REPLICATE _A:a cA:b)*:b):b cA:b)*:c):1
|
||||
1 (REDXOR (REPLICATE (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c cB:a)*:a):1
|
||||
1 (REDXOR (REPLICATE (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b cA:b)*:d)*:1
|
||||
1 (REDXOR (REPLICATE (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b cA:b):d)*:1
|
||||
1 (REDXOR (REPLICATE (REPLICATE (SEL@A _A:a):1 cA:b)*:c cB:b)*:d):1
|
||||
1 (REDXOR (REPLICATE (SEL@A (AND _A:a _B:a)*:a):1 cA:b)*:c):1
|
||||
1 (REDXOR (SEL@0 (REPLICATE (NOT _A:a):a cA:a)*:b)*:c):1
|
||||
1 (REDXOR (SEL@0 (REPLICATE (NOT _A:a):a cA:a)*:b):c):1
|
||||
1 (REPLICATE (NOT (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b):b cA:b)*:d
|
||||
1 (REPLICATE (REPLICATE (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c cB:a)*:a cB:a)*:d
|
||||
1 (REPLICATE (REPLICATE (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c cB:a)*:a cB:a):d
|
||||
1 (REPLICATE (REPLICATE (REPLICATE (SEL@A _A:a):1 cA:b)*:c cB:b)*:d cB:b)*:b
|
||||
1 (REPLICATE (REPLICATE (SEL@A (AND _A:a _B:a)*:a):1 cA:b)*:c cB:b)*:d
|
||||
1 (REPLICATE (SEL@A (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1 cA:b)*:c
|
||||
1 (SEL@0 (REPLICATE (NOT (REPLICATE _A:a cA:b)*:b):b cA:b)*:c)*:d
|
||||
1 (SEL@0 (REPLICATE (NOT (REPLICATE _A:a cA:b)*:b):b cA:b)*:c):d
|
||||
|
||||
|
|
|
|||
|
|
@ -1,96 +1,98 @@
|
|||
DFG 'scoped' patterns with depth 1
|
||||
9 (CONCAT _A:1 _B:a):b
|
||||
8 (REDXOR _A:a):1
|
||||
3 (AND _A:a _B:a)*:a
|
||||
3 (NOT vA:a)*:a
|
||||
2 (REPLICATE _A:a cA:a)*:b
|
||||
1 (CONCAT '0:a _A:b):A
|
||||
2 (AND _A:a _B:a):a
|
||||
1 (AND _A:a _B:a)*:a
|
||||
1 (CONCAT _A:1 _B:1):a
|
||||
1 (NOT _A:a):a
|
||||
1 (REDXOR _A:a)*:1
|
||||
1 (REPLICATE _A:1 cA:a)*:b
|
||||
1 (REPLICATE _A:a cA:a)*:b
|
||||
1 (REPLICATE _A:a cA:a):b
|
||||
1 (REPLICATE _A:a cA:b)*:b
|
||||
1 (REPLICATE _A:a cA:b)*:c
|
||||
1 (SEL@0 _A:a)*:1
|
||||
1 (SEL@0 _A:a)*:b
|
||||
1 (SEL@0 _A:a):1
|
||||
1 (SEL@0 _A:a):b
|
||||
1 (SEL@A _A:a):1
|
||||
|
||||
DFG 'scoped' patterns with depth 2
|
||||
6 (CONCAT (REDXOR _A:a):1 (CONCAT _B:1 _C:b):c):d
|
||||
3 (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a
|
||||
3 (REDXOR (AND _A:a _B:a)*:a):1
|
||||
1 (CONCAT '0:a (REPLICATE _A:a cA:a)*:b):A
|
||||
2 (AND (NOT vA:a)*:a (NOT vB:a)*:a):a
|
||||
2 (REDXOR (AND _A:a _B:a):a):1
|
||||
1 (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a
|
||||
1 (CONCAT (REDXOR _A:a)*:1 (CONCAT _B:1 _C:b):c):d
|
||||
1 (CONCAT (REDXOR _A:a):1 (CONCAT _B:1 _C:1):b):c
|
||||
1 (CONCAT (REDXOR _A:a):1 (REDXOR _B:b)*:1):c
|
||||
1 (CONCAT (SEL@0 _A:a)*:1 (CONCAT _B:1 _C:b):c):d
|
||||
1 (CONCAT (SEL@0 _A:a):1 (CONCAT _B:1 _C:b):c):d
|
||||
1 (NOT (REPLICATE _A:a cA:b)*:b):b
|
||||
1 (REDXOR (AND _A:a _B:a)*:a):1
|
||||
1 (REDXOR (REPLICATE _A:1 cA:a)*:b):1
|
||||
1 (REDXOR (REPLICATE _A:a cA:a)*:b)*:1
|
||||
1 (REDXOR (REPLICATE _A:a cA:a)*:b):1
|
||||
1 (REDXOR (REPLICATE _A:a cA:a):b)*:1
|
||||
1 (REDXOR (REPLICATE _A:a cA:b)*:b):1
|
||||
1 (REDXOR (REPLICATE _A:a cA:b)*:c):1
|
||||
1 (REDXOR (SEL@0 _A:a)*:b):1
|
||||
1 (REDXOR (SEL@0 _A:a):b):1
|
||||
1 (REPLICATE (NOT _A:a):a cA:a)*:b
|
||||
1 (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c
|
||||
1 (REPLICATE (REPLICATE _A:a cA:b)*:b cA:b)*:c
|
||||
1 (REPLICATE (REPLICATE _A:a cA:b)*:b cA:b):c
|
||||
1 (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b
|
||||
1 (REPLICATE (SEL@A _A:a):1 cA:b)*:c
|
||||
1 (SEL@0 (AND _A:a _B:a)*:a)*:1
|
||||
1 (SEL@0 (REPLICATE _A:a cA:a)*:b)*:c
|
||||
1 (SEL@0 (AND _A:a _B:a)*:a):1
|
||||
1 (SEL@0 (REPLICATE _A:a cA:a)*:b):c
|
||||
1 (SEL@A (AND _A:a _B:a)*:a):1
|
||||
|
||||
DFG 'scoped' patterns with depth 3
|
||||
3 (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1
|
||||
2 (CONCAT (REDXOR (AND _A:a _B:a)*:a):1 (CONCAT (REDXOR _C:a):1 (CONCAT _D:1 _E:b):c):d):e
|
||||
1 (CONCAT '0:a (REPLICATE (REPLICATE _A:b cA:a)*:a cA:a)*:c):A
|
||||
1 (CONCAT (REDXOR (AND _A:a _B:a)*:a):1 (CONCAT (SEL@0 _C:a)*:1 (CONCAT _D:1 _E:b):c):d):e
|
||||
2 (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a):a):1
|
||||
1 (CONCAT (REDXOR (AND _A:a _B:a)*:a):1 (CONCAT (REDXOR _C:a):1 (CONCAT _D:1 _E:b):c):d):e
|
||||
1 (CONCAT (REDXOR (AND _A:a _B:a):a):1 (CONCAT (REDXOR _C:a):1 (CONCAT _D:1 _E:b):c):d):e
|
||||
1 (CONCAT (REDXOR (AND _A:a _B:a):a):1 (CONCAT (SEL@0 _C:a):1 (CONCAT _D:1 _E:b):c):d):e
|
||||
1 (CONCAT (REDXOR (REPLICATE _A:1 cA:a)*:b):1 (CONCAT (REDXOR _B:c):1 (CONCAT _C:1 _D:d):e):f):g
|
||||
1 (CONCAT (REDXOR (REPLICATE _A:a cA:a)*:b)*:1 (CONCAT (REDXOR _B:b):1 (CONCAT _C:1 _D:1):c):d):e
|
||||
1 (CONCAT (REDXOR (REPLICATE _A:a cA:a)*:b):1 (CONCAT (REDXOR _B:c):1 (REDXOR _C:b)*:1):d):e
|
||||
1 (CONCAT (REDXOR (REPLICATE _A:a cA:a):b)*:1 (CONCAT (REDXOR _B:b):1 (CONCAT _C:1 _D:1):c):d):e
|
||||
1 (CONCAT (REDXOR (REPLICATE _A:a cA:b)*:b):1 (CONCAT (REDXOR _B:c)*:1 (CONCAT _C:1 _D:d):e):f):g
|
||||
1 (CONCAT (REDXOR (REPLICATE _A:a cA:b)*:c):1 (CONCAT (REDXOR _B:b):1 (CONCAT _C:1 _D:d):e):f):g
|
||||
1 (CONCAT (REDXOR (SEL@0 _A:a)*:b):1 (REDXOR (REPLICATE _B:c cA:c)*:a)*:1):d
|
||||
1 (CONCAT (SEL@0 (AND _A:a _B:a)*:a)*:1 (CONCAT (REDXOR _C:b):1 (CONCAT _D:1 _E:c):d):e):b
|
||||
1 (CONCAT (REDXOR (SEL@0 _A:a):b):1 (REDXOR (REPLICATE _B:c cA:c):a)*:1):d
|
||||
1 (CONCAT (SEL@0 (AND _A:a _B:a)*:a):1 (CONCAT (REDXOR _C:b):1 (CONCAT _D:1 _E:c):d):e):b
|
||||
1 (NOT (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b):b
|
||||
1 (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1
|
||||
1 (REDXOR (REPLICATE (NOT _A:a):a cA:a)*:b):1
|
||||
1 (REDXOR (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c):1
|
||||
1 (REDXOR (REPLICATE (REPLICATE _A:a cA:b)*:b cA:b)*:c)*:1
|
||||
1 (REDXOR (REPLICATE (REPLICATE _A:a cA:b)*:b cA:b):c)*:1
|
||||
1 (REDXOR (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b):1
|
||||
1 (REDXOR (REPLICATE (SEL@A _A:a):1 cA:b)*:c):1
|
||||
1 (REDXOR (SEL@0 (REPLICATE _A:a cA:a)*:b)*:c):1
|
||||
1 (REDXOR (SEL@0 (REPLICATE _A:a cA:a)*:b):c):1
|
||||
1 (REPLICATE (NOT (REPLICATE _A:a cA:b)*:b):b cA:b)*:c
|
||||
1 (REPLICATE (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c cB:a)*:a
|
||||
1 (REPLICATE (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b cA:b)*:d
|
||||
1 (REPLICATE (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b cA:b):d
|
||||
1 (REPLICATE (REPLICATE (SEL@A _A:a):1 cA:b)*:c cB:b)*:d
|
||||
1 (REPLICATE (SEL@A (AND _A:a _B:a)*:a):1 cA:b)*:c
|
||||
1 (SEL@0 (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a)*:1
|
||||
1 (SEL@0 (REPLICATE (NOT _A:a):a cA:a)*:b)*:c
|
||||
1 (SEL@0 (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1
|
||||
1 (SEL@0 (REPLICATE (NOT _A:a):a cA:a)*:b):c
|
||||
1 (SEL@A (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1
|
||||
|
||||
DFG 'scoped' patterns with depth 4
|
||||
1 (CONCAT '0:a (REPLICATE (REPLICATE (REPLICATE _A:b cA:a)*:c cA:a)*:a cA:a)*:d):A
|
||||
1 (CONCAT (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1 (CONCAT (REDXOR (AND _A:a _B:a)*:a):1 (CONCAT (REDXOR _C:a):1 (CONCAT _D:1 _E:b):c):d):e):f
|
||||
1 (CONCAT (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1 (CONCAT (REDXOR (AND _A:a _B:a)*:a):1 (CONCAT (SEL@0 _C:a)*:1 (CONCAT _D:1 _E:b):c):d):e):f
|
||||
1 (CONCAT (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1 (CONCAT (SEL@0 (AND _A:a _B:a)*:a)*:1 (CONCAT (REDXOR _C:b):1 (CONCAT _D:1 _E:c):d):e):b):f
|
||||
1 (CONCAT (REDXOR (REPLICATE (NOT _A:a):a cA:a)*:b):1 (CONCAT (REDXOR (SEL@0 _B:b)*:c):1 (REDXOR (REPLICATE _A:a cA:a)*:b)*:1):d):e
|
||||
1 (CONCAT (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1 (CONCAT (REDXOR (AND _A:a _B:a):a):1 (CONCAT (REDXOR _C:a):1 (CONCAT _D:1 _E:b):c):d):e):f
|
||||
1 (CONCAT (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a):a):1 (CONCAT (REDXOR (AND _A:a _B:a):a):1 (CONCAT (SEL@0 _C:a):1 (CONCAT _D:1 _E:b):c):d):e):f
|
||||
1 (CONCAT (REDXOR (AND (NOT vA:a)*:a (NOT vB:a)*:a):a):1 (CONCAT (SEL@0 (AND _A:a _B:a)*:a):1 (CONCAT (REDXOR _C:b):1 (CONCAT _D:1 _E:c):d):e):b):f
|
||||
1 (CONCAT (REDXOR (REPLICATE (NOT _A:a):a cA:a)*:b):1 (CONCAT (REDXOR (SEL@0 _B:b):c):1 (REDXOR (REPLICATE _A:a cA:a):b)*:1):d):e
|
||||
1 (CONCAT (REDXOR (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c):1 (CONCAT (REDXOR (REPLICATE _B:c cB:a)*:a):1 (CONCAT (REDXOR _C:d)*:1 (CONCAT _D:1 _E:e):f):g):h):i
|
||||
1 (CONCAT (REDXOR (REPLICATE (REPLICATE _A:a cA:b)*:b cA:b)*:c)*:1 (CONCAT (REDXOR (REPLICATE _B:b cA:b)*:c):1 (CONCAT (REDXOR _C:d):1 (REDXOR _D:c)*:1):e):f):g
|
||||
1 (CONCAT (REDXOR (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b):1 (CONCAT (REDXOR (REPLICATE _B:b cA:b)*:d)*:1 (CONCAT (REDXOR _C:d):1 (CONCAT _D:1 _E:1):e):f):g):h
|
||||
1 (CONCAT (REDXOR (REPLICATE (REPLICATE _A:a cA:b)*:b cA:b):c)*:1 (CONCAT (REDXOR (REPLICATE _B:b cA:b)*:c):1 (CONCAT (REDXOR _C:d):1 (REDXOR _D:c)*:1):e):f):g
|
||||
1 (CONCAT (REDXOR (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b):1 (CONCAT (REDXOR (REPLICATE _B:b cA:b):d)*:1 (CONCAT (REDXOR _C:d):1 (CONCAT _D:1 _E:1):e):f):g):h
|
||||
1 (CONCAT (REDXOR (REPLICATE (SEL@A _A:a):1 cA:b)*:c):1 (CONCAT (REDXOR (REPLICATE _B:c cB:b)*:d):1 (CONCAT (REDXOR _C:b):1 (CONCAT _D:1 _E:e):a):f):g):h
|
||||
1 (CONCAT (REDXOR (SEL@0 (REPLICATE _A:a cA:a)*:b)*:c):1 (REDXOR (REPLICATE (REPLICATE _B:d cA:a)*:a cA:a)*:b)*:1):e
|
||||
1 (CONCAT (SEL@0 (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a)*:1 (CONCAT (REDXOR (REPLICATE _A:1 cA:b)*:c):1 (CONCAT (REDXOR _B:d):1 (CONCAT _C:1 _D:a):e):f):g):c
|
||||
1 (CONCAT (REDXOR (SEL@0 (REPLICATE _A:a cA:a)*:b):c):1 (REDXOR (REPLICATE (REPLICATE _B:d cA:a)*:a cA:a):b)*:1):e
|
||||
1 (CONCAT (SEL@0 (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1 (CONCAT (REDXOR (REPLICATE _A:1 cA:b)*:c):1 (CONCAT (REDXOR _B:d):1 (CONCAT _C:1 _D:a):e):f):g):c
|
||||
1 (NOT (REPLICATE (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c cB:a)*:a):a
|
||||
1 (REDXOR (REPLICATE (NOT (REPLICATE _A:a cA:b)*:b):b cA:b)*:c):1
|
||||
1 (REDXOR (REPLICATE (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c cB:a)*:a):1
|
||||
1 (REDXOR (REPLICATE (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b cA:b)*:d)*:1
|
||||
1 (REDXOR (REPLICATE (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b cA:b):d)*:1
|
||||
1 (REDXOR (REPLICATE (REPLICATE (SEL@A _A:a):1 cA:b)*:c cB:b)*:d):1
|
||||
1 (REDXOR (REPLICATE (SEL@A (AND _A:a _B:a)*:a):1 cA:b)*:c):1
|
||||
1 (REDXOR (SEL@0 (REPLICATE (NOT _A:a):a cA:a)*:b)*:c):1
|
||||
1 (REDXOR (SEL@0 (REPLICATE (NOT _A:a):a cA:a)*:b):c):1
|
||||
1 (REPLICATE (NOT (REPLICATE (REPLICATE _A:a cA:b)*:c cA:b)*:b):b cA:b)*:d
|
||||
1 (REPLICATE (REPLICATE (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c cB:a)*:a cB:a)*:d
|
||||
1 (REPLICATE (REPLICATE (REPLICATE (REPLICATE _A:1 cA:a)*:b cB:a)*:c cB:a)*:a cB:a):d
|
||||
1 (REPLICATE (REPLICATE (REPLICATE (SEL@A _A:a):1 cA:b)*:c cB:b)*:d cB:b)*:b
|
||||
1 (REPLICATE (REPLICATE (SEL@A (AND _A:a _B:a)*:a):1 cA:b)*:c cB:b)*:d
|
||||
1 (REPLICATE (SEL@A (AND (NOT vA:a)*:a (NOT vB:a)*:a)*:a):1 cA:b)*:c
|
||||
1 (SEL@0 (REPLICATE (NOT (REPLICATE _A:a cA:b)*:b):b cA:b)*:c)*:d
|
||||
1 (SEL@0 (REPLICATE (NOT (REPLICATE _A:a cA:b)*:b):b cA:b)*:c):d
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ test.compile(verilator_flags2=["-Wno-UNOPTTHREADS", "--stats", test.pli_filename
|
|||
test.execute()
|
||||
|
||||
if test.vlt:
|
||||
test.file_grep(test.stats, r'Optimizations, Const bit op reduction\s+(\d+)', 43)
|
||||
test.file_grep(test.stats, r'Optimizations, Const bit op reduction\s+(\d+)', 42)
|
||||
test.file_grep(test.stats, r'SplitVar, packed variables split automatically\s+(\d+)', 1)
|
||||
|
||||
test.passes()
|
||||
|
|
|
|||
Loading…
Reference in New Issue