[FFmpeg-devel] [PATCH] MMX for Win64

Michael Niedermayer michaelni
Tue May 6 22:53:15 CEST 2008


On Tue, May 06, 2008 at 07:56:26AM +0100, Ramiro Polla wrote:
> matthieu castet wrote:
>> Reimar D?ffinger wrote:
>>> On Sun, May 04, 2008 at 05:05:47PM +0100, M?ns Rullg?rd wrote:
>>>> "Zuxy Meng" <zuxy.meng at gmail.com> writes:
>>>>> 2008/5/4 M?ns Rullg?rd <mans at mansr.com>:
>>>>>> It's wrong to use size_t here.  There is no guarantee that size_t
>>>>>> is at all suitable.  For instance, it could legally be 64 bits on a
>>>>>> 32-bit system, or 32 bits on a 64-bit system.
>>>>> What about intptr_t?
>>>> That's guaranteed to be at least as wide as a pointer.  Since we're
>>>> not dealing with pointers here, it is incorrect to use it.  It is
>>>> possible to have 32-bit pointers and 64-bit long.
>>> What is required here (and what long is "misused" for) is native
>>> register size. And since all of the modified code is x86 specific,
>>> pointers and native register contents are not really distinguishable.
>>> Still, the proposed patch just hacks a few places and is not a proper
>>> solution.
>> And since there already conditional code in libavutil/x86_cpu.h for X86_32 
>> and X86_64, it could be trivial to define here the type we want.
>
> Attached patch passes regression tests on mingw32 and mingw64.
>
> Ramiro Polla

> Index: libavutil/x86_cpu.h
> ===================================================================
> --- libavutil/x86_cpu.h	(revision 13058)
> +++ libavutil/x86_cpu.h	(working copy)
> @@ -31,6 +31,7 @@
>  #    define REG_D "rdi"
>  #    define REG_S "rsi"
>  #    define PTR_SIZE "8"
> +typedef int64_t register_t;
>  
>  #    define REG_SP "rsp"
>  #    define REG_BP "rbp"
> @@ -50,6 +51,7 @@
>  #    define REG_D "edi"
>  #    define REG_S "esi"
>  #    define PTR_SIZE "4"
> +typedef int32_t register_t;

Id prefer reg_t as its shorter


[...]
> @@ -142,7 +143,8 @@
>  void ff_imdct_calc_sse(MDCTContext *s, FFTSample *output,
>                         const FFTSample *input, FFTSample *tmp)
>  {
> -    long k, n8, n4, n2, n;
> +    register_t k;
> +    int n8, n4, n2, n;

bad and unrelated


[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Concerning the gods, I have no means of knowing whether they exist or not
or of what sort they may be, because of the obscurity of the subject, and
the brevity of human life -- Protagoras
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20080506/c9b25332/attachment.pgp>



More information about the ffmpeg-devel mailing list