• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //== ----- llvm/CodeGen/GlobalISel/Combiner.h --------------------- == //
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 /// This contains common code to drive combines. Combiner Passes will need to
11 /// setup a CombinerInfo and call combineMachineFunction.
12 //
13 //===----------------------------------------------------------------------===//
14 
15 #ifndef LLVM_CODEGEN_GLOBALISEL_COMBINER_H
16 #define LLVM_CODEGEN_GLOBALISEL_COMBINER_H
17 
18 #include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h"
19 #include "llvm/CodeGen/MachineFunctionPass.h"
20 
21 namespace llvm {
22 class MachineRegisterInfo;
23 class CombinerInfo;
24 class TargetPassConfig;
25 class MachineFunction;
26 
27 class Combiner {
28 public:
29   Combiner(CombinerInfo &CombinerInfo, const TargetPassConfig *TPC);
30 
31   bool combineMachineInstrs(MachineFunction &MF);
32 
33 protected:
34   CombinerInfo &CInfo;
35 
36   MachineRegisterInfo *MRI = nullptr;
37   const TargetPassConfig *TPC;
38   MachineIRBuilder Builder;
39 };
40 
41 } // End namespace llvm.
42 
43 #endif // LLVM_CODEGEN_GLOBALISEL_GICOMBINER_H
44