blob: 85bae47aa08ee5043efcc5f21b6ae87a236ea48a [file] [log] [blame]
Reed Kotler1595f362013-04-09 19:46:01 +00001//===---- MipsModuleISelDAGToDAG.h - Change Subtarget --------===//
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 file defines a pass used to change the subtarget for the
11// Mips Instruction selector.
12//
13//===----------------------------------------------------------------------===//
14
Benjamin Kramera7c40ef2014-08-13 16:26:38 +000015#ifndef LLVM_LIB_TARGET_MIPS_MIPSMODULEISELDAGTODAG_H
16#define LLVM_LIB_TARGET_MIPS_MIPSMODULEISELDAGTODAG_H
Reed Kotler1595f362013-04-09 19:46:01 +000017
18#include "Mips.h"
19#include "MipsSubtarget.h"
20#include "MipsTargetMachine.h"
21#include "llvm/CodeGen/SelectionDAGISel.h"
22
23
24//===----------------------------------------------------------------------===//
25// Instruction Selector Implementation
26//===----------------------------------------------------------------------===//
27
28//===----------------------------------------------------------------------===//
29// MipsModuleDAGToDAGISel - MIPS specific code to select MIPS machine
30// instructions for SelectionDAG operations.
31//===----------------------------------------------------------------------===//
32namespace llvm {
33
34class MipsModuleDAGToDAGISel : public MachineFunctionPass {
35public:
36
37 static char ID;
38
39 explicit MipsModuleDAGToDAGISel(MipsTargetMachine &TM_)
Eric Christopher4e7d1e72014-07-18 23:41:32 +000040 : MachineFunctionPass(ID), TM(TM_) {}
Reed Kotler1595f362013-04-09 19:46:01 +000041
42 // Pass Name
Craig Topper56c590a2014-04-29 07:58:02 +000043 const char *getPassName() const override {
Reed Kotler1595f362013-04-09 19:46:01 +000044 return "MIPS DAG->DAG Pattern Instruction Selection";
45 }
46
Craig Topper56c590a2014-04-29 07:58:02 +000047 bool runOnMachineFunction(MachineFunction &MF) override;
Reed Kotler1595f362013-04-09 19:46:01 +000048
49protected:
Eric Christopher4e7d1e72014-07-18 23:41:32 +000050 MipsTargetMachine &TM;
Reed Kotler1595f362013-04-09 19:46:01 +000051};
52
53/// createMipsISelDag - This pass converts a legalized DAG into a
54/// MIPS-specific DAG, ready for instruction scheduling.
55FunctionPass *createMipsModuleISelDag(MipsTargetMachine &TM);
56}
57
58#endif