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