blob: 2dad4da63696f7dda0e1fea454079ff1b74a0e43 [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"
Vasileios Kalintiris46fa9b72015-03-14 09:20:52 +000014
Benjamin Kramera52f6962015-03-09 15:50:58 +000015using namespace llvm;
Reed Kotler1595f362013-04-09 19:46:01 +000016
Chandler Carruthe96dd892014-04-21 22:55:11 +000017#define DEBUG_TYPE "mips-isel"
18
Benjamin Kramera52f6962015-03-09 15:50:58 +000019namespace {
Vasileios Kalintiris46fa9b72015-03-14 09:20:52 +000020 class MipsModuleDAGToDAGISel : public MachineFunctionPass {
21 public:
22 static char ID;
Benjamin Kramera52f6962015-03-09 15:50:58 +000023
Vasileios Kalintiris46fa9b72015-03-14 09:20:52 +000024 explicit MipsModuleDAGToDAGISel(MipsTargetMachine &TM_)
Benjamin Kramera52f6962015-03-09 15:50:58 +000025 : MachineFunctionPass(ID), TM(TM_) {}
26
Vasileios Kalintiris46fa9b72015-03-14 09:20:52 +000027 // Pass Name
28 const char *getPassName() const override {
29 return "MIPS DAG->DAG Pattern Instruction Selection";
30 }
Benjamin Kramera52f6962015-03-09 15:50:58 +000031
Vasileios Kalintiris46fa9b72015-03-14 09:20:52 +000032 bool runOnMachineFunction(MachineFunction &MF) override;
Benjamin Kramera52f6962015-03-09 15:50:58 +000033
Vasileios Kalintiris46fa9b72015-03-14 09:20:52 +000034 protected:
35 MipsTargetMachine &TM;
36 };
37
38 char MipsModuleDAGToDAGISel::ID = 0;
39}
Reed Kotler1595f362013-04-09 19:46:01 +000040
41bool MipsModuleDAGToDAGISel::runOnMachineFunction(MachineFunction &MF) {
42 DEBUG(errs() << "In MipsModuleDAGToDAGISel::runMachineFunction\n");
Eric Christopher4e7d1e72014-07-18 23:41:32 +000043 TM.resetSubtarget(&MF);
Reed Kotler1595f362013-04-09 19:46:01 +000044 return false;
45}
46
Vasileios Kalintiris46fa9b72015-03-14 09:20:52 +000047llvm::FunctionPass *llvm::createMipsModuleISelDagPass(MipsTargetMachine &TM) {
Reed Kotler1595f362013-04-09 19:46:01 +000048 return new MipsModuleDAGToDAGISel(TM);
49}