1use super::Add;
6use crate::{Asm, Imm16, Imm8, Mem16, Mem32, Mem64, Mem8, Reg16, Reg32, Reg64};
7
8impl Add<Reg32, Reg32> for Asm {
9 fn add(&mut self, op1: Reg32, op2: Reg32) {
10 self.encode_rr(&[0x01], op1, op2);
11 }
12}
13
14impl Add<Reg64, Reg64> for Asm {
15 fn add(&mut self, op1: Reg64, op2: Reg64) {
16 self.encode_rr(&[0x01], op1, op2);
17 }
18}
19
20impl Add<Mem16, Reg16> for Asm {
21 fn add(&mut self, op1: Mem16, op2: Reg16) {
22 self.encode_mr(0x01, op1, op2);
23 }
24}
25
26impl Add<Mem64, Reg64> for Asm {
27 fn add(&mut self, op1: Mem64, op2: Reg64) {
28 self.encode_mr(0x01, op1, op2);
29 }
30}
31
32impl Add<Reg64, Mem64> for Asm {
33 fn add(&mut self, op1: Reg64, op2: Mem64) {
34 self.encode_rm(0x03, op1, op2);
35 }
36}
37
38impl Add<Mem8, Imm8> for Asm {
39 fn add(&mut self, op1: Mem8, op2: Imm8) {
40 self.encode_mi(0x80, 0, op1, op2);
41 }
42}
43
44impl Add<Mem16, Imm8> for Asm {
45 fn add(&mut self, op1: Mem16, op2: Imm8) {
46 self.encode_mi(0x83, 0, op1, op2);
47 }
48}
49
50impl Add<Mem32, Imm8> for Asm {
51 fn add(&mut self, op1: Mem32, op2: Imm8) {
52 self.encode_mi(0x83, 0, op1, op2);
53 }
54}
55
56impl Add<Mem64, Imm8> for Asm {
57 fn add(&mut self, op1: Mem64, op2: Imm8) {
58 self.encode_mi(0x83, 0, op1, op2);
59 }
60}
61
62impl Add<Mem16, Imm16> for Asm {
63 fn add(&mut self, op1: Mem16, op2: Imm16) {
64 self.encode_mi(0x81, 0, op1, op2);
65 }
66}