1 /* Vax opcde list.
2    Copyright (C) 1989-2024 Free Software Foundation, Inc.
3 
4    This file is part of GDB and GAS.
5 
6    GDB and GAS are free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 3, or (at your option)
9    any later version.
10 
11    GDB and GAS are distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15 
16    You should have received a copy of the GNU General Public License
17    along with GDB or GAS; see the file COPYING3.  If not, write to
18    the Free Software Foundation, 51 Franklin Street - Fifth Floor,
19    Boston, MA 02110-1301, USA.  */
20 
21 #ifndef vax_opcodeT
22 #define vax_opcodeT int
23 #endif /* no vax_opcodeT */
24 
25 struct vot_wot                          /* vax opcode table: wot to do with this */
26                                         /* particular opcode */
27 {
28   const char       *args;     /* how to compile said opcode */
29   vax_opcodeT       code;     /* op-code (may be > 8 bits!) */
30 };
31 
32 struct vot                              /* vax opcode text */
33 {
34   const char       *name;     /* opcode name: lowercase string  [key]  */
35   struct vot_wot    detail;   /* rest of opcode table          [datum] */
36 };
37 
38 #define vot_how args
39 #define vot_code code
40 #define vot_detail detail
41 #define vot_name name
42 
43 static const struct vot
44 votstrs[] =
45 {
46 {    "halt",        {"",                          0x00      } },
47 {    "nop",         {"",                          0x01      } },
48 {    "rei",         {"",                          0x02      } },
49 {    "bpt",         {"",                          0x03      } },
50 {    "ret",         {"",                          0x04      } },
51 {    "rsb",         {"",                          0x05      } },
52 {    "ldpctx",      {"",                          0x06      } },
53 {    "svpctx",      {"",                          0x07      } },
54 {    "cvtps",       {"rwabrwab",                  0x08      } },
55 {    "cvtsp",       {"rwabrwab",                  0x09      } },
56 {    "index",       {"rlrlrlrlrlwl",    0x0a      } },
57 {    "crc",         {"abrlrwab",                  0x0b      } },
58 {    "prober",      {"rbrwab",                    0x0c      } },
59 {    "probew",      {"rbrwab",                  0x0d        } },
60 {    "insque",      {"abab",            0x0e      } },
61 {    "remque",      {"abwl",            0x0f      } },
62 {    "bsbb",        {"bb",                        0x10      } },
63 {    "brb",         {"bb",                        0x11      } },
64 {    "bneq",        {"bb",                        0x12      } },
65 {    "bnequ",       {"bb",                        0x12      } },
66 {    "beql",        {"bb",                        0x13      } },
67 {    "beqlu",       {"bb",                        0x13      } },
68 {    "bgtr",        {"bb",                        0x14      } },
69 {    "bleq",        {"bb",                        0x15      } },
70 {    "jsb",         {"ab",                        0x16      } },
71 {    "jmp",         {"ab",                        0x17      } },
72 {    "bgeq",        {"bb",                        0x18      } },
73 {    "blss",        {"bb",                        0x19      } },
74 {    "bgtru",       {"bb",                        0x1a      } },
75 {    "blequ",       {"bb",                        0x1b      } },
76 {    "bvc",         {"bb",                        0x1c      } },
77 {    "bvs",         {"bb",                        0x1d      } },
78 {    "bcc",         {"bb",                        0x1e      } },
79 {    "bgequ",       {"bb",                        0x1e      } },
80 {    "blssu",       {"bb",                        0x1f      } },
81 {    "bcs",         {"bb",                        0x1f      } },
82 {    "addp4",       {"rwabrwab",                  0x20      } },
83 {    "addp6",       {"rwabrwabrwab",    0x21      } },
84 {    "subp4",       {"rwabrwab",                  0x22      } },
85 {    "subp6",       {"rwabrwabrwab",    0x23      } },
86 {    "cvtpt",       {"rwababrwab",                0x24      } },
87 {    "mulp",        {"rwabrwabrwab",    0x25      } },
88 {    "cvttp",       {"rwababrwab",                0x26      } },
89 {    "divp",        {"rwabrwabrwab",    0x27      } },
90 {    "movc3",       {"rwabab",                    0x28      } },
91 {    "cmpc3",       {"rwabab",                    0x29      } },
92 {    "scanc",       {"rwababrb",                  0x2a      } },
93 {    "spanc",       {"rwababrb",                  0x2b      } },
94 {    "movc5",       {"rwabrbrwab",                0x2c      } },
95 {    "cmpc5",       {"rwabrbrwab",                0x2d      } },
96 {    "movtc",       {"rwabrbabrwab",    0x2e      } },
97 {    "movtuc",      {"rwabrbabrwab",    0x2f      } },
98 {    "bsbw",        {"bw",                        0x30      } },
99 {    "brw",         {"bw",                        0x31      } },
100 {    "cvtwl",       {"rwwl",            0x32      } },
101 {    "cvtwb",       {"rwwb",            0x33      } },
102 {    "movp",        {"rwabab",                    0x34      } },
103 {    "cmpp3",       {"rwabab",                    0x35      } },
104 {    "cvtpl",       {"rwabwl",                    0x36      } },
105 {    "cmpp4",       {"rwabrwab",                  0x37      } },
106 {    "editpc",      {"rwababab",                  0x38      } },
107 {    "matchc",      {"rwabrwab",                  0x39      } },
108 {    "locc",        {"rbrwab",                    0x3a      } },
109 {    "skpc",        {"rbrwab",                    0x3b      } },
110 {    "movzwl",      {"rwwl",            0x3c      } },
111 {    "acbw",        {"rwrwmwbw",                  0x3d      } },
112 {    "movaw",       {"awwl",            0x3e      } },
113 {    "pushaw",      {"aw",                        0x3f      } },
114 {    "addf2",       {"rfmf",            0x40      } },
115 {    "addf3",       {"rfrfwf",                    0x41      } },
116 {    "subf2",       {"rfmf",            0x42      } },
117 {    "subf3",       {"rfrfwf",                    0x43      } },
118 {    "mulf2",       {"rfmf",            0x44      } },
119 {    "mulf3",       {"rfrfwf",                    0x45      } },
120 {    "divf2",       {"rfmf",            0x46      } },
121 {    "divf3",       {"rfrfwf",                    0x47      } },
122 {    "cvtfb",       {"rfwb",            0x48      } },
123 {    "cvtfw",       {"rfww",            0x49      } },
124 {    "cvtfl",       {"rfwl",            0x4a      } },
125 {    "cvtrfl",      {"rfwl",            0x4b      } },
126 {    "cvtbf",       {"rbwf",            0x4c      } },
127 {    "cvtwf",       {"rwwf",            0x4d      } },
128 {    "cvtlf",       {"rlwf",            0x4e      } },
129 {    "acbf",        {"rfrfmfbw",                  0x4f      } },
130 {    "movf",        {"rfwf",            0x50      } },
131 {    "cmpf",        {"rfrf",            0x51      } },
132 {    "mnegf",       {"rfwf",            0x52      } },
133 {    "tstf",        {"rf",                        0x53      } },
134 {    "emodf",       {"rfrbrfwlwf",                0x54      } },
135 {    "polyf",       {"rfrwab",                    0x55      } },
136 {    "cvtfd",       {"rfwd",            0x56      } },
137                                         /* opcode 57 is not defined yet */
138 {    "adawi",       {"rwmw",            0x58      } },
139                                         /* opcode 59 is not defined yet */
140                                         /* opcode 5a is not defined yet */
141                                         /* opcode 5b is not defined yet */
142 {    "insqhi",      {"abaq",            0x5c      } },
143 {    "insqti",      {"abaq",            0x5d      } },
144 {    "remqhi",      {"aqwl",            0x5e      } },
145 {    "remqti",      {"aqwl",            0x5f      } },
146 {    "addd2",       {"rdmd",            0x60      } },
147 {    "addd3",       {"rdrdwd",                    0x61      } },
148 {    "subd2",       {"rdmd",            0x62      } },
149 {    "subd3",       {"rdrdwd",                    0x63      } },
150 {    "muld2",       {"rdmd",            0x64      } },
151 {    "muld3",       {"rdrdwd",                    0x65      } },
152 {    "divd2",       {"rdmd",            0x66      } },
153 {    "divd3",       {"rdrdwd",                    0x67      } },
154 {    "cvtdb",       {"rdwb",            0x68      } },
155 {    "cvtdw",       {"rdww",            0x69      } },
156 {    "cvtdl",       {"rdwl",            0x6a      } },
157 {    "cvtrdl",      {"rdwl",            0x6b      } },
158 {    "cvtbd",       {"rbwd",            0x6c      } },
159 {    "cvtwd",       {"rwwd",            0x6d      } },
160 {    "cvtld",       {"rlwd",            0x6e      } },
161 {    "acbd",        {"rdrdmdbw",                  0x6f      } },
162 {    "movd",        {"rdwd",            0x70      } },
163 {    "cmpd",        {"rdrd",            0x71      } },
164 {    "mnegd",       {"rdwd",            0x72      } },
165 {    "tstd",        {"rd",                        0x73      } },
166 {    "emodd",       {"rdrbrdwlwd",                0x74      } },
167 {    "polyd",       {"rdrwab",                    0x75      } },
168 {    "cvtdf",       {"rdwf",            0x76      } },
169                                         /* opcode 77 is not defined yet */
170 {    "ashl",        {"rbrlwl",                    0x78      } },
171 {    "ashq",        {"rbrqwq",                    0x79      } },
172 {    "emul",        {"rlrlrlwq",                  0x7a      } },
173 {    "ediv",        {"rlrqwlwl",                  0x7b      } },
174 {    "clrd",        {"wd",                        0x7c      } },
175 {    "clrg",        {"wg",                        0x7c      } },
176 {    "clrq",        {"wd",                        0x7c      } },
177 {    "movq",        {"rqwq",            0x7d      } },
178 {    "movaq",       {"aqwl",            0x7e      } },
179 {    "movad",       {"adwl",            0x7e      } },
180 {    "pushaq",      {"aq",                        0x7f      } },
181 {    "pushad",      {"ad",                        0x7f      } },
182 {    "addb2",       {"rbmb",            0x80      } },
183 {    "addb3",       {"rbrbwb",                    0x81      } },
184 {    "subb2",       {"rbmb",            0x82      } },
185 {    "subb3",       {"rbrbwb",                    0x83      } },
186 {    "mulb2",       {"rbmb",            0x84      } },
187 {    "mulb3",       {"rbrbwb",                    0x85      } },
188 {    "divb2",       {"rbmb",            0x86      } },
189 {    "divb3",       {"rbrbwb",                    0x87      } },
190 {    "bisb2",       {"rbmb",            0x88      } },
191 {    "bisb3",       {"rbrbwb",                    0x89      } },
192 {    "bicb2",       {"rbmb",            0x8a      } },
193 {    "bicb3",       {"rbrbwb",                    0x8b      } },
194 {    "xorb2",       {"rbmb",            0x8c      } },
195 {    "xorb3",       {"rbrbwb",                    0x8d      } },
196 {    "mnegb",       {"rbwb",            0x8e      } },
197 {    "caseb",       {"rbrbrb",                    0x8f      } },
198 {    "movb",        {"rbwb",            0x90      } },
199 {    "cmpb",        {"rbrb",            0x91      } },
200 {    "mcomb",       {"rbwb",            0x92      } },
201 {    "bitb",        {"rbrb",            0x93      } },
202 {    "clrb",        {"wb",                        0x94      } },
203 {    "tstb",        {"rb",                        0x95      } },
204 {    "incb",        {"mb",                        0x96      } },
205 {    "decb",        {"mb",                        0x97      } },
206 {    "cvtbl",       {"rbwl",            0x98      } },
207 {    "cvtbw",       {"rbww",            0x99      } },
208 {    "movzbl",      {"rbwl",            0x9a      } },
209 {    "movzbw",      {"rbww",            0x9b      } },
210 {    "rotl",        {"rbrlwl",                    0x9c      } },
211 {    "acbb",        {"rbrbmbbw",                  0x9d      } },
212 {    "movab",       {"abwl",            0x9e      } },
213 {    "pushab",      {"ab",                        0x9f      } },
214 {    "addw2",       {"rwmw",            0xa0      } },
215 {    "addw3",       {"rwrwww",                    0xa1      } },
216 {    "subw2",       {"rwmw",            0xa2      } },
217 {    "subw3",       {"rwrwww",                    0xa3      } },
218 {    "mulw2",       {"rwmw",            0xa4      } },
219 {    "mulw3",       {"rwrwww",                    0xa5      } },
220 {    "divw2",       {"rwmw",            0xa6      } },
221 {    "divw3",       {"rwrwww",                    0xa7      } },
222 {    "bisw2",       {"rwmw",            0xa8      } },
223 {    "bisw3",       {"rwrwww",                    0xa9      } },
224 {    "bicw2",       {"rwmw",            0xaa      } },
225 {    "bicw3",       {"rwrwww",                    0xab      } },
226 {    "xorw2",       {"rwmw",            0xac      } },
227 {    "xorw3",       {"rwrwww",                    0xad      } },
228 {    "mnegw",       {"rwww",            0xae      } },
229 {    "casew",       {"rwrwrw",                    0xaf      } },
230 {    "movw",        {"rwww",            0xb0      } },
231 {    "cmpw",        {"rwrw",            0xb1      } },
232 {    "mcomw",       {"rwww",            0xb2      } },
233 {    "bitw",        {"rwrw",            0xb3      } },
234 {    "clrw",        {"ww",                        0xb4      } },
235 {    "tstw",        {"rw",                        0xb5      } },
236 {    "incw",        {"mw",                        0xb6      } },
237 {    "decw",        {"mw",                        0xb7      } },
238 {    "bispsw",      {"rw",                        0xb8      } },
239 {    "bicpsw",      {"rw",                        0xb9      } },
240 {    "popr",        {"rw",                        0xba      } },
241 {    "pushr",       {"rw",                        0xbb      } },
242 {    "chmk",        {"rw",                        0xbc      } },
243 {    "chme",        {"rw",                        0xbd      } },
244 {    "chms",        {"rw",                        0xbe      } },
245 {    "chmu",        {"rw",                        0xbf      } },
246 {    "addl2",       {"rlml",            0xc0      } },
247 {    "addl3",       {"rlrlwl",                    0xc1      } },
248 {    "subl2",       {"rlml",            0xc2      } },
249 {    "subl3",       {"rlrlwl",                    0xc3      } },
250 {    "mull2",       {"rlml",            0xc4      } },
251 {    "mull3",       {"rlrlwl",                    0xc5      } },
252 {    "divl2",       {"rlml",            0xc6      } },
253 {    "divl3",       {"rlrlwl",                    0xc7      } },
254 {    "bisl2",       {"rlml",            0xc8      } },
255 {    "bisl3",       {"rlrlwl",                    0xc9      } },
256 {    "bicl2",       {"rlml",            0xca      } },
257 {    "bicl3",       {"rlrlwl",                    0xcb      } },
258 {    "xorl2",       {"rlml",            0xcc      } },
259 {    "xorl3",       {"rlrlwl",                    0xcd      } },
260 {    "mnegl",       {"rlwl",            0xce      } },
261 {    "casel",       {"rlrlrl",                    0xcf      } },
262 {    "movl",        {"rlwl",            0xd0      } },
263 {    "cmpl",        {"rlrl",            0xd1      } },
264 {    "mcoml",       {"rlwl",            0xd2      } },
265 {    "bitl",        {"rlrl",            0xd3      } },
266 {    "clrf",        {"wf",                        0xd4      } },
267 {    "clrl",        {"wl",                        0xd4      } },
268 {    "tstl",        {"rl",                        0xd5      } },
269 {    "incl",        {"ml",                        0xd6      } },
270 {    "decl",        {"ml",                        0xd7      } },
271 {    "adwc",        {"rlml",            0xd8      } },
272 {    "sbwc",        {"rlml",            0xd9      } },
273 {    "mtpr",        {"rlrl",            0xda      } },
274 {    "mfpr",        {"rlwl",            0xdb      } },
275 {    "movpsl",      {"wl",                        0xdc      } },
276 {    "pushl",       {"rl",                        0xdd      } },
277 {    "moval",       {"alwl",            0xde      } },
278 {    "movaf",       {"afwl",            0xde      } },
279 {    "pushal",      {"al",                        0xdf      } },
280 {    "pushaf",      {"af",                        0xdf      } },
281 {    "bbs",         {"rlvbbb",                    0xe0      } },
282 {    "bbc",         {"rlvbbb",                    0xe1      } },
283 {    "bbss",        {"rlvbbb",                    0xe2      } },
284 {    "bbcs",        {"rlvbbb",                    0xe3      } },
285 {    "bbsc",        {"rlvbbb",                    0xe4      } },
286 {    "bbcc",        {"rlvbbb",                    0xe5      } },
287 {    "bbssi",       {"rlvbbb",                    0xe6      } },
288 {    "bbcci",       {"rlvbbb",                    0xe7      } },
289 {    "blbs",        {"rlbb",            0xe8      } },
290 {    "blbc",        {"rlbb",            0xe9      } },
291 {    "ffs",         {"rlrbvbwl",                  0xea      } },
292 {    "ffc",         {"rlrbvbwl",                  0xeb      } },
293 {    "cmpv",        {"rlrbvbrl",                  0xec      } },
294 {    "cmpzv",       {"rlrbvbrl",                  0xed      } },
295 {    "extv",        {"rlrbvbwl",                  0xee      } },
296 {    "extzv",       {"rlrbvbwl",                  0xef      } },
297 {    "insv",        {"rlrlrbvb",                  0xf0      } },
298 {    "acbl",        {"rlrlmlbw",                  0xf1      } },
299 {    "aoblss",      {"rlmlbb",                    0xf2      } },
300 {    "aobleq",      {"rlmlbb",                    0xf3      } },
301 {    "sobgeq",      {"mlbb",            0xf4      } },
302 {    "sobgtr",      {"mlbb",            0xf5      } },
303 {    "cvtlb",       {"rlwb",            0xf6      } },
304 {    "cvtlw",       {"rlww",            0xf7      } },
305 {    "ashp",        {"rbrwabrbrwab",    0xf8      } },
306 {    "cvtlp",       {"rlrwab",                    0xf9      } },
307 {    "callg",       {"abab",            0xfa      } },
308 {    "calls",       {"rlab",            0xfb      } },
309 {    "xfc",         {"",                          0xfc      } },
310                                         /* undefined opcodes here */
311 {    "cvtdh",       {"rdwh",            0x32fd    } },
312 {    "cvtgf",       {"rgwh",            0x33fd    } },
313 {    "addg2",       {"rgmg",            0x40fd    } },
314 {    "addg3",       {"rgrgwg",                    0x41fd    } },
315 {    "subg2",       {"rgmg",            0x42fd    } },
316 {    "subg3",       {"rgrgwg",                    0x43fd    } },
317 {    "mulg2",       {"rgmg",            0x44fd    } },
318 {    "mulg3",       {"rgrgwg",                    0x45fd    } },
319 {    "divg2",       {"rgmg",            0x46fd    } },
320 {    "divg3",       {"rgrgwg",                    0x47fd    } },
321 {    "cvtgb",       {"rgwb",            0x48fd    } },
322 {    "cvtgw",       {"rgww",            0x49fd    } },
323 {    "cvtgl",       {"rgwl",            0x4afd    } },
324 {    "cvtrgl",      {"rgwl",            0x4bfd    } },
325 {    "cvtbg",       {"rbwg",            0x4cfd    } },
326 {    "cvtwg",       {"rwwg",            0x4dfd    } },
327 {    "cvtlg",       {"rlwg",            0x4efd    } },
328 {    "acbg",        {"rgrgmgbw",                  0x4ffd    } },
329 {    "movg",        {"rgwg",            0x50fd    } },
330 {    "cmpg",        {"rgrg",            0x51fd    } },
331 {    "mnegg",       {"rgwg",            0x52fd    } },
332 {    "tstg",        {"rg",                        0x53fd    } },
333 {    "emodg",       {"rgrwrgwlwg",                0x54fd    } },
334 {    "polyg",       {"rgrwab",                    0x55fd    } },
335 {    "cvtgh",       {"rgwh",            0x56fd    } },
336                                         /* undefined opcodes here */
337 {    "addh2",       {"rhmh",            0x60fd    } },
338 {    "addh3",       {"rhrhwh",                    0x61fd    } },
339 {    "subh2",       {"rhmh",            0x62fd    } },
340 {    "subh3",       {"rhrhwh",                    0x63fd    } },
341 {    "mulh2",       {"rhmh",            0x64fd    } },
342 {    "mulh3",       {"rhrhwh",                    0x65fd    } },
343 {    "divh2",       {"rhmh",            0x66fd    } },
344 {    "divh3",       {"rhrhwh",                    0x67fd    } },
345 {    "cvthb",       {"rhwb",            0x68fd    } },
346 {    "cvthw",       {"rhww",            0x69fd    } },
347 {    "cvthl",       {"rhwl",            0x6afd    } },
348 {    "cvtrhl",      {"rhwl",            0x6bfd    } },
349 {    "cvtbh",       {"rbwh",            0x6cfd    } },
350 {    "cvtwh",       {"rwwh",            0x6dfd    } },
351 {    "cvtlh",       {"rlwh",            0x6efd    } },
352 {    "acbh",        {"rhrhmhbw",                  0x6ffd    } },
353 {    "movh",        {"rhwh",            0x70fd    } },
354 {    "cmph",        {"rhrh",            0x71fd    } },
355 {    "mnegh",       {"rhwh",            0x72fd    } },
356 {    "tsth",        {"rh",                        0x73fd    } },
357 {    "emodh",       {"rhrwrhwlwh",                0x74fd    } },
358 {    "polyh",       {"rhrwab",                    0x75fd    } },
359 {    "cvthg",       {"rhwg",            0x76fd    } },
360                                         /* undefined opcodes here */
361 {    "clrh",        {"wh",                        0x7cfd    } },
362 {    "clro",        {"wo",                        0x7cfd    } },
363 {    "movo",        {"rowo",            0x7dfd    } },
364 {    "movah",       {"ahwl",            0x7efd    } },
365 {    "movao",       {"aowl",            0x7efd    } },
366 {    "pushah",      {"ah",                        0x7ffd    } },
367 {    "pushao",      {"ao",                        0x7ffd    } },
368                                         /* undefined opcodes here */
369 {    "cvtfh",       {"rfwh",            0x98fd    } },
370 {    "cvtfg",       {"rfwg",            0x99fd    } },
371                                         /* undefined opcodes here */
372 {    "cvthf",       {"rhwf",            0xf6fd    } },
373 {    "cvthd",       {"rhwd",            0xf7fd    } },
374                                         /* undefined opcodes here */
375 {    "bugl",        {"rl",                        0xfdff    } },
376 {    "bugw",        {"rw",                        0xfeff    } },
377                                         /* undefined opcodes here */
378 
379 {      "",          {"", 0} }           /* empty is end sentinel */
380 
381 };                                      /* votstrs */
382 
383 /* end: vax.opcode.h */
384