blob: b18a673912f89295f9328f18b5ae3ea130db1e92 [file] [log] [blame]
Reed Kotler1595f362013-04-09 19:46:01 +00001//===----------------------------------------------------------------------===//
2// Instruction Selector Subtarget Control
3//===----------------------------------------------------------------------===//
4
5//===----------------------------------------------------------------------===//
6// This file defines a pass used to change the subtarget for the
7// Mips Instruction selector.
8//
9//===----------------------------------------------------------------------===//
10
Vasileios Kalintiris46fa9b72015-03-14 09:20:52 +000011#include "Mips.h"
Benjamin Kramera52f6962015-03-09 15:50:58 +000012#include "MipsTargetMachine.h"
Reed Kotler1595f362013-04-09 19:46:01 +000013#include "llvm/Support/Debug.h"
Benjamin Kramer16132e62015-03-23 18:07:13 +000014#include "llvm/Support/raw_ostream.h"
Vasileios Kalintiris46fa9b72015-03-14 09:20:52 +000015
Benjamin Kramera52f6962015-03-09 15:50:58 +000016using namespace llvm;
Reed Kotler1595f362013-04-09 19:46:01 +000017
Chandler Carruthe96dd892014-04-21 22:55:11 +000018#define DEBUG_TYPE "mips-isel"
19
Benjamin Kramera52f6962015-03-09 15:50:58 +000020namespace {
Vasileios Kalintiris46fa9b72015-03-14 09:20:52 +000021 class MipsModuleDAGToDAGISel : public MachineFunctionPass {
22 public:
23 static char ID;
Benjamin Kramera52f6962015-03-09 15:50:58 +000024
Vasileios Kalintiris46fa9b72015-03-14 09:20:52 +000025 explicit MipsModuleDAGToDAGISel(MipsTargetMachine &TM_)
Benjamin Kramera52f6962015-03-09 15:50:58 +000026 : MachineFunctionPass(ID), TM(TM_) {}
27
Vasileios Kalintiris46fa9b72015-03-14 09:20:52 +000028 // Pass Name
29 const char *getPassName() const override {
30 return "MIPS DAG->DAG Pattern Instruction Selection";
31 }
Benjamin Kramera52f6962015-03-09 15:50:58 +000032
Vasileios Kalintiris46fa9b72015-03-14 09:20:52 +000033 bool runOnMachineFunction(MachineFunction &MF) override;
Benjamin Kramera52f6962015-03-09 15:50:58 +000034
Vasileios Kalintiris46fa9b72015-03-14 09:20:52 +000035 protected:
36 MipsTargetMachine &TM;
37 };
38
39 char MipsModuleDAGToDAGISel::ID = 0;
Alexander Kornienkof00654e2015-06-23 09:49:53 +000040}
Reed Kotler1595f362013-04-09 19:46:01 +000041
42bool MipsModuleDAGToDAGISel::runOnMachineFunction(MachineFunction &MF) {
43 DEBUG(errs() << "In MipsModuleDAGToDAGISel::runMachineFunction\n");
Eric Christopher4e7d1e72014-07-18 23:41:32 +000044 TM.resetSubtarget(&MF);
Reed Kotler1595f362013-04-09 19:46:01 +000045 return false;
46}
47
Vasileios Kalintiris46fa9b72015-03-14 09:20:52 +000048llvm::FunctionPass *llvm::createMipsModuleISelDagPass(MipsTargetMachine &TM) {
Reed Kotler1595f362013-04-09 19:46:01 +000049 return new MipsModuleDAGToDAGISel(TM);
50}