Re: [linux-audio-dev] MMX, SSE, SSE2, 3DNOW

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: Re: [linux-audio-dev] MMX, SSE, SSE2, 3DNOW
From: Frank Neumann (Frank.Neumann_AT_st.com)
Date: Mon Feb 18 2002 - 18:34:19 EET


Hi,
Steve wrote:

> > I also think the plugin is the one who has to determine what exact CPU
> > type it's running on and whether or not to activate optimized functions
> > for MMX/SSE/3Dnow/AltiVec/whatever.
>
> > Disadvantages (harmless, IMHO):
>
> You've all forgotten one, sane people don't had generate SIMD
> instructions, they let a vectorising compiler do it for them, and the
> compiler doesn't understand LADSPA, so won't know where to put the
> conditionals.

Ok, let's just assume for a second we're all not quite sane around here,
ok? :-) I was in fact thinking of developers hand-crafting optimized
versions of their run() or run_adding() functions, using the often-seen
__asm__ __volatile {...} construct. I mean, there must be a reason why
people do this in the Linux video area a lot - all of those RGB<->YCbCr
conversion macros, optimized memcpy(), optimized fDCT/iDCT functions etc
- I can imagine still today humans can optimize code better than
compilers can do. Ok, people might say those developers are nuts, but if
it's about squeezing the last few percent of power out of a CPU - why
not?

Maybe we should try the classic approach and ask ourselves what "them
over there in the commercial world" do - like, VST soft synths and
effect plugins, how are they written? I would guess they also do manual
assembly optimization of some algorithms. As a sidenote, I know
first-hand that when our company was still into the PC/Windows DVD
player software market, some of our engineers really put a LOT of work
into optimizing some algorithms in MMX (which is already 2 - 3 years ago
by now).

> Also, its not that simple. You need to support given instruction sets, and
> combinations of them - which turns out to be a lot of possible run()
> functions.

Ok, this is an argument I have to accept because I don't know enough
about the matter. I would have thought there's basically ISSE (Intel) or
3Dnow (AMD), at least on the x86 platform. MMX is probably out of the
game for us because it's fixed-point, right?

Frank


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Mon Feb 18 2002 - 18:27:40 EET