[FFmpeg-devel] [PATCH] move h264 loopfilter strength code to yasm

Ronald S. Bultje rsbultje
Fri Sep 24 22:10:17 CEST 2010


Hi,

On Fri, Sep 24, 2010 at 3:30 PM, Alexander Strange
<astrange at ithinksw.com> wrote:
> "g" permits registers, so it could generate something like this:
> ? por %rax(%rcx), %mm1
>
> You have to use "m" or MANGLE() in this situation.
> Also, generating _d_idx(%rax) won't work on BROKEN_RELOCATIONS (x86-64 darwin) because all global references must be _d_idx(%rip).
>
> If you have a recent clang try compiling with that, it has a built-in assembler which may have clearer errors.
> ?and which doesn't build ffmpeg because it doesn't know about 3dnow.

No, no, I don't want registers, I want it to load as a constant, i.e.
a static number. The register (later on) would be b_idx, so that I
don't need separate regs for each variable, plus var+b_idx, plus
var+b_idx+d_idx.

@@ -152,7 +152,7 @@
                 "movd (%0), %%mm1 \n"
                 "por  (%0,%1), %%mm1 \n" // nnz[b] || nnz[bn]
                 ::"r"(nnz+b_idx),
-                  "r"(d_idx)
+                  "g"(d_idx)
             );
             __asm__ volatile(
                 "pminub    %%mm7, %%mm1 \n"

Also has fun effects:

/var/folders/Rz/RzQTCSLsFPWQeOEO5EXsJE+++TI/-Tmp-//ccREEh7B.s:341:Bad
Absolute Expression, absolute 0 assumed.
/var/folders/Rz/RzQTCSLsFPWQeOEO5EXsJE+++TI/-Tmp-//ccREEh7B.s:341:expecting
scale factor of 1, 2, 4, or 8: got `$-8)'
/var/folders/Rz/RzQTCSLsFPWQeOEO5EXsJE+++TI/-Tmp-//ccREEh7B.s:430:Bad
Absolute Expression, absolute 0 assumed.
/var/folders/Rz/RzQTCSLsFPWQeOEO5EXsJE+++TI/-Tmp-//ccREEh7B.s:430:expecting
scale factor of 1, 2, 4, or 8: got `$-1)'
/var/folders/Rz/RzQTCSLsFPWQeOEO5EXsJE+++TI/-Tmp-//ccREEh7B.s:466:Bad
Absolute Expression, absolute 0 assumed.
/var/folders/Rz/RzQTCSLsFPWQeOEO5EXsJE+++TI/-Tmp-//ccREEh7B.s:466:expecting
scale factor of 1, 2, 4, or 8: got `$-1)'
/var/folders/Rz/RzQTCSLsFPWQeOEO5EXsJE+++TI/-Tmp-//ccREEh7B.s:502:Bad
Absolute Expression, absolute 0 assumed.
/var/folders/Rz/RzQTCSLsFPWQeOEO5EXsJE+++TI/-Tmp-//ccREEh7B.s:502:expecting
scale factor of 1, 2, 4, or 8: got `$-1)'
/var/folders/Rz/RzQTCSLsFPWQeOEO5EXsJE+++TI/-Tmp-//ccREEh7B.s:622:Bad
Absolute Expression, absolute 0 assumed.
/var/folders/Rz/RzQTCSLsFPWQeOEO5EXsJE+++TI/-Tmp-//ccREEh7B.s:622:expecting
scale factor of 1, 2, 4, or 8: got `$-8)'
/var/folders/Rz/RzQTCSLsFPWQeOEO5EXsJE+++TI/-Tmp-//ccREEh7B.s:712:Bad
Absolute Expression, absolute 0 assumed.
/var/folders/Rz/RzQTCSLsFPWQeOEO5EXsJE+++TI/-Tmp-//ccREEh7B.s:712:expecting
scale factor of 1, 2, 4, or 8: got `$-1)'

??

Apparently it understands I don't want to take a register for d_idx,
but it doesn't understand how to make it a number. Yet. Help?

Ronald



More information about the ffmpeg-devel mailing list