Implemented functions for emitting prologues and epilogues;
[oota-llvm.git] / lib / Target / X86 / X86InstrInfo.def
index d976a770e3eab7ea44b7315118d7533a2c5b4c76..2693ee6821574b9eedb4a3969637e0f3f2a9ec37 100644 (file)
@@ -82,15 +82,18 @@ I(MOVrm16     , "movw",  0x89,             0, X86II::MRMDestMem | X86II::Void |
                                               X86II::OpSize, NoImpRegs, NoImpRegs)
 I(MOVrm32     , "movl",  0x89,             0, X86II::MRMDestMem | X86II::Void, NoImpRegs, NoImpRegs)   // [mem] = R32
 
-I(PUSHr32     , "pushl", 0x50,             0, X86II::AddRegFrm | X86II::Void, NoImpRegs, NoImpRegs)
+I(PUSHr32     , "pushl", 0x50,             0, X86II::AddRegFrm | X86II::Void, NoImpRegs, NoImpRegs)    
+I(POPr32      , "popl",  0x58,             0, X86II::AddRegFrm, NoImpRegs, NoImpRegs)
 
 // Arithmetic instructions
 I(ADDrr8      , "addb",  0x00,             0, X86II::MRMDestReg, NoImpRegs, NoImpRegs)                 // R8  += R8
 I(ADDrr16     , "addw",  0x01,             0, X86II::MRMDestReg | X86II::OpSize, NoImpRegs, NoImpRegs) // R16 += R16
 I(ADDrr32     , "addl",  0x01,             0, X86II::MRMDestReg, NoImpRegs, NoImpRegs)                 // R32 += R32
+I(ADDri32     , "add",   0x81,             0, X86II::MRMS0r, NoImpRegs, NoImpRegs)                     // R32 += imm32
 I(SUBrr8      , "subb",  0x2A,             0, X86II::MRMDestReg, NoImpRegs, NoImpRegs)                 // R8  -= R8
 I(SUBrr16     , "subw",  0x2B,             0, X86II::MRMDestReg | X86II::OpSize, NoImpRegs, NoImpRegs) // R16 -= R16
 I(SUBrr32     , "subl",  0x2B,             0, X86II::MRMDestReg, NoImpRegs, NoImpRegs)                 // R32 -= R32
+I(SUBri32     , "sub",   0x81,             0, X86II::MRMS5r, NoImpRegs, NoImpRegs)                     // R32 -= imm32
 I(MULrr8      , "mulb",  0xF6,             0, X86II::MRMS4r     | X86II::Void, O_AL, O_AX)             // AX   = AL*R8
 I(MULrr16     , "mulw",  0xF7,             0, X86II::MRMS4r     | X86II::Void |                        // DX:AX= AX*R16
                                               X86II::OpSize, O_AX, T_AXDX)