1 add_l src:QUICK, dst ==> code_instr( 0x5, src->val, 0x2, dst).
2 ... src:IMMEDIATE, dst:A_REG ==> @if ( small( %$(src->expr)))
3 @text2( 0x5088 | (%d(dst->reg) & 0x7) |
4 ((%$(src->expr) & 0x7) << 9)).
6 code_instr( 0xd, dst->reg, 0x7, src).
8 ... src:IMMEDIATE, dst ==> code_opcode( 0x0, 0x3, 0x2, dst);
11 ... src, dst:D_REG ==> code_instr( 0xd, dst->reg, 0x6, src).
12 ... src, dst:A_REG ==> code_instr( 0xd, dst->reg, 0x7, src).
13 ... src:D_REG, dst ==> code_instr( 0xd, src->reg, 0x6, dst).
15 and_l src:QUICK, dst ==> code_opcode( 0x0, 0x1, 0x2, dst);
18 ... src:IMMEDIATE, dst ==> code_opcode( 0x0, 0x1, 0x2, dst);
21 ... src:D_REG, dst ==> code_instr( 0xc, src->reg, 0x6, dst).
23 asl_l cnt:D_REG, dst:D_REG ==> @text2( %d( 0xe1a0 | (cnt->reg << 9) |
26 asr_l cnt:QUICK, dst:D_REG ==> @text2( %d( 0xe080 | (cnt->val << 9) |
28 ... cnt:D_REG, dst:D_REG ==> @text2( %d( 0xe0a0 | (cnt->reg << 9) |
31 bcc dst:LOC_LBL ==> @text1(0x64);
32 @text1(%dist( dst->lbl)).
33 ... dst:GLOB_LBL ==> @text2( 0x64ff);
35 bcs dst:LOC_LBL ==> @text1( 0x65);
36 @text1(%dist( dst->lbl)).
37 ... dst:GLOB_LBL ==> @text2( 0x65ff);
39 beq dst:LOC_LBL ==> @text1( 0x67);
40 @text1(%dist( dst->lbl)).
41 ... dst:GLOB_LBL ==> @text2( 0x67ff);
43 bge dst:LOC_LBL ==> @text1( 0x6c);
44 @text1(%dist( dst->lbl)).
45 ... dst:GLOB_LBL ==> @text2( 0x6cff);
47 bgt dst:LOC_LBL ==> @text1( 0x6e);
48 @text1(%dist( dst->lbl)).
49 ... dst:GLOB_LBL ==> @text2( 0x6eff);
51 ble dst:LOC_LBL ==> @text1( 0x6f);
52 @text1(%dist( dst->lbl)).
53 ... dst:GLOB_LBL ==> @text2( 0x6fff);
55 bls dst:LOC_LBL ==> @text1( 0x63);
56 @text1(%dist( dst->lbl)).
57 ... dst:GLOB_LBL ==> @text2( 0x63ff);
59 blt dst:LOC_LBL ==> @text1( 0x6d);
60 @text1(%dist( dst->lbl)).
61 ... dst:GLOB_LBL ==> @text2( 0x6dff);
63 bmi dst:LOC_LBL ==> @text1( 0x6b);
64 @text1(%dist( dst->lbl)).
65 ... dst:GLOB_LBL ==> @text2( 0x6bff);
67 bne dst:LOC_LBL ==> @text1( 0x66);
68 @text1(%dist( dst->lbl)).
69 ... dst:GLOB_LBL ==> @text2( 0x66ff);
71 bra dst:LOC_LBL ==> @text1( 0x60);
72 @text1(%dist( dst->lbl)).
73 ... dst:GLOB_LBL ==> @text2( 0x60ff);
76 bset nr:D_REG, dst ==> code_instr( 0x0, nr->reg, 0x7, dst).
78 btst nr:D_REG, dst ==> code_instr( 0x0, nr->reg, 0x4, dst).
80 bchg nr:D_REG, dst ==> code_instr( 0x0, nr->reg, 0x5, dst).
82 clr_l dst ==> code_instr( 0x4, 0x1, 0x2, dst).
84 cmp_l src:INCR, dst:INCR ==> @text2( 0xb188 | %d( src->reg << 9) |
86 ... src, dst:D_REG ==> code_instr( 0xb, dst->reg, 0x2, src).
88 cmp2_l src, reg:D_REG ==> code_opcode( 0x0, 0x2, 0x3, src);
89 @text2( (%d(reg->reg) & 0x7) << 12);
92 dbf reg:D_REG, dst:LOC_LBL ==> @text2( 0x51c8 | (%d(reg->reg) & 0x7));
93 @text2( %dist(dst->lbl) + 2).
95 divs_l src, dst:D_REG ==> code_opcode( 0x4, 0x6, 0x1, src);
96 @text2( 0x800 | (%d(dst->reg) & 0x7) |
97 ((%d(dst->reg) & 0x7) << 12));
100 divsl_l src, dst:REG_PAIR ==> code_opcode( 0x4, 0x6, 0x1, src);
101 @text2( 0x800 | (%d(dst->reg) & 0x7) |
102 ((%d(dst->reg2) & 0x7) << 12));
103 code_extension( src).
105 divu_l src, dst:D_REG ==> code_opcode( 0x4, 0x6, 0x1, src);
106 @text2( (%d(dst->reg) & 0x7) |
107 ((%d(dst->reg) & 0x7) << 12));
108 code_extension( src).
110 divul_l src, dst:REG_PAIR ==> code_opcode( 0x4, 0x6, 0x1, src);
111 @text2( (%d(dst->reg) & 0x7) |
112 ((%d(dst->reg2) & 0x7) << 12));
113 code_extension( src).
115 eor_l src:D_REG, dst ==> code_instr( 0xb, src->reg, 0x6, dst).
117 ext_w dst:D_REG ==> @text2( 0x4880 | (%d(dst->reg) & 0x7)).
119 ext_l dst:D_REG ==> @text2( 0x48c0 | (%d(dst->reg) & 0x7)).
121 extl_l dst:D_REG ==> @text2( 0x49c0 | (%d(dst->reg) & 0x7)).
123 jmp dst ==> code_instr( 0x4, 0x7, 0x3, dst).
125 jsr dst ==> code_instr( 0x4, 0x7, 0x2, dst).
127 lea src, dst:A_REG ==> code_instr( 0x4, dst->reg, 0x7, src).
129 link reg:A_REG, displ:IMMEDIATE ==> @text2( 0x4808 | %d(reg->reg));
130 @text4( %$(displ->expr)).
132 lsr_l cnt:D_REG, dst:D_REG ==> @text2( 0xe0a8 | (%d(dst->reg) & 0x7) |
133 ((%d(cnt->reg) & 0x7) << 9)).
135 move_b src, dst ==> code_move( 0x1, src, dst).
137 move_l src, dst:A_REG ==> code_instr( 0x2, dst->reg, 0x1, src).
138 ... src, dst ==> code_move( 0x2, src, dst).
140 move_w src, dst ==> code_move( 0x3, src, dst).
142 muls_l src, dst:D_REG ==> code_opcode( 0x4, 0x6, 0x0, src);
143 @text2( 0x800 | (%d(dst->reg) & 0x7) |
144 ((%d(dst->reg) & 0x7) << 12));
145 code_extension( src).
147 mulu_l src, dst:D_REG ==> code_opcode( 0x4, 0x6, 0x0, src);
148 @text2( (%d(dst->reg) & 0x7) |
149 ((%d(dst->reg) & 0x7) << 12));
150 code_extension( src).
152 neg_l dst ==> code_instr( 0x4, 0x2, 0x2, dst).
154 not_l dst ==> code_instr( 0x4, 0x3, 0x2, dst).
156 or_l src:D_REG, dst ==> code_instr( 0x8, src->reg, 0x6, dst).
158 pea src ==> code_instr( 0x4, 0x4, 0x1, src).
160 rol_l cnt:D_REG, dst:D_REG ==> @text2( 0xe1b8 | (%d(dst->reg) & 0x7) |
161 ((%d(cnt->reg) & 0x7) << 9)).
163 ror_l cnt:D_REG, dst:D_REG ==> @text2( 0xe0b8 | (%d(dst->reg) & 0x7) |
164 ((%d(cnt->reg) & 0x7) << 9)).
166 rts ==> @text2( 0x4e75).
168 sne dst ==> code_instr( 0x5, 0x3, 0x3, dst).
170 sub_l src:IMMEDIATE, dst ==> code_opcode( 0x0, 0x2, 0x2, dst);
171 code_extension( src);
172 code_extension( dst).
173 ... src:QUICK, dst ==> code_instr( 0x5, src->val, 0x6, dst).
174 ... src:D_REG, dst ==> code_instr( 0x9, src->reg, 0x6, dst).
176 tst_l dst ==> code_instr( 0x4, 0x5, 0x2, dst).
178 unlk reg:A_REG ==> @text2( 0x4e58 | %d(reg->reg)).