mirror of
https://github.com/verilator/verilator.git
synced 2026-10-06 01:54:01 +02:00
Add unroll_disable and unroll_full loop control metacomments (#3260).
This commit is contained in:
+10
-11
@@ -393,9 +393,6 @@ private:
|
||||
UASSERT_OBJ(vscp, nodep, "Not linked");
|
||||
return vscp;
|
||||
}
|
||||
int unrollCount() const {
|
||||
return m_params ? v3Global.opt.unrollCount() * 16 : v3Global.opt.unrollCount();
|
||||
}
|
||||
bool jumpingOver(const AstNode* nodep) const {
|
||||
// True to jump over this node - all visitors must call this up front
|
||||
return (m_jumpp && m_jumpp->labelp() != nodep);
|
||||
@@ -960,10 +957,11 @@ private:
|
||||
}
|
||||
iterateAndNextConstNull(nodep->stmtsp());
|
||||
iterateAndNextConstNull(nodep->incsp());
|
||||
if (loops++ > unrollCount() * 16) {
|
||||
if (loops++ > v3Global.opt.unrollCountAdjusted(VOptionBool{}, m_params, true)) {
|
||||
clearOptimizable(nodep, "Loop unrolling took too long; probably this is an"
|
||||
"infinite loop, or set --unroll-count above "
|
||||
+ cvtToStr(unrollCount()));
|
||||
"infinite loop, or use /*verilator unroll_full*/, or "
|
||||
"set --unroll-count above "
|
||||
+ cvtToStr(loops));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -999,11 +997,12 @@ private:
|
||||
if (jumpingOver(nodep)) break;
|
||||
|
||||
// Prep for next loop
|
||||
if (loops++ > unrollCount() * 16) {
|
||||
clearOptimizable(nodep,
|
||||
"Loop unrolling took too long; probably this is an infinite"
|
||||
" loop, or set --unroll-count above "
|
||||
+ cvtToStr(unrollCount()));
|
||||
if (loops++
|
||||
> v3Global.opt.unrollCountAdjusted(nodep->unrollFull(), m_params, true)) {
|
||||
clearOptimizable(nodep, "Loop unrolling took too long; probably this is an"
|
||||
"infinite loop, or use /*verilator unroll_full*/, or "
|
||||
"set --unroll-count above "
|
||||
+ cvtToStr(loops));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user