def ADDri16b : I2A8 <"add", 0x83, MRMS0r >, OpSize; // ADDri with sign extended 8 bit imm
def ADDri32b : I2A8 <"add", 0x83, MRMS0r >;
+def ADDmr8 : I2A8 <"add", 0x00, MRMDestMem>; // [mem] += R8
+def ADDmr16 : I2A16<"add", 0x01, MRMDestMem>, OpSize; // [mem] += R16
+def ADDmr32 : I2A32<"add", 0x01, MRMDestMem>; // [mem] += R32
+def ADDrm8 : I2A8 <"add", 0x02, MRMSrcMem >; // R8 += [mem]
+def ADDrm16 : I2A16<"add", 0x03, MRMSrcMem >, OpSize; // R16 += [mem]
+def ADDrm32 : I2A32<"add", 0x03, MRMSrcMem >; // R32 += [mem]
+
def ADCrr32 : I2A32<"adc", 0x11, MRMDestReg>; // R32 += imm32+Carry
def SUBrr8 : I2A8 <"sub", 0x28, MRMDestReg>, Pattern<(set R8 , (minus R8 , R8 ))>;