[openbeos] Re: app_server: MMX/SSE help wanted

  • From: Christian Packmann <Christian.Packmann@xxxxxx>
  • To: openbeos@xxxxxxxxxxxxx
  • Date: Wed, 11 Aug 2004 18:01:23 +0200

On 2004-08-11 17:19:45 [+0200], Scott Donaldson wrote:

> What about creating a set of intrinsics for the SIMD operations, that way 
> SIMD could be used in the C(++) and hide the processor specifics until 
> compile time. Also that way you could use the operations transparently 
> even if the CPU doesn't have support for a specific instruction. Cross 
> platform SIMD optimization would become more accessible without delving 
> into processor specific code.

No way, IMHO. There are intrinsics for AltiVec, and these work pretty well 
AFAIK; but that's because the C++ support was part of the AltiVec design. 
And AltiVec isn't troubled with the diversity of x86 SIMD, I think the 
AltiVec command set hasn't changed since the first 7400.

On x86 we have both 64bit and 128bit datatypes, which require different 
code (different alignment issues, loop sizes, etc.). Then we have several 
command set 'standards': MMX, Extended MMX, 3DNow!, 3DNow! DSP Extensions, 
SSE, SSE2; 3DNow! Professional is just a SSE clone, luckily enough. Oh, and 
on x86/64 we suddenly have 16 128bit registers, but only 8 64bit registers. 

I don't see how we could design intrinsics for this mess in the scope of 
Haiku.

Bye,
Chris

Other related posts: