Merge pull request #2400 from esdrubal/extrahead
[mono.git] / mono / arch / arm / mov_macros.th
1 /* Rd := imm8 ROR rot */
2 #define ARM_<Op>_REG_IMM_COND(p, reg, imm8, rot, cond) \
3         ARM_DPIOP_REG_IMM8ROT_COND(p, ARMOP_<Op>, reg, 0, imm8, rot, cond)
4 #define ARM_<Op>_REG_IMM(p, reg, imm8, rot) \
5         ARM_<Op>_REG_IMM_COND(p, reg, imm8, rot, ARMCOND_AL)
6 /* S */
7 #define ARM_<Op>S_REG_IMM_COND(p, reg, imm8, rot, cond) \
8         ARM_DPIOP_S_REG_IMM8ROT_COND(p, ARMOP_<Op>, reg, 0, imm8, rot, cond)
9 #define ARM_<Op>S_REG_IMM(p, reg, imm8, rot) \
10         ARM_<Op>S_REG_IMM_COND(p, reg, imm8, rot, ARMCOND_AL)
11
12 #ifndef ARM_NOIASM
13 #define _<Op>_REG_IMM_COND(reg, imm8, rot, cond) \
14         ARM_IASM_DPIOP_REG_IMM8ROT_COND(ARMOP_<Op>, reg, 0, imm8, rot, cond)
15 #define _<Op>_REG_IMM(reg, imm8, rot) \
16         _<Op>_REG_IMM_COND(reg, imm8, rot, ARMCOND_AL)
17 /* S */
18 #define _<Op>S_REG_IMM_COND(reg, imm8, rot, cond) \
19         ARM_IASM_DPIOP_S_REG_IMM8ROT_COND(ARMOP_<Op>, reg, 0, imm8, rot, cond)
20 #define _<Op>S_REG_IMM(reg, imm8, rot) \
21         _<Op>S_REG_IMM_COND(reg, imm8, rot, ARMCOND_AL)
22 #endif
23
24
25 /* Rd := imm8 */
26 #define ARM_<Op>_REG_IMM8_COND(p, reg, imm8, cond) \
27         ARM_DPIOP_REG_IMM8ROT_COND(p, ARMOP_<Op>, reg, 0, imm8, 0, cond)
28 #define ARM_<Op>_REG_IMM8(p, reg, imm8) \
29         ARM_<Op>_REG_IMM8_COND(p, reg, imm8, ARMCOND_AL)
30 /* S */
31 #define ARM_<Op>S_REG_IMM8_COND(p, reg, imm8, cond) \
32         ARM_DPIOP_S_REG_IMM8ROT_COND(p, ARMOP_<Op>, reg, 0, imm8, 0, cond)
33 #define ARM_<Op>S_REG_IMM8(p, reg, imm8) \
34         ARM_<Op>S_REG_IMM8_COND(p, reg, imm8, ARMCOND_AL)
35
36 #ifndef ARM_NOIASM
37 #define _<Op>_REG_IMM8_COND(reg, imm8, cond) \
38         ARM_IASM_DPIOP_REG_IMM8ROT_COND(ARMOP_<Op>, reg, 0, imm8, 0, cond)
39 #define _<Op>_REG_IMM8(reg, imm8) \
40         _<Op>_REG_IMM8_COND(reg, imm8, ARMCOND_AL)
41 /* S */
42 #define _<Op>S_REG_IMM8_COND(reg, imm8, cond) \
43         ARM_IASM_DPIOP_S_REG_IMM8ROT_COND(ARMOP_<Op>, reg, 0, imm8, 0, cond)
44 #define _<Op>S_REG_IMM8(reg, imm8) \
45         _<Op>S_REG_IMM8_COND(reg, imm8, ARMCOND_AL)
46 #endif
47
48
49 /* Rd := Rm */
50 #define ARM_<Op>_REG_REG_COND(p, rd, rm, cond) \
51         ARM_DPIOP_REG_REG_COND(p, ARMOP_<Op>, rd, 0, rm, cond)
52 #define ARM_<Op>_REG_REG(p, rd, rm) \
53         ARM_<Op>_REG_REG_COND(p, rd, rm, ARMCOND_AL)
54 /* S */
55 #define ARM_<Op>S_REG_REG_COND(p, rd, rm, cond) \
56         ARM_DPIOP_S_REG_REG_COND(p, ARMOP_<Op>, rd, 0, rm, cond)
57 #define ARM_<Op>S_REG_REG(p, rd, rm) \
58         ARM_<Op>S_REG_REG_COND(p, rd, rm, ARMCOND_AL)
59
60 #ifndef ARM_NOIASM
61 #define _<Op>_REG_REG_COND(rd, rm, cond) \
62         ARM_IASM_DPIOP_REG_REG_COND(ARMOP_<Op>, rd, 0, rm, cond)
63 #define _<Op>_REG_REG(rd, rm) \
64         _<Op>_REG_REG_COND(rd, rm, ARMCOND_AL)
65 /* S */
66 #define _<Op>S_REG_REG_COND(rd, rm, cond) \
67         ARM_IASM_DPIOP_S_REG_REG_COND(ARMOP_<Op>, rd, 0, rm, cond)
68 #define _<Op>S_REG_REG(rd, rm) \
69         _<Op>S_REG_REG_COND(rd, rm, ARMCOND_AL)
70 #endif
71
72
73 /* Rd := Rm <shift_type> imm_shift */
74 #define ARM_<Op>_REG_IMMSHIFT_COND(p, rd, rm, shift_type, imm_shift, cond) \
75         ARM_DPIOP_REG_IMMSHIFT_COND(p, ARMOP_<Op>, rd, 0, rm, shift_type, imm_shift, cond)
76 #define ARM_<Op>_REG_IMMSHIFT(p, rd, rm, shift_type, imm_shift) \
77         ARM_<Op>_REG_IMMSHIFT_COND(p, rd, rm, shift_type, imm_shift, ARMCOND_AL)
78 /* S */
79 #define ARM_<Op>S_REG_IMMSHIFT_COND(p, rd, rm, shift_type, imm_shift, cond) \
80         ARM_DPIOP_S_REG_IMMSHIFT_COND(p, ARMOP_<Op>, rd, 0, rm, shift_type, imm_shift, cond)
81 #define ARM_<Op>S_REG_IMMSHIFT(p, rd, rm, shift_type, imm_shift) \
82         ARM_<Op>S_REG_IMMSHIFT_COND(p, rd, rm, shift_type, imm_shift, ARMCOND_AL)
83
84 #ifndef ARM_NOIASM
85 #define _<Op>_REG_IMMSHIFT_COND(rd, rm, shift_type, imm_shift, cond) \
86         ARM_IASM_DPIOP_REG_IMMSHIFT_COND(ARMOP_<Op>, rd, 0, rm, shift_type, imm_shift, cond)
87 #define _<Op>_REG_IMMSHIFT(rd, rm, shift_type, imm_shift) \
88         _<Op>_REG_IMMSHIFT_COND(rd, rm, shift_type, imm_shift, ARMCOND_AL)
89 /* S */
90 #define _<Op>S_REG_IMMSHIFT_COND(rd, rm, shift_type, imm_shift, cond) \
91         ARM_IASM_DPIOP_S_REG_IMMSHIFT_COND(ARMOP_<Op>, rd, 0, rm, shift_type, imm_shift, cond)
92 #define _<Op>S_REG_IMMSHIFT(rd, rm, shift_type, imm_shift) \
93         _<Op>S_REG_IMMSHIFT_COND(rd, rm, shift_type, imm_shift, ARMCOND_AL)
94 #endif
95
96
97
98 /* Rd := (Rm <shift_type> Rs) */
99 #define ARM_<Op>_REG_REGSHIFT_COND(p, rd, rm, shift_type, rs, cond) \
100         ARM_DPIOP_REG_REGSHIFT_COND(p, ARMOP_<Op>, rd, 0, rm, shift_type, rs, cond)
101 #define ARM_<Op>_REG_REGSHIFT(p, rd, rm, shift_type, rs) \
102         ARM_<Op>_REG_REGSHIFT_COND(p, rd, rm, shift_type, rs, ARMCOND_AL)
103 /* S */
104 #define ARM_<Op>S_REG_REGSHIFT_COND(p, rd, rm, shift_type, rs, cond) \
105         ARM_DPIOP_S_REG_REGSHIFT_COND(p, ARMOP_<Op>, rd, 0, rm, shift_type, rs, cond)
106 #define ARM_<Op>S_REG_REGSHIFT(p, rd, rm, shift_type, rs) \
107         ARM_<Op>S_REG_REGSHIFT_COND(p, rd, rm, shift_type, rs, ARMCOND_AL)
108
109 #ifndef ARM_NOIASM
110 #define _<Op>_REG_REGSHIFT_COND(rd, rm, shift_type, rs, cond) \
111         ARM_IASM_DPIOP_REG_REGSHIFT_COND(ARMOP_<Op>, rd, 0, rm, shift_type, rs, cond)
112 #define _<Op>_REG_REGSHIFT(rd, rm, shift_type, rs) \
113         _<Op>_REG_REGSHIFT_COND(rd, rm, shift_type, rs, ARMCOND_AL)
114 /* S */
115 #define _<Op>S_REG_REGSHIFT_COND(rd, rm, shift_type, rs, cond) \
116         ARM_IASM_DPIOP_S_REG_REGSHIFT_COND(ARMOP_<Op>, rd, 0, rm, shift_type, rs, cond)
117 #define _<Op>S_REG_REGSHIFT(rd, rm, shift_type, rs) \
118         _<Op>S_REG_REGSHIFT_COND(rd, rm, shift_type, rs, ARMCOND_AL)
119 #endif
120
121