/*
 * File: opcode.h
 *
 * Register and instruction symbol definitions
 *
 * Generated from file ../genop/a86.dat on Tue Jul 26 13:29:04 1960
 *
 */

/*
 * Macro definitions
 *
 */

#define	JUMP(x)		((opcinfo1[x] >> 31) & 0x01)
#define	OPB(x,n)	((unsigned char) ((opcinfo2[x] >> (32-x*8)) & 0xff))
#define	OPB1(x)		((unsigned char) ((opcinfo2[x] >> 24) & 0xff))
#define	OPB2(x)		((unsigned char) ((opcinfo2[x] >> 16) & 0xff))
#define	OPB3(x)		((unsigned char) ((opcinfo2[x] >> 8) & 0xff))
#define	OPSIZE(x)	(opcinfo2[x] & 0xff)
#define	RAND1(x)	((opcinfo1[x] >> 16) & 0xff)
#define	RAND2(x)	((opcinfo1[x] >> 8) & 0xff)
#define	RAND3(x)	(opcinfo1[x] & 0xff)
#define	REG8(x)		(AL <= x && x <= BH)
#define	REG16(x)	(AX <= x && x <= DI)
#define	REG32(x)	(EAX <= x && x <= EDI)
#define	VARIANT(x)	((opcinfo1[x] >> 24) & 0x1f)

/*
 * Register symbols
 *
 */

#define	MAXREGNAME	42
#define	MAXREGS		24

#define		AL	0x00
#define		CL	0x01
#define		DL	0x02
#define		BL	0x03
#define		AH	0x04
#define		CH	0x05
#define		DH	0x06
#define		BH	0x07
#define		AX	0x08
#define		CX	0x09
#define		DX	0x0a
#define		BX	0x0b
#define		SP	0x0c
#define		BP	0x0d
#define		SI	0x0e
#define		DI	0x0f
#define		EAX	0x10
#define		ECX	0x11
#define		EDX	0x12
#define		EBX	0x13
#define		ESP	0x14
#define		EBP	0x15
#define		ESI	0x16
#define		EDI	0x17
#define		CR0	0x20
#define		CR1	0x21
#define		CR2	0x22
#define		CR3	0x23
#define		CR4	0x24
#define		DR0	0x30
#define		DR1	0x31
#define		DR2	0x32
#define		DR3	0x33
#define		DR4	0x34
#define		DR5	0x35
#define		DR6	0x36
#define		DR7	0x37
#define		TR3	0x43
#define		TR4	0x44
#define		TR5	0x45
#define		TR6	0x46
#define		TR7	0x47

/*
 * Opcode symbols
 *
 */

#define	NOOFOPS		559

