diff --git a/src/V3Ast.h b/src/V3Ast.h index 5925d881d..63d86ae53 100644 --- a/src/V3Ast.h +++ b/src/V3Ast.h @@ -1510,21 +1510,21 @@ public: static void operator delete(void* obj, size_t size); #endif - // CONSTANT ACCESSORS - static int instrCountBranch() { return 4; } ///< Instruction cycles to branch - static int instrCountDiv() { return 10; } ///< Instruction cycles to divide - static int instrCountDpi() { return 1000; } ///< Instruction cycles to call user function - static int instrCountLd() { return 2; } ///< Instruction cycles to load memory - static int instrCountMul() { return 3; } ///< Instruction cycles to multiply integers - static int instrCountPli() { return 20; } ///< Instruction cycles to call pli routines - static int instrCountDouble() { return 8; } ///< Instruction cycles to convert or do floats - static int instrCountDoubleDiv() { return 40; } ///< Instruction cycles to divide floats - static int instrCountDoubleTrig() { return 200; } ///< Instruction cycles to do trigonomics - static int instrCountString() { return 100; } ///< Instruction cycles to do string ops - /// Instruction cycles to call subroutine - static int instrCountCall() { return instrCountBranch() + 10; } - /// Instruction cycles to determine simulation time - static int instrCountTime() { return instrCountCall() + 5; } + // CONSTANTS + // The following are relative dynamic costs (~ execution cycle count) of various operations. + // They are used by V3InstCount to estimate the relative execution time of code fragments. + static constexpr int INSTR_COUNT_BRANCH = 4; // Branch + static constexpr int INSTR_COUNT_CALL = INSTR_COUNT_BRANCH + 10; // Subroutine call + static constexpr int INSTR_COUNT_LD = 2; // Load memory + static constexpr int INSTR_COUNT_INT_MUL = 3; // Integer multiply + static constexpr int INSTR_COUNT_INT_DIV = 10; // Integer divide + static constexpr int INSTR_COUNT_DBL = 8; // Convert or do float ops + static constexpr int INSTR_COUNT_DBL_DIV = 40; // Double divide + static constexpr int INSTR_COUNT_DBL_TRIG = 200; // Double trigonometric ops + static constexpr int INSTR_COUNT_STR = 100; // String ops + static constexpr int INSTR_COUNT_TIME = INSTR_COUNT_CALL + 5; // Determine simulation time + static constexpr int INSTR_COUNT_PLI = 20; // PLI routines + static constexpr int INSTR_COUNT_DPI = 1000; // DPI import function // ACCESSORS virtual string name() const { return ""; } @@ -2094,7 +2094,7 @@ public: virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } virtual bool sizeMattersThs() const override { return false; } - virtual int instrCount() const override { return instrCountBranch(); } + virtual int instrCount() const override { return INSTR_COUNT_BRANCH; } virtual AstNode* cloneType(AstNode* condp, AstNode* expr1p, AstNode* expr2p) = 0; }; @@ -2229,7 +2229,7 @@ public: AstNode* incsp() const { return op3p(); } // op3 = increment statements AstNode* bodysp() const { return op4p(); } // op4 = body of loop virtual bool isGateOptimizable() const override { return false; } - virtual int instrCount() const override { return instrCountBranch(); } + virtual int instrCount() const override { return INSTR_COUNT_BRANCH; } virtual bool same(const AstNode* samep) const override { return true; } }; @@ -2256,7 +2256,7 @@ public: void addElsesp(AstNode* newp) { addOp3p(newp); } virtual bool isGateOptimizable() const override { return false; } virtual bool isGateDedupable() const override { return true; } - virtual int instrCount() const override { return instrCountBranch(); } + virtual int instrCount() const override { return INSTR_COUNT_BRANCH; } virtual bool same(const AstNode* samep) const override { return true; } void branchPred(VBranchPred flag) { m_branchPred = flag; } VBranchPred branchPred() const { return m_branchPred; } @@ -2274,7 +2274,7 @@ protected: public: ASTNODE_BASE_FUNCS(NodeCase) - virtual int instrCount() const override { return instrCountBranch(); } + virtual int instrCount() const override { return INSTR_COUNT_BRANCH; } AstNode* exprp() const { return op1p(); } // op1 = case condition AstCaseItem* itemsp() const { return VN_CAST(op2p(), CaseItem); @@ -2644,7 +2644,7 @@ public: virtual void dump(std::ostream& str = std::cout) const override; virtual void cloneRelink() override; virtual const char* broken() const override; - virtual int instrCount() const override { return instrCountCall(); } + virtual int instrCount() const override { return INSTR_COUNT_CALL; } virtual bool same(const AstNode* samep) const override { const AstNodeCCall* asamep = static_cast(samep); return (funcp() == asamep->funcp() && argTypes() == asamep->argTypes()); diff --git a/src/V3AstNodes.h b/src/V3AstNodes.h index 987d9594e..6fb566b7f 100644 --- a/src/V3AstNodes.h +++ b/src/V3AstNodes.h @@ -2400,7 +2400,7 @@ public: } } virtual int instrCount() const override { - return widthInstrs() * (access().isReadOrRW() ? instrCountLd() : 1); + return widthInstrs() * (access().isReadOrRW() ? INSTR_COUNT_LD : 1); } virtual string emitVerilog() override { V3ERROR_NA_RETURN(""); } virtual string emitC() override { V3ERROR_NA_RETURN(""); } @@ -3584,7 +3584,7 @@ public: if (m_dataDeclp && m_dataDeclp->clonep()) m_dataDeclp = m_dataDeclp->clonep(); } virtual void dump(std::ostream& str) const override; - virtual int instrCount() const override { return 1 + 2 * instrCountLd(); } + virtual int instrCount() const override { return 1 + 2 * INSTR_COUNT_LD; } virtual bool maybePointedTo() const override { return true; } void binNum(int flag) { m_binNum = flag; } int binNum() const { return m_binNum; } @@ -3627,7 +3627,7 @@ public: if (m_declp->clonep()) m_declp = m_declp->clonep(); } virtual void dump(std::ostream& str) const override; - virtual int instrCount() const override { return 1 + 2 * instrCountLd(); } + virtual int instrCount() const override { return 1 + 2 * INSTR_COUNT_LD; } virtual bool same(const AstNode* samep) const override { return declp() == static_cast(samep)->declp(); } @@ -3650,7 +3650,7 @@ public: setOp3p(changep); } ASTNODE_NODE_FUNCS(CoverToggle) - virtual int instrCount() const override { return 3 + instrCountBranch() + instrCountLd(); } + virtual int instrCount() const override { return 3 + INSTR_COUNT_BRANCH + INSTR_COUNT_LD; } virtual bool same(const AstNode* samep) const override { return true; } virtual bool isGateOptimizable() const override { return false; } virtual bool isPredictOptimizable() const override { return true; } @@ -3743,7 +3743,7 @@ public: addNOp2p(bodysp); } ASTNODE_NODE_FUNCS(CaseItem) - virtual int instrCount() const override { return widthInstrs() + instrCountBranch(); } + virtual int instrCount() const override { return widthInstrs() + INSTR_COUNT_BRANCH; } AstNode* condsp() const { return op1p(); } // op1 = list of possible matching expressions AstNode* bodysp() const { return op2p(); } // op2 = what to do void condsp(AstNode* nodep) { setOp1p(nodep); } @@ -3787,7 +3787,7 @@ public: } ASTNODE_NODE_FUNCS(SFormatF) virtual string name() const override { return m_text; } - virtual int instrCount() const override { return instrCountPli(); } + virtual int instrCount() const override { return INSTR_COUNT_PLI; } virtual bool hasDType() const override { return true; } virtual bool same(const AstNode* samep) const override { return text() == static_cast(samep)->text(); @@ -3852,7 +3852,7 @@ public: virtual bool same(const AstNode* samep) const override { return displayType() == static_cast(samep)->displayType(); } - virtual int instrCount() const override { return instrCountPli(); } + virtual int instrCount() const override { return INSTR_COUNT_PLI; } AstDisplayType displayType() const { return m_displayType; } void displayType(AstDisplayType type) { m_displayType = type; } // * = Add a newline for $display @@ -3916,7 +3916,7 @@ public: virtual bool same(const AstNode* samep) const override { return displayType() == static_cast(samep)->displayType(); } - virtual int instrCount() const override { return instrCountPli(); } + virtual int instrCount() const override { return INSTR_COUNT_PLI; } AstDisplayType displayType() const { return m_displayType; } void displayType(AstDisplayType type) { m_displayType = type; } void fmtp(AstSFormatF* nodep) { addOp1p(nodep); } // op1 = To-String formatter @@ -3950,7 +3950,7 @@ public: virtual bool isPure() const override { return true; } virtual bool isOutputter() const override { return false; } virtual bool cleanOut() const { return false; } - virtual int instrCount() const override { return instrCountPli(); } + virtual int instrCount() const override { return INSTR_COUNT_PLI; } virtual bool same(const AstNode* samep) const override { return true; } void fmtp(AstSFormatF* nodep) { addOp1p(nodep); } // op1 = To-String formatter AstSFormatF* fmtp() const { return VN_CAST(op1p(), SFormatF); } @@ -3995,7 +3995,7 @@ public: } // Though deleted before opt virtual bool isPure() const override { return false; } // Though deleted before opt virtual bool isOutputter() const override { return true; } // Though deleted before opt - virtual int instrCount() const override { return instrCountPli(); } + virtual int instrCount() const override { return INSTR_COUNT_PLI; } AstNode* exprsp() const { return op1p(); } // op1 = Expressions to output void exprsp(AstNode* nodep) { addOp1p(nodep); } // op1 = Expressions to output }; @@ -4326,7 +4326,7 @@ public: } // Though deleted before opt virtual bool isPure() const override { return false; } // Though deleted before opt virtual bool isOutputter() const override { return true; } // Though deleted before opt - virtual int instrCount() const override { return instrCountPli(); } + virtual int instrCount() const override { return INSTR_COUNT_PLI; } virtual bool same(const AstNode* samep) const override { return m_off == static_cast(samep)->m_off; } @@ -4438,7 +4438,7 @@ public: AstNode* arrayp() const { return op1p(); } // op1 = array and index vars AstNode* bodysp() const { return op4p(); } // op4 = body of loop virtual bool isGateOptimizable() const override { return false; } - virtual int instrCount() const override { return instrCountBranch(); } + virtual int instrCount() const override { return INSTR_COUNT_BRANCH; } virtual bool same(const AstNode* samep) const override { return true; } }; @@ -4455,7 +4455,7 @@ public: virtual bool isGateOptimizable() const override { return false; } // Not relevant - converted to FOR - virtual int instrCount() const override { return instrCountBranch(); } + virtual int instrCount() const override { return INSTR_COUNT_BRANCH; } virtual bool same(const AstNode* samep) const override { return true; } }; @@ -4488,7 +4488,7 @@ public: void addBodysp(AstNode* newp) { addOp3p(newp); } void addIncsp(AstNode* newp) { addOp4p(newp); } virtual bool isGateOptimizable() const override { return false; } - virtual int instrCount() const override { return instrCountBranch(); } + virtual int instrCount() const override { return INSTR_COUNT_BRANCH; } virtual bool same(const AstNode* samep) const override { return true; } // Stop statement searchback here virtual void addBeforeStmt(AstNode* newp, AstNode* belowp) override; @@ -4669,7 +4669,7 @@ public: if (m_labelp->clonep()) m_labelp = m_labelp->clonep(); } virtual void dump(std::ostream& str) const override; - virtual int instrCount() const override { return instrCountBranch(); } + virtual int instrCount() const override { return INSTR_COUNT_BRANCH; } virtual bool same(const AstNode* samep) const override { return labelp() == static_cast(samep)->labelp(); } @@ -5065,7 +5065,7 @@ public: virtual bool isPredictOptimizable() const override { return false; } virtual bool isPure() const override { return false; } virtual bool isOutputter() const override { return true; } - virtual int instrCount() const override { return instrCountPli(); } + virtual int instrCount() const override { return INSTR_COUNT_PLI; } void timeunit(const VTimescale& flag) { m_timeunit = flag; } VTimescale timeunit() const { return m_timeunit; } }; @@ -5164,7 +5164,7 @@ public: virtual bool isPredictOptimizable() const override { return false; } virtual bool isPure() const override { return false; } virtual bool isOutputter() const override { return true; } - virtual int instrCount() const override { return instrCountPli(); } + virtual int instrCount() const override { return INSTR_COUNT_PLI; } AstNode* unitsp() const { return op1p(); } AstNode* precisionp() const { return op2p(); } AstNode* suffixp() const { return op3p(); } @@ -5254,7 +5254,7 @@ public: if (m_declp->clonep()) m_declp = m_declp->clonep(); } virtual void dump(std::ostream& str) const override; - virtual int instrCount() const override { return 10 + 2 * instrCountLd(); } + virtual int instrCount() const override { return 10 + 2 * INSTR_COUNT_LD; } virtual bool hasDType() const override { return true; } virtual bool same(const AstNode* samep) const override { return declp() == static_cast(samep)->declp(); @@ -5432,7 +5432,7 @@ public: virtual bool cleanOut() const override { return true; } virtual bool isGateOptimizable() const override { return false; } virtual bool isPredictOptimizable() const override { return false; } - virtual int instrCount() const override { return instrCountPli(); } + virtual int instrCount() const override { return INSTR_COUNT_PLI; } virtual bool same(const AstNode* samep) const override { return true; } AstNode* seedp() const { return op1p(); } bool reset() const { return m_reset; } @@ -5462,7 +5462,7 @@ public: virtual bool sizeMattersRhs() const override { return false; } virtual bool isGateOptimizable() const override { return false; } virtual bool isPredictOptimizable() const override { return false; } - virtual int instrCount() const override { return instrCountPli(); } + virtual int instrCount() const override { return INSTR_COUNT_PLI; } }; class AstTime final : public AstNodeTermop { @@ -5479,7 +5479,7 @@ public: virtual bool cleanOut() const override { return true; } virtual bool isGateOptimizable() const override { return false; } virtual bool isPredictOptimizable() const override { return false; } - virtual int instrCount() const override { return instrCountTime(); } + virtual int instrCount() const override { return INSTR_COUNT_TIME; } virtual bool same(const AstNode* samep) const override { return true; } virtual void dump(std::ostream& str = std::cout) const override; void timeunit(const VTimescale& flag) { m_timeunit = flag; } @@ -5500,7 +5500,7 @@ public: virtual bool cleanOut() const override { return true; } virtual bool isGateOptimizable() const override { return false; } virtual bool isPredictOptimizable() const override { return false; } - virtual int instrCount() const override { return instrCountTime(); } + virtual int instrCount() const override { return INSTR_COUNT_TIME; } virtual bool same(const AstNode* samep) const override { return true; } virtual void dump(std::ostream& str = std::cout) const override; void timeunit(const VTimescale& flag) { m_timeunit = flag; } @@ -5525,7 +5525,7 @@ public: virtual bool isGateOptimizable() const override { return false; } virtual bool isSubstOptimizable() const override { return false; } virtual bool isPredictOptimizable() const override { return false; } - virtual int instrCount() const override { return instrCountPli(); } + virtual int instrCount() const override { return INSTR_COUNT_PLI; } virtual bool same(const AstNode* samep) const override { return true; } }; @@ -5561,7 +5561,7 @@ public: virtual bool cleanOut() const override { return true; } virtual bool cleanLhs() const override { return false; } virtual bool sizeMattersLhs() const override { return false; } - virtual int instrCount() const override { return instrCountDouble(); } + virtual int instrCount() const override { return INSTR_COUNT_DBL; } virtual bool doubleFlavor() const override { return true; } }; class AstRedAnd final : public AstNodeUniop { @@ -5754,7 +5754,7 @@ public: virtual bool cleanOut() const override { return false; } virtual bool cleanLhs() const override { return false; } // Eliminated before matters virtual bool sizeMattersLhs() const override { return false; } // Eliminated before matters - virtual int instrCount() const override { return instrCountDouble(); } + virtual int instrCount() const override { return INSTR_COUNT_DBL; } }; class AstRToIRoundS final : public AstNodeUniop { // Convert real to integer, with arbitrary sized output (not just "integer" format) @@ -5772,7 +5772,7 @@ public: virtual bool cleanOut() const override { return false; } virtual bool cleanLhs() const override { return false; } virtual bool sizeMattersLhs() const override { return false; } - virtual int instrCount() const override { return instrCountDouble(); } + virtual int instrCount() const override { return INSTR_COUNT_DBL; } }; class AstIToRD final : public AstNodeUniop { // $itor where lhs is unsigned @@ -5788,7 +5788,7 @@ public: virtual bool cleanOut() const override { return false; } virtual bool cleanLhs() const override { return true; } virtual bool sizeMattersLhs() const override { return false; } - virtual int instrCount() const override { return instrCountDouble(); } + virtual int instrCount() const override { return INSTR_COUNT_DBL; } }; class AstISToRD final : public AstNodeUniop { // $itor where lhs is signed @@ -5805,7 +5805,7 @@ public: virtual bool cleanOut() const override { return false; } virtual bool cleanLhs() const override { return true; } virtual bool sizeMattersLhs() const override { return false; } - virtual int instrCount() const override { return instrCountDouble(); } + virtual int instrCount() const override { return INSTR_COUNT_DBL; } }; class AstRealToBits final : public AstNodeUniop { public: @@ -5822,7 +5822,7 @@ public: virtual bool cleanOut() const override { return false; } virtual bool cleanLhs() const override { return false; } // Eliminated before matters virtual bool sizeMattersLhs() const override { return false; } // Eliminated before matters - virtual int instrCount() const override { return instrCountDouble(); } + virtual int instrCount() const override { return INSTR_COUNT_DBL; } }; class AstBitsToRealD final : public AstNodeUniop { public: @@ -5839,7 +5839,7 @@ public: virtual bool cleanOut() const override { return false; } virtual bool cleanLhs() const override { return false; } // Eliminated before matters virtual bool sizeMattersLhs() const override { return false; } // Eliminated before matters - virtual int instrCount() const override { return instrCountDouble(); } + virtual int instrCount() const override { return INSTR_COUNT_DBL; } }; class AstCLog2 final : public AstNodeUniop { @@ -6213,7 +6213,7 @@ public: virtual bool cleanOut() const override { return true; } virtual bool cleanLhs() const override { return false; } virtual bool sizeMattersLhs() const override { return false; } - virtual int instrCount() const override { return instrCountDoubleTrig(); } + virtual int instrCount() const override { return INSTR_COUNT_DBL_TRIG; } virtual bool doubleFlavor() const override { return true; } }; @@ -6551,7 +6551,7 @@ public: virtual bool cleanRhs() const override { return true; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return widthInstrs() + instrCountBranch(); } + virtual int instrCount() const override { return widthInstrs() + INSTR_COUNT_BRANCH; } }; class AstLogAnd final : public AstNodeBiop { public: @@ -6574,7 +6574,7 @@ public: virtual bool cleanRhs() const override { return true; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return widthInstrs() + instrCountBranch(); } + virtual int instrCount() const override { return widthInstrs() + INSTR_COUNT_BRANCH; } }; class AstLogEq final : public AstNodeBiCom { public: @@ -6597,7 +6597,7 @@ public: virtual bool cleanRhs() const override { return true; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return widthInstrs() + instrCountBranch(); } + virtual int instrCount() const override { return widthInstrs() + INSTR_COUNT_BRANCH; } }; class AstLogIf final : public AstNodeBiop { public: @@ -6620,7 +6620,7 @@ public: virtual bool cleanRhs() const override { return true; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return widthInstrs() + instrCountBranch(); } + virtual int instrCount() const override { return widthInstrs() + INSTR_COUNT_BRANCH; } }; class AstOr final : public AstNodeBiComAsv { public: @@ -6733,7 +6733,7 @@ public: virtual bool cleanRhs() const override { return false; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return instrCountDouble(); } + virtual int instrCount() const override { return INSTR_COUNT_DBL; } virtual bool doubleFlavor() const override { return true; } }; class AstEqN final : public AstNodeBiCom { @@ -6757,7 +6757,7 @@ public: virtual bool cleanRhs() const override { return false; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return instrCountString(); } + virtual int instrCount() const override { return INSTR_COUNT_STR; } virtual bool stringFlavor() const override { return true; } }; class AstNeq final : public AstNodeBiCom { @@ -6803,7 +6803,7 @@ public: virtual bool cleanRhs() const override { return false; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return instrCountDouble(); } + virtual int instrCount() const override { return INSTR_COUNT_DBL; } virtual bool doubleFlavor() const override { return true; } }; class AstNeqN final : public AstNodeBiCom { @@ -6827,7 +6827,7 @@ public: virtual bool cleanRhs() const override { return false; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return instrCountString(); } + virtual int instrCount() const override { return INSTR_COUNT_STR; } virtual bool stringFlavor() const override { return true; } }; class AstLt final : public AstNodeBiop { @@ -6873,7 +6873,7 @@ public: virtual bool cleanRhs() const override { return false; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return instrCountDouble(); } + virtual int instrCount() const override { return INSTR_COUNT_DBL; } virtual bool doubleFlavor() const override { return true; } }; class AstLtS final : public AstNodeBiop { @@ -6920,7 +6920,7 @@ public: virtual bool cleanRhs() const override { return false; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return instrCountString(); } + virtual int instrCount() const override { return INSTR_COUNT_STR; } virtual bool stringFlavor() const override { return true; } }; class AstGt final : public AstNodeBiop { @@ -6966,7 +6966,7 @@ public: virtual bool cleanRhs() const override { return false; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return instrCountDouble(); } + virtual int instrCount() const override { return INSTR_COUNT_DBL; } virtual bool doubleFlavor() const override { return true; } }; class AstGtS final : public AstNodeBiop { @@ -7013,7 +7013,7 @@ public: virtual bool cleanRhs() const override { return false; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return instrCountString(); } + virtual int instrCount() const override { return INSTR_COUNT_STR; } virtual bool stringFlavor() const override { return true; } }; class AstGte final : public AstNodeBiop { @@ -7061,7 +7061,7 @@ public: virtual bool cleanRhs() const override { return false; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return instrCountDouble(); } + virtual int instrCount() const override { return INSTR_COUNT_DBL; } virtual bool doubleFlavor() const override { return true; } }; class AstGteS final : public AstNodeBiop { @@ -7108,7 +7108,7 @@ public: virtual bool cleanRhs() const override { return false; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return instrCountString(); } + virtual int instrCount() const override { return INSTR_COUNT_STR; } virtual bool stringFlavor() const override { return true; } }; class AstLte final : public AstNodeBiop { @@ -7156,7 +7156,7 @@ public: virtual bool cleanRhs() const override { return false; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return instrCountDouble(); } + virtual int instrCount() const override { return INSTR_COUNT_DBL; } virtual bool doubleFlavor() const override { return true; } }; class AstLteS final : public AstNodeBiop { @@ -7203,7 +7203,7 @@ public: virtual bool cleanRhs() const override { return false; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return instrCountString(); } + virtual int instrCount() const override { return INSTR_COUNT_STR; } virtual bool stringFlavor() const override { return true; } }; class AstShiftL final : public AstNodeBiop { @@ -7324,7 +7324,7 @@ public: virtual bool cleanRhs() const override { return false; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return instrCountDouble(); } + virtual int instrCount() const override { return INSTR_COUNT_DBL; } virtual bool doubleFlavor() const override { return true; } }; class AstSub final : public AstNodeBiop { @@ -7370,7 +7370,7 @@ public: virtual bool cleanRhs() const override { return false; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return instrCountDouble(); } + virtual int instrCount() const override { return INSTR_COUNT_DBL; } virtual bool doubleFlavor() const override { return true; } }; class AstMul final : public AstNodeBiComAsv { @@ -7394,7 +7394,7 @@ public: virtual bool cleanRhs() const override { return true; } virtual bool sizeMattersLhs() const override { return true; } virtual bool sizeMattersRhs() const override { return true; } - virtual int instrCount() const override { return widthInstrs() * instrCountMul(); } + virtual int instrCount() const override { return widthInstrs() * INSTR_COUNT_INT_MUL; } }; class AstMulD final : public AstNodeBiComAsv { public: @@ -7417,7 +7417,7 @@ public: virtual bool cleanRhs() const override { return false; } virtual bool sizeMattersLhs() const override { return true; } virtual bool sizeMattersRhs() const override { return true; } - virtual int instrCount() const override { return instrCountDouble(); } + virtual int instrCount() const override { return INSTR_COUNT_DBL; } virtual bool doubleFlavor() const override { return true; } }; class AstMulS final : public AstNodeBiComAsv { @@ -7442,7 +7442,7 @@ public: virtual bool cleanRhs() const override { return true; } virtual bool sizeMattersLhs() const override { return true; } virtual bool sizeMattersRhs() const override { return true; } - virtual int instrCount() const override { return widthInstrs() * instrCountMul(); } + virtual int instrCount() const override { return widthInstrs() * INSTR_COUNT_INT_MUL; } virtual bool signedFlavor() const override { return true; } }; class AstDiv final : public AstNodeBiop { @@ -7465,7 +7465,7 @@ public: virtual bool cleanRhs() const override { return true; } virtual bool sizeMattersLhs() const override { return true; } virtual bool sizeMattersRhs() const override { return true; } - virtual int instrCount() const override { return widthInstrs() * instrCountDiv(); } + virtual int instrCount() const override { return widthInstrs() * INSTR_COUNT_INT_DIV; } }; class AstDivD final : public AstNodeBiop { public: @@ -7488,7 +7488,7 @@ public: virtual bool cleanRhs() const override { return false; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return instrCountDoubleDiv(); } + virtual int instrCount() const override { return INSTR_COUNT_DBL_DIV; } virtual bool doubleFlavor() const override { return true; } }; class AstDivS final : public AstNodeBiop { @@ -7511,7 +7511,7 @@ public: virtual bool cleanRhs() const override { return true; } virtual bool sizeMattersLhs() const override { return true; } virtual bool sizeMattersRhs() const override { return true; } - virtual int instrCount() const override { return widthInstrs() * instrCountDiv(); } + virtual int instrCount() const override { return widthInstrs() * INSTR_COUNT_INT_DIV; } virtual bool signedFlavor() const override { return true; } }; class AstModDiv final : public AstNodeBiop { @@ -7534,7 +7534,7 @@ public: virtual bool cleanRhs() const override { return true; } virtual bool sizeMattersLhs() const override { return true; } virtual bool sizeMattersRhs() const override { return true; } - virtual int instrCount() const override { return widthInstrs() * instrCountDiv(); } + virtual int instrCount() const override { return widthInstrs() * INSTR_COUNT_INT_DIV; } }; class AstModDivS final : public AstNodeBiop { public: @@ -7556,7 +7556,7 @@ public: virtual bool cleanRhs() const override { return true; } virtual bool sizeMattersLhs() const override { return true; } virtual bool sizeMattersRhs() const override { return true; } - virtual int instrCount() const override { return widthInstrs() * instrCountDiv(); } + virtual int instrCount() const override { return widthInstrs() * INSTR_COUNT_INT_DIV; } virtual bool signedFlavor() const override { return true; } }; class AstPow final : public AstNodeBiop { @@ -7580,7 +7580,7 @@ public: virtual bool cleanRhs() const override { return true; } virtual bool sizeMattersLhs() const override { return true; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return widthInstrs() * instrCountMul() * 10; } + virtual int instrCount() const override { return widthInstrs() * INSTR_COUNT_INT_MUL * 10; } }; class AstPowD final : public AstNodeBiop { public: @@ -7602,7 +7602,7 @@ public: virtual bool cleanRhs() const override { return false; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return instrCountDoubleDiv() * 5; } + virtual int instrCount() const override { return INSTR_COUNT_DBL_DIV * 5; } virtual bool doubleFlavor() const override { return true; } }; class AstPowSU final : public AstNodeBiop { @@ -7628,7 +7628,7 @@ public: virtual bool cleanRhs() const override { return true; } virtual bool sizeMattersLhs() const override { return true; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return widthInstrs() * instrCountMul() * 10; } + virtual int instrCount() const override { return widthInstrs() * INSTR_COUNT_INT_MUL * 10; } virtual bool signedFlavor() const override { return true; } }; class AstPowSS final : public AstNodeBiop { @@ -7654,7 +7654,7 @@ public: virtual bool cleanRhs() const override { return true; } virtual bool sizeMattersLhs() const override { return true; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return widthInstrs() * instrCountMul() * 10; } + virtual int instrCount() const override { return widthInstrs() * INSTR_COUNT_INT_MUL * 10; } virtual bool signedFlavor() const override { return true; } }; class AstPowUS final : public AstNodeBiop { @@ -7680,7 +7680,7 @@ public: virtual bool cleanRhs() const override { return true; } virtual bool sizeMattersLhs() const override { return true; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return widthInstrs() * instrCountMul() * 10; } + virtual int instrCount() const override { return widthInstrs() * INSTR_COUNT_INT_MUL * 10; } virtual bool signedFlavor() const override { return true; } }; class AstPreAdd final : public AstNodeTriop { @@ -7921,7 +7921,7 @@ public: virtual bool cleanRhs() const override { return true; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return instrCountString(); } + virtual int instrCount() const override { return INSTR_COUNT_STR; } virtual bool stringFlavor() const override { return true; } }; class AstReplicate final : public AstNodeBiop { @@ -8084,7 +8084,7 @@ public: virtual bool cleanRhs() const override { return false; } virtual bool sizeMattersLhs() const override { return false; } virtual bool sizeMattersRhs() const override { return false; } - virtual int instrCount() const override { return instrCountDoubleTrig(); } + virtual int instrCount() const override { return INSTR_COUNT_DBL_TRIG; } virtual bool doubleFlavor() const override { return true; } }; @@ -8788,7 +8788,7 @@ public: } // virtual void name(const string& name) override { m_name = name; } - virtual int instrCount() const override { return dpiImportPrototype() ? instrCountDpi() : 0; } + virtual int instrCount() const override { return dpiImportPrototype() ? INSTR_COUNT_DPI : 0; } VBoolOrUnknown isConst() const { return m_isConst; } void isConst(bool flag) { m_isConst.setTrueOrFalse(flag); } void isConst(VBoolOrUnknown flag) { m_isConst = flag; }