1 // Inferno utils/6a/lex.c
2 // http://code.google.com/p/inferno-os/source/browse/utils/6a/lex.c
4 // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved.
5 // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net)
6 // Portions Copyright © 1997-1999 Vita Nuova Limited
7 // Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com)
8 // Portions Copyright © 2004,2006 Bruce Ellis
9 // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net)
10 // Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others
11 // Portions Copyright © 2009 The Go Authors. All rights reserved.
13 // Permission is hereby granted, free of charge, to any person obtaining a copy
14 // of this software and associated documentation files (the "Software"), to deal
15 // in the Software without restriction, including without limitation the rights
16 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
17 // copies of the Software, and to permit persons to whom the Software is
18 // furnished to do so, subject to the following conditions:
20 // The above copyright notice and this permission notice shall be included in
21 // all copies or substantial portions of the Software.
23 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
26 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
28 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
39 func systemtype(sys int) int {
49 func Lconv(fp *obj.Fmt) int {
50 return obj.Linklinefmt(ctxt, fp)
53 func dodef(p string) {
55 Dlist = allocn(Dlist, nDlist*sizeof(string), 8*sizeof(string)).(*string)
61 var thelinkarch *obj.LinkArch = &x86.Linkamd64
64 fmt.Printf("usage: %ca [options] file.c...\n", thechar)
69 func main(argc int, argv [XXX]string) {
75 // Allow GOARCH=thestring or GOARCH=thestringsuffix,
76 // but not other values.
79 if !strings.HasPrefix(p, thestring) {
80 log.Fatalf("cannot use %cc with GOARCH=%s", thechar, p)
83 thelinkarch = &x86.Linkamd64p32
86 ctxt = obj.Linknew(thelinkarch)
89 ctxt.Enforce_data_order = 1
90 obj.Binit(&bstdout, 1, main.OWRITE)
92 obj.Fmtinstall('L', Lconv)
100 main.Flagfn1("D", "name[=value]: add #define", dodef)
101 main.Flagfn1("I", "dir: add dir to include path", setinclude)
102 main.Flagcount("S", "print assembly and machine code", &debug['S'])
103 main.Flagcount("m", "debug preprocessor macros", &debug['m'])
104 main.Flagstr("o", "file: set output file", &outfile)
105 main.Flagstr("trimpath", "prefix: remove prefix from recorded source file paths", &ctxt.Trimpath)
107 main.Flagparse(&argc, (**string)(&argv), usage)
108 ctxt.Debugasm = int32(debug['S'])
114 fmt.Printf("can't assemble multiple files\n")
118 if assemble(argv[0]) != 0 {
128 func assemble(file string) int {
134 ofile = alloc(int32(len(file)) + 3).(string) // +3 for .x\0 (x=thechar)
136 p = main.Utfrrune(ofile, uint(pathchar()))
148 p = main.Utfrrune(outfile, '.')
150 if p[1] == 's' && p[2] == 0 {
154 p = main.Utfrune(outfile, 0)
160 outfile = "/dev/null"
164 of = main.Create(outfile, main.OWRITE, 0664)
166 yyerror("%ca: cannot create %s", thechar, outfile)
170 obj.Binit(&obuf, of, main.OWRITE)
171 fmt.Fprintf(&obuf, "go object %s %s %s\n", main.Getgoos(), main.Getgoarch(), main.Getgoversion())
172 fmt.Fprintf(&obuf, "!\n")
174 for pass = 1; pass <= 2; pass++ {
176 for i = 0; i < nDlist; i++ {
186 obj.Writeobj(ctxt, &obuf)
191 var itab = []struct {
196 {"SP", LSP, x86.D_AUTO},
197 {"SB", LSB, x86.D_EXTERN},
198 {"FP", LFP, x86.D_PARAM},
199 {"PC", LPC, x86.D_BRANCH},
200 {"AL", LBREG, x86.D_AL},
201 {"CL", LBREG, x86.D_CL},
202 {"DL", LBREG, x86.D_DL},
203 {"BL", LBREG, x86.D_BL},
204 /* "SPB", LBREG, D_SPB, */
205 {"SIB", LBREG, x86.D_SIB},
206 {"DIB", LBREG, x86.D_DIB},
207 {"BPB", LBREG, x86.D_BPB},
208 {"R8B", LBREG, x86.D_R8B},
209 {"R9B", LBREG, x86.D_R9B},
210 {"R10B", LBREG, x86.D_R10B},
211 {"R11B", LBREG, x86.D_R11B},
212 {"R12B", LBREG, x86.D_R12B},
213 {"R13B", LBREG, x86.D_R13B},
214 {"R14B", LBREG, x86.D_R14B},
215 {"R15B", LBREG, x86.D_R15B},
216 {"AH", LBREG, x86.D_AH},
217 {"CH", LBREG, x86.D_CH},
218 {"DH", LBREG, x86.D_DH},
219 {"BH", LBREG, x86.D_BH},
220 {"AX", LLREG, x86.D_AX},
221 {"CX", LLREG, x86.D_CX},
222 {"DX", LLREG, x86.D_DX},
223 {"BX", LLREG, x86.D_BX},
225 /* "SP", LLREG, D_SP, */
226 {"BP", LLREG, x86.D_BP},
227 {"SI", LLREG, x86.D_SI},
228 {"DI", LLREG, x86.D_DI},
229 {"R8", LLREG, x86.D_R8},
230 {"R9", LLREG, x86.D_R9},
231 {"R10", LLREG, x86.D_R10},
232 {"R11", LLREG, x86.D_R11},
233 {"R12", LLREG, x86.D_R12},
234 {"R13", LLREG, x86.D_R13},
235 {"R14", LLREG, x86.D_R14},
236 {"R15", LLREG, x86.D_R15},
237 {"RARG", LLREG, x86.REGARG},
238 {"F0", LFREG, x86.D_F0 + 0},
239 {"F1", LFREG, x86.D_F0 + 1},
240 {"F2", LFREG, x86.D_F0 + 2},
241 {"F3", LFREG, x86.D_F0 + 3},
242 {"F4", LFREG, x86.D_F0 + 4},
243 {"F5", LFREG, x86.D_F0 + 5},
244 {"F6", LFREG, x86.D_F0 + 6},
245 {"F7", LFREG, x86.D_F0 + 7},
246 {"M0", LMREG, x86.D_M0 + 0},
247 {"M1", LMREG, x86.D_M0 + 1},
248 {"M2", LMREG, x86.D_M0 + 2},
249 {"M3", LMREG, x86.D_M0 + 3},
250 {"M4", LMREG, x86.D_M0 + 4},
251 {"M5", LMREG, x86.D_M0 + 5},
252 {"M6", LMREG, x86.D_M0 + 6},
253 {"M7", LMREG, x86.D_M0 + 7},
254 {"X0", LXREG, x86.D_X0 + 0},
255 {"X1", LXREG, x86.D_X0 + 1},
256 {"X2", LXREG, x86.D_X0 + 2},
257 {"X3", LXREG, x86.D_X0 + 3},
258 {"X4", LXREG, x86.D_X0 + 4},
259 {"X5", LXREG, x86.D_X0 + 5},
260 {"X6", LXREG, x86.D_X0 + 6},
261 {"X7", LXREG, x86.D_X0 + 7},
262 {"X8", LXREG, x86.D_X0 + 8},
263 {"X9", LXREG, x86.D_X0 + 9},
264 {"X10", LXREG, x86.D_X0 + 10},
265 {"X11", LXREG, x86.D_X0 + 11},
266 {"X12", LXREG, x86.D_X0 + 12},
267 {"X13", LXREG, x86.D_X0 + 13},
268 {"X14", LXREG, x86.D_X0 + 14},
269 {"X15", LXREG, x86.D_X0 + 15},
270 {"CS", LSREG, x86.D_CS},
271 {"SS", LSREG, x86.D_SS},
272 {"DS", LSREG, x86.D_DS},
273 {"ES", LSREG, x86.D_ES},
274 {"FS", LSREG, x86.D_FS},
275 {"GS", LSREG, x86.D_GS},
276 {"GDTR", LBREG, x86.D_GDTR},
277 {"IDTR", LBREG, x86.D_IDTR},
278 {"LDTR", LBREG, x86.D_LDTR},
279 {"MSW", LBREG, x86.D_MSW},
280 {"TASK", LBREG, x86.D_TASK},
281 {"CR0", LBREG, x86.D_CR + 0},
282 {"CR1", LBREG, x86.D_CR + 1},
283 {"CR2", LBREG, x86.D_CR + 2},
284 {"CR3", LBREG, x86.D_CR + 3},
285 {"CR4", LBREG, x86.D_CR + 4},
286 {"CR5", LBREG, x86.D_CR + 5},
287 {"CR6", LBREG, x86.D_CR + 6},
288 {"CR7", LBREG, x86.D_CR + 7},
289 {"CR8", LBREG, x86.D_CR + 8},
290 {"CR9", LBREG, x86.D_CR + 9},
291 {"CR10", LBREG, x86.D_CR + 10},
292 {"CR11", LBREG, x86.D_CR + 11},
293 {"CR12", LBREG, x86.D_CR + 12},
294 {"CR13", LBREG, x86.D_CR + 13},
295 {"CR14", LBREG, x86.D_CR + 14},
296 {"CR15", LBREG, x86.D_CR + 15},
297 {"DR0", LBREG, x86.D_DR + 0},
298 {"DR1", LBREG, x86.D_DR + 1},
299 {"DR2", LBREG, x86.D_DR + 2},
300 {"DR3", LBREG, x86.D_DR + 3},
301 {"DR4", LBREG, x86.D_DR + 4},
302 {"DR5", LBREG, x86.D_DR + 5},
303 {"DR6", LBREG, x86.D_DR + 6},
304 {"DR7", LBREG, x86.D_DR + 7},
305 {"TR0", LBREG, x86.D_TR + 0},
306 {"TR1", LBREG, x86.D_TR + 1},
307 {"TR2", LBREG, x86.D_TR + 2},
308 {"TR3", LBREG, x86.D_TR + 3},
309 {"TR4", LBREG, x86.D_TR + 4},
310 {"TR5", LBREG, x86.D_TR + 5},
311 {"TR6", LBREG, x86.D_TR + 6},
312 {"TR7", LBREG, x86.D_TR + 7},
313 {"TLS", LSREG, x86.D_TLS},
314 {"AAA", LTYPE0, x86.AAAA},
315 {"AAD", LTYPE0, x86.AAAD},
316 {"AAM", LTYPE0, x86.AAAM},
317 {"AAS", LTYPE0, x86.AAAS},
318 {"ADCB", LTYPE3, x86.AADCB},
319 {"ADCL", LTYPE3, x86.AADCL},
320 {"ADCQ", LTYPE3, x86.AADCQ},
321 {"ADCW", LTYPE3, x86.AADCW},
322 {"ADDB", LTYPE3, x86.AADDB},
323 {"ADDL", LTYPE3, x86.AADDL},
324 {"ADDQ", LTYPE3, x86.AADDQ},
325 {"ADDW", LTYPE3, x86.AADDW},
326 {"ADJSP", LTYPE2, x86.AADJSP},
327 {"ANDB", LTYPE3, x86.AANDB},
328 {"ANDL", LTYPE3, x86.AANDL},
329 {"ANDQ", LTYPE3, x86.AANDQ},
330 {"ANDW", LTYPE3, x86.AANDW},
331 {"ARPL", LTYPE3, x86.AARPL},
332 {"BOUNDL", LTYPE3, x86.ABOUNDL},
333 {"BOUNDW", LTYPE3, x86.ABOUNDW},
334 {"BSFL", LTYPE3, x86.ABSFL},
335 {"BSFQ", LTYPE3, x86.ABSFQ},
336 {"BSFW", LTYPE3, x86.ABSFW},
337 {"BSRL", LTYPE3, x86.ABSRL},
338 {"BSRQ", LTYPE3, x86.ABSRQ},
339 {"BSRW", LTYPE3, x86.ABSRW},
340 {"BSWAPL", LTYPE1, x86.ABSWAPL},
341 {"BSWAPQ", LTYPE1, x86.ABSWAPQ},
342 {"BTCL", LTYPE3, x86.ABTCL},
343 {"BTCQ", LTYPE3, x86.ABTCQ},
344 {"BTCW", LTYPE3, x86.ABTCW},
345 {"BTL", LTYPE3, x86.ABTL},
346 {"BTQ", LTYPE3, x86.ABTQ},
347 {"BTRL", LTYPE3, x86.ABTRL},
348 {"BTRQ", LTYPE3, x86.ABTRQ},
349 {"BTRW", LTYPE3, x86.ABTRW},
350 {"BTSL", LTYPE3, x86.ABTSL},
351 {"BTSQ", LTYPE3, x86.ABTSQ},
352 {"BTSW", LTYPE3, x86.ABTSW},
353 {"BTW", LTYPE3, x86.ABTW},
354 {"BYTE", LTYPE2, x86.ABYTE},
355 {"CALL", LTYPEC, x86.ACALL},
356 {"CLC", LTYPE0, x86.ACLC},
357 {"CLD", LTYPE0, x86.ACLD},
358 {"CLI", LTYPE0, x86.ACLI},
359 {"CLTS", LTYPE0, x86.ACLTS},
360 {"CMC", LTYPE0, x86.ACMC},
361 {"CMPB", LTYPE4, x86.ACMPB},
362 {"CMPL", LTYPE4, x86.ACMPL},
363 {"CMPQ", LTYPE4, x86.ACMPQ},
364 {"CMPW", LTYPE4, x86.ACMPW},
365 {"CMPSB", LTYPE0, x86.ACMPSB},
366 {"CMPSL", LTYPE0, x86.ACMPSL},
367 {"CMPSQ", LTYPE0, x86.ACMPSQ},
368 {"CMPSW", LTYPE0, x86.ACMPSW},
369 {"CMPXCHG8B", LTYPE1, x86.ACMPXCHG8B},
370 {"CMPXCHGB", LTYPE3, x86.ACMPXCHGB}, /* LTYPE3? */
371 {"CMPXCHGL", LTYPE3, x86.ACMPXCHGL},
372 {"CMPXCHGQ", LTYPE3, x86.ACMPXCHGQ},
373 {"CMPXCHGW", LTYPE3, x86.ACMPXCHGW},
374 {"CPUID", LTYPE0, x86.ACPUID},
375 {"DAA", LTYPE0, x86.ADAA},
376 {"DAS", LTYPE0, x86.ADAS},
377 {"DATA", LTYPED, x86.ADATA},
378 {"DECB", LTYPE1, x86.ADECB},
379 {"DECL", LTYPE1, x86.ADECL},
380 {"DECQ", LTYPE1, x86.ADECQ},
381 {"DECW", LTYPE1, x86.ADECW},
382 {"DIVB", LTYPE2, x86.ADIVB},
383 {"DIVL", LTYPE2, x86.ADIVL},
384 {"DIVQ", LTYPE2, x86.ADIVQ},
385 {"DIVW", LTYPE2, x86.ADIVW},
386 {"EMMS", LTYPE0, x86.AEMMS},
387 {"END", LTYPE0, x86.AEND},
388 {"ENTER", LTYPE2, x86.AENTER},
389 {"GLOBL", LTYPEG, x86.AGLOBL},
390 {"HLT", LTYPE0, x86.AHLT},
391 {"IDIVB", LTYPE2, x86.AIDIVB},
392 {"IDIVL", LTYPE2, x86.AIDIVL},
393 {"IDIVQ", LTYPE2, x86.AIDIVQ},
394 {"IDIVW", LTYPE2, x86.AIDIVW},
395 {"IMULB", LTYPEI, x86.AIMULB},
396 {"IMULL", LTYPEI, x86.AIMULL},
397 {"IMULQ", LTYPEI, x86.AIMULQ},
398 {"IMUL3Q", LTYPEX, x86.AIMUL3Q},
399 {"IMULW", LTYPEI, x86.AIMULW},
400 {"INB", LTYPE0, x86.AINB},
401 {"INL", LTYPE0, x86.AINL},
402 {"INW", LTYPE0, x86.AINW},
403 {"INCB", LTYPE1, x86.AINCB},
404 {"INCL", LTYPE1, x86.AINCL},
405 {"INCQ", LTYPE1, x86.AINCQ},
406 {"INCW", LTYPE1, x86.AINCW},
407 {"INSB", LTYPE0, x86.AINSB},
408 {"INSL", LTYPE0, x86.AINSL},
409 {"INSW", LTYPE0, x86.AINSW},
410 {"INT", LTYPE2, x86.AINT},
411 {"INTO", LTYPE0, x86.AINTO},
412 {"INVD", LTYPE0, x86.AINVD},
413 {"INVLPG", LTYPE2, x86.AINVLPG},
414 {"IRETL", LTYPE0, x86.AIRETL},
415 {"IRETQ", LTYPE0, x86.AIRETQ},
416 {"IRETW", LTYPE0, x86.AIRETW},
417 {"JOS", LTYPER, x86.AJOS}, /* overflow set (OF = 1) */
418 {"JO", LTYPER, x86.AJOS}, /* alternate */
419 {"JOC", LTYPER, x86.AJOC}, /* overflow clear (OF = 0) */
420 {"JNO", LTYPER, x86.AJOC}, /* alternate */
421 {"JCS", LTYPER, x86.AJCS}, /* carry set (CF = 1) */
422 {"JB", LTYPER, x86.AJCS}, /* alternate */
423 {"JC", LTYPER, x86.AJCS}, /* alternate */
424 {"JNAE", LTYPER, x86.AJCS}, /* alternate */
425 {"JLO", LTYPER, x86.AJCS}, /* alternate */
426 {"JCC", LTYPER, x86.AJCC}, /* carry clear (CF = 0) */
427 {"JAE", LTYPER, x86.AJCC}, /* alternate */
428 {"JNB", LTYPER, x86.AJCC}, /* alternate */
429 {"JNC", LTYPER, x86.AJCC}, /* alternate */
430 {"JHS", LTYPER, x86.AJCC}, /* alternate */
431 {"JEQ", LTYPER, x86.AJEQ}, /* equal (ZF = 1) */
432 {"JE", LTYPER, x86.AJEQ}, /* alternate */
433 {"JZ", LTYPER, x86.AJEQ}, /* alternate */
434 {"JNE", LTYPER, x86.AJNE}, /* not equal (ZF = 0) */
435 {"JNZ", LTYPER, x86.AJNE}, /* alternate */
436 {"JLS", LTYPER, x86.AJLS}, /* lower or same (unsigned) (CF = 1 || ZF = 1) */
437 {"JBE", LTYPER, x86.AJLS}, /* alternate */
438 {"JNA", LTYPER, x86.AJLS}, /* alternate */
439 {"JHI", LTYPER, x86.AJHI}, /* higher (unsigned) (CF = 0 && ZF = 0) */
440 {"JA", LTYPER, x86.AJHI}, /* alternate */
441 {"JNBE", LTYPER, x86.AJHI}, /* alternate */
442 {"JMI", LTYPER, x86.AJMI}, /* negative (minus) (SF = 1) */
443 {"JS", LTYPER, x86.AJMI}, /* alternate */
444 {"JPL", LTYPER, x86.AJPL}, /* non-negative (plus) (SF = 0) */
445 {"JNS", LTYPER, x86.AJPL}, /* alternate */
446 {"JPS", LTYPER, x86.AJPS}, /* parity set (PF = 1) */
447 {"JP", LTYPER, x86.AJPS}, /* alternate */
448 {"JPE", LTYPER, x86.AJPS}, /* alternate */
449 {"JPC", LTYPER, x86.AJPC}, /* parity clear (PF = 0) */
450 {"JNP", LTYPER, x86.AJPC}, /* alternate */
451 {"JPO", LTYPER, x86.AJPC}, /* alternate */
452 {"JLT", LTYPER, x86.AJLT}, /* less than (signed) (SF != OF) */
453 {"JL", LTYPER, x86.AJLT}, /* alternate */
454 {"JNGE", LTYPER, x86.AJLT}, /* alternate */
455 {"JGE", LTYPER, x86.AJGE}, /* greater than or equal (signed) (SF = OF) */
456 {"JNL", LTYPER, x86.AJGE}, /* alternate */
457 {"JLE", LTYPER, x86.AJLE}, /* less than or equal (signed) (ZF = 1 || SF != OF) */
458 {"JNG", LTYPER, x86.AJLE}, /* alternate */
459 {"JGT", LTYPER, x86.AJGT}, /* greater than (signed) (ZF = 0 && SF = OF) */
460 {"JG", LTYPER, x86.AJGT}, /* alternate */
461 {"JNLE", LTYPER, x86.AJGT}, /* alternate */
462 {"JCXZL", LTYPER, x86.AJCXZL},
463 {"JCXZQ", LTYPER, x86.AJCXZQ},
464 {"JMP", LTYPEC, x86.AJMP},
465 {"LAHF", LTYPE0, x86.ALAHF},
466 {"LARL", LTYPE3, x86.ALARL},
467 {"LARW", LTYPE3, x86.ALARW},
468 {"LEAL", LTYPE3, x86.ALEAL},
469 {"LEAQ", LTYPE3, x86.ALEAQ},
470 {"LEAW", LTYPE3, x86.ALEAW},
471 {"LEAVEL", LTYPE0, x86.ALEAVEL},
472 {"LEAVEQ", LTYPE0, x86.ALEAVEQ},
473 {"LEAVEW", LTYPE0, x86.ALEAVEW},
474 {"LFENCE", LTYPE0, x86.ALFENCE},
475 {"LOCK", LTYPE0, x86.ALOCK},
476 {"LODSB", LTYPE0, x86.ALODSB},
477 {"LODSL", LTYPE0, x86.ALODSL},
478 {"LODSQ", LTYPE0, x86.ALODSQ},
479 {"LODSW", LTYPE0, x86.ALODSW},
480 {"LONG", LTYPE2, x86.ALONG},
481 {"LOOP", LTYPER, x86.ALOOP},
482 {"LOOPEQ", LTYPER, x86.ALOOPEQ},
483 {"LOOPNE", LTYPER, x86.ALOOPNE},
484 {"LSLL", LTYPE3, x86.ALSLL},
485 {"LSLW", LTYPE3, x86.ALSLW},
486 {"MFENCE", LTYPE0, x86.AMFENCE},
487 {"MODE", LTYPE2, x86.AMODE},
488 {"MOVB", LTYPE3, x86.AMOVB},
489 {"MOVL", LTYPEM, x86.AMOVL},
490 {"MOVQ", LTYPEM, x86.AMOVQ},
491 {"MOVW", LTYPEM, x86.AMOVW},
492 {"MOVBLSX", LTYPE3, x86.AMOVBLSX},
493 {"MOVBLZX", LTYPE3, x86.AMOVBLZX},
494 {"MOVBQSX", LTYPE3, x86.AMOVBQSX},
495 {"MOVBQZX", LTYPE3, x86.AMOVBQZX},
496 {"MOVBWSX", LTYPE3, x86.AMOVBWSX},
497 {"MOVBWZX", LTYPE3, x86.AMOVBWZX},
498 {"MOVLQSX", LTYPE3, x86.AMOVLQSX},
499 {"MOVLQZX", LTYPE3, x86.AMOVLQZX},
500 {"MOVNTIL", LTYPE3, x86.AMOVNTIL},
501 {"MOVNTIQ", LTYPE3, x86.AMOVNTIQ},
502 {"MOVQL", LTYPE3, x86.AMOVQL},
503 {"MOVWLSX", LTYPE3, x86.AMOVWLSX},
504 {"MOVWLZX", LTYPE3, x86.AMOVWLZX},
505 {"MOVWQSX", LTYPE3, x86.AMOVWQSX},
506 {"MOVWQZX", LTYPE3, x86.AMOVWQZX},
507 {"MOVSB", LTYPE0, x86.AMOVSB},
508 {"MOVSL", LTYPE0, x86.AMOVSL},
509 {"MOVSQ", LTYPE0, x86.AMOVSQ},
510 {"MOVSW", LTYPE0, x86.AMOVSW},
511 {"MULB", LTYPE2, x86.AMULB},
512 {"MULL", LTYPE2, x86.AMULL},
513 {"MULQ", LTYPE2, x86.AMULQ},
514 {"MULW", LTYPE2, x86.AMULW},
515 {"NEGB", LTYPE1, x86.ANEGB},
516 {"NEGL", LTYPE1, x86.ANEGL},
517 {"NEGQ", LTYPE1, x86.ANEGQ},
518 {"NEGW", LTYPE1, x86.ANEGW},
519 {"NOP", LTYPEN, x86.ANOP},
520 {"NOTB", LTYPE1, x86.ANOTB},
521 {"NOTL", LTYPE1, x86.ANOTL},
522 {"NOTQ", LTYPE1, x86.ANOTQ},
523 {"NOTW", LTYPE1, x86.ANOTW},
524 {"ORB", LTYPE3, x86.AORB},
525 {"ORL", LTYPE3, x86.AORL},
526 {"ORQ", LTYPE3, x86.AORQ},
527 {"ORW", LTYPE3, x86.AORW},
528 {"OUTB", LTYPE0, x86.AOUTB},
529 {"OUTL", LTYPE0, x86.AOUTL},
530 {"OUTW", LTYPE0, x86.AOUTW},
531 {"OUTSB", LTYPE0, x86.AOUTSB},
532 {"OUTSL", LTYPE0, x86.AOUTSL},
533 {"OUTSW", LTYPE0, x86.AOUTSW},
534 {"PAUSE", LTYPEN, x86.APAUSE},
535 {"POPAL", LTYPE0, x86.APOPAL},
536 {"POPAW", LTYPE0, x86.APOPAW},
537 {"POPFL", LTYPE0, x86.APOPFL},
538 {"POPFQ", LTYPE0, x86.APOPFQ},
539 {"POPFW", LTYPE0, x86.APOPFW},
540 {"POPL", LTYPE1, x86.APOPL},
541 {"POPQ", LTYPE1, x86.APOPQ},
542 {"POPW", LTYPE1, x86.APOPW},
543 {"PUSHAL", LTYPE0, x86.APUSHAL},
544 {"PUSHAW", LTYPE0, x86.APUSHAW},
545 {"PUSHFL", LTYPE0, x86.APUSHFL},
546 {"PUSHFQ", LTYPE0, x86.APUSHFQ},
547 {"PUSHFW", LTYPE0, x86.APUSHFW},
548 {"PUSHL", LTYPE2, x86.APUSHL},
549 {"PUSHQ", LTYPE2, x86.APUSHQ},
550 {"PUSHW", LTYPE2, x86.APUSHW},
551 {"RCLB", LTYPE3, x86.ARCLB},
552 {"RCLL", LTYPE3, x86.ARCLL},
553 {"RCLQ", LTYPE3, x86.ARCLQ},
554 {"RCLW", LTYPE3, x86.ARCLW},
555 {"RCRB", LTYPE3, x86.ARCRB},
556 {"RCRL", LTYPE3, x86.ARCRL},
557 {"RCRQ", LTYPE3, x86.ARCRQ},
558 {"RCRW", LTYPE3, x86.ARCRW},
559 {"RDMSR", LTYPE0, x86.ARDMSR},
560 {"RDPMC", LTYPE0, x86.ARDPMC},
561 {"RDTSC", LTYPE0, x86.ARDTSC},
562 {"REP", LTYPE0, x86.AREP},
563 {"REPN", LTYPE0, x86.AREPN},
564 {"RET", LTYPE0, x86.ARET},
565 {"RETFL", LTYPERT, x86.ARETFL},
566 {"RETFW", LTYPERT, x86.ARETFW},
567 {"RETFQ", LTYPERT, x86.ARETFQ},
568 {"ROLB", LTYPE3, x86.AROLB},
569 {"ROLL", LTYPE3, x86.AROLL},
570 {"ROLQ", LTYPE3, x86.AROLQ},
571 {"ROLW", LTYPE3, x86.AROLW},
572 {"RORB", LTYPE3, x86.ARORB},
573 {"RORL", LTYPE3, x86.ARORL},
574 {"RORQ", LTYPE3, x86.ARORQ},
575 {"RORW", LTYPE3, x86.ARORW},
576 {"RSM", LTYPE0, x86.ARSM},
577 {"SAHF", LTYPE0, x86.ASAHF},
578 {"SALB", LTYPE3, x86.ASALB},
579 {"SALL", LTYPE3, x86.ASALL},
580 {"SALQ", LTYPE3, x86.ASALQ},
581 {"SALW", LTYPE3, x86.ASALW},
582 {"SARB", LTYPE3, x86.ASARB},
583 {"SARL", LTYPE3, x86.ASARL},
584 {"SARQ", LTYPE3, x86.ASARQ},
585 {"SARW", LTYPE3, x86.ASARW},
586 {"SBBB", LTYPE3, x86.ASBBB},
587 {"SBBL", LTYPE3, x86.ASBBL},
588 {"SBBQ", LTYPE3, x86.ASBBQ},
589 {"SBBW", LTYPE3, x86.ASBBW},
590 {"SCASB", LTYPE0, x86.ASCASB},
591 {"SCASL", LTYPE0, x86.ASCASL},
592 {"SCASQ", LTYPE0, x86.ASCASQ},
593 {"SCASW", LTYPE0, x86.ASCASW},
594 {"SETCC", LTYPE1, x86.ASETCC}, /* see JCC etc above for condition codes */
595 {"SETCS", LTYPE1, x86.ASETCS},
596 {"SETEQ", LTYPE1, x86.ASETEQ},
597 {"SETGE", LTYPE1, x86.ASETGE},
598 {"SETGT", LTYPE1, x86.ASETGT},
599 {"SETHI", LTYPE1, x86.ASETHI},
600 {"SETLE", LTYPE1, x86.ASETLE},
601 {"SETLS", LTYPE1, x86.ASETLS},
602 {"SETLT", LTYPE1, x86.ASETLT},
603 {"SETMI", LTYPE1, x86.ASETMI},
604 {"SETNE", LTYPE1, x86.ASETNE},
605 {"SETOC", LTYPE1, x86.ASETOC},
606 {"SETOS", LTYPE1, x86.ASETOS},
607 {"SETPC", LTYPE1, x86.ASETPC},
608 {"SETPL", LTYPE1, x86.ASETPL},
609 {"SETPS", LTYPE1, x86.ASETPS},
610 {"SFENCE", LTYPE0, x86.ASFENCE},
611 {"CDQ", LTYPE0, x86.ACDQ},
612 {"CWD", LTYPE0, x86.ACWD},
613 {"CQO", LTYPE0, x86.ACQO},
614 {"SHLB", LTYPE3, x86.ASHLB},
615 {"SHLL", LTYPES, x86.ASHLL},
616 {"SHLQ", LTYPES, x86.ASHLQ},
617 {"SHLW", LTYPES, x86.ASHLW},
618 {"SHRB", LTYPE3, x86.ASHRB},
619 {"SHRL", LTYPES, x86.ASHRL},
620 {"SHRQ", LTYPES, x86.ASHRQ},
621 {"SHRW", LTYPES, x86.ASHRW},
622 {"STC", LTYPE0, x86.ASTC},
623 {"STD", LTYPE0, x86.ASTD},
624 {"STI", LTYPE0, x86.ASTI},
625 {"STOSB", LTYPE0, x86.ASTOSB},
626 {"STOSL", LTYPE0, x86.ASTOSL},
627 {"STOSQ", LTYPE0, x86.ASTOSQ},
628 {"STOSW", LTYPE0, x86.ASTOSW},
629 {"SUBB", LTYPE3, x86.ASUBB},
630 {"SUBL", LTYPE3, x86.ASUBL},
631 {"SUBQ", LTYPE3, x86.ASUBQ},
632 {"SUBW", LTYPE3, x86.ASUBW},
633 {"SYSCALL", LTYPE0, x86.ASYSCALL},
634 {"SYSRET", LTYPE0, x86.ASYSRET},
635 {"SWAPGS", LTYPE0, x86.ASWAPGS},
636 {"TESTB", LTYPE3, x86.ATESTB},
637 {"TESTL", LTYPE3, x86.ATESTL},
638 {"TESTQ", LTYPE3, x86.ATESTQ},
639 {"TESTW", LTYPE3, x86.ATESTW},
640 {"TEXT", LTYPET, x86.ATEXT},
641 {"VERR", LTYPE2, x86.AVERR},
642 {"VERW", LTYPE2, x86.AVERW},
643 {"QUAD", LTYPE2, x86.AQUAD},
644 {"WAIT", LTYPE0, x86.AWAIT},
645 {"WBINVD", LTYPE0, x86.AWBINVD},
646 {"WRMSR", LTYPE0, x86.AWRMSR},
647 {"WORD", LTYPE2, x86.AWORD},
648 {"XADDB", LTYPE3, x86.AXADDB},
649 {"XADDL", LTYPE3, x86.AXADDL},
650 {"XADDQ", LTYPE3, x86.AXADDQ},
651 {"XADDW", LTYPE3, x86.AXADDW},
652 {"XCHGB", LTYPE3, x86.AXCHGB},
653 {"XCHGL", LTYPE3, x86.AXCHGL},
654 {"XCHGQ", LTYPE3, x86.AXCHGQ},
655 {"XCHGW", LTYPE3, x86.AXCHGW},
656 {"XLAT", LTYPE2, x86.AXLAT},
657 {"XORB", LTYPE3, x86.AXORB},
658 {"XORL", LTYPE3, x86.AXORL},
659 {"XORQ", LTYPE3, x86.AXORQ},
660 {"XORW", LTYPE3, x86.AXORW},
661 {"CMOVLCC", LTYPE3, x86.ACMOVLCC},
662 {"CMOVLCS", LTYPE3, x86.ACMOVLCS},
663 {"CMOVLEQ", LTYPE3, x86.ACMOVLEQ},
664 {"CMOVLGE", LTYPE3, x86.ACMOVLGE},
665 {"CMOVLGT", LTYPE3, x86.ACMOVLGT},
666 {"CMOVLHI", LTYPE3, x86.ACMOVLHI},
667 {"CMOVLLE", LTYPE3, x86.ACMOVLLE},
668 {"CMOVLLS", LTYPE3, x86.ACMOVLLS},
669 {"CMOVLLT", LTYPE3, x86.ACMOVLLT},
670 {"CMOVLMI", LTYPE3, x86.ACMOVLMI},
671 {"CMOVLNE", LTYPE3, x86.ACMOVLNE},
672 {"CMOVLOC", LTYPE3, x86.ACMOVLOC},
673 {"CMOVLOS", LTYPE3, x86.ACMOVLOS},
674 {"CMOVLPC", LTYPE3, x86.ACMOVLPC},
675 {"CMOVLPL", LTYPE3, x86.ACMOVLPL},
676 {"CMOVLPS", LTYPE3, x86.ACMOVLPS},
677 {"CMOVQCC", LTYPE3, x86.ACMOVQCC},
678 {"CMOVQCS", LTYPE3, x86.ACMOVQCS},
679 {"CMOVQEQ", LTYPE3, x86.ACMOVQEQ},
680 {"CMOVQGE", LTYPE3, x86.ACMOVQGE},
681 {"CMOVQGT", LTYPE3, x86.ACMOVQGT},
682 {"CMOVQHI", LTYPE3, x86.ACMOVQHI},
683 {"CMOVQLE", LTYPE3, x86.ACMOVQLE},
684 {"CMOVQLS", LTYPE3, x86.ACMOVQLS},
685 {"CMOVQLT", LTYPE3, x86.ACMOVQLT},
686 {"CMOVQMI", LTYPE3, x86.ACMOVQMI},
687 {"CMOVQNE", LTYPE3, x86.ACMOVQNE},
688 {"CMOVQOC", LTYPE3, x86.ACMOVQOC},
689 {"CMOVQOS", LTYPE3, x86.ACMOVQOS},
690 {"CMOVQPC", LTYPE3, x86.ACMOVQPC},
691 {"CMOVQPL", LTYPE3, x86.ACMOVQPL},
692 {"CMOVQPS", LTYPE3, x86.ACMOVQPS},
693 {"CMOVWCC", LTYPE3, x86.ACMOVWCC},
694 {"CMOVWCS", LTYPE3, x86.ACMOVWCS},
695 {"CMOVWEQ", LTYPE3, x86.ACMOVWEQ},
696 {"CMOVWGE", LTYPE3, x86.ACMOVWGE},
697 {"CMOVWGT", LTYPE3, x86.ACMOVWGT},
698 {"CMOVWHI", LTYPE3, x86.ACMOVWHI},
699 {"CMOVWLE", LTYPE3, x86.ACMOVWLE},
700 {"CMOVWLS", LTYPE3, x86.ACMOVWLS},
701 {"CMOVWLT", LTYPE3, x86.ACMOVWLT},
702 {"CMOVWMI", LTYPE3, x86.ACMOVWMI},
703 {"CMOVWNE", LTYPE3, x86.ACMOVWNE},
704 {"CMOVWOC", LTYPE3, x86.ACMOVWOC},
705 {"CMOVWOS", LTYPE3, x86.ACMOVWOS},
706 {"CMOVWPC", LTYPE3, x86.ACMOVWPC},
707 {"CMOVWPL", LTYPE3, x86.ACMOVWPL},
708 {"CMOVWPS", LTYPE3, x86.ACMOVWPS},
709 {"FMOVB", LTYPE3, x86.AFMOVB},
710 {"FMOVBP", LTYPE3, x86.AFMOVBP},
711 {"FMOVD", LTYPE3, x86.AFMOVD},
712 {"FMOVDP", LTYPE3, x86.AFMOVDP},
713 {"FMOVF", LTYPE3, x86.AFMOVF},
714 {"FMOVFP", LTYPE3, x86.AFMOVFP},
715 {"FMOVL", LTYPE3, x86.AFMOVL},
716 {"FMOVLP", LTYPE3, x86.AFMOVLP},
717 {"FMOVV", LTYPE3, x86.AFMOVV},
718 {"FMOVVP", LTYPE3, x86.AFMOVVP},
719 {"FMOVW", LTYPE3, x86.AFMOVW},
720 {"FMOVWP", LTYPE3, x86.AFMOVWP},
721 {"FMOVX", LTYPE3, x86.AFMOVX},
722 {"FMOVXP", LTYPE3, x86.AFMOVXP},
723 {"FCOMB", LTYPE3, x86.AFCOMB},
724 {"FCOMBP", LTYPE3, x86.AFCOMBP},
725 {"FCOMD", LTYPE3, x86.AFCOMD},
726 {"FCOMDP", LTYPE3, x86.AFCOMDP},
727 {"FCOMDPP", LTYPE3, x86.AFCOMDPP},
728 {"FCOMF", LTYPE3, x86.AFCOMF},
729 {"FCOMFP", LTYPE3, x86.AFCOMFP},
730 {"FCOML", LTYPE3, x86.AFCOML},
731 {"FCOMLP", LTYPE3, x86.AFCOMLP},
732 {"FCOMW", LTYPE3, x86.AFCOMW},
733 {"FCOMWP", LTYPE3, x86.AFCOMWP},
734 {"FUCOM", LTYPE3, x86.AFUCOM},
735 {"FUCOMP", LTYPE3, x86.AFUCOMP},
736 {"FUCOMPP", LTYPE3, x86.AFUCOMPP},
737 {"FADDW", LTYPE3, x86.AFADDW},
738 {"FADDL", LTYPE3, x86.AFADDL},
739 {"FADDF", LTYPE3, x86.AFADDF},
740 {"FADDD", LTYPE3, x86.AFADDD},
741 {"FADDDP", LTYPE3, x86.AFADDDP},
742 {"FSUBDP", LTYPE3, x86.AFSUBDP},
743 {"FSUBW", LTYPE3, x86.AFSUBW},
744 {"FSUBL", LTYPE3, x86.AFSUBL},
745 {"FSUBF", LTYPE3, x86.AFSUBF},
746 {"FSUBD", LTYPE3, x86.AFSUBD},
747 {"FSUBRDP", LTYPE3, x86.AFSUBRDP},
748 {"FSUBRW", LTYPE3, x86.AFSUBRW},
749 {"FSUBRL", LTYPE3, x86.AFSUBRL},
750 {"FSUBRF", LTYPE3, x86.AFSUBRF},
751 {"FSUBRD", LTYPE3, x86.AFSUBRD},
752 {"FMULDP", LTYPE3, x86.AFMULDP},
753 {"FMULW", LTYPE3, x86.AFMULW},
754 {"FMULL", LTYPE3, x86.AFMULL},
755 {"FMULF", LTYPE3, x86.AFMULF},
756 {"FMULD", LTYPE3, x86.AFMULD},
757 {"FDIVDP", LTYPE3, x86.AFDIVDP},
758 {"FDIVW", LTYPE3, x86.AFDIVW},
759 {"FDIVL", LTYPE3, x86.AFDIVL},
760 {"FDIVF", LTYPE3, x86.AFDIVF},
761 {"FDIVD", LTYPE3, x86.AFDIVD},
762 {"FDIVRDP", LTYPE3, x86.AFDIVRDP},
763 {"FDIVRW", LTYPE3, x86.AFDIVRW},
764 {"FDIVRL", LTYPE3, x86.AFDIVRL},
765 {"FDIVRF", LTYPE3, x86.AFDIVRF},
766 {"FDIVRD", LTYPE3, x86.AFDIVRD},
767 {"FXCHD", LTYPE3, x86.AFXCHD},
768 {"FFREE", LTYPE1, x86.AFFREE},
769 {"FLDCW", LTYPE2, x86.AFLDCW},
770 {"FLDENV", LTYPE1, x86.AFLDENV},
771 {"FRSTOR", LTYPE2, x86.AFRSTOR},
772 {"FSAVE", LTYPE1, x86.AFSAVE},
773 {"FSTCW", LTYPE1, x86.AFSTCW},
774 {"FSTENV", LTYPE1, x86.AFSTENV},
775 {"FSTSW", LTYPE1, x86.AFSTSW},
776 {"F2XM1", LTYPE0, x86.AF2XM1},
777 {"FABS", LTYPE0, x86.AFABS},
778 {"FCHS", LTYPE0, x86.AFCHS},
779 {"FCLEX", LTYPE0, x86.AFCLEX},
780 {"FCOS", LTYPE0, x86.AFCOS},
781 {"FDECSTP", LTYPE0, x86.AFDECSTP},
782 {"FINCSTP", LTYPE0, x86.AFINCSTP},
783 {"FINIT", LTYPE0, x86.AFINIT},
784 {"FLD1", LTYPE0, x86.AFLD1},
785 {"FLDL2E", LTYPE0, x86.AFLDL2E},
786 {"FLDL2T", LTYPE0, x86.AFLDL2T},
787 {"FLDLG2", LTYPE0, x86.AFLDLG2},
788 {"FLDLN2", LTYPE0, x86.AFLDLN2},
789 {"FLDPI", LTYPE0, x86.AFLDPI},
790 {"FLDZ", LTYPE0, x86.AFLDZ},
791 {"FNOP", LTYPE0, x86.AFNOP},
792 {"FPATAN", LTYPE0, x86.AFPATAN},
793 {"FPREM", LTYPE0, x86.AFPREM},
794 {"FPREM1", LTYPE0, x86.AFPREM1},
795 {"FPTAN", LTYPE0, x86.AFPTAN},
796 {"FRNDINT", LTYPE0, x86.AFRNDINT},
797 {"FSCALE", LTYPE0, x86.AFSCALE},
798 {"FSIN", LTYPE0, x86.AFSIN},
799 {"FSINCOS", LTYPE0, x86.AFSINCOS},
800 {"FSQRT", LTYPE0, x86.AFSQRT},
801 {"FTST", LTYPE0, x86.AFTST},
802 {"FXAM", LTYPE0, x86.AFXAM},
803 {"FXTRACT", LTYPE0, x86.AFXTRACT},
804 {"FYL2X", LTYPE0, x86.AFYL2X},
805 {"FYL2XP1", LTYPE0, x86.AFYL2XP1},
806 {"ADDPD", LTYPE3, x86.AADDPD},
807 {"ADDPS", LTYPE3, x86.AADDPS},
808 {"ADDSD", LTYPE3, x86.AADDSD},
809 {"ADDSS", LTYPE3, x86.AADDSS},
810 {"ANDNPD", LTYPE3, x86.AANDNPD},
811 {"ANDNPS", LTYPE3, x86.AANDNPS},
812 {"ANDPD", LTYPE3, x86.AANDPD},
813 {"ANDPS", LTYPE3, x86.AANDPS},
814 {"CMPPD", LTYPEXC, x86.ACMPPD},
815 {"CMPPS", LTYPEXC, x86.ACMPPS},
816 {"CMPSD", LTYPEXC, x86.ACMPSD},
817 {"CMPSS", LTYPEXC, x86.ACMPSS},
818 {"COMISD", LTYPE3, x86.ACOMISD},
819 {"COMISS", LTYPE3, x86.ACOMISS},
820 {"CVTPL2PD", LTYPE3, x86.ACVTPL2PD},
821 {"CVTPL2PS", LTYPE3, x86.ACVTPL2PS},
822 {"CVTPD2PL", LTYPE3, x86.ACVTPD2PL},
823 {"CVTPD2PS", LTYPE3, x86.ACVTPD2PS},
824 {"CVTPS2PL", LTYPE3, x86.ACVTPS2PL},
825 {"PF2IW", LTYPE3, x86.APF2IW},
826 {"PF2IL", LTYPE3, x86.APF2IL},
827 {"PF2ID", LTYPE3, x86.APF2IL}, /* syn */
828 {"PI2FL", LTYPE3, x86.API2FL},
829 {"PI2FD", LTYPE3, x86.API2FL}, /* syn */
830 {"PI2FW", LTYPE3, x86.API2FW},
831 {"CVTPS2PD", LTYPE3, x86.ACVTPS2PD},
832 {"CVTSD2SL", LTYPE3, x86.ACVTSD2SL},
833 {"CVTSD2SQ", LTYPE3, x86.ACVTSD2SQ},
834 {"CVTSD2SS", LTYPE3, x86.ACVTSD2SS},
835 {"CVTSL2SD", LTYPE3, x86.ACVTSL2SD},
836 {"CVTSQ2SD", LTYPE3, x86.ACVTSQ2SD},
837 {"CVTSL2SS", LTYPE3, x86.ACVTSL2SS},
838 {"CVTSQ2SS", LTYPE3, x86.ACVTSQ2SS},
839 {"CVTSS2SD", LTYPE3, x86.ACVTSS2SD},
840 {"CVTSS2SL", LTYPE3, x86.ACVTSS2SL},
841 {"CVTSS2SQ", LTYPE3, x86.ACVTSS2SQ},
842 {"CVTTPD2PL", LTYPE3, x86.ACVTTPD2PL},
843 {"CVTTPS2PL", LTYPE3, x86.ACVTTPS2PL},
844 {"CVTTSD2SL", LTYPE3, x86.ACVTTSD2SL},
845 {"CVTTSD2SQ", LTYPE3, x86.ACVTTSD2SQ},
846 {"CVTTSS2SL", LTYPE3, x86.ACVTTSS2SL},
847 {"CVTTSS2SQ", LTYPE3, x86.ACVTTSS2SQ},
848 {"DIVPD", LTYPE3, x86.ADIVPD},
849 {"DIVPS", LTYPE3, x86.ADIVPS},
850 {"DIVSD", LTYPE3, x86.ADIVSD},
851 {"DIVSS", LTYPE3, x86.ADIVSS},
852 {"FXRSTOR", LTYPE2, x86.AFXRSTOR},
853 {"FXRSTOR64", LTYPE2, x86.AFXRSTOR64},
854 {"FXSAVE", LTYPE1, x86.AFXSAVE},
855 {"FXSAVE64", LTYPE1, x86.AFXSAVE64},
856 {"LDMXCSR", LTYPE2, x86.ALDMXCSR},
857 {"MASKMOVOU", LTYPE3, x86.AMASKMOVOU},
858 {"MASKMOVDQU", LTYPE3, x86.AMASKMOVOU}, /* syn */
859 {"MASKMOVQ", LTYPE3, x86.AMASKMOVQ},
860 {"MAXPD", LTYPE3, x86.AMAXPD},
861 {"MAXPS", LTYPE3, x86.AMAXPS},
862 {"MAXSD", LTYPE3, x86.AMAXSD},
863 {"MAXSS", LTYPE3, x86.AMAXSS},
864 {"MINPD", LTYPE3, x86.AMINPD},
865 {"MINPS", LTYPE3, x86.AMINPS},
866 {"MINSD", LTYPE3, x86.AMINSD},
867 {"MINSS", LTYPE3, x86.AMINSS},
868 {"MOVAPD", LTYPE3, x86.AMOVAPD},
869 {"MOVAPS", LTYPE3, x86.AMOVAPS},
870 {"MOVD", LTYPE3, x86.AMOVQ}, /* syn */
871 {"MOVDQ2Q", LTYPE3, x86.AMOVQ}, /* syn */
872 {"MOVO", LTYPE3, x86.AMOVO},
873 {"MOVOA", LTYPE3, x86.AMOVO}, /* syn */
874 {"MOVOU", LTYPE3, x86.AMOVOU},
875 {"MOVHLPS", LTYPE3, x86.AMOVHLPS},
876 {"MOVHPD", LTYPE3, x86.AMOVHPD},
877 {"MOVHPS", LTYPE3, x86.AMOVHPS},
878 {"MOVLHPS", LTYPE3, x86.AMOVLHPS},
879 {"MOVLPD", LTYPE3, x86.AMOVLPD},
880 {"MOVLPS", LTYPE3, x86.AMOVLPS},
881 {"MOVMSKPD", LTYPE3, x86.AMOVMSKPD},
882 {"MOVMSKPS", LTYPE3, x86.AMOVMSKPS},
883 {"MOVNTO", LTYPE3, x86.AMOVNTO},
884 {"MOVNTDQ", LTYPE3, x86.AMOVNTO}, /* syn */
885 {"MOVNTPD", LTYPE3, x86.AMOVNTPD},
886 {"MOVNTPS", LTYPE3, x86.AMOVNTPS},
887 {"MOVNTQ", LTYPE3, x86.AMOVNTQ},
888 {"MOVQOZX", LTYPE3, x86.AMOVQOZX},
889 {"MOVSD", LTYPE3, x86.AMOVSD},
890 {"MOVSS", LTYPE3, x86.AMOVSS},
891 {"MOVUPD", LTYPE3, x86.AMOVUPD},
892 {"MOVUPS", LTYPE3, x86.AMOVUPS},
893 {"MULPD", LTYPE3, x86.AMULPD},
894 {"MULPS", LTYPE3, x86.AMULPS},
895 {"MULSD", LTYPE3, x86.AMULSD},
896 {"MULSS", LTYPE3, x86.AMULSS},
897 {"ORPD", LTYPE3, x86.AORPD},
898 {"ORPS", LTYPE3, x86.AORPS},
899 {"PACKSSLW", LTYPE3, x86.APACKSSLW},
900 {"PACKSSWB", LTYPE3, x86.APACKSSWB},
901 {"PACKUSWB", LTYPE3, x86.APACKUSWB},
902 {"PADDB", LTYPE3, x86.APADDB},
903 {"PADDL", LTYPE3, x86.APADDL},
904 {"PADDQ", LTYPE3, x86.APADDQ},
905 {"PADDSB", LTYPE3, x86.APADDSB},
906 {"PADDSW", LTYPE3, x86.APADDSW},
907 {"PADDUSB", LTYPE3, x86.APADDUSB},
908 {"PADDUSW", LTYPE3, x86.APADDUSW},
909 {"PADDW", LTYPE3, x86.APADDW},
910 {"PAND", LTYPE3, x86.APAND},
911 {"PANDB", LTYPE3, x86.APANDB},
912 {"PANDL", LTYPE3, x86.APANDL},
913 {"PANDSB", LTYPE3, x86.APANDSB},
914 {"PANDSW", LTYPE3, x86.APANDSW},
915 {"PANDUSB", LTYPE3, x86.APANDUSB},
916 {"PANDUSW", LTYPE3, x86.APANDUSW},
917 {"PANDW", LTYPE3, x86.APANDW},
918 {"PANDN", LTYPE3, x86.APANDN},
919 {"PAVGB", LTYPE3, x86.APAVGB},
920 {"PAVGW", LTYPE3, x86.APAVGW},
921 {"PCMPEQB", LTYPE3, x86.APCMPEQB},
922 {"PCMPEQL", LTYPE3, x86.APCMPEQL},
923 {"PCMPEQW", LTYPE3, x86.APCMPEQW},
924 {"PCMPGTB", LTYPE3, x86.APCMPGTB},
925 {"PCMPGTL", LTYPE3, x86.APCMPGTL},
926 {"PCMPGTW", LTYPE3, x86.APCMPGTW},
927 {"PEXTRW", LTYPEX, x86.APEXTRW},
928 {"PINSRW", LTYPEX, x86.APINSRW},
929 {"PINSRD", LTYPEX, x86.APINSRD},
930 {"PINSRQ", LTYPEX, x86.APINSRQ},
931 {"PMADDWL", LTYPE3, x86.APMADDWL},
932 {"PMAXSW", LTYPE3, x86.APMAXSW},
933 {"PMAXUB", LTYPE3, x86.APMAXUB},
934 {"PMINSW", LTYPE3, x86.APMINSW},
935 {"PMINUB", LTYPE3, x86.APMINUB},
936 {"PMOVMSKB", LTYPE3, x86.APMOVMSKB},
937 {"PMULHRW", LTYPE3, x86.APMULHRW},
938 {"PMULHUW", LTYPE3, x86.APMULHUW},
939 {"PMULHW", LTYPE3, x86.APMULHW},
940 {"PMULLW", LTYPE3, x86.APMULLW},
941 {"PMULULQ", LTYPE3, x86.APMULULQ},
942 {"POR", LTYPE3, x86.APOR},
943 {"PSADBW", LTYPE3, x86.APSADBW},
944 {"PSHUFHW", LTYPEX, x86.APSHUFHW},
945 {"PSHUFL", LTYPEX, x86.APSHUFL},
946 {"PSHUFLW", LTYPEX, x86.APSHUFLW},
947 {"PSHUFW", LTYPEX, x86.APSHUFW},
948 {"PSHUFB", LTYPEM, x86.APSHUFB},
949 {"PSLLO", LTYPE3, x86.APSLLO},
950 {"PSLLDQ", LTYPE3, x86.APSLLO}, /* syn */
951 {"PSLLL", LTYPE3, x86.APSLLL},
952 {"PSLLQ", LTYPE3, x86.APSLLQ},
953 {"PSLLW", LTYPE3, x86.APSLLW},
954 {"PSRAL", LTYPE3, x86.APSRAL},
955 {"PSRAW", LTYPE3, x86.APSRAW},
956 {"PSRLO", LTYPE3, x86.APSRLO},
957 {"PSRLDQ", LTYPE3, x86.APSRLO}, /* syn */
958 {"PSRLL", LTYPE3, x86.APSRLL},
959 {"PSRLQ", LTYPE3, x86.APSRLQ},
960 {"PSRLW", LTYPE3, x86.APSRLW},
961 {"PSUBB", LTYPE3, x86.APSUBB},
962 {"PSUBL", LTYPE3, x86.APSUBL},
963 {"PSUBQ", LTYPE3, x86.APSUBQ},
964 {"PSUBSB", LTYPE3, x86.APSUBSB},
965 {"PSUBSW", LTYPE3, x86.APSUBSW},
966 {"PSUBUSB", LTYPE3, x86.APSUBUSB},
967 {"PSUBUSW", LTYPE3, x86.APSUBUSW},
968 {"PSUBW", LTYPE3, x86.APSUBW},
969 {"PUNPCKHBW", LTYPE3, x86.APUNPCKHBW},
970 {"PUNPCKHLQ", LTYPE3, x86.APUNPCKHLQ},
971 {"PUNPCKHQDQ", LTYPE3, x86.APUNPCKHQDQ},
972 {"PUNPCKHWL", LTYPE3, x86.APUNPCKHWL},
973 {"PUNPCKLBW", LTYPE3, x86.APUNPCKLBW},
974 {"PUNPCKLLQ", LTYPE3, x86.APUNPCKLLQ},
975 {"PUNPCKLQDQ", LTYPE3, x86.APUNPCKLQDQ},
976 {"PUNPCKLWL", LTYPE3, x86.APUNPCKLWL},
977 {"PXOR", LTYPE3, x86.APXOR},
978 {"RCPPS", LTYPE3, x86.ARCPPS},
979 {"RCPSS", LTYPE3, x86.ARCPSS},
980 {"RSQRTPS", LTYPE3, x86.ARSQRTPS},
981 {"RSQRTSS", LTYPE3, x86.ARSQRTSS},
982 {"SHUFPD", LTYPEX, x86.ASHUFPD},
983 {"SHUFPS", LTYPEX, x86.ASHUFPS},
984 {"SQRTPD", LTYPE3, x86.ASQRTPD},
985 {"SQRTPS", LTYPE3, x86.ASQRTPS},
986 {"SQRTSD", LTYPE3, x86.ASQRTSD},
987 {"SQRTSS", LTYPE3, x86.ASQRTSS},
988 {"STMXCSR", LTYPE1, x86.ASTMXCSR},
989 {"SUBPD", LTYPE3, x86.ASUBPD},
990 {"SUBPS", LTYPE3, x86.ASUBPS},
991 {"SUBSD", LTYPE3, x86.ASUBSD},
992 {"SUBSS", LTYPE3, x86.ASUBSS},
993 {"UCOMISD", LTYPE3, x86.AUCOMISD},
994 {"UCOMISS", LTYPE3, x86.AUCOMISS},
995 {"UNPCKHPD", LTYPE3, x86.AUNPCKHPD},
996 {"UNPCKHPS", LTYPE3, x86.AUNPCKHPS},
997 {"UNPCKLPD", LTYPE3, x86.AUNPCKLPD},
998 {"UNPCKLPS", LTYPE3, x86.AUNPCKLPS},
999 {"XORPD", LTYPE3, x86.AXORPD},
1000 {"XORPS", LTYPE3, x86.AXORPS},
1001 {"CRC32B", LTYPE4, x86.ACRC32B},
1002 {"CRC32Q", LTYPE4, x86.ACRC32Q},
1003 {"PREFETCHT0", LTYPE2, x86.APREFETCHT0},
1004 {"PREFETCHT1", LTYPE2, x86.APREFETCHT1},
1005 {"PREFETCHT2", LTYPE2, x86.APREFETCHT2},
1006 {"PREFETCHNTA", LTYPE2, x86.APREFETCHNTA},
1007 {"UNDEF", LTYPE0, x86.AUNDEF},
1008 {"AESENC", LTYPE3, x86.AAESENC},
1009 {"AESENCLAST", LTYPE3, x86.AAESENCLAST},
1010 {"AESDEC", LTYPE3, x86.AAESDEC},
1011 {"AESDECLAST", LTYPE3, x86.AAESDECLAST},
1012 {"AESIMC", LTYPE3, x86.AAESIMC},
1013 {"AESKEYGENASSIST", LTYPEX, x86.AAESKEYGENASSIST},
1014 {"PSHUFD", LTYPEX, x86.APSHUFD},
1015 {"USEFIELD", LTYPEN, x86.AUSEFIELD},
1016 {"PCLMULQDQ", LTYPEX, x86.APCLMULQDQ},
1017 {"PCDATA", LTYPEPC, x86.APCDATA},
1018 {"FUNCDATA", LTYPEF, x86.AFUNCDATA},
1025 nullgen.Type_ = x86.D_NONE
1026 nullgen.Index = x86.D_NONE
1033 for i = 0; i < NHASH; i++ {
1036 for i = 0; itab[i].name != ""; i++ {
1037 s = slookup(itab[i].name)
1038 if s.type_ != LNAME {
1039 yyerror("double initialization %s", itab[i].name)
1041 s.type_ = itab[i].type_
1042 s.value = int64(itab[i].value)
1046 func checkscale(scale int) {
1055 yyerror("scale must be 1248: %d", scale)
1058 func syminit(s *Sym) {
1068 outcode(x86.AEND, &g2)
1071 var lastpc *obj.Prog
1073 func outcode(a int, g2 *Addr2) {
1090 pl = obj.Linknewplist(ctxt)
1099 if a != x86.AGLOBL && a != x86.ADATA {