ack/util/ncgg
George Koehler 9db305b338 Enable the Hall check again, and get powerpc to pass it.
Upon enabling the check, mach/powerpc/ncg/table fails to build as ncgg
gives many errors of "Previous rule impossible on empty stack".  David
Given reported this problem in 2013:
  https://sourceforge.net/p/tack/mailman/message/30814694/

Commit c93cb69 commented out the error in util/ncgg/cgg.y to disable
the Hall check.  This commit enables it again.  In ncgg, the Hall
check is checking that a rule is possible with an empty fake stack.
It would be possible if ncg can coerce the values from the real stack
to the fake stack.  The powerpc table defined coercions from STACK to
{FS, %a} and {FD, %a}, but the Hall check didn't understand the
coercions and rejected each rule "with FS" or "with FD".

This commit removes the FS and FD tokens and adds a new group of FSREG
registers for single-precision floats, while keeping FREG registers
for double precision.  The registers overlap, with each FSREG
containing one FREG, because it is the same register in PowerPC
hardware.  FS tokens become FSREG registers and FD tokens become FREG
registers.  The Hall check understands the coercions from STACK to
FSREG and FREG.  The idea to define separate but overlapping registers
comes from the PDP-11 table (mach/pdp/ncg/table).

This commit also removes F0 from the FREG group.  This is my attempt
to keep F0 off the fake stack, because one of the stacking rules uses
F0 as a scratch register (FSCRATCH).
2016-09-18 15:08:55 -04:00
..
assert.h Header --> Id 1994-06-24 11:31:16 +00:00
build.lua Move util/data into modules/src/em_data, for consistency with the other 2016-08-14 14:09:38 +02:00
cgg.y Enable the Hall check again, and get powerpc to pass it. 2016-09-18 15:08:55 -04:00
coerc.c Check in incomplete Linux PowerPC and M68K work. 2013-05-08 00:48:48 +01:00
cost.h Header --> Id 1994-06-24 11:31:16 +00:00
cvtkeywords yacc, ncgg; platform ncg builds now. 2016-07-26 23:35:30 +02:00
emlookup.c Change fatal() and error() to use varargs. 2013-05-10 12:04:21 +01:00
error.c Change fatal() and error() to use varargs. 2013-05-10 12:04:21 +01:00
expr.c Rationalised use of #includes to be more standards-compliant. 2006-07-18 17:18:42 +00:00
expr.h Header --> Id 1994-06-24 11:31:16 +00:00
extern.h Merge from default. 2016-09-15 22:59:01 +02:00
hall.c Change fatal() and error() to use varargs. 2013-05-10 12:04:21 +01:00
instruct.c Header --> Id 1994-06-24 11:31:16 +00:00
instruct.h Header --> Id 1994-06-24 11:31:16 +00:00
iocc.c Rationalised use of #includes to be more standards-compliant. 2006-07-18 17:18:42 +00:00
iocc.h Header --> Id 1994-06-24 11:31:16 +00:00
keywords Check in incomplete Linux PowerPC and M68K work. 2013-05-08 00:48:48 +01:00
lookup.c Change fatal() and error() to use varargs. 2013-05-10 12:04:21 +01:00
lookup.h Header --> Id 1994-06-24 11:31:16 +00:00
main.c Change fatal() and error() to use varargs. 2013-05-10 12:04:21 +01:00
ncgg.6 Header --> Id 1994-06-24 11:31:16 +00:00
output.c Check in incomplete Linux PowerPC and M68K work. 2013-05-08 00:48:48 +01:00
param.h In ncgg, increase MAXREGS from 80 to 200. 2016-09-18 14:37:42 -04:00
property.h Header --> Id 1994-06-24 11:31:16 +00:00
pseudo.h Check in incomplete Linux PowerPC and M68K work. 2013-05-08 00:48:48 +01:00
reg.h Header --> Id 1994-06-24 11:31:16 +00:00
regvar.h Header --> Id 1994-06-24 11:31:16 +00:00
scan.l First milestone of replacing the build system. 2013-05-12 20:45:55 +01:00
set.c Header --> Id 1994-06-24 11:31:16 +00:00
set.h Header --> Id 1994-06-24 11:31:16 +00:00
strlookup.c Change fatal() and error() to use varargs. 2013-05-10 12:04:21 +01:00
subr.c Removed a really unpleasant test for whether a pointer points at a string 2006-07-23 19:38:13 +00:00
token.h Header --> Id 1994-06-24 11:31:16 +00:00
var.c Change fatal() and error() to use varargs. 2013-05-10 12:04:21 +01:00
varinfo.h Header --> Id 1994-06-24 11:31:16 +00:00