[vorbis-dev] vorbis on playstation 2

David Etherton etherton at rockstarsandiego.com
Thu Feb 6 19:32:12 PST 2003

> > ogg_int32_t MULT31x(ogg_int32_t x, ogg_int32_t y) {
> >   return ((ogg_int32_t) (((ogg_int64_t)x * y) >> 32) << 1);

> static inline ogg_int32_t MULT31(ogg_int32_t x, ogg_int32_t y) {
>   return MULT32(x,y)<<1;
> }

Your MULT31 is the same as my MULT31x, so we're on the same page, I'm just
not making myself very clear.  I think I'd been experimenting with different
ways of doing the MULT31 (I was hoping the compiler would do a better job of
getting LO/HI into a 64bit register).  I first looked at Tremor a few weeks
ago and then got sidetracked (we're trying to get a game out the door) and
forgotten I'd been messing with it.  I think I had been trying to be sneaky
by getting rid of a shift, but that obviously failed spectacularly.

> If your CPU has multiply-and-accumulate insns, you might consider
> the XPROD31 and XPROD32 functions.  See the ARM assembly version in
> asm_arm.h for example.

That was going to be my first attack until you pointed out the cache issues.
I had run an experiment where I took out half of the XPROD* calls in
mdct_backware and the cycles only went down by 50M.


--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'vorbis-dev-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.

More information about the Vorbis-dev mailing list