1 //===- X86RegisterInfo.cpp - X86 Register Information ---------------------===//
3 // This file contains the X86 implementation of the MRegisterInfo class.
5 //===----------------------------------------------------------------------===//
8 #include "X86RegisterInfo.h"
9 #include "llvm/Constants.h"
10 #include "llvm/Type.h"
11 #include "llvm/CodeGen/MachineInstrBuilder.h"
13 // X86Regs - Turn the X86RegisterInfo.def file into a bunch of register
16 static const MRegisterDesc X86Regs[] = {
17 #define R(ENUM, NAME, FLAGS, TSFLAGS) { NAME, FLAGS, TSFLAGS },
18 #include "X86RegisterInfo.def"
21 X86RegisterInfo::X86RegisterInfo()
22 : MRegisterInfo(X86Regs, sizeof(X86Regs)/sizeof(X86Regs[0])) {
26 void X86RegisterInfo::copyReg2PCRel(MachineBasicBlock *MBB,
27 MachineBasicBlock::iterator &MBBI,
28 unsigned SrcReg, unsigned ImmOffset,
29 unsigned dataSize) const
31 MachineInstrBuilder MI = BuildMI(X86::MOVmr32, 2)
32 .addPCDisp(ConstantUInt::get(Type::UIntTy, ImmOffset)).addReg(SrcReg);
33 MBB->insert(MBBI, &*MI);
36 void X86RegisterInfo::copyPCRel2Reg(MachineBasicBlock *MBB,
37 MachineBasicBlock::iterator &MBBI,
38 unsigned ImmOffset, unsigned DestReg,
39 unsigned dataSize) const
41 MachineInstrBuilder MI = BuildMI(X86::MOVrm32, 2)
42 .addReg(DestReg).addPCDisp(ConstantUInt::get(Type::UIntTy, ImmOffset));
43 MBB->insert(MBBI, &*MI);