#define	OP_AAA		0
#define	OP_AAD		1
#define	OP_AAM		2
#define	OP_AAS		3
#define	OP_ADC1IB	4
#define	OP_ADC1IW	5
#define	OP_ADCIB	6
#define	OP_ADCIW	7
#define	OP_ADCISXW	8
#define	OP_ADCB		9
#define	OP_ADCW		10
#define	OP_ADCRB	11
#define	OP_ADCRW	12
#define	OP_ADD1IB	13
#define	OP_ADD1IW	14
#define	OP_ADDIB	15
#define	OP_ADDIW	16
#define	OP_ADDISXW	17
#define	OP_ADDB		18
#define	OP_ADDW		19
#define	OP_ADDRB	20
#define	OP_ADDRW	21
#define	OP_AND1IB	22
#define	OP_AND1IW	23
#define	OP_ANDIB	24
#define	OP_ANDIW	25
#define	OP_ANDISXW	26
#define	OP_ANDB		27
#define	OP_ANDW		28
#define	OP_ANDRB	29
#define	OP_ANDRW	30
#define	OP_ARPL		31
#define	OP_BOUND	32
#define	OP_BSF		33
#define	OP_BSR		34
#define	OP_BSWAP	35
#define	OP_BT		36
#define	OP_BTI		37
#define	OP_BTC		38
#define	OP_BTCI		39
#define	OP_BTR		40
#define	OP_BTRI		41
#define	OP_BTS		42
#define	OP_BTSI		43
#define	OP_CALLF	44
#define	OP_CALLFI	45
#define	OP_CALLN	46
#define	OP_CALLNI	47
#define	OP_CBW		48
#define	OP_CDQ		49
#define	OP_CLC		50
#define	OP_CLD		51
#define	OP_CLI		52
#define	OP_CLTS		53
#define	OP_CMC		54
#define	OP_CMP1IB	55
#define	OP_CMP1IW	56
#define	OP_CMPIB	57
#define	OP_CMPIW	58
#define	OP_CMPISXW	59
#define	OP_CMPB		60
#define	OP_CMPW		61
#define	OP_CMPRB	62
#define	OP_CMPRW	63
#define	OP_CMPSB	64
#define	OP_CMPSD	65
#define	OP_CMPSW	66
#define	OP_CMPXCH8	67
#define	OP_CMPXCH32	68
#define	OP_CMPXCHG8	69
#define	OP_CPUID	70
#define	OP_CWD		71
#define	OP_CWDE		72
#define	OP_DAA		73
#define	OP_DAS		74
#define	OP_DECB		75
#define	OP_DECR		76
#define	OP_DECW		77
#define	OP_DIVB		78
#define	OP_DIVW		79
#define	OP_ENTER	80
#define	OP_F2XM1	81
#define	OP_FABS		82
#define	OP_FADDMD	83
#define	OP_FADDMQ	84
#define	OP_FADDT	85
#define	OP_FADDS	86
#define	OP_FADDPS	87
#define	OP_FADD		88
#define	OP_FADDP	89
#define	OP_FIADDW	90
#define	OP_FIADDD	91
#define	OP_FBLD		92
#define	OP_FBSTP	93
#define	OP_FCHS		94
#define	OP_FCLEX	95
#define	OP_FCOMD	96
#define	OP_FCOMQ	97
#define	OP_FCOMS	98
#define	OP_FCOM		99
#define	OP_FCOMDP	100
#define	OP_FCOMQP	101
#define	OP_FCOMPS	102
#define	OP_FCOMP	103
#define	OP_FCOMPP	104
#define	OP_FCOS		105
#define	OP_FDECSTP	106
#define	OP_FDIVD	107
#define	OP_FDIVQ	108
#define	OP_FDIVT	109
#define	OP_FDIVS	110
#define	OP_FDIV		111
#define	OP_FDIVP	112
#define	OP_FDIVPS	113
#define	OP_FIDIVD	114
#define	OP_FIDIVW	115
#define	OP_FDIVRD	116
#define	OP_FDIVRQ	117
#define	OP_FDIVRT	118
#define	OP_FDIVRS	119
#define	OP_FDIVRPS	120
#define	OP_FDIVR	121
#define	OP_FDIVRP	122
#define	OP_FIDIVRD	123
#define	OP_FIDIVRW	124
#define	OP_FFREE	125
#define	OP_FICOMW	126
#define	OP_FICOMD	127
#define	OP_FICOMPW	128
#define	OP_FICOMPD	129
#define	OP_FILDW	130
#define	OP_FILDD	131
#define	OP_FILDQ	132
#define	OP_FINCSTP	133
#define	OP_FINIT	134
#define	OP_FISTW	135
#define	OP_FISTD	136
#define	OP_FISTPW	137
#define	OP_FISTPD	138
#define	OP_FISTPQ	139
#define	OP_FLDD		140
#define	OP_FLDQ		141
#define	OP_FLDX		142
#define	OP_FLDS		143
#define	OP_FLD1		144
#define	OP_FLDL2T	145
#define	OP_FLDL2E	146
#define	OP_FLDPI	147
#define	OP_FLDLG2	148
#define	OP_FLDLN2	149
#define	OP_FLDZ		150
#define	OP_FLDCW	151
#define	OP_FLDENV	152
#define	OP_FMULW	153
#define	OP_FMULQ	154
#define	OP_FMULT	155
#define	OP_FMULS	156
#define	OP_FMULPS	157
#define	OP_FMUL		158
#define	OP_FMULP	159
#define	OP_FIMULW	160
#define	OP_FIMULQ	161
#define	OP_FNCLEX	162
#define	OP_FNINIT	163
#define	OP_FNOP		164
#define	OP_FNSAVE	165
#define	OP_FNSTCW	166
#define	OP_FNSTENV	167
#define	OP_FNSTSW	168
#define	OP_FNSTSWAX	169
#define	OP_FPATAN	170
#define	OP_FPREM	171
#define	OP_FPREM1	172
#define	OP_FPTAN	173
#define	OP_FRNDINT	174
#define	OP_FRSTOR	175
#define	OP_FSAVE	176
#define	OP_FSCALE	177
#define	OP_FSIN		178
#define	OP_FSINCOS	179
#define	OP_FSQRT	180
#define	OP_FSTCW	181
#define	OP_FSTENV	182
#define	OP_FSTD		183
#define	OP_FSTQ		184
#define	OP_FSTS		185
#define	OP_FSTPD	186
#define	OP_FSTPQ	187
#define	OP_FSTPX	188
#define	OP_FSTPS	189
#define	OP_FSTSW	190
#define	OP_FSTSWAX	191
#define	OP_FSUBD	192
#define	OP_FSUBQ	193
#define	OP_FSUBT	194
#define	OP_FSUBS	195
#define	OP_FSUBPS	196
#define	OP_FSUB		197
#define	OP_FSUBP	198
#define	OP_FISUBD	199
#define	OP_FISUBQ	200
#define	OP_FSUBRD	201
#define	OP_FSUBRQ	202
#define	OP_FSUBRT	203
#define	OP_FSUBRS	204
#define	OP_FSUBRPS	205
#define	OP_FSUBR	206
#define	OP_FSUBRP	207
#define	OP_FISUBRW	208
#define	OP_FISUBRD	209
#define	OP_FTST		210
#define	OP_FUCOMS	211
#define	OP_FUCOM	212
#define	OP_FUCOMPS	213
#define	OP_FUCOMP	214
#define	OP_FUCOMPP	215
#define	OP_FWAIT	216
#define	OP_FXAM		217
#define	OP_FXCHS	218
#define	OP_FXCH		219
#define	OP_FXTRACT	220
#define	OP_FYL2X	221
#define	OP_FYL2XP1	222
#define	OP_HLT		223
#define	OP_IDIVB	224
#define	OP_IDIVW	225
#define	OP_IMUL1B	226
#define	OP_IMUL1W	227
#define	OP_IMUL2	228
#define	OP_IMUL3B	229
#define	OP_IMUL3W	230
#define	OP_INB		231
#define	OP_INIB		232
#define	OP_INIW		233
#define	OP_INW		234
#define	OP_INCB		235
#define	OP_INCR		236
#define	OP_INCW		237
#define	OP_INSB		238
#define	OP_INSW		239
#define	OP_INT		240
#define	OP_INT3		241
#define	OP_INTO		242
#define	OP_INVD		243
#define	OP_INVLPG	244
#define	OP_IRET		245
#define	OP_JA		246
#define	OP_JAN		247
#define	OP_JAE		248
#define	OP_JAEN		249
#define	OP_JB		250
#define	OP_JBN		251
#define	OP_JBE		252
#define	OP_JBEN		253
#define	OP_JC		254
#define	OP_JCN		255
#define	OP_JECXZ	256
#define	OP_JE		257
#define	OP_JEN		258
#define	OP_JG		259
#define	OP_JGN		260
#define	OP_JGE		261
#define	OP_JGEN		262
#define	OP_JL		263
#define	OP_JLN		264
#define	OP_JLE		265
#define	OP_JLEN		266
#define	OP_JNA		267
#define	OP_JNAN		268
#define	OP_JNAE		269
#define	OP_JNAEN	270
#define	OP_JNB		271
#define	OP_JNBN		272
#define	OP_JNBE		273
#define	OP_JNBEN	274
#define	OP_JNC		275
#define	OP_JNCN		276
#define	OP_JNE		277
#define	OP_JNEN		278
#define	OP_JNG		279
#define	OP_JNGN		280
#define	OP_JNGE		281
#define	OP_JNGEN	282
#define	OP_JNL		283
#define	OP_JNLN		284
#define	OP_JNLE		285
#define	OP_JNLEN	286
#define	OP_JNO		287
#define	OP_JNON		288
#define	OP_JNP		289
#define	OP_JNPN		290
#define	OP_JNS		291
#define	OP_JNSN		292
#define	OP_JNZ		293
#define	OP_JNZN		294
#define	OP_JO		295
#define	OP_JON		296
#define	OP_JP		297
#define	OP_JPN		298
#define	OP_JPE		299
#define	OP_JPEN		300
#define	OP_JPO		301
#define	OP_JPON		302
#define	OP_JS		303
#define	OP_JSN		304
#define	OP_JZ		305
#define	OP_JZN		306
#define	OP_JMP		307
#define	OP_JMPN		308
#define	OP_JMPNI	309
#define	OP_JMPF		310
#define	OP_JMPFI	311
#define	OP_LAHF		312
#define	OP_LAR		313
#define	OP_LDS		314
#define	OP_LEA		315
#define	OP_LEAVE	316
#define	OP_LES		317
#define	OP_LFS		318
#define	OP_LGDT		319
#define	OP_LGS		320
#define	OP_LIDT		321
#define	OP_LLDT		322
#define	OP_LMSW		323
#define	OP_LOCK		324
#define	OP_LODSB	325
#define	OP_LODSW	326
#define	OP_LOOP		327
#define	OP_LOOPE	328
#define	OP_LOOPZ	329
#define	OP_LOOPNE	330
#define	OP_LOOPNZ	331
#define	OP_LSL		332
#define	OP_LSS		333
#define	OP_LTR		334
#define	OP_MOVB		335
#define	OP_MOVW		336
#define	OP_MOVRB	337
#define	OP_MOVRW	338
#define	OP_MOVS		339
#define	OP_MOVSR	340
#define	OP_MOV1RB	341
#define	OP_MOV1RW	342
#define	OP_MOV1B	343
#define	OP_MOV1W	344
#define	OP_MOVIRB	345
#define	OP_MOVIRW	346
#define	OP_MOVIB	347
#define	OP_MOVIW	348
#define	OP_MOVCR	349
#define	OP_MOVCRR	350
#define	OP_MOVDR	351
#define	OP_MOVDRR	352
#define	OP_MOVTR	353
#define	OP_MOVTRR	354
#define	OP_MOVSB	355
#define	OP_MOVSW	356
#define	OP_MOVSXB	357
#define	OP_MOVSXW	358
#define	OP_MOVZXB	359
#define	OP_MOVZXW	360
#define	OP_MULB		361
#define	OP_MULW		362
#define	OP_NEGB		363
#define	OP_NEGW		364
#define	OP_NOP		365
#define	OP_NOTB		366
#define	OP_NOTW		367
#define	OP_OR1IB	368
#define	OP_OR1IW	369
#define	OP_ORIB		370
#define	OP_ORIW		371
#define	OP_ORISXW	372
#define	OP_ORB		373
#define	OP_ORW		374
#define	OP_ORRB		375
#define	OP_ORRW		376
#define	OP_OUTB		377
#define	OP_OUTIB	378
#define	OP_OUTIW	379
#define	OP_OUTW		380
#define	OP_OUTSB	381
#define	OP_OUTSW	382
#define	OP_POP		383
#define	OP_POPR		384
#define	OP_POPDS	385
#define	OP_POPES	386
#define	OP_POPFS	387
#define	OP_POPGS	388
#define	OP_POPSS	389
#define	OP_POPAD	390
#define	OP_POPFD	391
#define	OP_PUSH		392
#define	OP_PUSHR	393
#define	OP_PUSHCS	394
#define	OP_PUSHDS	395
#define	OP_PUSHES	396
#define	OP_PUSHFS	397
#define	OP_PUSHGS	398
#define	OP_PUSHIB	399
#define	OP_PUSHIW	400
#define	OP_PUSHSS	401
#define	OP_PUSHAD	402
#define	OP_PUSHFD	403
#define	OP_RCL1B	404
#define	OP_RCLCB	405
#define	OP_RCLIB	406
#define	OP_RCL1W	407
#define	OP_RCLCW	408
#define	OP_RCLIW	409
#define	OP_RCR1B	410
#define	OP_RCRCB	411
#define	OP_RCRIB	412
#define	OP_RCR1W	413
#define	OP_RCRCW	414
#define	OP_RCRIW	415
#define	OP_RDMSR	416
#define	OP_RDTSC	417
#define	OP_REP		418
#define	OP_REPE		419
#define	OP_REPNE	420
#define	OP_REPNZ	421
#define	OP_REPZ		422
#define	OP_RET		423
#define	OP_RETF		424
#define	OP_RETFN	425
#define	OP_RETN		426
#define	OP_ROL1B	427
#define	OP_ROLCB	428
#define	OP_ROLIB	429
#define	OP_ROL1W	430
#define	OP_ROLCW	431
#define	OP_ROLIW	432
#define	OP_ROR1B	433
#define	OP_RORCB	434
#define	OP_RORIB	435
#define	OP_ROR1W	436
#define	OP_RORCW	437
#define	OP_RORIW	438
#define	OP_RSM		439
#define	OP_SAHF		440
#define	OP_SAL1B	441
#define	OP_SALCB	442
#define	OP_SALIB	443
#define	OP_SAL1W	444
#define	OP_SALCW	445
#define	OP_SALIW	446
#define	OP_SAR1B	447
#define	OP_SARCB	448
#define	OP_SARIB	449
#define	OP_SAR1W	450
#define	OP_SARCW	451
#define	OP_SARIW	452
#define	OP_SBB1IB	453
#define	OP_SBB1IW	454
#define	OP_SBBIB	455
#define	OP_SBBIW	456
#define	OP_SBBISXW	457
#define	OP_SBBB		458
#define	OP_SBBW		459
#define	OP_SBBRB	460
#define	OP_SBBRW	461
#define	OP_SCASB	462
#define	OP_SCASW	463
#define	OP_SETA		464
#define	OP_SETAE	465
#define	OP_SETB		466
#define	OP_SETBE	467
#define	OP_SETC		468
#define	OP_SETE		469
#define	OP_SETG		470
#define	OP_SETGE	471
#define	OP_SETL		472
#define	OP_SETLE	473
#define	OP_SETNA	474
#define	OP_SETNAE	475
#define	OP_SETNB	476
#define	OP_SETNBE	477
#define	OP_SETNC	478
#define	OP_SETNE	479
#define	OP_SETNG	480
#define	OP_SETNGE	481
#define	OP_SETNL	482
#define	OP_SETNLE	483
#define	OP_SETNO	484
#define	OP_SETNP	485
#define	OP_SETNS	486
#define	OP_SETNZ	487
#define	OP_SETO		488
#define	OP_SETP		489
#define	OP_SETPE	490
#define	OP_SETPO	491
#define	OP_SETS		492
#define	OP_SETZ		493
#define	OP_SGDT		494
#define	OP_SHL1B	495
#define	OP_SHLCB	496
#define	OP_SHLIB	497
#define	OP_SHL1W	498
#define	OP_SHLCW	499
#define	OP_SHLIW	500
#define	OP_SHLD		501
#define	OP_SHLDC	502
#define	OP_SHR1B	503
#define	OP_SHRCB	504
#define	OP_SHRIB	505
#define	OP_SHR1W	506
#define	OP_SHRCW	507
#define	OP_SHRIW	508
#define	OP_SHRD		509
#define	OP_SHRDC	510
#define	OP_SIDT		511
#define	OP_SLDT		512
#define	OP_SMSW		513
#define	OP_STC		514
#define	OP_STD		515
#define	OP_STI		516
#define	OP_STOSB	517
#define	OP_STOSW	518
#define	OP_STR		519
#define	OP_SUB1IB	520
#define	OP_SUB1IW	521
#define	OP_SUBIB	522
#define	OP_SUBIW	523
#define	OP_SUBISXW	524
#define	OP_SUBB		525
#define	OP_SUBW		526
#define	OP_SUBRB	527
#define	OP_SUBRW	528
#define	OP_TEST1IB	529
#define	OP_TEST1IW	530
#define	OP_TESTIB	531
#define	OP_TESTIW	532
#define	OP_TESTB	533
#define	OP_TESTW	534
#define	OP_TESTRB	535
#define	OP_TESTRW	536
#define	OP_VERR		537
#define	OP_VERW		538
#define	OP_WAIT		539
#define	OP_WBINVD	540
#define	OP_WRMSR	541
#define	OP_XADDB	542
#define	OP_XADDW	543
#define	OP_XCHGR	544
#define	OP_XCHGB	545
#define	OP_XCHGBR	546
#define	OP_XCHGW	547
#define	OP_XCHGWR	548
#define	OP_XLATB	549
#define	OP_XOR1IB	550
#define	OP_XOR1IW	551
#define	OP_XORIB	552
#define	OP_XORIW	553
#define	OP_XORISXW	554
#define	OP_XORB		555
#define	OP_XORW		556
#define	OP_XORRB	557
#define	OP_XORRW	558

