123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- //===-------------------- IncrementalSourceMgr.cpp ------------------------===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- ///
- /// \file
- /// This file defines some implementations for IncrementalSourceMgr.
- ///
- //===----------------------------------------------------------------------===//
- #include "llvm/MCA/IncrementalSourceMgr.h"
- #ifndef NDEBUG
- #include "llvm/Support/Format.h"
- #endif
- using namespace llvm;
- using namespace llvm::mca;
- void IncrementalSourceMgr::clear() {
- Staging.clear();
- InstStorage.clear();
- TotalCounter = 0U;
- EOS = false;
- }
- void IncrementalSourceMgr::updateNext() {
- ++TotalCounter;
- Instruction *I = Staging.front();
- Staging.pop_front();
- I->reset();
- if (InstFreedCB)
- InstFreedCB(I);
- }
- #ifndef NDEBUG
- void IncrementalSourceMgr::printStatistic(raw_ostream &OS) {
- unsigned MaxInstStorageSize = InstStorage.size();
- if (MaxInstStorageSize <= TotalCounter) {
- auto Ratio = double(MaxInstStorageSize) / double(TotalCounter);
- OS << "Cache ratio = " << MaxInstStorageSize << " / " << TotalCounter
- << llvm::format(" (%.2f%%)", (1.0 - Ratio) * 100.0) << "\n";
- } else {
- OS << "Error: Number of created instructions "
- << "are larger than the number of issued instructions\n";
- }
- }
- #endif
|