[FFmpeg-devel] [PATCH] Add check for Athlon64 and similar AMD processors with slow SSE2.
Justin Ruggles
justin.ruggles
Thu Feb 3 00:47:30 CET 2011
On 02/02/2011 06:40 PM, M?ns Rullg?rd wrote:
> Justin Ruggles <justin.ruggles at gmail.com> writes:
>
>> ---
>> This was ported from x264 so we need permission to relicense from
>> Loren, Jason, or whoever added this particular check in x264.
>
> I doubt there's much copyright on checking a single bit, but it's
> always nice to ask first.
>
>> Once this is added, I can go through libavcodec/x86 and test various
>> SSE2 functions on my Athlon64 to check if they're faster with other
>> versions. We also have a couple functions now that are hackishly
>> handled by disabling SSE2 for all AMD processors by checking the
>> 3DNow flag. Those are the ones I'll test first.
>>
>> libavutil/x86/cpu.c | 7 +++++++
>> 1 files changed, 7 insertions(+), 0 deletions(-)
>>
>>
>> diff --git a/libavutil/x86/cpu.c b/libavutil/x86/cpu.c
>> index 4b6cb0d..7e847c1 100644
>> --- a/libavutil/x86/cpu.c
>> +++ b/libavutil/x86/cpu.c
>> @@ -109,6 +109,13 @@ int ff_get_cpu_flags_x86(void)
>> rval |= AV_CPU_FLAG_MMX;
>> if (ext_caps & (1<<22))
>> rval |= AV_CPU_FLAG_MMX2;
>> +
>> + /* Allow for selectively disabling SSE2 functions on AMD processors
>> + with SSE2 support but not SSE4a. This includes Athlon64,
>> + some Opteron, and some Sempron processors. MMX, SSE, or 3DNow! are
>> + faster than SSE2 often enough to utilize this special-case flag. */
>> + if (rval & AV_CPU_FLAG_SSE2 && !(ecx & 0x00000040))
>> + rval |= AV_CPU_FLAG_SSE2SLOW;
>> }
>>
>> if (!strncmp(vendor.c, "GenuineIntel", 12) &&
>
> Why does this code only affect AMD processors? I guess it has
> something to do with those magic bit checks before it...
That is a guess on my part. I don't know much about cpuid. I assume we
wouldn't check for 3DNow on a non-AMD processor, but that may be an
incorrect assumption. x264 also checks the AMD vendor string in their
equivalent of this whole section, but FFmpeg does not.
-Justin
More information about the ffmpeg-devel
mailing list