mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-26 16:56:06 +00:00

Since the LMUL data that is needed to create an instrument is avaliable statically from vsetivli and vsetvli instructions, LMUL instruments can be automatically generated so that clients of the tool do no need to manually insert instrument comments. Instrument comments may be placed after a vset{i}vli instruction, which will override instrument that was automatically inserted. As a result, clients of llvm-mca instruments do not need to update their existing instrument comments. However, if the instrument has the same LMUL as the vset{i}vli, then it is reccomended to remove the instrument comment as it becomes redundant. Differential Revision: https://reviews.llvm.org/D154526
63 lines
2.1 KiB
C++
63 lines
2.1 KiB
C++
//===--------------------- CustomBehaviour.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 methods from the CustomBehaviour interface.
|
|
///
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/MCA/CustomBehaviour.h"
|
|
|
|
namespace llvm {
|
|
namespace mca {
|
|
|
|
CustomBehaviour::~CustomBehaviour() = default;
|
|
|
|
unsigned CustomBehaviour::checkCustomHazard(ArrayRef<InstRef> IssuedInst,
|
|
const InstRef &IR) {
|
|
// 0 signifies that there are no hazards that need to be waited on
|
|
return 0;
|
|
}
|
|
|
|
std::vector<std::unique_ptr<View>>
|
|
CustomBehaviour::getStartViews(llvm::MCInstPrinter &IP,
|
|
llvm::ArrayRef<llvm::MCInst> Insts) {
|
|
return std::vector<std::unique_ptr<View>>();
|
|
}
|
|
|
|
std::vector<std::unique_ptr<View>>
|
|
CustomBehaviour::getPostInstrInfoViews(llvm::MCInstPrinter &IP,
|
|
llvm::ArrayRef<llvm::MCInst> Insts) {
|
|
return std::vector<std::unique_ptr<View>>();
|
|
}
|
|
|
|
std::vector<std::unique_ptr<View>>
|
|
CustomBehaviour::getEndViews(llvm::MCInstPrinter &IP,
|
|
llvm::ArrayRef<llvm::MCInst> Insts) {
|
|
return std::vector<std::unique_ptr<View>>();
|
|
}
|
|
|
|
UniqueInstrument InstrumentManager::createInstrument(llvm::StringRef Desc,
|
|
llvm::StringRef Data) {
|
|
return std::make_unique<Instrument>(Desc, Data);
|
|
}
|
|
|
|
SmallVector<UniqueInstrument>
|
|
InstrumentManager::createInstruments(const MCInst &Inst) {
|
|
return SmallVector<UniqueInstrument>();
|
|
}
|
|
|
|
unsigned InstrumentManager::getSchedClassID(
|
|
const MCInstrInfo &MCII, const MCInst &MCI,
|
|
const llvm::SmallVector<Instrument *> &IVec) const {
|
|
return MCII.get(MCI.getOpcode()).getSchedClass();
|
|
}
|
|
|
|
} // namespace mca
|
|
} // namespace llvm
|