Add definitions for function headers from MRegisterInfo.h:
[oota-llvm.git] / lib / Target / X86 / X86RegisterInfo.cpp
1 //===- X86RegisterInfo.cpp - X86 Register Information ---------------------===//
2 //
3 // This file contains the X86 implementation of the MRegisterInfo class.
4 //
5 //===----------------------------------------------------------------------===//
6
7 #include "X86.h"
8 #include "X86RegisterInfo.h"
9 #include "llvm/Constants.h"
10 #include "llvm/Type.h"
11 #include "llvm/CodeGen/MachineInstrBuilder.h"
12
13 // X86Regs - Turn the X86RegisterInfo.def file into a bunch of register
14 // descriptors
15 //
16 static const MRegisterDesc X86Regs[] = {
17 #define R(ENUM, NAME, FLAGS, TSFLAGS) { NAME, FLAGS, TSFLAGS },
18 #include "X86RegisterInfo.def"
19 };
20
21 X86RegisterInfo::X86RegisterInfo()
22   : MRegisterInfo(X86Regs, sizeof(X86Regs)/sizeof(X86Regs[0])) {
23 }
24
25
26 void X86RegisterInfo::copyReg2PCRel(MachineBasicBlock *MBB,
27                                     MachineBasicBlock::iterator &MBBI,
28                                     unsigned SrcReg, unsigned ImmOffset,
29                                     unsigned dataSize) const
30 {
31   MachineInstrBuilder MI = BuildMI(X86::MOVmr32, 2)
32     .addPCDisp(ConstantUInt::get(Type::UIntTy, ImmOffset)).addReg(SrcReg);
33   MBB->insert(MBBI, &*MI);
34 }
35
36 void X86RegisterInfo::copyPCRel2Reg(MachineBasicBlock *MBB,
37                                     MachineBasicBlock::iterator &MBBI,
38                                     unsigned ImmOffset, unsigned DestReg,
39                                     unsigned dataSize) const
40 {
41   MachineInstrBuilder MI = BuildMI(X86::MOVrm32, 2)
42     .addReg(DestReg).addPCDisp(ConstantUInt::get(Type::UIntTy, ImmOffset));
43   MBB->insert(MBBI, &*MI);
44 }
45