[FFmpeg-cvslog] r23955 - trunk/configure

Måns Rullgård mans
Sat Jul 3 15:59:19 CEST 2010

Carl Eugen Hoyos <cehoyos at ag.or.at> writes:

> mru <subversion <at> mplayerhq.hu> writes:
>> Modified: trunk/configure
>> ==============================================================================
>> --- trunk/configure	Fri Jul  2 01:21:33 2010	(r23954)
>> +++ trunk/configure	Fri Jul  2 01:21:36 2010	(r23955)
>> @@ -2346,7 +2346,7 @@ elif enabled ppc; then
>>      enable local_aligned_8 local_aligned_16
>> -    check_asm dcbzl     '"dcbzl 0, 1"'
>> +    check_asm dcbzl     '"dcbzl 0, %0" :: "r"(0)'
> This enables dcbzl on a PowerPC G4. (make test passes)
> Is this correct? I've read that the instruction was added for PPC 970 (G5).
> MPlayer only enables dcbzl for 970. Should it also be enabled for 7xxx?

The dcbz instruction clears one L2 cache line, whatever size this is.
This is usually 32 bytes on 32-bit processors and 128 bytes on 64-bit
ones.  The 970 has a flag in a control register (HID5[56]) which if
set causes dcbz to operate on 32 bytes instead of 128.  This is
provided for compatibility with old software assuming a 32-byte clear,
and is much slower than clearing the native size (the cache line must
be fetched from memory if not resident in cache).  MacOSX is the only
OS which sets this bit.

The encoding of the dcbz instruction contains a few reserved bits
which should normally be set to zero.  On the 970, if one of these
bits (bit 10) is set, the value of HID5[56] is ignored and a 128-byte
clear is always performed.  Other processors ignore this bit.  The GNU
assembler (but not the disassembler, curiously) provides the
unofficial mnemonic dcbzl for setting this bit.

The configure test exists only to check whether the assembler supports
the extended mnemonic.

M?ns Rullg?rd
mans at mansr.com

More information about the ffmpeg-cvslog mailing list