1 //===-------------------- X86CustomBehaviour.h ------------------*-C++ -* -===//
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
7 //===----------------------------------------------------------------------===//
10 /// This file defines the X86CustomBehaviour class which inherits from
11 /// CustomBehaviour. This class is used by the tool llvm-mca to enforce
12 /// target specific behaviour that is not expressed well enough in the
13 /// scheduling model for mca to enforce it automatically.
15 //===----------------------------------------------------------------------===//
17 #ifndef LLVM_LIB_TARGET_X86_MCA_X86CUSTOMBEHAVIOUR_H
18 #define LLVM_LIB_TARGET_X86_MCA_X86CUSTOMBEHAVIOUR_H
20 #include "llvm/MCA/CustomBehaviour.h"
21 #include "llvm/TargetParser/TargetParser.h"
26 class X86InstrPostProcess
: public InstrPostProcess
{
27 /// Called within X86InstrPostProcess to specify certain instructions
28 /// as load and store barriers.
29 void setMemBarriers(std::unique_ptr
<Instruction
> &Inst
, const MCInst
&MCI
);
32 X86InstrPostProcess(const MCSubtargetInfo
&STI
, const MCInstrInfo
&MCII
)
33 : InstrPostProcess(STI
, MCII
) {}
35 ~X86InstrPostProcess() = default;
37 void postProcessInstruction(std::unique_ptr
<Instruction
> &Inst
,
38 const MCInst
&MCI
) override
;