X86CustomBehaviour.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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-exception
  6. //
  7. //===----------------------------------------------------------------------===//
  8. /// \file
  9. ///
  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.
  14. ///
  15. //===----------------------------------------------------------------------===//
  16. #ifndef LLVM_LIB_TARGET_X86_MCA_X86CUSTOMBEHAVIOUR_H
  17. #define LLVM_LIB_TARGET_X86_MCA_X86CUSTOMBEHAVIOUR_H
  18. #include "llvm/ADT/SmallVector.h"
  19. #include "llvm/MCA/CustomBehaviour.h"
  20. #include "llvm/Support/TargetParser.h"
  21. namespace llvm {
  22. namespace mca {
  23. class X86InstrPostProcess : public InstrPostProcess {
  24. /// Called within X86InstrPostProcess to specify certain instructions
  25. /// as load and store barriers.
  26. void setMemBarriers(std::unique_ptr<Instruction> &Inst, const MCInst &MCI);
  27. public:
  28. X86InstrPostProcess(const MCSubtargetInfo &STI, const MCInstrInfo &MCII)
  29. : InstrPostProcess(STI, MCII) {}
  30. ~X86InstrPostProcess() = default;
  31. void postProcessInstruction(std::unique_ptr<Instruction> &Inst,
  32. const MCInst &MCI) override;
  33. };
  34. } // namespace mca
  35. } // namespace llvm
  36. #endif