Wednesday, February 1, 2017

SIMD for classic Amigas

As you all of course know by now, Sonnet cards are rather hard to be found. Even more rare is to find a Sonnet Crescendo 7200 G4. There were a few for sale when I started this project over 2 years ago, but they wouldn't ship to Europe. Since then, it has dried up, even for the G3s, on the various market sites.

A good friend of mine happened to have bought one....maybe 6 months ago. He lives in Germany. While I was in the neighborhood I could setup and test the G4 card. The computer used was a busted up A3000 with a Mediator and a Voodoo3. Also in the picture you can see a CSPPC:

The CSPPC makes it impossible to close the A3000, as the cooler of the 060 was too high. So we set up the system in a very unconventional way :-) It was running a bare OS3.1. 

As the biggest difference between G3 and G4 is AltiVec (I'm not certain about number of pipelines and FPU speed) which is a so called SIMD instruction set which speeds up certain calculations, the first program run was the dnetc program. It supports AltiVec, or so I thought:

As you can see in the above picture, no speedup or AltiVec cores chosen. This was due to two issues. One, the sonnet.library needs to activate the AltiVec stuff when available. And two, dnetc for WarpOS does not have AltiVec compiled in it. So after a bit of work I added AltiVec support to sonnet.library:

Here you can see my system with the G4 card. GetInfo recognizes the card correctly. In the window on the left you see part of the AltiVec support in sonnet.library. It's the loading of the various AltiVec registers after a task switch (when AltiVec is detected (PSL_VEC)).

As AltiVec programs for the classic Amiga are even more rare (WarpOS does not support it and there are 0 (zero) programs which use it), I wrote a small program to test if it works and that seems ok.

Next step would maybe be to port some MPEG-1 player. Or maybe you guys have some AltiVec sources lying around I could test? Much appreciated :-)