[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[f-cpu] Yet Another Upload



I'm going to upload fcpu-mr-20030418.tar.gz to
http://f-cpu.seul.org/~f-cpu/new/ tonight.

Highlights:

    * EU_AFU is included.

    * EU_ASU now supports twenty-four (24) operations, not counting
      SIMD, chunk sizes or immediate instructions:

        add     a + b                   modulo 2**n
        addc    a + b                   with carry-out
        avg     (a + b) / 2             unsigned
        avgs    (a + b) / 2             signed
        addus   saturate(a + b)         unsigned
        addss   saturate(a + b)         signed

        add1    a + b + 1               modulo 2**n
        addc1   a + b + 1               with carry-out
        avg1    (a + b + 1) / 2         unsigned
        avgs1   (a + b + 1) / 2         signed
        addus1  saturate(a + b + 1)     unsigned
        addss1  saturate(a + b + 1)     signed

        sub     a - b                   modulo 2**n
        subb    a - b                   with borrow-out
        diff    (a - b) / 2             unsigned
        diffs   (a - b) / 2             signed
        subus   saturate(a - b)         unsigned
        subss   saturate(a - b)         signed

        sub1    a - b - 1               modulo 2**n
        subb1   a - b - 1               with borrow-out
        diff1   (a - b - 1) / 2         unsigned
        diffs1  (a - b - 1) / 2         signed
        subus1  saturate(a - b - 1)     unsigned
        subss1  saturate(a - b - 1)     signed

	  Carry and borrow outputs use the numeric values 0 and 1.
	  I'm currently considering additional `widening' addw/subw
	  instructions that will provide a `correct' value in the
	  upper half, as if the operands had been sign-extended and
	  added/subtracted in a wider mode.

    * EU_SHL will now scale up to 2048 bits, and I finally implemented
      the widen instruction.  Shift, rotate, bitrev, byterev and widen
      operate on individual chunks while other bytewise instructions
      (mix, expand, permute, sdup and cshift) may transfer data from
      one chunk to another.  Word width is limited to 2048 bits because
      permute/sdup can only address up to 256 8-bit chunks internally.
      Other operations will work with wider words, too.

    * package Generic_Adder now includes the new carry-select adder
      I'm using everywhere.  The carry-increment adder should not
      be used any longer.

As usual, packages and units have been tested with the included
testbenches.

Synthesis reports welcome.  BTW: You may also try to synthesize 128-bit
or 256-bit versions of individual units (except IMul64 which doesn't
auto-scale yet).

-- 
 Michael "Tired" Riepe <Michael.Riepe@stud.uni-hannover.de>
 "All I wanna do is have a little fun before I die"
*************************************************************
To unsubscribe, send an e-mail to majordomo@seul.org with
unsubscribe f-cpu       in the body. http://f-cpu.seul.org/