forked from OSchip/llvm-project
52 lines
1.5 KiB
C++
52 lines
1.5 KiB
C++
|
//===-------------------- 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
|