c/n1/i386/tables/Read_me 1/5/93

This file briefly describes the i386 compiler code tables.
The tables consist of a header and 22 files.

Header:
	prefac.f

Casts, conversions, fixups, leaf nodes:
	leaves.t	CONVERT CAST FIXUP LEAF

Unary ops:
@++,@--	aft.t		INCAFT DECAFT
++@,--@	bef.t		INCBEF DECBEF
-@	neg.t		NEG
!	not.t		COM

Ordinary binary ops:
+	add.t		ADD
&	and.t		AND
/	div.t		DIV
*	mul.t		MUL
|,^	orxor.t		OR XOR
rels.	relop.t		EQ NE GT GE LT LE ULT ULE UGT UGE
%	rem.t		REM
<<,>>	shift.t		SHL SHR
-	sub.t		SUB

Assigned binary ops:
+=	aadd.t		AADD
/=	adiv.t		ADIV
&=,|=,^= alogic.t	AAND AOR AXOR
*=	amul.t		AMUL
%=	arem.t		AREM
<<=,>>=	ashift.t	ASHL ASHR
=	assign.t	ASSIGN
-=	asub.t		ASUB

Each code table consists of a list of code patterns (cf. PAT in h/cc1.h).
The preface defines abbreviations used in the tables,
i.e. common combinations of patterns.
Some tables implement several similar operations
(e.g. assigned [and, or, xor] in alogic.t).
The [OP0] and [OP1] macros select appropriate opcodes from
n1/i386/table1.c (e.g. ZAND, ZOR, or ZXOR).
The [TL], [TR] and [TN] macros, implemented by maptype() and mappfx()
(see n1/out.c and n1/i386/outmch.c)
simplify the code tables by allowing a single entry to generate
different code for signed/unsigned or dword/word/byte variants
of the same code sequence.

The machine-dependent pattern flags PNDP, PIEEE, PDECVAX and PBYTE
are defined in h/i386/cc1mch.h.
PBYTE indicates that a pattern requires a byte register,
i.e. EAX|EBX|ECX|EDX.
PNDP, PIEEE and PDECVAX are pattern flags for 80x87 hardware floating point,
IEEE-format software fp, and DECVAX-format software fp, respectively.
These flags are allow a single compiler executable to specify
the desired fp at compile time, with several fp options built
into a single set of cooked code tables; cf. n1/i386/gen1.c/coderinit().
