Commit | Line | Data |
---|---|---|
23cf992f | 1 | /* CGEN opcode support for m32r. |
9c03036a | 2 | |
5d07b6cf | 3 | Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. |
9c03036a DE |
4 | |
5 | This file is part of the GNU Binutils and/or GDB, the GNU debugger. | |
6 | ||
7 | This program is free software; you can redistribute it and/or modify | |
8 | it under the terms of the GNU General Public License as published by | |
9 | the Free Software Foundation; either version 2, or (at your option) | |
10 | any later version. | |
11 | ||
12 | This program is distributed in the hope that it will be useful, | |
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | GNU General Public License for more details. | |
16 | ||
17 | You should have received a copy of the GNU General Public License along | |
18 | with this program; if not, write to the Free Software Foundation, Inc., | |
19 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
20 | ||
21 | */ | |
22 | ||
23 | ||
23cf992f | 24 | #include "sysdep.h" |
9c03036a DE |
25 | #include <stdio.h> |
26 | #include "ansidecl.h" | |
27 | #include "libiberty.h" | |
28 | #include "bfd.h" | |
29 | #include "m32r-opc.h" | |
30 | ||
23cf992f NC |
31 | /* Attributes. */ |
32 | ||
853713a7 | 33 | static const CGEN_ATTR_ENTRY MACH_attr[] = |
5d07b6cf DE |
34 | { |
35 | { "m32r", MACH_M32R }, | |
23cf992f NC |
36 | { 0, 0 } |
37 | }; | |
38 | ||
853713a7 | 39 | const CGEN_ATTR_TABLE m32r_cgen_operand_attr_table[] = |
5d07b6cf DE |
40 | { |
41 | { "ABS-ADDR", NULL }, | |
23cf992f NC |
42 | { "FAKE", NULL }, |
43 | { "NEGATIVE", NULL }, | |
44 | { "PC", NULL }, | |
45 | { "PCREL-ADDR", NULL }, | |
46 | { "RELAX", NULL }, | |
47 | { "RELOC", NULL }, | |
48 | { "SIGN-OPT", NULL }, | |
49 | { "UNSIGNED", NULL }, | |
50 | { 0, 0 } | |
51 | }; | |
52 | ||
853713a7 | 53 | const CGEN_ATTR_TABLE m32r_cgen_insn_attr_table[] = |
5d07b6cf DE |
54 | { |
55 | { "ALIAS", NULL }, | |
23cf992f NC |
56 | { "COND-CTI", NULL }, |
57 | { "FILL-SLOT", NULL }, | |
23cf992f NC |
58 | { "RELAX", NULL }, |
59 | { "RELAX-BC", NULL }, | |
23cf992f NC |
60 | { "RELAX-BL", NULL }, |
61 | { "RELAX-BNC", NULL }, | |
23cf992f NC |
62 | { "RELAX-BRA", NULL }, |
63 | { "RELAXABLE", NULL }, | |
64 | { "UNCOND-CTI", NULL }, | |
65 | { 0, 0 } | |
9c03036a DE |
66 | }; |
67 | ||
853713a7 | 68 | CGEN_KEYWORD_ENTRY m32r_cgen_opval_mach_entries[] = |
5d07b6cf DE |
69 | { |
70 | { "m32r", MACH_M32R } | |
23cf992f NC |
71 | }; |
72 | ||
853713a7 | 73 | CGEN_KEYWORD m32r_cgen_opval_mach = |
5d07b6cf DE |
74 | { |
75 | & m32r_cgen_opval_mach_entries[0], | |
853713a7 | 76 | 1 |
9c03036a DE |
77 | }; |
78 | ||
853713a7 | 79 | CGEN_KEYWORD_ENTRY m32r_cgen_opval_h_gr_entries[] = |
5d07b6cf DE |
80 | { |
81 | { "fp", 13 }, | |
9c03036a DE |
82 | { "lr", 14 }, |
83 | { "sp", 15 }, | |
84 | { "r0", 0 }, | |
85 | { "r1", 1 }, | |
86 | { "r2", 2 }, | |
87 | { "r3", 3 }, | |
88 | { "r4", 4 }, | |
89 | { "r5", 5 }, | |
90 | { "r6", 6 }, | |
91 | { "r7", 7 }, | |
92 | { "r8", 8 }, | |
93 | { "r9", 9 }, | |
94 | { "r10", 10 }, | |
95 | { "r11", 11 }, | |
96 | { "r12", 12 }, | |
97 | { "r13", 13 }, | |
98 | { "r14", 14 }, | |
99 | { "r15", 15 } | |
100 | }; | |
101 | ||
853713a7 | 102 | CGEN_KEYWORD m32r_cgen_opval_h_gr = |
5d07b6cf DE |
103 | { |
104 | & m32r_cgen_opval_h_gr_entries[0], | |
9c03036a DE |
105 | 19 |
106 | }; | |
107 | ||
853713a7 | 108 | CGEN_KEYWORD_ENTRY m32r_cgen_opval_h_cr_entries[] = |
5d07b6cf DE |
109 | { |
110 | { "psw", 0 }, | |
9c03036a DE |
111 | { "cbr", 1 }, |
112 | { "spi", 2 }, | |
113 | { "spu", 3 }, | |
114 | { "bpc", 6 }, | |
115 | { "cr0", 0 }, | |
116 | { "cr1", 1 }, | |
117 | { "cr2", 2 }, | |
118 | { "cr3", 3 }, | |
119 | { "cr4", 4 }, | |
120 | { "cr5", 5 }, | |
121 | { "cr6", 6 } | |
122 | }; | |
123 | ||
853713a7 | 124 | CGEN_KEYWORD m32r_cgen_opval_h_cr = |
5d07b6cf DE |
125 | { |
126 | & m32r_cgen_opval_h_cr_entries[0], | |
9c03036a DE |
127 | 12 |
128 | }; | |
129 | ||
23cf992f | 130 | |
853713a7 | 131 | static CGEN_HW_ENTRY m32r_cgen_hw_entries[] = |
5d07b6cf DE |
132 | { |
133 | { & m32r_cgen_hw_entries[1], "h-pc", CGEN_ASM_KEYWORD /*FIXME*/, 0 }, | |
9c03036a DE |
134 | { & m32r_cgen_hw_entries[2], "h-memory", CGEN_ASM_KEYWORD /*FIXME*/, 0 }, |
135 | { & m32r_cgen_hw_entries[3], "h-sint", CGEN_ASM_KEYWORD /*FIXME*/, 0 }, | |
136 | { & m32r_cgen_hw_entries[4], "h-uint", CGEN_ASM_KEYWORD /*FIXME*/, 0 }, | |
137 | { & m32r_cgen_hw_entries[5], "h-addr", CGEN_ASM_KEYWORD /*FIXME*/, 0 }, | |
138 | { & m32r_cgen_hw_entries[6], "h-iaddr", CGEN_ASM_KEYWORD /*FIXME*/, 0 }, | |
139 | { & m32r_cgen_hw_entries[7], "h-hi16", CGEN_ASM_KEYWORD /*FIXME*/, 0 }, | |
140 | { & m32r_cgen_hw_entries[8], "h-slo16", CGEN_ASM_KEYWORD /*FIXME*/, 0 }, | |
141 | { & m32r_cgen_hw_entries[9], "h-ulo16", CGEN_ASM_KEYWORD /*FIXME*/, 0 }, | |
142 | { & m32r_cgen_hw_entries[10], "h-gr", CGEN_ASM_KEYWORD /*FIXME*/, & m32r_cgen_opval_h_gr }, | |
143 | { & m32r_cgen_hw_entries[11], "h-cr", CGEN_ASM_KEYWORD /*FIXME*/, & m32r_cgen_opval_h_cr }, | |
144 | { & m32r_cgen_hw_entries[12], "h-accum", CGEN_ASM_KEYWORD /*FIXME*/, 0 }, | |
853713a7 DE |
145 | { & m32r_cgen_hw_entries[13], "h-cond", CGEN_ASM_KEYWORD /*FIXME*/, 0 }, |
146 | { & m32r_cgen_hw_entries[14], "h-sm", CGEN_ASM_KEYWORD /*FIXME*/, 0 }, | |
147 | { & m32r_cgen_hw_entries[15], "h-bsm", CGEN_ASM_KEYWORD /*FIXME*/, 0 }, | |
148 | { & m32r_cgen_hw_entries[16], "h-ie", CGEN_ASM_KEYWORD /*FIXME*/, 0 }, | |
149 | { & m32r_cgen_hw_entries[17], "h-bie", CGEN_ASM_KEYWORD /*FIXME*/, 0 }, | |
150 | { & m32r_cgen_hw_entries[18], "h-bcond", CGEN_ASM_KEYWORD /*FIXME*/, 0 }, | |
9c03036a DE |
151 | { NULL, "h-bpc", CGEN_ASM_KEYWORD /*FIXME*/, 0 } |
152 | }; | |
153 | ||
154 | ||
23cf992f | 155 | const CGEN_OPERAND m32r_cgen_operand_table[CGEN_NUM_OPERANDS] = |
9c03036a | 156 | { |
23cf992f NC |
157 | /* pc: program counter */ |
158 | { "pc", 0, 0, { 0, 0|(1<<CGEN_OPERAND_FAKE)|(1<<CGEN_OPERAND_PC), { 0 } } }, | |
9c03036a DE |
159 | /* sr: source register */ |
160 | { "sr", 12, 4, { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } }, | |
161 | /* dr: destination register */ | |
162 | { "dr", 4, 4, { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } }, | |
163 | /* src1: source register 1 */ | |
164 | { "src1", 4, 4, { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } }, | |
165 | /* src2: source register 2 */ | |
166 | { "src2", 12, 4, { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } }, | |
167 | /* scr: source control register */ | |
168 | { "scr", 12, 4, { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } }, | |
169 | /* dcr: destination control register */ | |
170 | { "dcr", 4, 4, { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } }, | |
171 | /* simm8: 8 bit signed immediate */ | |
172 | { "simm8", 8, 8, { 0, 0, { 0 } } }, | |
173 | /* simm16: 16 bit signed immediate */ | |
174 | { "simm16", 16, 16, { 0, 0, { 0 } } }, | |
175 | /* uimm4: 4 bit trap number */ | |
176 | { "uimm4", 12, 4, { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } }, | |
177 | /* uimm5: 5 bit shift count */ | |
178 | { "uimm5", 11, 5, { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } }, | |
179 | /* uimm16: 16 bit unsigned immediate */ | |
180 | { "uimm16", 16, 16, { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } }, | |
181 | /* hi16: high 16 bit immediate, sign optional */ | |
182 | { "hi16", 16, 16, { 0, 0|(1<<CGEN_OPERAND_SIGN_OPT)|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } }, | |
183 | /* slo16: 16 bit signed immediate, for low() */ | |
184 | { "slo16", 16, 16, { 0, 0, { 0 } } }, | |
185 | /* ulo16: 16 bit unsigned immediate, for low() */ | |
186 | { "ulo16", 16, 16, { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } }, | |
187 | /* uimm24: 24 bit address */ | |
188 | { "uimm24", 8, 24, { 0, 0|(1<<CGEN_OPERAND_RELOC)|(1<<CGEN_OPERAND_ABS_ADDR)|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } }, | |
189 | /* disp8: 8 bit displacement */ | |
190 | { "disp8", 8, 8, { 0, 0|(1<<CGEN_OPERAND_RELAX)|(1<<CGEN_OPERAND_RELOC)|(1<<CGEN_OPERAND_PCREL_ADDR), { 0 } } }, | |
191 | /* disp16: 16 bit displacement */ | |
192 | { "disp16", 16, 16, { 0, 0|(1<<CGEN_OPERAND_RELOC)|(1<<CGEN_OPERAND_PCREL_ADDR), { 0 } } }, | |
193 | /* disp24: 24 bit displacement */ | |
194 | { "disp24", 8, 24, { 0, 0|(1<<CGEN_OPERAND_RELAX)|(1<<CGEN_OPERAND_RELOC)|(1<<CGEN_OPERAND_PCREL_ADDR), { 0 } } }, | |
23cf992f NC |
195 | /* condbit: condition bit */ |
196 | { "condbit", 0, 0, { 0, 0|(1<<CGEN_OPERAND_FAKE), { 0 } } }, | |
197 | /* accum: accumulator */ | |
198 | { "accum", 0, 0, { 0, 0|(1<<CGEN_OPERAND_FAKE), { 0 } } }, | |
23cf992f NC |
199 | }; |
200 | ||
201 | #define OP 1 /* syntax value for mnemonic */ | |
202 | ||
853713a7 | 203 | static const CGEN_SYNTAX syntax_table[] = |
5d07b6cf DE |
204 | { |
205 | /* <op> $dr,$sr */ | |
23cf992f NC |
206 | /* 0 */ { OP, ' ', 130, ',', 129, 0 }, |
207 | /* <op> $dr,$sr,$slo16 */ | |
853713a7 | 208 | /* 1 */ { OP, ' ', 130, ',', 129, ',', 141, 0 }, |
23cf992f NC |
209 | /* <op> $dr,$sr,$uimm16 */ |
210 | /* 2 */ { OP, ' ', 130, ',', 129, ',', 139, 0 }, | |
211 | /* <op> $dr,$sr,$ulo16 */ | |
853713a7 | 212 | /* 3 */ { OP, ' ', 130, ',', 129, ',', 142, 0 }, |
23cf992f NC |
213 | /* <op> $dr,$simm8 */ |
214 | /* 4 */ { OP, ' ', 130, ',', 135, 0 }, | |
215 | /* <op> $dr,$sr,$simm16 */ | |
216 | /* 5 */ { OP, ' ', 130, ',', 129, ',', 136, 0 }, | |
217 | /* <op> $disp8 */ | |
853713a7 | 218 | /* 6 */ { OP, ' ', 144, 0 }, |
23cf992f | 219 | /* <op> $disp24 */ |
853713a7 | 220 | /* 7 */ { OP, ' ', 146, 0 }, |
23cf992f | 221 | /* <op> $src1,$src2,$disp16 */ |
853713a7 | 222 | /* 8 */ { OP, ' ', 131, ',', 132, ',', 145, 0 }, |
23cf992f | 223 | /* <op> $src2,$disp16 */ |
853713a7 | 224 | /* 9 */ { OP, ' ', 132, ',', 145, 0 }, |
23cf992f NC |
225 | /* <op> $src1,$src2 */ |
226 | /* 10 */ { OP, ' ', 131, ',', 132, 0 }, | |
227 | /* <op> $src2,$simm16 */ | |
228 | /* 11 */ { OP, ' ', 132, ',', 136, 0 }, | |
229 | /* <op> $src2,$uimm16 */ | |
230 | /* 12 */ { OP, ' ', 132, ',', 139, 0 }, | |
23cf992f | 231 | /* <op> $sr */ |
853713a7 | 232 | /* 13 */ { OP, ' ', 129, 0 }, |
23cf992f | 233 | /* <op> $dr,@$sr */ |
853713a7 | 234 | /* 14 */ { OP, ' ', 130, ',', '@', 129, 0 }, |
23cf992f | 235 | /* <op> $dr,@($sr) */ |
853713a7 | 236 | /* 15 */ { OP, ' ', 130, ',', '@', '(', 129, ')', 0 }, |
23cf992f | 237 | /* <op> $dr,@($slo16,$sr) */ |
853713a7 | 238 | /* 16 */ { OP, ' ', 130, ',', '@', '(', 141, ',', 129, ')', 0 }, |
23cf992f | 239 | /* <op> $dr,@($sr,$slo16) */ |
853713a7 | 240 | /* 17 */ { OP, ' ', 130, ',', '@', '(', 129, ',', 141, ')', 0 }, |
23cf992f | 241 | /* <op> $dr,@$sr+ */ |
853713a7 | 242 | /* 18 */ { OP, ' ', 130, ',', '@', 129, '+', 0 }, |
23cf992f | 243 | /* <op> $dr,$uimm24 */ |
853713a7 | 244 | /* 19 */ { OP, ' ', 130, ',', 143, 0 }, |
23cf992f | 245 | /* <op> $dr,$slo16 */ |
853713a7 | 246 | /* 20 */ { OP, ' ', 130, ',', 141, 0 }, |
23cf992f | 247 | /* <op> $dr */ |
853713a7 | 248 | /* 21 */ { OP, ' ', 130, 0 }, |
23cf992f | 249 | /* <op> $dr,$scr */ |
853713a7 | 250 | /* 22 */ { OP, ' ', 130, ',', 133, 0 }, |
23cf992f | 251 | /* <op> $src1 */ |
853713a7 | 252 | /* 23 */ { OP, ' ', 131, 0 }, |
23cf992f | 253 | /* <op> $sr,$dcr */ |
853713a7 | 254 | /* 24 */ { OP, ' ', 129, ',', 134, 0 }, |
23cf992f | 255 | /* <op> */ |
853713a7 | 256 | /* 25 */ { OP, 0 }, |
23cf992f | 257 | /* <op> $dr,$hi16 */ |
853713a7 | 258 | /* 26 */ { OP, ' ', 130, ',', 140, 0 }, |
23cf992f | 259 | /* <op> $dr,$uimm5 */ |
853713a7 | 260 | /* 27 */ { OP, ' ', 130, ',', 138, 0 }, |
23cf992f | 261 | /* <op> $src1,@$src2 */ |
853713a7 | 262 | /* 28 */ { OP, ' ', 131, ',', '@', 132, 0 }, |
23cf992f | 263 | /* <op> $src1,@($src2) */ |
853713a7 | 264 | /* 29 */ { OP, ' ', 131, ',', '@', '(', 132, ')', 0 }, |
23cf992f | 265 | /* <op> $src1,@($slo16,$src2) */ |
853713a7 | 266 | /* 30 */ { OP, ' ', 131, ',', '@', '(', 141, ',', 132, ')', 0 }, |
23cf992f | 267 | /* <op> $src1,@($src2,$slo16) */ |
853713a7 | 268 | /* 31 */ { OP, ' ', 131, ',', '@', '(', 132, ',', 141, ')', 0 }, |
23cf992f | 269 | /* <op> $src1,@+$src2 */ |
853713a7 | 270 | /* 32 */ { OP, ' ', 131, ',', '@', '+', 132, 0 }, |
23cf992f | 271 | /* <op> $src1,@-$src2 */ |
853713a7 | 272 | /* 33 */ { OP, ' ', 131, ',', '@', '-', 132, 0 }, |
23cf992f | 273 | /* <op> $uimm4 */ |
853713a7 | 274 | /* 34 */ { OP, ' ', 137, 0 }, |
23cf992f NC |
275 | }; |
276 | ||
277 | #undef OP | |
278 | ||
853713a7 | 279 | static const CGEN_FORMAT format_table[] = |
5d07b6cf DE |
280 | { |
281 | /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr. */ | |
23cf992f NC |
282 | /* 0 */ { 16, 16, 0xf0f0 }, |
283 | /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr.f-simm16.slo16. */ | |
284 | /* 1 */ { 32, 32, 0xf0f00000 }, | |
285 | /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr.f-uimm16.uimm16. */ | |
286 | /* 2 */ { 32, 32, 0xf0f00000 }, | |
287 | /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr.f-uimm16.ulo16. */ | |
288 | /* 3 */ { 32, 32, 0xf0f00000 }, | |
289 | /* f-op1.number.f-r1.dr.f-simm8.simm8. */ | |
290 | /* 4 */ { 16, 16, 0xf000 }, | |
291 | /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr.f-simm16.simm16. */ | |
292 | /* 5 */ { 32, 32, 0xf0f00000 }, | |
293 | /* f-op1.number.f-r1.number.f-disp8.disp8. */ | |
294 | /* 6 */ { 16, 16, 0xff00 }, | |
295 | /* f-op1.number.f-r1.number.f-disp24.disp24. */ | |
296 | /* 7 */ { 32, 32, 0xff000000 }, | |
297 | /* f-op1.number.f-r1.src1.f-op2.number.f-r2.src2.f-disp16.disp16. */ | |
298 | /* 8 */ { 32, 32, 0xf0f00000 }, | |
299 | /* f-op1.number.f-r1.number.f-op2.number.f-r2.src2.f-disp16.disp16. */ | |
300 | /* 9 */ { 32, 32, 0xfff00000 }, | |
301 | /* f-op1.number.f-r1.src1.f-op2.number.f-r2.src2. */ | |
302 | /* 10 */ { 16, 16, 0xf0f0 }, | |
303 | /* f-op1.number.f-r1.number.f-op2.number.f-r2.src2.f-simm16.simm16. */ | |
304 | /* 11 */ { 32, 32, 0xfff00000 }, | |
305 | /* f-op1.number.f-r1.number.f-op2.number.f-r2.src2.f-uimm16.uimm16. */ | |
306 | /* 12 */ { 32, 32, 0xfff00000 }, | |
23cf992f | 307 | /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr.f-simm16.number. */ |
853713a7 | 308 | /* 13 */ { 32, 32, 0xf0f0ffff }, |
23cf992f | 309 | /* f-op1.number.f-r1.number.f-op2.number.f-r2.sr. */ |
853713a7 | 310 | /* 14 */ { 16, 16, 0xfff0 }, |
23cf992f | 311 | /* f-op1.number.f-r1.dr.f-uimm24.uimm24. */ |
853713a7 | 312 | /* 15 */ { 32, 32, 0xf0000000 }, |
23cf992f | 313 | /* f-op1.number.f-r1.dr.f-op2.number.f-r2.number.f-simm16.slo16. */ |
853713a7 | 314 | /* 16 */ { 32, 32, 0xf0ff0000 }, |
23cf992f | 315 | /* f-op1.number.f-r1.dr.f-op2.number.f-r2.number. */ |
853713a7 | 316 | /* 17 */ { 16, 16, 0xf0ff }, |
23cf992f | 317 | /* f-op1.number.f-r1.dr.f-op2.number.f-r2.scr. */ |
853713a7 | 318 | /* 18 */ { 16, 16, 0xf0f0 }, |
23cf992f | 319 | /* f-op1.number.f-r1.src1.f-op2.number.f-r2.number. */ |
853713a7 | 320 | /* 19 */ { 16, 16, 0xf0ff }, |
23cf992f | 321 | /* f-op1.number.f-r1.dcr.f-op2.number.f-r2.sr. */ |
853713a7 | 322 | /* 20 */ { 16, 16, 0xf0f0 }, |
23cf992f | 323 | /* f-op1.number.f-r1.number.f-op2.number.f-r2.number. */ |
853713a7 | 324 | /* 21 */ { 16, 16, 0xffff }, |
23cf992f | 325 | /* f-op1.number.f-r1.dr.f-op2.number.f-r2.number.f-hi16.hi16. */ |
853713a7 | 326 | /* 22 */ { 32, 32, 0xf0ff0000 }, |
23cf992f | 327 | /* f-op1.number.f-r1.dr.f-shift-op2.number.f-uimm5.uimm5. */ |
853713a7 | 328 | /* 23 */ { 16, 16, 0xf0e0 }, |
23cf992f | 329 | /* f-op1.number.f-r1.src1.f-op2.number.f-r2.src2.f-simm16.slo16. */ |
853713a7 | 330 | /* 24 */ { 32, 32, 0xf0f00000 }, |
23cf992f | 331 | /* f-op1.number.f-r1.number.f-op2.number.f-uimm4.uimm4. */ |
853713a7 | 332 | /* 25 */ { 16, 16, 0xfff0 }, |
9c03036a DE |
333 | }; |
334 | ||
23cf992f NC |
335 | #define A(a) (1 << CGEN_CAT3 (CGEN_INSN,_,a)) |
336 | #define SYN(n) (& syntax_table[n]) | |
337 | #define FMT(n) (& format_table[n]) | |
338 | ||
853713a7 | 339 | const CGEN_INSN m32r_cgen_insn_table_entries[CGEN_NUM_INSNS] = |
5d07b6cf DE |
340 | { |
341 | /* null first entry, end of all hash chains */ | |
23cf992f | 342 | { { 0 }, 0 }, |
9c03036a DE |
343 | /* add $dr,$sr */ |
344 | { | |
23cf992f NC |
345 | { 1, 1, 1, 1 }, |
346 | "add", "add", SYN (0), FMT (0), 0xa0, | |
853713a7 | 347 | { 0, 0, { 0 } } |
9c03036a DE |
348 | }, |
349 | /* add3 $dr,$sr,$slo16 */ | |
350 | { | |
23cf992f NC |
351 | { 1, 1, 1, 1 }, |
352 | "add3", "add3", SYN (1), FMT (1), 0x80a00000, | |
853713a7 | 353 | { 0, 0, { 0 } } |
9c03036a DE |
354 | }, |
355 | /* and $dr,$sr */ | |
356 | { | |
23cf992f NC |
357 | { 1, 1, 1, 1 }, |
358 | "and", "and", SYN (0), FMT (0), 0xc0, | |
853713a7 | 359 | { 0, 0, { 0 } } |
9c03036a DE |
360 | }, |
361 | /* and3 $dr,$sr,$uimm16 */ | |
362 | { | |
23cf992f NC |
363 | { 1, 1, 1, 1 }, |
364 | "and3", "and3", SYN (2), FMT (2), 0x80c00000, | |
853713a7 | 365 | { 0, 0, { 0 } } |
9c03036a DE |
366 | }, |
367 | /* or $dr,$sr */ | |
368 | { | |
23cf992f NC |
369 | { 1, 1, 1, 1 }, |
370 | "or", "or", SYN (0), FMT (0), 0xe0, | |
853713a7 | 371 | { 0, 0, { 0 } } |
9c03036a DE |
372 | }, |
373 | /* or3 $dr,$sr,$ulo16 */ | |
374 | { | |
23cf992f NC |
375 | { 1, 1, 1, 1 }, |
376 | "or3", "or3", SYN (3), FMT (3), 0x80e00000, | |
853713a7 | 377 | { 0, 0, { 0 } } |
9c03036a DE |
378 | }, |
379 | /* xor $dr,$sr */ | |
380 | { | |
23cf992f NC |
381 | { 1, 1, 1, 1 }, |
382 | "xor", "xor", SYN (0), FMT (0), 0xd0, | |
853713a7 | 383 | { 0, 0, { 0 } } |
9c03036a DE |
384 | }, |
385 | /* xor3 $dr,$sr,$uimm16 */ | |
386 | { | |
23cf992f NC |
387 | { 1, 1, 1, 1 }, |
388 | "xor3", "xor3", SYN (2), FMT (2), 0x80d00000, | |
853713a7 | 389 | { 0, 0, { 0 } } |
9c03036a DE |
390 | }, |
391 | /* addi $dr,$simm8 */ | |
392 | { | |
23cf992f NC |
393 | { 1, 1, 1, 1 }, |
394 | "addi", "addi", SYN (4), FMT (4), 0x4000, | |
853713a7 | 395 | { 0, 0, { 0 } } |
9c03036a DE |
396 | }, |
397 | /* addv $dr,$sr */ | |
398 | { | |
23cf992f NC |
399 | { 1, 1, 1, 1 }, |
400 | "addv", "addv", SYN (0), FMT (0), 0x80, | |
853713a7 | 401 | { 0, 0, { 0 } } |
9c03036a DE |
402 | }, |
403 | /* addv3 $dr,$sr,$simm16 */ | |
404 | { | |
23cf992f NC |
405 | { 1, 1, 1, 1 }, |
406 | "addv3", "addv3", SYN (5), FMT (5), 0x80800000, | |
853713a7 | 407 | { 0, 0, { 0 } } |
9c03036a DE |
408 | }, |
409 | /* addx $dr,$sr */ | |
410 | { | |
23cf992f NC |
411 | { 1, 1, 1, 1 }, |
412 | "addx", "addx", SYN (0), FMT (0), 0x90, | |
853713a7 | 413 | { 0, 0, { 0 } } |
9c03036a DE |
414 | }, |
415 | /* bc $disp8 */ | |
416 | { | |
23cf992f NC |
417 | { 1, 1, 1, 1 }, |
418 | "bc8", "bc", SYN (6), FMT (6), 0x7c00, | |
853713a7 | 419 | { 0, 0|A(RELAX_BC)|A(RELAXABLE)|A(COND_CTI), { 0 } } |
9c03036a DE |
420 | }, |
421 | /* bc.s $disp8 */ | |
422 | { | |
23cf992f NC |
423 | { 1, 1, 1, 1 }, |
424 | "bc8.s", "bc.s", SYN (6), FMT (6), 0x7c00, | |
853713a7 | 425 | { 0, 0|A(ALIAS)|A(COND_CTI), { 0 } } |
9c03036a DE |
426 | }, |
427 | /* bc $disp24 */ | |
428 | { | |
23cf992f NC |
429 | { 1, 1, 1, 1 }, |
430 | "bc24", "bc", SYN (7), FMT (7), 0xfc000000, | |
853713a7 | 431 | { 0, 0|A(RELAX_BC)|A(RELAX)|A(COND_CTI), { 0 } } |
9c03036a DE |
432 | }, |
433 | /* bc.l $disp24 */ | |
434 | { | |
23cf992f NC |
435 | { 1, 1, 1, 1 }, |
436 | "bc24.l", "bc.l", SYN (7), FMT (7), 0xfc000000, | |
853713a7 | 437 | { 0, 0|A(ALIAS)|A(COND_CTI), { 0 } } |
9c03036a DE |
438 | }, |
439 | /* beq $src1,$src2,$disp16 */ | |
440 | { | |
23cf992f NC |
441 | { 1, 1, 1, 1 }, |
442 | "beq", "beq", SYN (8), FMT (8), 0xb0000000, | |
853713a7 | 443 | { 0, 0|A(COND_CTI), { 0 } } |
9c03036a DE |
444 | }, |
445 | /* beqz $src2,$disp16 */ | |
446 | { | |
23cf992f NC |
447 | { 1, 1, 1, 1 }, |
448 | "beqz", "beqz", SYN (9), FMT (9), 0xb0800000, | |
853713a7 | 449 | { 0, 0|A(COND_CTI), { 0 } } |
9c03036a DE |
450 | }, |
451 | /* bgez $src2,$disp16 */ | |
452 | { | |
23cf992f NC |
453 | { 1, 1, 1, 1 }, |
454 | "bgez", "bgez", SYN (9), FMT (9), 0xb0b00000, | |
853713a7 | 455 | { 0, 0|A(COND_CTI), { 0 } } |
9c03036a DE |
456 | }, |
457 | /* bgtz $src2,$disp16 */ | |
458 | { | |
23cf992f NC |
459 | { 1, 1, 1, 1 }, |
460 | "bgtz", "bgtz", SYN (9), FMT (9), 0xb0d00000, | |
853713a7 | 461 | { 0, 0|A(COND_CTI), { 0 } } |
9c03036a DE |
462 | }, |
463 | /* blez $src2,$disp16 */ | |
464 | { | |
23cf992f NC |
465 | { 1, 1, 1, 1 }, |
466 | "blez", "blez", SYN (9), FMT (9), 0xb0c00000, | |
853713a7 | 467 | { 0, 0|A(COND_CTI), { 0 } } |
9c03036a DE |
468 | }, |
469 | /* bltz $src2,$disp16 */ | |
470 | { | |
23cf992f NC |
471 | { 1, 1, 1, 1 }, |
472 | "bltz", "bltz", SYN (9), FMT (9), 0xb0a00000, | |
853713a7 | 473 | { 0, 0|A(COND_CTI), { 0 } } |
9c03036a DE |
474 | }, |
475 | /* bnez $src2,$disp16 */ | |
476 | { | |
23cf992f NC |
477 | { 1, 1, 1, 1 }, |
478 | "bnez", "bnez", SYN (9), FMT (9), 0xb0900000, | |
853713a7 | 479 | { 0, 0|A(COND_CTI), { 0 } } |
9c03036a DE |
480 | }, |
481 | /* bl $disp8 */ | |
482 | { | |
23cf992f NC |
483 | { 1, 1, 1, 1 }, |
484 | "bl8", "bl", SYN (6), FMT (6), 0x7e00, | |
853713a7 | 485 | { 0, 0|A(FILL_SLOT)|A(RELAX_BL)|A(RELAXABLE)|A(UNCOND_CTI), { 0 } } |
9c03036a DE |
486 | }, |
487 | /* bl.s $disp8 */ | |
488 | { | |
23cf992f NC |
489 | { 1, 1, 1, 1 }, |
490 | "bl8.s", "bl.s", SYN (6), FMT (6), 0x7e00, | |
853713a7 | 491 | { 0, 0|A(FILL_SLOT)|A(ALIAS)|A(UNCOND_CTI), { 0 } } |
9c03036a DE |
492 | }, |
493 | /* bl $disp24 */ | |
494 | { | |
23cf992f NC |
495 | { 1, 1, 1, 1 }, |
496 | "bl24", "bl", SYN (7), FMT (7), 0xfe000000, | |
853713a7 | 497 | { 0, 0|A(RELAX_BL)|A(RELAX)|A(UNCOND_CTI), { 0 } } |
9c03036a DE |
498 | }, |
499 | /* bl.l $disp24 */ | |
500 | { | |
23cf992f NC |
501 | { 1, 1, 1, 1 }, |
502 | "bl24.l", "bl.l", SYN (7), FMT (7), 0xfe000000, | |
853713a7 | 503 | { 0, 0|A(ALIAS)|A(UNCOND_CTI), { 0 } } |
9c03036a DE |
504 | }, |
505 | /* bnc $disp8 */ | |
506 | { | |
23cf992f NC |
507 | { 1, 1, 1, 1 }, |
508 | "bnc8", "bnc", SYN (6), FMT (6), 0x7d00, | |
853713a7 | 509 | { 0, 0|A(RELAX_BNC)|A(RELAXABLE)|A(COND_CTI), { 0 } } |
9c03036a DE |
510 | }, |
511 | /* bnc.s $disp8 */ | |
512 | { | |
23cf992f NC |
513 | { 1, 1, 1, 1 }, |
514 | "bnc8.s", "bnc.s", SYN (6), FMT (6), 0x7d00, | |
853713a7 | 515 | { 0, 0|A(ALIAS)|A(COND_CTI), { 0 } } |
9c03036a DE |
516 | }, |
517 | /* bnc $disp24 */ | |
518 | { | |
23cf992f NC |
519 | { 1, 1, 1, 1 }, |
520 | "bnc24", "bnc", SYN (7), FMT (7), 0xfd000000, | |
853713a7 | 521 | { 0, 0|A(RELAX_BNC)|A(RELAX)|A(COND_CTI), { 0 } } |
9c03036a DE |
522 | }, |
523 | /* bnc.l $disp24 */ | |
524 | { | |
23cf992f NC |
525 | { 1, 1, 1, 1 }, |
526 | "bnc24.l", "bnc.l", SYN (7), FMT (7), 0xfd000000, | |
853713a7 | 527 | { 0, 0|A(ALIAS)|A(COND_CTI), { 0 } } |
9c03036a DE |
528 | }, |
529 | /* bne $src1,$src2,$disp16 */ | |
530 | { | |
23cf992f NC |
531 | { 1, 1, 1, 1 }, |
532 | "bne", "bne", SYN (8), FMT (8), 0xb0100000, | |
853713a7 | 533 | { 0, 0|A(COND_CTI), { 0 } } |
9c03036a DE |
534 | }, |
535 | /* bra $disp8 */ | |
536 | { | |
23cf992f NC |
537 | { 1, 1, 1, 1 }, |
538 | "bra8", "bra", SYN (6), FMT (6), 0x7f00, | |
853713a7 | 539 | { 0, 0|A(RELAX_BRA)|A(RELAXABLE)|A(UNCOND_CTI), { 0 } } |
9c03036a DE |
540 | }, |
541 | /* bra.s $disp8 */ | |
542 | { | |
23cf992f NC |
543 | { 1, 1, 1, 1 }, |
544 | "bra8.s", "bra.s", SYN (6), FMT (6), 0x7f00, | |
853713a7 | 545 | { 0, 0|A(ALIAS)|A(UNCOND_CTI), { 0 } } |
9c03036a DE |
546 | }, |
547 | /* bra $disp24 */ | |
548 | { | |
23cf992f NC |
549 | { 1, 1, 1, 1 }, |
550 | "bra24", "bra", SYN (7), FMT (7), 0xff000000, | |
853713a7 | 551 | { 0, 0|A(RELAX_BRA)|A(RELAX)|A(UNCOND_CTI), { 0 } } |
9c03036a DE |
552 | }, |
553 | /* bra.l $disp24 */ | |
554 | { | |
23cf992f NC |
555 | { 1, 1, 1, 1 }, |
556 | "bra24.l", "bra.l", SYN (7), FMT (7), 0xff000000, | |
853713a7 | 557 | { 0, 0|A(ALIAS)|A(UNCOND_CTI), { 0 } } |
9c03036a DE |
558 | }, |
559 | /* cmp $src1,$src2 */ | |
560 | { | |
23cf992f NC |
561 | { 1, 1, 1, 1 }, |
562 | "cmp", "cmp", SYN (10), FMT (10), 0x40, | |
853713a7 | 563 | { 0, 0, { 0 } } |
9c03036a DE |
564 | }, |
565 | /* cmpi $src2,$simm16 */ | |
566 | { | |
23cf992f NC |
567 | { 1, 1, 1, 1 }, |
568 | "cmpi", "cmpi", SYN (11), FMT (11), 0x80400000, | |
853713a7 | 569 | { 0, 0, { 0 } } |
9c03036a DE |
570 | }, |
571 | /* cmpu $src1,$src2 */ | |
572 | { | |
23cf992f NC |
573 | { 1, 1, 1, 1 }, |
574 | "cmpu", "cmpu", SYN (10), FMT (10), 0x50, | |
853713a7 | 575 | { 0, 0, { 0 } } |
23cf992f NC |
576 | }, |
577 | /* cmpui $src2,$uimm16 */ | |
578 | { | |
579 | { 1, 1, 1, 1 }, | |
580 | "cmpui", "cmpui", SYN (12), FMT (12), 0x80500000, | |
853713a7 | 581 | { 0, 0, { 0 } } |
9c03036a DE |
582 | }, |
583 | /* div $dr,$sr */ | |
584 | { | |
23cf992f | 585 | { 1, 1, 1, 1 }, |
853713a7 DE |
586 | "div", "div", SYN (0), FMT (13), 0x90000000, |
587 | { 0, 0, { 0 } } | |
9c03036a DE |
588 | }, |
589 | /* divu $dr,$sr */ | |
590 | { | |
23cf992f | 591 | { 1, 1, 1, 1 }, |
853713a7 DE |
592 | "divu", "divu", SYN (0), FMT (13), 0x90100000, |
593 | { 0, 0, { 0 } } | |
9c03036a DE |
594 | }, |
595 | /* rem $dr,$sr */ | |
596 | { | |
23cf992f | 597 | { 1, 1, 1, 1 }, |
853713a7 DE |
598 | "rem", "rem", SYN (0), FMT (13), 0x90200000, |
599 | { 0, 0, { 0 } } | |
9c03036a DE |
600 | }, |
601 | /* remu $dr,$sr */ | |
602 | { | |
23cf992f | 603 | { 1, 1, 1, 1 }, |
853713a7 DE |
604 | "remu", "remu", SYN (0), FMT (13), 0x90300000, |
605 | { 0, 0, { 0 } } | |
9c03036a DE |
606 | }, |
607 | /* jl $sr */ | |
608 | { | |
23cf992f | 609 | { 1, 1, 1, 1 }, |
853713a7 DE |
610 | "jl", "jl", SYN (13), FMT (14), 0x1ec0, |
611 | { 0, 0|A(FILL_SLOT)|A(UNCOND_CTI), { 0 } } | |
9c03036a DE |
612 | }, |
613 | /* jmp $sr */ | |
614 | { | |
23cf992f | 615 | { 1, 1, 1, 1 }, |
853713a7 DE |
616 | "jmp", "jmp", SYN (13), FMT (14), 0x1fc0, |
617 | { 0, 0|A(UNCOND_CTI), { 0 } } | |
9c03036a DE |
618 | }, |
619 | /* ld $dr,@$sr */ | |
620 | { | |
23cf992f | 621 | { 1, 1, 1, 1 }, |
853713a7 DE |
622 | "ld", "ld", SYN (14), FMT (0), 0x20c0, |
623 | { 0, 0, { 0 } } | |
9c03036a DE |
624 | }, |
625 | /* ld $dr,@($sr) */ | |
626 | { | |
23cf992f | 627 | { 1, 1, 1, 1 }, |
853713a7 DE |
628 | "ld-2", "ld", SYN (15), FMT (0), 0x20c0, |
629 | { 0, 0|A(ALIAS), { 0 } } | |
9c03036a DE |
630 | }, |
631 | /* ld $dr,@($slo16,$sr) */ | |
632 | { | |
23cf992f | 633 | { 1, 1, 1, 1 }, |
853713a7 DE |
634 | "ld-d", "ld", SYN (16), FMT (1), 0xa0c00000, |
635 | { 0, 0, { 0 } } | |
9c03036a DE |
636 | }, |
637 | /* ld $dr,@($sr,$slo16) */ | |
638 | { | |
23cf992f | 639 | { 1, 1, 1, 1 }, |
853713a7 DE |
640 | "ld-d2", "ld", SYN (17), FMT (1), 0xa0c00000, |
641 | { 0, 0|A(ALIAS), { 0 } } | |
9c03036a DE |
642 | }, |
643 | /* ldb $dr,@$sr */ | |
644 | { | |
23cf992f | 645 | { 1, 1, 1, 1 }, |
853713a7 DE |
646 | "ldb", "ldb", SYN (14), FMT (0), 0x2080, |
647 | { 0, 0, { 0 } } | |
9c03036a DE |
648 | }, |
649 | /* ldb $dr,@($sr) */ | |
650 | { | |
23cf992f | 651 | { 1, 1, 1, 1 }, |
853713a7 DE |
652 | "ldb-2", "ldb", SYN (15), FMT (0), 0x2080, |
653 | { 0, 0|A(ALIAS), { 0 } } | |
9c03036a DE |
654 | }, |
655 | /* ldb $dr,@($slo16,$sr) */ | |
656 | { | |
23cf992f | 657 | { 1, 1, 1, 1 }, |
853713a7 DE |
658 | "ldb-d", "ldb", SYN (16), FMT (1), 0xa0800000, |
659 | { 0, 0, { 0 } } | |
9c03036a DE |
660 | }, |
661 | /* ldb $dr,@($sr,$slo16) */ | |
662 | { | |
23cf992f | 663 | { 1, 1, 1, 1 }, |
853713a7 DE |
664 | "ldb-d2", "ldb", SYN (17), FMT (1), 0xa0800000, |
665 | { 0, 0|A(ALIAS), { 0 } } | |
9c03036a DE |
666 | }, |
667 | /* ldh $dr,@$sr */ | |
668 | { | |
23cf992f | 669 | { 1, 1, 1, 1 }, |
853713a7 DE |
670 | "ldh", "ldh", SYN (14), FMT (0), 0x20a0, |
671 | { 0, 0, { 0 } } | |
9c03036a DE |
672 | }, |
673 | /* ldh $dr,@($sr) */ | |
674 | { | |
23cf992f | 675 | { 1, 1, 1, 1 }, |
853713a7 DE |
676 | "ldh-2", "ldh", SYN (15), FMT (0), 0x20a0, |
677 | { 0, 0|A(ALIAS), { 0 } } | |
9c03036a DE |
678 | }, |
679 | /* ldh $dr,@($slo16,$sr) */ | |
680 | { | |
23cf992f | 681 | { 1, 1, 1, 1 }, |
853713a7 DE |
682 | "ldh-d", "ldh", SYN (16), FMT (1), 0xa0a00000, |
683 | { 0, 0, { 0 } } | |
9c03036a DE |
684 | }, |
685 | /* ldh $dr,@($sr,$slo16) */ | |
686 | { | |
23cf992f | 687 | { 1, 1, 1, 1 }, |
853713a7 DE |
688 | "ldh-d2", "ldh", SYN (17), FMT (1), 0xa0a00000, |
689 | { 0, 0|A(ALIAS), { 0 } } | |
9c03036a DE |
690 | }, |
691 | /* ldub $dr,@$sr */ | |
692 | { | |
23cf992f | 693 | { 1, 1, 1, 1 }, |
853713a7 DE |
694 | "ldub", "ldub", SYN (14), FMT (0), 0x2090, |
695 | { 0, 0, { 0 } } | |
9c03036a DE |
696 | }, |
697 | /* ldub $dr,@($sr) */ | |
698 | { | |
23cf992f | 699 | { 1, 1, 1, 1 }, |
853713a7 DE |
700 | "ldub-2", "ldub", SYN (15), FMT (0), 0x2090, |
701 | { 0, 0|A(ALIAS), { 0 } } | |
9c03036a DE |
702 | }, |
703 | /* ldub $dr,@($slo16,$sr) */ | |
704 | { | |
23cf992f | 705 | { 1, 1, 1, 1 }, |
853713a7 DE |
706 | "ldub-d", "ldub", SYN (16), FMT (1), 0xa0900000, |
707 | { 0, 0, { 0 } } | |
9c03036a DE |
708 | }, |
709 | /* ldub $dr,@($sr,$slo16) */ | |
710 | { | |
23cf992f | 711 | { 1, 1, 1, 1 }, |
853713a7 DE |
712 | "ldub-d2", "ldub", SYN (17), FMT (1), 0xa0900000, |
713 | { 0, 0|A(ALIAS), { 0 } } | |
9c03036a DE |
714 | }, |
715 | /* lduh $dr,@$sr */ | |
716 | { | |
23cf992f | 717 | { 1, 1, 1, 1 }, |
853713a7 DE |
718 | "lduh", "lduh", SYN (14), FMT (0), 0x20b0, |
719 | { 0, 0, { 0 } } | |
9c03036a DE |
720 | }, |
721 | /* lduh $dr,@($sr) */ | |
722 | { | |
23cf992f | 723 | { 1, 1, 1, 1 }, |
853713a7 DE |
724 | "lduh-2", "lduh", SYN (15), FMT (0), 0x20b0, |
725 | { 0, 0|A(ALIAS), { 0 } } | |
9c03036a DE |
726 | }, |
727 | /* lduh $dr,@($slo16,$sr) */ | |
728 | { | |
23cf992f | 729 | { 1, 1, 1, 1 }, |
853713a7 DE |
730 | "lduh-d", "lduh", SYN (16), FMT (1), 0xa0b00000, |
731 | { 0, 0, { 0 } } | |
9c03036a DE |
732 | }, |
733 | /* lduh $dr,@($sr,$slo16) */ | |
734 | { | |
23cf992f | 735 | { 1, 1, 1, 1 }, |
853713a7 DE |
736 | "lduh-d2", "lduh", SYN (17), FMT (1), 0xa0b00000, |
737 | { 0, 0|A(ALIAS), { 0 } } | |
9c03036a DE |
738 | }, |
739 | /* ld $dr,@$sr+ */ | |
740 | { | |
23cf992f | 741 | { 1, 1, 1, 1 }, |
853713a7 DE |
742 | "ld-plus", "ld", SYN (18), FMT (0), 0x20e0, |
743 | { 0, 0, { 0 } } | |
9c03036a DE |
744 | }, |
745 | /* ld24 $dr,$uimm24 */ | |
746 | { | |
23cf992f | 747 | { 1, 1, 1, 1 }, |
853713a7 DE |
748 | "ld24", "ld24", SYN (19), FMT (15), 0xe0000000, |
749 | { 0, 0, { 0 } } | |
9c03036a DE |
750 | }, |
751 | /* ldi $dr,$simm8 */ | |
752 | { | |
23cf992f NC |
753 | { 1, 1, 1, 1 }, |
754 | "ldi8", "ldi", SYN (4), FMT (4), 0x6000, | |
853713a7 | 755 | { 0, 0, { 0 } } |
9c03036a DE |
756 | }, |
757 | /* ldi8 $dr,$simm8 */ | |
758 | { | |
23cf992f NC |
759 | { 1, 1, 1, 1 }, |
760 | "ldi8a", "ldi8", SYN (4), FMT (4), 0x6000, | |
853713a7 | 761 | { 0, 0|A(ALIAS), { 0 } } |
9c03036a DE |
762 | }, |
763 | /* ldi $dr,$slo16 */ | |
764 | { | |
23cf992f | 765 | { 1, 1, 1, 1 }, |
853713a7 DE |
766 | "ldi16", "ldi", SYN (20), FMT (16), 0x90f00000, |
767 | { 0, 0, { 0 } } | |
9c03036a DE |
768 | }, |
769 | /* ldi16 $dr,$slo16 */ | |
770 | { | |
23cf992f | 771 | { 1, 1, 1, 1 }, |
853713a7 DE |
772 | "ldi16a", "ldi16", SYN (20), FMT (16), 0x90f00000, |
773 | { 0, 0|A(ALIAS), { 0 } } | |
9c03036a DE |
774 | }, |
775 | /* lock $dr,@$sr */ | |
776 | { | |
23cf992f | 777 | { 1, 1, 1, 1 }, |
853713a7 DE |
778 | "lock", "lock", SYN (14), FMT (0), 0x20d0, |
779 | { 0, 0, { 0 } } | |
9c03036a DE |
780 | }, |
781 | /* machi $src1,$src2 */ | |
782 | { | |
23cf992f NC |
783 | { 1, 1, 1, 1 }, |
784 | "machi", "machi", SYN (10), FMT (10), 0x3040, | |
853713a7 | 785 | { 0, 0, { 0 } } |
9c03036a DE |
786 | }, |
787 | /* maclo $src1,$src2 */ | |
788 | { | |
23cf992f NC |
789 | { 1, 1, 1, 1 }, |
790 | "maclo", "maclo", SYN (10), FMT (10), 0x3050, | |
853713a7 | 791 | { 0, 0, { 0 } } |
9c03036a DE |
792 | }, |
793 | /* macwhi $src1,$src2 */ | |
794 | { | |
23cf992f NC |
795 | { 1, 1, 1, 1 }, |
796 | "macwhi", "macwhi", SYN (10), FMT (10), 0x3060, | |
853713a7 | 797 | { 0, 0, { 0 } } |
9c03036a DE |
798 | }, |
799 | /* macwlo $src1,$src2 */ | |
800 | { | |
23cf992f NC |
801 | { 1, 1, 1, 1 }, |
802 | "macwlo", "macwlo", SYN (10), FMT (10), 0x3070, | |
853713a7 | 803 | { 0, 0, { 0 } } |
9c03036a DE |
804 | }, |
805 | /* mul $dr,$sr */ | |
806 | { | |
23cf992f NC |
807 | { 1, 1, 1, 1 }, |
808 | "mul", "mul", SYN (0), FMT (0), 0x1060, | |
853713a7 | 809 | { 0, 0, { 0 } } |
9c03036a DE |
810 | }, |
811 | /* mulhi $src1,$src2 */ | |
812 | { | |
23cf992f NC |
813 | { 1, 1, 1, 1 }, |
814 | "mulhi", "mulhi", SYN (10), FMT (10), 0x3000, | |
853713a7 | 815 | { 0, 0, { 0 } } |
9c03036a DE |
816 | }, |
817 | /* mullo $src1,$src2 */ | |
818 | { | |
23cf992f NC |
819 | { 1, 1, 1, 1 }, |
820 | "mullo", "mullo", SYN (10), FMT (10), 0x3010, | |
853713a7 | 821 | { 0, 0, { 0 } } |
9c03036a DE |
822 | }, |
823 | /* mulwhi $src1,$src2 */ | |
824 | { | |
23cf992f NC |
825 | { 1, 1, 1, 1 }, |
826 | "mulwhi", "mulwhi", SYN (10), FMT (10), 0x3020, | |
853713a7 | 827 | { 0, 0, { 0 } } |
9c03036a DE |
828 | }, |
829 | /* mulwlo $src1,$src2 */ | |
830 | { | |
23cf992f NC |
831 | { 1, 1, 1, 1 }, |
832 | "mulwlo", "mulwlo", SYN (10), FMT (10), 0x3030, | |
853713a7 | 833 | { 0, 0, { 0 } } |
9c03036a DE |
834 | }, |
835 | /* mv $dr,$sr */ | |
836 | { | |
23cf992f NC |
837 | { 1, 1, 1, 1 }, |
838 | "mv", "mv", SYN (0), FMT (0), 0x1080, | |
853713a7 | 839 | { 0, 0, { 0 } } |
9c03036a DE |
840 | }, |
841 | /* mvfachi $dr */ | |
842 | { | |
23cf992f | 843 | { 1, 1, 1, 1 }, |
853713a7 DE |
844 | "mvfachi", "mvfachi", SYN (21), FMT (17), 0x50f0, |
845 | { 0, 0, { 0 } } | |
9c03036a DE |
846 | }, |
847 | /* mvfaclo $dr */ | |
848 | { | |
23cf992f | 849 | { 1, 1, 1, 1 }, |
853713a7 DE |
850 | "mvfaclo", "mvfaclo", SYN (21), FMT (17), 0x50f1, |
851 | { 0, 0, { 0 } } | |
9c03036a DE |
852 | }, |
853 | /* mvfacmi $dr */ | |
854 | { | |
23cf992f | 855 | { 1, 1, 1, 1 }, |
853713a7 DE |
856 | "mvfacmi", "mvfacmi", SYN (21), FMT (17), 0x50f2, |
857 | { 0, 0, { 0 } } | |
9c03036a DE |
858 | }, |
859 | /* mvfc $dr,$scr */ | |
860 | { | |
23cf992f | 861 | { 1, 1, 1, 1 }, |
853713a7 DE |
862 | "mvfc", "mvfc", SYN (22), FMT (18), 0x1090, |
863 | { 0, 0, { 0 } } | |
9c03036a DE |
864 | }, |
865 | /* mvtachi $src1 */ | |
866 | { | |
23cf992f | 867 | { 1, 1, 1, 1 }, |
853713a7 DE |
868 | "mvtachi", "mvtachi", SYN (23), FMT (19), 0x5070, |
869 | { 0, 0, { 0 } } | |
9c03036a DE |
870 | }, |
871 | /* mvtaclo $src1 */ | |
872 | { | |
23cf992f | 873 | { 1, 1, 1, 1 }, |
853713a7 DE |
874 | "mvtaclo", "mvtaclo", SYN (23), FMT (19), 0x5071, |
875 | { 0, 0, { 0 } } | |
9c03036a DE |
876 | }, |
877 | /* mvtc $sr,$dcr */ | |
878 | { | |
23cf992f | 879 | { 1, 1, 1, 1 }, |
853713a7 DE |
880 | "mvtc", "mvtc", SYN (24), FMT (20), 0x10a0, |
881 | { 0, 0, { 0 } } | |
9c03036a DE |
882 | }, |
883 | /* neg $dr,$sr */ | |
884 | { | |
23cf992f NC |
885 | { 1, 1, 1, 1 }, |
886 | "neg", "neg", SYN (0), FMT (0), 0x30, | |
853713a7 | 887 | { 0, 0, { 0 } } |
9c03036a DE |
888 | }, |
889 | /* nop */ | |
890 | { | |
23cf992f | 891 | { 1, 1, 1, 1 }, |
853713a7 DE |
892 | "nop", "nop", SYN (25), FMT (21), 0x7000, |
893 | { 0, 0, { 0 } } | |
9c03036a DE |
894 | }, |
895 | /* not $dr,$sr */ | |
896 | { | |
23cf992f NC |
897 | { 1, 1, 1, 1 }, |
898 | "not", "not", SYN (0), FMT (0), 0xb0, | |
853713a7 | 899 | { 0, 0, { 0 } } |
9c03036a DE |
900 | }, |
901 | /* rac */ | |
902 | { | |
23cf992f | 903 | { 1, 1, 1, 1 }, |
853713a7 DE |
904 | "rac", "rac", SYN (25), FMT (21), 0x5090, |
905 | { 0, 0, { 0 } } | |
9c03036a DE |
906 | }, |
907 | /* rach */ | |
908 | { | |
23cf992f | 909 | { 1, 1, 1, 1 }, |
853713a7 DE |
910 | "rach", "rach", SYN (25), FMT (21), 0x5080, |
911 | { 0, 0, { 0 } } | |
9c03036a DE |
912 | }, |
913 | /* rte */ | |
914 | { | |
23cf992f | 915 | { 1, 1, 1, 1 }, |
853713a7 DE |
916 | "rte", "rte", SYN (25), FMT (21), 0x10d6, |
917 | { 0, 0|A(UNCOND_CTI), { 0 } } | |
9c03036a DE |
918 | }, |
919 | /* seth $dr,$hi16 */ | |
920 | { | |
23cf992f | 921 | { 1, 1, 1, 1 }, |
853713a7 DE |
922 | "seth", "seth", SYN (26), FMT (22), 0xd0c00000, |
923 | { 0, 0, { 0 } } | |
9c03036a DE |
924 | }, |
925 | /* sll $dr,$sr */ | |
926 | { | |
23cf992f NC |
927 | { 1, 1, 1, 1 }, |
928 | "sll", "sll", SYN (0), FMT (0), 0x1040, | |
853713a7 | 929 | { 0, 0, { 0 } } |
9c03036a DE |
930 | }, |
931 | /* sll3 $dr,$sr,$simm16 */ | |
932 | { | |
23cf992f NC |
933 | { 1, 1, 1, 1 }, |
934 | "sll3", "sll3", SYN (5), FMT (5), 0x90c00000, | |
853713a7 | 935 | { 0, 0, { 0 } } |
9c03036a DE |
936 | }, |
937 | /* slli $dr,$uimm5 */ | |
938 | { | |
23cf992f | 939 | { 1, 1, 1, 1 }, |
853713a7 DE |
940 | "slli", "slli", SYN (27), FMT (23), 0x5040, |
941 | { 0, 0, { 0 } } | |
9c03036a DE |
942 | }, |
943 | /* sra $dr,$sr */ | |
944 | { | |
23cf992f NC |
945 | { 1, 1, 1, 1 }, |
946 | "sra", "sra", SYN (0), FMT (0), 0x1020, | |
853713a7 | 947 | { 0, 0, { 0 } } |
9c03036a DE |
948 | }, |
949 | /* sra3 $dr,$sr,$simm16 */ | |
950 | { | |
23cf992f NC |
951 | { 1, 1, 1, 1 }, |
952 | "sra3", "sra3", SYN (5), FMT (5), 0x90a00000, | |
853713a7 | 953 | { 0, 0, { 0 } } |
9c03036a DE |
954 | }, |
955 | /* srai $dr,$uimm5 */ | |
956 | { | |
23cf992f | 957 | { 1, 1, 1, 1 }, |
853713a7 DE |
958 | "srai", "srai", SYN (27), FMT (23), 0x5020, |
959 | { 0, 0, { 0 } } | |
9c03036a DE |
960 | }, |
961 | /* srl $dr,$sr */ | |
962 | { | |
23cf992f NC |
963 | { 1, 1, 1, 1 }, |
964 | "srl", "srl", SYN (0), FMT (0), 0x1000, | |
853713a7 | 965 | { 0, 0, { 0 } } |
9c03036a DE |
966 | }, |
967 | /* srl3 $dr,$sr,$simm16 */ | |
968 | { | |
23cf992f NC |
969 | { 1, 1, 1, 1 }, |
970 | "srl3", "srl3", SYN (5), FMT (5), 0x90800000, | |
853713a7 | 971 | { 0, 0, { 0 } } |
9c03036a DE |
972 | }, |
973 | /* srli $dr,$uimm5 */ | |
974 | { | |
23cf992f | 975 | { 1, 1, 1, 1 }, |
853713a7 DE |
976 | "srli", "srli", SYN (27), FMT (23), 0x5000, |
977 | { 0, 0, { 0 } } | |
9c03036a DE |
978 | }, |
979 | /* st $src1,@$src2 */ | |
980 | { | |
23cf992f | 981 | { 1, 1, 1, 1 }, |
853713a7 DE |
982 | "st", "st", SYN (28), FMT (10), 0x2040, |
983 | { 0, 0, { 0 } } | |
9c03036a DE |
984 | }, |
985 | /* st $src1,@($src2) */ | |
986 | { | |
23cf992f | 987 | { 1, 1, 1, 1 }, |
853713a7 DE |
988 | "st-2", "st", SYN (29), FMT (10), 0x2040, |
989 | { 0, 0|A(ALIAS), { 0 } } | |
9c03036a DE |
990 | }, |
991 | /* st $src1,@($slo16,$src2) */ | |
992 | { | |
23cf992f | 993 | { 1, 1, 1, 1 }, |
853713a7 DE |
994 | "st-d", "st", SYN (30), FMT (24), 0xa0400000, |
995 | { 0, 0, { 0 } } | |
9c03036a DE |
996 | }, |
997 | /* st $src1,@($src2,$slo16) */ | |
998 | { | |
23cf992f | 999 | { 1, 1, 1, 1 }, |
853713a7 DE |
1000 | "st-d2", "st", SYN (31), FMT (24), 0xa0400000, |
1001 | { 0, 0|A(ALIAS), { 0 } } | |
9c03036a DE |
1002 | }, |
1003 | /* stb $src1,@$src2 */ | |
1004 | { | |
23cf992f | 1005 | { 1, 1, 1, 1 }, |
853713a7 DE |
1006 | "stb", "stb", SYN (28), FMT (10), 0x2000, |
1007 | { 0, 0, { 0 } } | |
9c03036a DE |
1008 | }, |
1009 | /* stb $src1,@($src2) */ | |
1010 | { | |
23cf992f | 1011 | { 1, 1, 1, 1 }, |
853713a7 DE |
1012 | "stb-2", "stb", SYN (29), FMT (10), 0x2000, |
1013 | { 0, 0|A(ALIAS), { 0 } } | |
9c03036a DE |
1014 | }, |
1015 | /* stb $src1,@($slo16,$src2) */ | |
1016 | { | |
23cf992f | 1017 | { 1, 1, 1, 1 }, |
853713a7 DE |
1018 | "stb-d", "stb", SYN (30), FMT (24), 0xa0000000, |
1019 | { 0, 0, { 0 } } | |
9c03036a DE |
1020 | }, |
1021 | /* stb $src1,@($src2,$slo16) */ | |
1022 | { | |
23cf992f | 1023 | { 1, 1, 1, 1 }, |
853713a7 DE |
1024 | "stb-d2", "stb", SYN (31), FMT (24), 0xa0000000, |
1025 | { 0, 0|A(ALIAS), { 0 } } | |
9c03036a DE |
1026 | }, |
1027 | /* sth $src1,@$src2 */ | |
1028 | { | |
23cf992f | 1029 | { 1, 1, 1, 1 }, |
853713a7 DE |
1030 | "sth", "sth", SYN (28), FMT (10), 0x2020, |
1031 | { 0, 0, { 0 } } | |
9c03036a DE |
1032 | }, |
1033 | /* sth $src1,@($src2) */ | |
1034 | { | |
23cf992f | 1035 | { 1, 1, 1, 1 }, |
853713a7 DE |
1036 | "sth-2", "sth", SYN (29), FMT (10), 0x2020, |
1037 | { 0, 0|A(ALIAS), { 0 } } | |
9c03036a DE |
1038 | }, |
1039 | /* sth $src1,@($slo16,$src2) */ | |
1040 | { | |
23cf992f | 1041 | { 1, 1, 1, 1 }, |
853713a7 DE |
1042 | "sth-d", "sth", SYN (30), FMT (24), 0xa0200000, |
1043 | { 0, 0, { 0 } } | |
9c03036a DE |
1044 | }, |
1045 | /* sth $src1,@($src2,$slo16) */ | |
1046 | { | |
23cf992f | 1047 | { 1, 1, 1, 1 }, |
853713a7 DE |
1048 | "sth-d2", "sth", SYN (31), FMT (24), 0xa0200000, |
1049 | { 0, 0|A(ALIAS), { 0 } } | |
9c03036a DE |
1050 | }, |
1051 | /* st $src1,@+$src2 */ | |
1052 | { | |
23cf992f | 1053 | { 1, 1, 1, 1 }, |
853713a7 DE |
1054 | "st-plus", "st", SYN (32), FMT (10), 0x2060, |
1055 | { 0, 0, { 0 } } | |
9c03036a DE |
1056 | }, |
1057 | /* st $src1,@-$src2 */ | |
1058 | { | |
23cf992f | 1059 | { 1, 1, 1, 1 }, |
853713a7 DE |
1060 | "st-minus", "st", SYN (33), FMT (10), 0x2070, |
1061 | { 0, 0, { 0 } } | |
9c03036a DE |
1062 | }, |
1063 | /* sub $dr,$sr */ | |
1064 | { | |
23cf992f NC |
1065 | { 1, 1, 1, 1 }, |
1066 | "sub", "sub", SYN (0), FMT (0), 0x20, | |
853713a7 | 1067 | { 0, 0, { 0 } } |
9c03036a DE |
1068 | }, |
1069 | /* subv $dr,$sr */ | |
1070 | { | |
23cf992f NC |
1071 | { 1, 1, 1, 1 }, |
1072 | "subv", "subv", SYN (0), FMT (0), 0x0, | |
853713a7 | 1073 | { 0, 0, { 0 } } |
9c03036a DE |
1074 | }, |
1075 | /* subx $dr,$sr */ | |
1076 | { | |
23cf992f NC |
1077 | { 1, 1, 1, 1 }, |
1078 | "subx", "subx", SYN (0), FMT (0), 0x10, | |
853713a7 | 1079 | { 0, 0, { 0 } } |
9c03036a DE |
1080 | }, |
1081 | /* trap $uimm4 */ | |
1082 | { | |
23cf992f | 1083 | { 1, 1, 1, 1 }, |
853713a7 DE |
1084 | "trap", "trap", SYN (34), FMT (25), 0x10f0, |
1085 | { 0, 0|A(FILL_SLOT)|A(UNCOND_CTI), { 0 } } | |
9c03036a DE |
1086 | }, |
1087 | /* unlock $src1,@$src2 */ | |
1088 | { | |
23cf992f | 1089 | { 1, 1, 1, 1 }, |
853713a7 DE |
1090 | "unlock", "unlock", SYN (28), FMT (10), 0x2050, |
1091 | { 0, 0, { 0 } } | |
9c03036a DE |
1092 | }, |
1093 | /* push $src1 */ | |
1094 | { | |
23cf992f | 1095 | { 1, 1, 1, 1 }, |
853713a7 DE |
1096 | "push", "push", SYN (23), FMT (19), 0x207f, |
1097 | { 0, 0|A(ALIAS), { 0 } } | |
9c03036a DE |
1098 | }, |
1099 | /* pop $dr */ | |
1100 | { | |
23cf992f | 1101 | { 1, 1, 1, 1 }, |
853713a7 DE |
1102 | "pop", "pop", SYN (21), FMT (17), 0x20ef, |
1103 | { 0, 0|A(ALIAS), { 0 } } | |
9c03036a DE |
1104 | }, |
1105 | }; | |
1106 | ||
23cf992f NC |
1107 | #undef A |
1108 | #undef SYN | |
1109 | #undef FMT | |
1110 | ||
853713a7 DE |
1111 | CGEN_INSN_TABLE m32r_cgen_insn_table = |
1112 | { | |
9c03036a | 1113 | & m32r_cgen_insn_table_entries[0], |
23cf992f | 1114 | sizeof (CGEN_INSN), |
9c03036a DE |
1115 | CGEN_NUM_INSNS, |
1116 | NULL, | |
1117 | m32r_cgen_asm_hash_insn, CGEN_ASM_HASH_SIZE, | |
1118 | m32r_cgen_dis_hash_insn, CGEN_DIS_HASH_SIZE | |
1119 | }; | |
1120 | ||
1121 | /* The hash functions are recorded here to help keep assembler code out of | |
1122 | the disassembler and vice versa. */ | |
1123 | ||
1124 | unsigned int | |
1125 | m32r_cgen_asm_hash_insn (insn) | |
853713a7 | 1126 | const char * insn; |
9c03036a DE |
1127 | { |
1128 | return CGEN_ASM_HASH (insn); | |
1129 | } | |
1130 | ||
1131 | unsigned int | |
1132 | m32r_cgen_dis_hash_insn (buf, value) | |
5d07b6cf | 1133 | const char * buf; |
9c03036a DE |
1134 | unsigned long value; |
1135 | { | |
1136 | return CGEN_DIS_HASH (buf, value); | |
1137 | } | |
1138 | ||
853713a7 | 1139 | CGEN_OPCODE_DATA m32r_cgen_opcode_data = |
5d07b6cf DE |
1140 | { |
1141 | & m32r_cgen_hw_entries[0], | |
9c03036a DE |
1142 | & m32r_cgen_insn_table, |
1143 | }; | |
1144 | ||
1145 | void | |
1146 | m32r_cgen_init_tables (mach) | |
1147 | int mach; | |
1148 | { | |
1149 | } | |
1150 | ||
1151 | /* Main entry point for stuffing values in cgen_fields. */ | |
1152 | ||
1153 | CGEN_INLINE void | |
1154 | m32r_cgen_set_operand (opindex, valuep, fields) | |
1155 | int opindex; | |
5d07b6cf | 1156 | const long * valuep; |
853713a7 | 1157 | CGEN_FIELDS * fields; |
9c03036a DE |
1158 | { |
1159 | switch (opindex) | |
1160 | { | |
23cf992f | 1161 | case M32R_OPERAND_SR : |
853713a7 | 1162 | fields->f_r2 = * valuep; |
9c03036a | 1163 | break; |
23cf992f | 1164 | case M32R_OPERAND_DR : |
853713a7 | 1165 | fields->f_r1 = * valuep; |
9c03036a | 1166 | break; |
23cf992f | 1167 | case M32R_OPERAND_SRC1 : |
853713a7 | 1168 | fields->f_r1 = * valuep; |
9c03036a | 1169 | break; |
23cf992f | 1170 | case M32R_OPERAND_SRC2 : |
853713a7 | 1171 | fields->f_r2 = * valuep; |
9c03036a | 1172 | break; |
23cf992f | 1173 | case M32R_OPERAND_SCR : |
853713a7 | 1174 | fields->f_r2 = * valuep; |
9c03036a | 1175 | break; |
23cf992f | 1176 | case M32R_OPERAND_DCR : |
853713a7 | 1177 | fields->f_r1 = * valuep; |
9c03036a | 1178 | break; |
23cf992f | 1179 | case M32R_OPERAND_SIMM8 : |
853713a7 | 1180 | fields->f_simm8 = * valuep; |
9c03036a | 1181 | break; |
23cf992f | 1182 | case M32R_OPERAND_SIMM16 : |
853713a7 | 1183 | fields->f_simm16 = * valuep; |
9c03036a | 1184 | break; |
23cf992f | 1185 | case M32R_OPERAND_UIMM4 : |
853713a7 | 1186 | fields->f_uimm4 = * valuep; |
9c03036a | 1187 | break; |
23cf992f | 1188 | case M32R_OPERAND_UIMM5 : |
853713a7 | 1189 | fields->f_uimm5 = * valuep; |
9c03036a | 1190 | break; |
23cf992f | 1191 | case M32R_OPERAND_UIMM16 : |
853713a7 | 1192 | fields->f_uimm16 = * valuep; |
23cf992f NC |
1193 | break; |
1194 | case M32R_OPERAND_HI16 : | |
853713a7 | 1195 | fields->f_hi16 = * valuep; |
9c03036a | 1196 | break; |
23cf992f | 1197 | case M32R_OPERAND_SLO16 : |
853713a7 | 1198 | fields->f_simm16 = * valuep; |
9c03036a | 1199 | break; |
23cf992f | 1200 | case M32R_OPERAND_ULO16 : |
853713a7 | 1201 | fields->f_uimm16 = * valuep; |
9c03036a | 1202 | break; |
23cf992f | 1203 | case M32R_OPERAND_UIMM24 : |
853713a7 | 1204 | fields->f_uimm24 = * valuep; |
9c03036a | 1205 | break; |
23cf992f | 1206 | case M32R_OPERAND_DISP8 : |
853713a7 | 1207 | fields->f_disp8 = * valuep; |
9c03036a | 1208 | break; |
23cf992f | 1209 | case M32R_OPERAND_DISP16 : |
853713a7 | 1210 | fields->f_disp16 = * valuep; |
9c03036a | 1211 | break; |
23cf992f | 1212 | case M32R_OPERAND_DISP24 : |
853713a7 | 1213 | fields->f_disp24 = * valuep; |
9c03036a DE |
1214 | break; |
1215 | ||
1216 | default : | |
1217 | fprintf (stderr, "Unrecognized field %d while setting operand.\n", | |
1218 | opindex); | |
1219 | abort (); | |
1220 | } | |
1221 | } | |
1222 | ||
1223 | /* Main entry point for getting values from cgen_fields. */ | |
1224 | ||
1225 | CGEN_INLINE long | |
1226 | m32r_cgen_get_operand (opindex, fields) | |
5d07b6cf | 1227 | int opindex; |
853713a7 | 1228 | const CGEN_FIELDS * fields; |
9c03036a DE |
1229 | { |
1230 | long value; | |
1231 | ||
1232 | switch (opindex) | |
1233 | { | |
23cf992f | 1234 | case M32R_OPERAND_SR : |
9c03036a DE |
1235 | value = fields->f_r2; |
1236 | break; | |
23cf992f | 1237 | case M32R_OPERAND_DR : |
9c03036a DE |
1238 | value = fields->f_r1; |
1239 | break; | |
23cf992f | 1240 | case M32R_OPERAND_SRC1 : |
9c03036a DE |
1241 | value = fields->f_r1; |
1242 | break; | |
23cf992f | 1243 | case M32R_OPERAND_SRC2 : |
9c03036a DE |
1244 | value = fields->f_r2; |
1245 | break; | |
23cf992f | 1246 | case M32R_OPERAND_SCR : |
9c03036a DE |
1247 | value = fields->f_r2; |
1248 | break; | |
23cf992f | 1249 | case M32R_OPERAND_DCR : |
9c03036a DE |
1250 | value = fields->f_r1; |
1251 | break; | |
23cf992f | 1252 | case M32R_OPERAND_SIMM8 : |
9c03036a DE |
1253 | value = fields->f_simm8; |
1254 | break; | |
23cf992f | 1255 | case M32R_OPERAND_SIMM16 : |
9c03036a DE |
1256 | value = fields->f_simm16; |
1257 | break; | |
23cf992f | 1258 | case M32R_OPERAND_UIMM4 : |
9c03036a DE |
1259 | value = fields->f_uimm4; |
1260 | break; | |
23cf992f | 1261 | case M32R_OPERAND_UIMM5 : |
9c03036a DE |
1262 | value = fields->f_uimm5; |
1263 | break; | |
23cf992f | 1264 | case M32R_OPERAND_UIMM16 : |
9c03036a DE |
1265 | value = fields->f_uimm16; |
1266 | break; | |
23cf992f | 1267 | case M32R_OPERAND_HI16 : |
9c03036a DE |
1268 | value = fields->f_hi16; |
1269 | break; | |
23cf992f | 1270 | case M32R_OPERAND_SLO16 : |
9c03036a DE |
1271 | value = fields->f_simm16; |
1272 | break; | |
23cf992f | 1273 | case M32R_OPERAND_ULO16 : |
9c03036a DE |
1274 | value = fields->f_uimm16; |
1275 | break; | |
23cf992f | 1276 | case M32R_OPERAND_UIMM24 : |
9c03036a DE |
1277 | value = fields->f_uimm24; |
1278 | break; | |
23cf992f | 1279 | case M32R_OPERAND_DISP8 : |
9c03036a DE |
1280 | value = fields->f_disp8; |
1281 | break; | |
23cf992f | 1282 | case M32R_OPERAND_DISP16 : |
9c03036a DE |
1283 | value = fields->f_disp16; |
1284 | break; | |
23cf992f | 1285 | case M32R_OPERAND_DISP24 : |
9c03036a DE |
1286 | value = fields->f_disp24; |
1287 | break; | |
1288 | ||
1289 | default : | |
1290 | fprintf (stderr, "Unrecognized field %d while getting operand.\n", | |
1291 | opindex); | |
1292 | abort (); | |
1293 | } | |
1294 | ||
1295 | return value; | |
1296 | } | |
1297 |