Pristine Ack-5.5
[Ack-5.5.git] / mach / sun3 / ce / as_table
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)).
5                                     @else
6                                         code_instr( 0xd, dst->reg, 0x7, src).
7                                     @fi.
8 ...   src:IMMEDIATE, dst        ==> code_opcode( 0x0, 0x3, 0x2, dst);
9                                     code_extension( src);
10                                     code_extension( 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).
14
15 and_l src:QUICK, dst            ==> code_opcode( 0x0, 0x1, 0x2, dst);
16                                     code_extension( src);
17                                     code_extension( dst).
18 ...   src:IMMEDIATE, dst        ==> code_opcode( 0x0, 0x1, 0x2, dst);
19                                     code_extension( src);
20                                     code_extension( dst).
21 ...   src:D_REG, dst            ==> code_instr( 0xc, src->reg, 0x6, dst).
22
23 asl_l cnt:D_REG, dst:D_REG      ==> @text2( %d( 0xe1a0 | (cnt->reg << 9) |
24                                                 dst->reg)).
25
26 asr_l cnt:QUICK, dst:D_REG      ==> @text2( %d( 0xe080 | (cnt->val << 9) |
27                                                 dst->reg)).
28 ...   cnt:D_REG, dst:D_REG      ==> @text2( %d( 0xe0a0 | (cnt->reg << 9) |
29                                                 dst->reg)).
30
31 bcc dst:LOC_LBL                 ==> @text1(0x64); 
32                                     @text1(%dist( dst->lbl)).
33 ... dst:GLOB_LBL                ==> @text2( 0x64ff);
34                                     code_dist4( dst).
35 bcs dst:LOC_LBL                 ==> @text1( 0x65);
36                                     @text1(%dist( dst->lbl)).
37 ... dst:GLOB_LBL                ==> @text2( 0x65ff);
38                                     code_dist4( dst).
39 beq dst:LOC_LBL                 ==> @text1( 0x67);
40                                     @text1(%dist( dst->lbl)).
41 ... dst:GLOB_LBL                ==> @text2( 0x67ff);
42                                     code_dist4( dst).
43 bge dst:LOC_LBL                 ==> @text1( 0x6c);
44                                     @text1(%dist( dst->lbl)).
45 ... dst:GLOB_LBL                ==> @text2( 0x6cff);
46                                     code_dist4( dst).
47 bgt dst:LOC_LBL                 ==> @text1( 0x6e);
48                                     @text1(%dist( dst->lbl)).
49 ... dst:GLOB_LBL                ==> @text2( 0x6eff);
50                                     code_dist4( dst).
51 ble dst:LOC_LBL                 ==> @text1( 0x6f);
52                                     @text1(%dist( dst->lbl)).
53 ... dst:GLOB_LBL                ==> @text2( 0x6fff);
54                                     code_dist4( dst).
55 bls dst:LOC_LBL                 ==> @text1( 0x63);
56                                     @text1(%dist( dst->lbl)).
57 ... dst:GLOB_LBL                ==> @text2( 0x63ff);
58                                     code_dist4( dst).
59 blt dst:LOC_LBL                 ==> @text1( 0x6d);
60                                     @text1(%dist( dst->lbl)).
61 ... dst:GLOB_LBL                ==> @text2( 0x6dff);
62                                     code_dist4( dst).
63 bmi dst:LOC_LBL                 ==> @text1( 0x6b);
64                                     @text1(%dist( dst->lbl)).
65 ... dst:GLOB_LBL                ==> @text2( 0x6bff);
66                                     code_dist4( dst).
67 bne dst:LOC_LBL                 ==> @text1( 0x66);
68                                     @text1(%dist( dst->lbl)).
69 ... dst:GLOB_LBL                ==> @text2( 0x66ff);
70                                     code_dist4( dst).
71 bra dst:LOC_LBL                 ==> @text1( 0x60);
72                                     @text1(%dist( dst->lbl)).
73 ... dst:GLOB_LBL                ==> @text2( 0x60ff);
74                                     code_dist4( dst).
75
76 bset nr:D_REG, dst              ==> code_instr( 0x0, nr->reg, 0x7, dst).
77
78 btst nr:D_REG, dst              ==> code_instr( 0x0, nr->reg, 0x4, dst).
79
80 bchg nr:D_REG, dst              ==> code_instr( 0x0, nr->reg, 0x5, dst).
81
82 clr_l dst                       ==> code_instr( 0x4, 0x1, 0x2, dst).
83  
84 cmp_l src:INCR, dst:INCR        ==> @text2( 0xb188 | %d( src->reg << 9) |
85                                             %d( dst->reg)).
86 ...   src, dst:D_REG            ==> code_instr( 0xb, dst->reg, 0x2, src).
87
88 cmp2_l src, reg:D_REG           ==> code_opcode( 0x0, 0x2, 0x3, src);
89                                     @text2( (%d(reg->reg) & 0x7) << 12);
90                                     code_extension( src).
91
92 dbf reg:D_REG, dst:LOC_LBL      ==> @text2( 0x51c8 | (%d(reg->reg) & 0x7));
93                                     @text2( %dist(dst->lbl) + 2).
94
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));
98                                     code_extension( src).
99
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).
104
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).
109
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).
114
115 eor_l src:D_REG, dst            ==> code_instr( 0xb, src->reg, 0x6, dst).
116
117 ext_w dst:D_REG                 ==> @text2( 0x4880 | (%d(dst->reg) & 0x7)).
118
119 ext_l dst:D_REG                 ==> @text2( 0x48c0 | (%d(dst->reg) & 0x7)).
120
121 extl_l dst:D_REG                ==> @text2( 0x49c0 | (%d(dst->reg) & 0x7)).
122
123 jmp dst                         ==> code_instr( 0x4, 0x7, 0x3, dst).
124
125 jsr dst                         ==> code_instr( 0x4, 0x7, 0x2, dst).
126
127 lea src, dst:A_REG              ==> code_instr( 0x4, dst->reg, 0x7, src).
128
129 link reg:A_REG, displ:IMMEDIATE ==> @text2( 0x4808 | %d(reg->reg));
130                                     @text4( %$(displ->expr)).
131
132 lsr_l cnt:D_REG, dst:D_REG      ==> @text2( 0xe0a8 | (%d(dst->reg) & 0x7) |
133                                             ((%d(cnt->reg) & 0x7) << 9)).
134
135 move_b src, dst                 ==> code_move( 0x1, src, dst).
136
137 move_l src, dst:A_REG           ==> code_instr( 0x2, dst->reg, 0x1, src).
138 ...    src, dst                 ==> code_move( 0x2, src, dst).
139
140 move_w src, dst                 ==> code_move( 0x3, src, dst).
141
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).
146
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).
151
152 neg_l dst                       ==> code_instr( 0x4, 0x2, 0x2, dst).
153
154 not_l dst                       ==> code_instr( 0x4, 0x3, 0x2, dst).
155
156 or_l src:D_REG, dst             ==> code_instr( 0x8, src->reg, 0x6, dst).
157
158 pea src                         ==> code_instr( 0x4, 0x4, 0x1, src).
159
160 rol_l cnt:D_REG, dst:D_REG      ==> @text2( 0xe1b8 | (%d(dst->reg) & 0x7) |
161                                                 ((%d(cnt->reg) & 0x7) << 9)).
162
163 ror_l cnt:D_REG, dst:D_REG      ==> @text2( 0xe0b8 | (%d(dst->reg) & 0x7) |
164                                                 ((%d(cnt->reg) & 0x7) << 9)).
165
166 rts                             ==> @text2( 0x4e75).
167
168 sne dst                         ==> code_instr( 0x5, 0x3, 0x3, dst).
169
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).
175
176 tst_l dst                       ==> code_instr( 0x4, 0x5, 0x2, dst).
177
178 unlk reg:A_REG                  ==> @text2( 0x4e58 | %d(reg->reg)).