Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 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