Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. //== ----- llvm/CodeGen/GlobalISel/Combiner.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. /// This contains common code to drive combines. Combiner Passes will need to
  10. /// setup a CombinerInfo and call combineMachineFunction.
  11. ///
  12. //===----------------------------------------------------------------------===//
  13.  
  14. #ifndef LLVM_CODEGEN_GLOBALISEL_COMBINER_H
  15. #define LLVM_CODEGEN_GLOBALISEL_COMBINER_H
  16.  
  17. #include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h"
  18.  
  19. namespace llvm {
  20. class MachineRegisterInfo;
  21. class CombinerInfo;
  22. class GISelCSEInfo;
  23. class TargetPassConfig;
  24. class MachineFunction;
  25.  
  26. class Combiner {
  27. public:
  28.   Combiner(CombinerInfo &CombinerInfo, const TargetPassConfig *TPC);
  29.  
  30.   /// If CSEInfo is not null, then the Combiner will setup observer for
  31.   /// CSEInfo and instantiate a CSEMIRBuilder. Pass nullptr if CSE is not
  32.   /// needed.
  33.   bool combineMachineInstrs(MachineFunction &MF, GISelCSEInfo *CSEInfo);
  34.  
  35. protected:
  36.   CombinerInfo &CInfo;
  37.  
  38.   MachineRegisterInfo *MRI = nullptr;
  39.   const TargetPassConfig *TPC;
  40.   std::unique_ptr<MachineIRBuilder> Builder;
  41. };
  42.  
  43. } // End namespace llvm.
  44.  
  45. #endif // LLVM_CODEGEN_GLOBALISEL_COMBINER_H
  46.