[comp.sys.transputer] move2d on t800

braner@TCGOULD.TN.CORNELL.EDU (Moshe Braner) (02/21/90)

It dawned on me all of a sudden that the t800 move2d instruction
could be used for vector math scatter/gather.  Is that true?
How fast is it in that role, and as compared with simple pure C
code?  Thanks.
- Moshe

ccplumb@lion.waterloo.edu (Colin Plumb) (03/07/90)

In article <9002202020.AA25105@tcgould.TN.CORNELL.EDU> braner@TCGOULD.TN.CORNELL.EDU (Moshe Braner) writes:
>It dawned on me all of a sudden that the t800 move2d instruction
>could be used for vector math scatter/gather.  Is that true?
>How fast is it in that role, and as compared with simple pure C
>code?  Thanks.

Well, it can be used for scatter/gather.  I once had an application for it
filling memory from a byte-wide I/O port.  Yeah, thought I, just use a line
length of 1 byte, a source stride of 0, and a destination stride of 1.

Unfortunately, move2d has a per-line overhead of 23 cycles.  This was slower
than a software loop.  Ick.  Within the lines, it saturates the bus, just
like move.

But if your vector length is long or run-time variable and you don't want
to do the compile-custom-bitblt-code trick, I'd think it would work well.
-- 
	-Colin