//===--------------------- SchedulerStatistics.cpp --------------*- C++ -*-===// // // 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 implements the SchedulerStatistics interface. /// //===----------------------------------------------------------------------===// #include "Views/SchedulerStatistics.h" #include "llvm/Support/Format.h" #include "llvm/Support/FormattedStream.h" namespace llvm { namespace mca { SchedulerStatistics::SchedulerStatistics(const llvm::MCSubtargetInfo &STI) : … { … } // FIXME: This implementation works under the assumption that load/store queue // entries are reserved at 'instruction dispatched' stage, and released at // 'instruction executed' stage. This currently matches the behavior of LSUnit. // // The current design minimizes the number of events generated by the // Dispatch/Execute stages, at the cost of doing extra bookkeeping in method // `onEvent`. However, it introduces a subtle dependency between this view and // how the LSUnit works. // // In future we should add a new "memory queue" event type, so that we stop // making assumptions on how LSUnit internally works (See PR39828). void SchedulerStatistics::onEvent(const HWInstructionEvent &Event) { … } void SchedulerStatistics::onReservedBuffers(const InstRef & /* unused */, ArrayRef<unsigned> Buffers) { … } void SchedulerStatistics::onReleasedBuffers(const InstRef & /* unused */, ArrayRef<unsigned> Buffers) { … } void SchedulerStatistics::updateHistograms() { … } void SchedulerStatistics::printSchedulerStats(raw_ostream &OS) const { … } void SchedulerStatistics::printSchedulerUsage(raw_ostream &OS) const { … } void SchedulerStatistics::printView(raw_ostream &OS) const { … } } // namespace mca } // namespace llvm