/*
 * Pseudo operand symbols
 *
 */

#define	RA_N		0x100
#define	RA_R8		0x101
#define	RA_R16		0x102
#define	RA_R32		0x103
#define	RA_S16		0x104
#define	RA_CR		0x105
#define	RA_DR		0x106
#define	RA_TR		0x107
#define	RA_RF		0x108
#define	RA_RT		0x109
#define	RA_IMM8		0x10a
#define	RA_IMM16	0x10b
#define	RA_IMM32	0x10c
#define	RA_MOFFS8	0x10d
#define	RA_MOFFS32	0x10e
#define	RA_RM8		0x10f
#define	RA_RM16		0x110
#define	RA_RM32		0x111
#define	RA_RM64		0x112
#define	RA_REL8		0x113
#define	RA_REL32	0x114
#define	RA_M8		0x115
#define	RA_M16		0x116
#define	RA_M32		0x117
#define	RA_M16_32	0x118
#define	RA_M16_AND_32	0x119
#define	RA_M64		0x11a
#define	RA_PTR48	0x11b
#define	RA_M32REAL	0x11c
#define	RA_M64REAL	0x11d
#define	RA_M80REAL	0x11e
#define	RA_M80DEC	0x11f

/*
 * Actual operand symbols
 *
 */

#define	RA_I_EAX		0x00
#define	RA_I_ECX		0x01
#define	RA_I_EDX		0x02
#define	RA_I_EBX		0x03
#define	RA_SIB			0x04
#define	RA_DISP32		0x05
#define	RA_I_ESI		0x06
#define	RA_I_EDI		0x07
#define	RA_I_EAX_DISP8		0x40
#define	RA_I_ECX_DISP8		0x41
#define	RA_I_EDX_DISP8		0x42
#define	RA_I_EBX_DISP8		0x43
#define	RA_I_SIB_DISP8		0x44
#define	RA_I_EBP_DISP8		0x45
#define	RA_I_ESI_DISP8		0x46
#define	RA_I_EDI_DISP8		0x47
#define	RA_I_EAX_DISP32		0x80
#define	RA_I_ECX_DISP32		0x81
#define	RA_I_EDX_DISP32		0x82
#define	RA_I_EBX_DISP32		0x83
#define	RA_I_SIB_DISP32		0x84
#define	RA_I_EBP_DISP32		0x85
#define	RA_I_ESI_DISP32		0x86
#define	RA_I_EDI_DISP32		0x87

/*
 * Variant symbols
 *
 */

#define	VA_SLASH0	0
#define	VA_SLASH1	1
#define	VA_SLASH2	2
#define	VA_SLASH3	3
#define	VA_SLASH4	4
#define	VA_SLASH5	5
#define	VA_SLASH6	6
#define	VA_SLASH7	7
#define	VA_S		8
#define	VA_REG		9
#define	VA_PLUS_R8	10
#define	VA_PLUS_R32	11
#define	VA_PLUS_I	12
#define	VA_CREG		13
#define	VA_DREG		14
#define	VA_TREG		15

/*
 * End of file: opcode.h
 *
 */
