[MPlayer-dev-eng] shared liba52 and mm_accel macros

Guillaume Poirier gpoirier at mplayerhq.hu
Mon Apr 2 11:49:58 CEST 2007


Hi,

Reimar Döffinger wrote:
> Hello,
> [...]
> On Mon, Apr 02, 2007 at 11:33:17AM +1000, Finn Thain wrote:

>>I had no idea that runtime detection was so difficult. As a Gentoo user, I 
>>compile everything tuned to my CPU. But I don't know how the binary 
>>distros handle altivec and all the other optimisations on other 
>>architectures. Maybe the API originally came from closed-source code...
> 
> 
> AFAIK only Altivec is so problematic, and actually only Altivec on
> Linux, OSX seems to have a special syscall to check for it IIRC.

Yes!

For what it's worth, here's what's implemented in x264 to detect
Altivec capabilities on OSX:

uint32_t x264_cpu_detect( void )
{
    /* Thank you VLC */
    uint32_t cpu = 0;
    int      selectors[2] = { CTL_HW, HW_VECTORUNIT };
    int      has_altivec = 0;
    size_t   length = sizeof( has_altivec );
    int      error = sysctl( selectors, 2, &has_altivec, &length,
NULL, 0 );

    if( error == 0 && has_altivec != 0 )
    {
        cpu |= X264_CPU_ALTIVEC;
    }

    return cpu;
}




on Linux, it's much more hackish (trying to execute an altivec
instruction and trap SIGILL if it raises an exception.

Guillaume



More information about the MPlayer-dev-eng mailing list