Initial import from FreeBSD RELENG_4:
[dragonfly.git] / gnu / usr.bin / as / opcode / tahoe.h
1 /* tahoe-opcode.h - tahoe-specific
2  * Not part of GAS yet
3  *
4  * Ported by the State University of New York at Buffalo by the Distributed
5  * Computer Systems Lab, Department of Computer Science, 1991. (And by Dale
6  * Wiles who was unemployed at the time.)
7  */
8
9 struct tot_wot                  /* tahoe opcode table: wot to do with this */
10                                 /* particular opcode */
11 {
12   char *args;                   /* how to compile said opcode */
13   tahoe_opcodeT code;           /* The opcode. */
14 };
15
16 struct tot                      /* tahoe opcode text */
17 {
18   char *name;                   /* opcode name: lowercase string  [key]  */
19   struct tot_wot detail;        /* rest of opcode table          [datum] */
20 };
21
22 static struct tot
23 totstrs[] =
24 {
25 {    "halt",    {"",                    0x00    } },
26 {    "sinf",    {"",                    0x05    } },
27 {    "ldf",     {"rl",                  0x06    } },
28 {    "ldd",     {"rq",                  0x07    } },
29 {    "addb2",   {"rbmb",                0x08    } },
30 {    "movb",    {"rbwb",                0x09    } },
31 {    "addw2",   {"rwmw",                0x0a    } },
32 {    "movw",    {"rwww",                0x0b    } },
33 {    "addl2",   {"rlml",                0x0c    } },
34 {    "movl",    {"rlwl",                0x0d    } },
35 {    "bbs",     {"rlvlbw",              0x0e    } },
36 {    "nop",     {"",                    0x10    } },
37 {    "brb",     {"bb",                  0x11    } },
38 {    "brw",     {"bw",                  0x13    } },
39 {    "cosf",    {"",                    0x15    } },
40 {    "lnf",     {"rl",                  0x16    } },
41 {    "lnd",     {"rq",                  0x17    } },
42 {    "addb3",   {"rbrbwb",              0x18    } },
43   /* cmpb is wrong in the "offical" (what a joke!) text. It's not "rbwb" */
44 {    "cmpb",    {"rbrb",                0x19    } },
45 {    "addw3",   {"rwrwww",              0x1a    } },
46   /* cmpw is wrong in the "offical" text. It's not "rwww" */
47 {    "cmpw",    {"rwrw",                0x1b    } },
48 {    "addl3",   {"rlrlwl",              0x1c    } },
49   /* cmpl is wrong in the "offical" text. It's not "rlwl" */
50 {    "cmpl",    {"rlrl",                0x1d    } },
51 {    "bbc",     {"rlvlbw",              0x1e    } },
52 {    "rei",     {"",                    0x20    } },
53 {    "bneq",    {"bb",                  0x21    } },
54 {    "bnequ",   {"bb",                  0x21    } },
55 {    "cvtwl",   {"rwwl",                0x23    } },
56 {    "stf",     {"wl",                  0x26    } },
57 {    "std",     {"wq",                  0x27    } },
58 {    "subb2",   {"rbmb",                0x28    } },
59 {    "mcomb",   {"rbwb",                0x29    } },
60 {    "subw2",   {"rwmw",                0x2a    } },
61 {    "mcomw",   {"rwww",                0x2b    } },
62 {    "subl2",   {"rlml",                0x2c    } },
63 {    "mcoml",   {"rlwl",                0x2d    } },
64 {    "emul",    {"rlrlrlwq",            0x2e    } },
65 {    "aoblss",  {"rlmlbw",              0x2f    } },
66 {    "bpt",     {"",                    0x30    } },
67 {    "beql",    {"bb",                  0x31    } },
68 {    "beqlu",   {"bb",                  0x31    } },
69 {    "cvtwb",   {"rwwb",                0x33    } },
70 {    "logf",    {"",                    0x35    } },
71 {    "cmpf",    {"rl",                  0x36    } },
72 {    "cmpd",    {"rq",                  0x37    } },
73 {    "subb3",   {"rbrbwb",              0x38    } },
74 {    "bitb",    {"rbrb",                0x39    } },
75 {    "subw3",   {"rwrwww",              0x3a    } },
76 {    "bitw",    {"rwrw",                0x3b    } },
77 {    "subl3",   {"rlrlwl",              0x3c    } },
78 {    "bitl",    {"rlrl",                0x3d    } },
79 {    "ediv",    {"rlrqwlwl",            0x3e    } },
80 {    "aobleq",  {"rlmlbw",              0x3f    } },
81 {    "ret",     {"",                    0x40    } },
82 {    "bgtr",    {"bb",                  0x41    } },
83 {    "sqrtf",   {"",                    0x45    } },
84 {    "cmpf2",   {"rlrl",                0x46    } },
85 {    "cmpd2",   {"rqrq",                0x47    } },
86 {    "shll",    {"rbrlwl",              0x48    } },
87 {    "clrb",    {"wb",                  0x49    } },
88 {    "shlq",    {"rbrqwq",              0x4a    } },
89 {    "clrw",    {"ww",                  0x4b    } },
90 {    "mull2",   {"rlml",                0x4c    } },
91 {    "clrl",    {"wl",                  0x4d    } },
92 {    "shal",    {"rbrlwl",              0x4e    } },
93 {    "bleq",    {"bb",                  0x51    } },
94 {    "expf",    {"",                    0x55    } },
95 {    "tstf",    {"",                    0x56    } },
96 {    "tstd",    {"",                    0x57    } },
97 {    "shrl",    {"rbrlwl",              0x58    } },
98 {    "tstb",    {"rb",                  0x59    } },
99 {    "shrq",    {"rbrqwq",              0x5a    } },
100 {    "tstw",    {"rw",                  0x5b    } },
101 {    "mull3",   {"rlrlwl",              0x5c    } },
102 {    "tstl",    {"rl",                  0x5d    } },
103 {    "shar",    {"rbrlwl",              0x5e    } },
104 {    "bbssi",   {"rlmlbw",              0x5f    } },
105 {    "ldpctx",  {"",                    0x60    } },
106 {    "pushd",   {"",                    0x67    } },
107 {    "incb",    {"mb",                  0x69    } },
108 {    "incw",    {"mw",                  0x6b    } },
109 {    "divl2",   {"rlml",                0x6c    } },
110 {    "incl",    {"ml",                  0x6d    } },
111 {    "cvtlb",   {"rlwb",                0x6f    } },
112 {    "svpctx",  {"",                    0x70    } },
113 {    "jmp",     {"ab",                  0x71    } },
114 {    "cvlf",    {"rl",                  0x76    } },
115 {    "cvld",    {"rl",                  0x77    } },
116 {    "decb",    {"mb",                  0x79    } },
117 {    "decw",    {"mw",                  0x7b    } },
118 {    "divl3",   {"rlrlwl",              0x7c    } },
119 {    "decl",    {"ml",                  0x7d    } },
120 {    "cvtlw",   {"rlww",                0x7f    } },
121 {    "bgeq",    {"bb",                  0x81    } },
122 {    "movs2",   {"abab",                0x82    } },
123 {    "cvfl",    {"wl",                  0x86    } },
124 {    "cvdl",    {"wl",                  0x87    } },
125 {    "orb2",    {"rbmb",                0x88    } },
126 {    "cvtbl",   {"rbwl",                0x89    } },
127 {    "orw2",    {"rwmw",                0x8a    } },
128 {    "bispsw",  {"rw",                  0x8b    } },
129 {    "orl2",    {"rlml",                0x8c    } },
130 {    "adwc",    {"rlml",                0x8d    } },
131 {    "adda",    {"rlml",                0x8e    } },
132 {    "blss",    {"bb",                  0x91    } },
133 {    "cmps2",   {"abab",                0x92    } },
134 {    "ldfd",    {"rl",                  0x97    } },
135 {    "orb3",    {"rbrbwb",              0x98    } },
136 {    "cvtbw",   {"rbww",                0x99    } },
137 {    "orw3",    {"rwrwww",              0x9a    } },
138 {    "bicpsw",  {"rw",                  0x9b    } },
139 {    "orl3",    {"rlrlwl",              0x9c    } },
140 {    "sbwc",    {"rlml",                0x9d    } },
141 {    "suba",    {"rlml",                0x9e    } },
142 {    "bgtru",   {"bb",                  0xa1    } },
143 {    "cvdf",    {"",                    0xa6    } },
144 {    "andb2",   {"rbmb",                0xa8    } },
145 {    "movzbl",  {"rbwl",                0xa9    } },
146 {    "andw2",   {"rwmw",                0xaa    } },
147 {    "loadr",   {"rwal",                0xab    } },
148 {    "andl2",   {"rlml",                0xac    } },
149 {    "mtpr",    {"rlrl",                0xad    } },
150 {    "ffs",     {"rlwl",                0xae    } },
151 {    "blequ",   {"bb",                  0xb1    } },
152 {    "negf",    {"",                    0xb6    } },
153 {    "negd",    {"",                    0xb7    } },
154 {    "andb3",   {"rbrbwb",              0xb8    } },
155 {    "movzbw",  {"rbww",                0xb9    } },
156 {    "andw3",   {"rwrwww",              0xba    } },
157 {    "storer",  {"rwal",                0xbb    } },
158 {    "andl3",   {"rlrlwl",              0xbc    } },
159 {    "mfpr",    {"rlwl",                0xbd    } },
160 {    "ffc",     {"rlwl",                0xbe    } },
161 {    "calls",   {"rbab",                0xbf    } },
162 {    "prober",  {"rbabrl",              0xc0    } },
163 {    "bvc",     {"bb",                  0xc1    } },
164 {    "movs3",   {"ababrw",              0xc2    } },
165 {    "movzwl",  {"rwwl",                0xc3    } },
166 {    "addf",    {"rl",                  0xc6    } },
167 {    "addd",    {"rq",                  0xc7    } },
168 {    "xorb2",   {"rbmb",                0xc8    } },
169 {    "movob",   {"rbwb",                0xc9    } },
170 {    "xorw2",   {"rwmw",                0xca    } },
171 {    "movow",   {"rwww",                0xcb    } },
172 {    "xorl2",   {"rlml",                0xcc    } },
173 {    "movpsl",  {"wl",                  0xcd    } },
174 {    "kcall",   {"rw",                  0xcf    } },
175 {    "probew",  {"rbabrl",              0xd0    } },
176 {    "bvs",     {"bb",                  0xd1    } },
177 {    "cmps3",   {"ababrw",              0xd2    } },
178 {    "subf",    {"rq",                  0xd6    } },
179 {    "subd",    {"rq",                  0xd7    } },
180 {    "xorb3",   {"rbrbwb",              0xd8    } },
181 {    "pushb",   {"rb",                  0xd9    } },
182 {    "xorw3",   {"rwrwww",              0xda    } },
183 {    "pushw",   {"rw",                  0xdb    } },
184 {    "xorl3",   {"rlrlwl",              0xdc    } },
185 {    "pushl",   {"rl",                  0xdd    } },
186 {    "insque",  {"abab",                0xe0    } },
187 {    "bcs",     {"bb",                  0xe1    } },
188 {    "bgequ",   {"bb",                  0xe1    } },
189 {    "mulf",    {"rq",                  0xe6    } },
190 {    "muld",    {"rq",                  0xe7    } },
191 {    "mnegb",   {"rbwb",                0xe8    } },
192 {    "movab",   {"abwl",                0xe9    } },
193 {    "mnegw",   {"rwww",                0xea    } },
194 {    "movaw",   {"awwl",                0xeb    } },
195 {    "mnegl",   {"rlwl",                0xec    } },
196 {    "moval",   {"alwl",                0xed    } },
197 {    "remque",  {"ab",                  0xf0    } },
198 {    "bcc",     {"bb",                  0xf1    } },
199 {    "blssu",   {"bb",                  0xf1    } },
200 {    "divf",    {"rq",                  0xf6    } },
201 {    "divd",    {"rq",                  0xf7    } },
202   /* movblk is really "alalrw" but 'as' won't accept it,
203      'cc' and 'gcc' also produce code this way. */
204 {    "movblk",  {"",                    0xf8    } },
205 {    "pushab",  {"ab",                  0xf9    } },
206 {    "pushaw",  {"aw",                  0xfb    } },
207 {    "casel",   {"rlrlrl",              0xfc    } },
208 {    "pushal",  {"al",                  0xfd    } },
209 {    "callf",   {"rbab",                0xfe    } },
210 {      "",   ""          } /* empty is end sentinel */
211 };
212
213 /* These are synthetic instructions, where the assembler will munge
214    the addressings modes for you. */
215 static struct tot
216 synthetic_totstrs[] =
217 {
218 {    "jr",      {"b-",                  0x11    } },
219 {    "jbr",     {"b-",                  0x11    } },
220
221 {    "jneq",    {"b?",                  0x21    } },
222 {    "jnequ",   {"b?",                  0x21    } },
223 {    "jeql",    {"b?",                  0x31    } },
224 {    "jeqlu",   {"b?",                  0x31    } },
225 {    "jgtr",    {"b?",                  0x41    } },
226 {    "jleq",    {"b?",                  0x51    } },
227 {    "jgeq",    {"b?",                  0x81    } },
228 {    "jlss",    {"b?",                  0x91    } },
229 {    "jgtru",   {"b?",                  0xa1    } },
230 {    "jlequ",   {"b?",                  0xb1    } },
231 {    "jvc",     {"b?",                  0xc1    } },
232 {    "jvs",     {"b?",                  0xd1    } },
233 {    "jcs",     {"b?",                  0xe1    } },
234 {    "jgequ",   {"b?",                  0xe1    } },
235 {    "jcc",     {"b?",                  0xf1    } },
236 {    "jlssu",   {"b?",                  0xf1    } },
237
238 {    "jbs",     {"rlvlb!",              0x0e    } },
239 {    "jbc",     {"rlvlb!",              0x1e    } },
240
241 {    "aojlss",  {"rlmlb:",              0x2f    } },
242 {    "jaoblss", {"rlmlb:",              0x2f    } },
243 {    "aojleq",  {"rlmlb:",              0x3f    } },
244 {    "jaobleq", {"rlmlb:",              0x3f    } },
245 {    "jbssi",   {"rlmlb:",              0x5f    } },
246   {      "",   ""          } /* empty is end sentinel */
247 };