diff options
Diffstat (limited to 'llvm/lib/Target/Sparc/LeonPasses.h')
-rwxr-xr-x | llvm/lib/Target/Sparc/LeonPasses.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/llvm/lib/Target/Sparc/LeonPasses.h b/llvm/lib/Target/Sparc/LeonPasses.h new file mode 100755 index 00000000000..ea17b55bef3 --- /dev/null +++ b/llvm/lib/Target/Sparc/LeonPasses.h @@ -0,0 +1,46 @@ +//===------- LeonPasses.h - Define passes specific to LEON ----------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIB_TARGET_SPARC_LEON_PASSES_H +#define LLVM_LIB_TARGET_SPARC_LEON_PASSES_H + +#include "llvm/CodeGen/Passes.h" +#include "llvm/CodeGen/MachineFunctionPass.h" +#include "llvm/CodeGen/MachineBasicBlock.h" + +#include "Sparc.h" +#include "SparcSubtarget.h" + +using namespace llvm; + +class LEONMachineFunctionPass : public MachineFunctionPass { +protected: + const SparcSubtarget *Subtarget; + +protected: + LEONMachineFunctionPass(TargetMachine &tm, char& ID); + LEONMachineFunctionPass(char& ID); +}; + +class InsertNOPLoad : public LEONMachineFunctionPass { +public: + static char ID; + + InsertNOPLoad(TargetMachine &tm); + bool runOnMachineFunction(MachineFunction& MF) override; + + const char *getPassName() const override { + return "InsertNOPLoad: Erratum Fix LBR35: insert a NOP instruction after every single-cycle load instruction when the next instruction is another load/store instruction"; + } +}; + +#endif |