F-CPU Gcc 3.2 port
Martin Devera devik@cdi.cz

This archive has two parts. There is gcc32fcpu_conf.diff which
must be applied in gcc main directory like:

patch -p0 -i gcc32fcpu_conf.diff

It adds fcpu target to gcc configuration. It can be done only
once and then for any new fcpu tarball just skip this part.

The second part is in gcc/config/fcpu directory. Whole directory
is contained in this tarball.
It consists of machine description and all relevant code. Part
of machine description is generated by:

m4 fcpu-arith.m4 > fcpu-arith.md

Don't forget it if you change fcpu-arith.m4.

Status as of 2003-01-10:
  Better code, seems to be able to go thru MR 1.0.1 AS. He has
  bugs in logic defs so I killed size flags for now.
  Constant loading with loadcons[x] seems pretty good now.
  We have sometimes problems with offset overflows during 
  frame pointer elimintion.
  loadcons of symbols needs to be finished (splitted).
  I no longer expect that results are zero-extended and thus
  we will need explicit patterns to kill some zero extensions.
  Also I use LSB test in conditional jumps and moves extensively.

Status as of 2002-12-29:
  Compiler is able to compile combine.c (part of gcc) and the code
  seems good. Not tested however. It generates too much truncate
  and extend code - it has to be eliminated.
  Mux insn is wrong - I included it only to test whether gcc can
  emit it - yes it can. Because it uses r1^1 semantic it needs
  to be rewritten using splitter.
  Stack frame should be valid (seems so at the first sight).
  DBX aka stabs debugging is working. 
  Constant loading is not finished - splitter should split loadcons.64
  to smaller ones, special code needed to handle -1 constant. 
  Still no way to distinguish loadaddr and loadaddrd.
  Too many registers often holds memory pointer to the same cache line,
  gcc is not good for this fcpu gymnastic :(
  Bitops used for constant loading only just now. We need patterns for
  SHIFT+AND/OR/XOR.
  All logical ops are used (andn, nor ...) and works well. Gcc uses
  "add" on memory pointers often. It doesn't seem that we can go
  over it.
  Jump address loads are not combined .. not sure why but I don't like it.

