blob: ca127d312c7a584a976a73fe08b7522fa99f62bb [file] [log] [blame]
Dan Gohman1adf1b02008-08-19 21:45:35 +00001//===-- X86FastISel.cpp - X86 FastISel implementation ---------------------===//
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 the X86-specific support for the FastISel class. Much
11// of the target-specific code is generated by tablegen in the file
12// X86GenFastISel.inc, which is #included here.
13//
14//===----------------------------------------------------------------------===//
15
16#include "X86.h"
Dan Gohman1adf1b02008-08-19 21:45:35 +000017#include "X86ISelLowering.h"
Evan Cheng88e30412008-09-03 01:04:47 +000018#include "X86RegisterInfo.h"
19#include "X86Subtarget.h"
Dan Gohman22bb3112008-08-22 00:20:26 +000020#include "X86TargetMachine.h"
Evan Chengc3f44b02008-09-03 00:03:49 +000021#include "llvm/CodeGen/FastISel.h"
Owen Anderson667d8f72008-08-29 17:45:56 +000022#include "llvm/CodeGen/MachineRegisterInfo.h"
Evan Chengc3f44b02008-09-03 00:03:49 +000023
24using namespace llvm;
25
26class X86FastISel : public FastISel {
27 /// Subtarget - Keep a pointer to the X86Subtarget around so that we can
28 /// make the right decision when generating code for different targets.
29 const X86Subtarget *Subtarget;
30
31 public:
Evan Cheng88e30412008-09-03 01:04:47 +000032 explicit X86FastISel(MachineFunction &mf) : FastISel(mf) {
33 Subtarget = &TM.getSubtarget<X86Subtarget>();
34 }
Evan Chengc3f44b02008-09-03 00:03:49 +000035
36 virtual bool
37 TargetSelectInstruction(Instruction *I,
38 DenseMap<const Value *, unsigned> &ValueMap,
39 DenseMap<const BasicBlock *, MachineBasicBlock *> &MBBMap,
40 MachineBasicBlock *MBB);
41
Dan Gohman1adf1b02008-08-19 21:45:35 +000042#include "X86GenFastISel.inc"
Evan Chengc3f44b02008-09-03 00:03:49 +000043};
Dan Gohman99b21822008-08-28 23:21:34 +000044
45bool
Evan Chengc3f44b02008-09-03 00:03:49 +000046X86FastISel::TargetSelectInstruction(Instruction *I,
Dan Gohman99b21822008-08-28 23:21:34 +000047 DenseMap<const Value *, unsigned> &ValueMap,
48 DenseMap<const BasicBlock *, MachineBasicBlock *> &MBBMap,
49 MachineBasicBlock *MBB) {
50 switch (I->getOpcode()) {
51 default: break;
52 }
53
54 return false;
55}
56
Evan Chengc3f44b02008-09-03 00:03:49 +000057namespace llvm {
58 llvm::FastISel *X86::createFastISel(MachineFunction &mf) {
59 return new X86FastISel(mf);
60 }
Dan Gohman99b21822008-08-28 23:21:34 +000061}