Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/llvm/lib/MCA/IncrementalSourceMgr.cpp
35259 views
1
//===-------------------- IncrementalSourceMgr.cpp ------------------------===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
///
9
/// \file
10
/// This file defines some implementations for IncrementalSourceMgr.
11
///
12
//===----------------------------------------------------------------------===//
13
14
#include "llvm/MCA/IncrementalSourceMgr.h"
15
#ifndef NDEBUG
16
#include "llvm/Support/Format.h"
17
#endif
18
19
using namespace llvm;
20
using namespace llvm::mca;
21
22
void IncrementalSourceMgr::clear() {
23
Staging.clear();
24
InstStorage.clear();
25
TotalCounter = 0U;
26
EOS = false;
27
}
28
29
void IncrementalSourceMgr::updateNext() {
30
++TotalCounter;
31
Instruction *I = Staging.front();
32
Staging.pop_front();
33
I->reset();
34
35
if (InstFreedCB)
36
InstFreedCB(I);
37
}
38
39
#ifndef NDEBUG
40
void IncrementalSourceMgr::printStatistic(raw_ostream &OS) {
41
unsigned MaxInstStorageSize = InstStorage.size();
42
if (MaxInstStorageSize <= TotalCounter) {
43
auto Ratio = double(MaxInstStorageSize) / double(TotalCounter);
44
OS << "Cache ratio = " << MaxInstStorageSize << " / " << TotalCounter
45
<< llvm::format(" (%.2f%%)", (1.0 - Ratio) * 100.0) << "\n";
46
} else {
47
OS << "Error: Number of created instructions "
48
<< "are larger than the number of issued instructions\n";
49
}
50
}
51
#endif
52
53