[FFmpeg-devel] [RFC] clobbers for XMM registers
Alexander Strange
astrange
Fri Oct 1 02:49:04 CEST 2010
On Sep 30, 2010, at 8:31 PM, Michael Niedermayer wrote:
> On Fri, Oct 01, 2010 at 12:42:33AM +0100, M?ns Rullg?rd wrote:
>> Michael Niedermayer <michaelni at gmx.at> writes:
>>
>>> On Thu, Sep 30, 2010 at 04:02:00PM -0300, Ramiro Polla wrote:
>>>> 2010/9/30 M?ns Rullg?rd <mans at mansr.com>:
>>>>> Ramiro Polla <ramiro.polla at gmail.com> writes:
>>>>>> 2010/9/30 M?ns Rullg?rd <mans at mansr.com>:
>>>>>>> Ramiro Polla <ramiro.polla at gmail.com> writes:
>>>>>>>> What about
>>>>>>>> #if HAVE_XMM_CLOBBERS
>>>>>>>> # define XMM_CLOBBERS(a, ...) __VA_ARGS__
>>>>>>>> #else
>>>>>>>> # define XMM_CLOBBERS(a, ...) a
>>>>>>>> #endif
>>>>>>>>
>>>>>>>> to be used as in lavc/x86/fft_sse.c:
>>>>>>>> :"+r"(j), "+r"(k)
>>>>>>>> :"r"(output+n4), "r"(output+n4*3),
>>>>>>>> "m"(*m1m1m1m1)
>>>>>>>> XMM_CLOBBERS(, : "%xmm0", "%xmm1", "%xmm7")
>>>>>>>> );
>>>>>>>
>>>>>>> That falls over if any other clobbers are needed.
>>>>>>
>>>>>> If any other clobbers are needed they could be written before the macro.
>>>>>
>>>>> That won't work.
>>>>
>>>> : "eax" XMM_CLOBBERS(,, "%xmm0", "%xmm1", "%xmm7")
>>>>
>>>> But I agree having "cc" as dummy is simpler.
>>>
>>> it may be simpler but your variant is more correct
>>
>> If "cc" is a no-op neither variant is more correct. Mine is a hell of
>> a lot prettier though.
>
> unless "cc" is documented to be a no-op on x86 we should not assume it is
svn blame on gcc says it hasn't changed since x86 was rewritten in 1999.
(the code in question being ix86_md_asm_clobbers(), in a file too big to display in viewcvs)
I hardly see how it could change now since it would break all users of asm.
More information about the ffmpeg-devel
mailing list