head     1.2;
branch   ;
access   ;
symbols  ;
locks    bin:1.2; strict;
comment  @# @;


1.2
date     93.01.22.09.26.50;  author bin;  state Exp;
branches ;
next     1.1;

1.1
date     92.10.05.11.52.36;  author bin;  state Exp;
branches ;
next     ;


desc
@@


1.2
log
@steve: hand delivered NPD updates
@
text
@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().
@


1.1
log
@Initial revision
@
text
@d1 1
a1 1
c/n1/i386/tables/Read_me 2/7/92
d53 4
a56 3
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,
d58 3
a60 4
These flags are currently unnecessary because of the #ifdefs in the
code tables; they are there to allow future versions of the compiler
to specify desired fp at compile time, with several fp options built
into a single set of cooked code tables.
@
