brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 05a1c22 Raw
49 lines · c
1//===-------------------- X86CustomBehaviour.h ------------------*-C++ -* -===//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-exception6//7//===----------------------------------------------------------------------===//8/// \file9///10/// This file defines the X86CustomBehaviour class which inherits from11/// CustomBehaviour. This class is used by the tool llvm-mca to enforce12/// target specific behaviour that is not expressed well enough in the13/// scheduling model for mca to enforce it automatically.14///15//===----------------------------------------------------------------------===//16 17#ifndef LLVM_LIB_TARGET_X86_MCA_X86CUSTOMBEHAVIOUR_H18#define LLVM_LIB_TARGET_X86_MCA_X86CUSTOMBEHAVIOUR_H19 20#include "llvm/MCA/CustomBehaviour.h"21#include "llvm/TargetParser/TargetParser.h"22 23namespace llvm {24namespace mca {25 26class X86InstrPostProcess : public InstrPostProcess {27  /// Called within X86InstrPostProcess to specify certain instructions28  /// as load and store barriers.29  void setMemBarriers(Instruction &Inst, const MCInst &MCI);30 31  /// Called within X86InstrPostPorcess to remove some rsp read operands32  /// on stack instructions to better simulate the stack engine. We currently33  /// do not model features of the stack engine like sync uops.34  void useStackEngine(Instruction &Inst, const MCInst &MCI);35 36public:37  X86InstrPostProcess(const MCSubtargetInfo &STI, const MCInstrInfo &MCII)38      : InstrPostProcess(STI, MCII) {}39 40  ~X86InstrPostProcess() override = default;41 42  void postProcessInstruction(Instruction &Inst, const MCInst &MCI) override;43};44 45} // namespace mca46} // namespace llvm47 48#endif49