[FFmpeg-cvslog] x86/tx_float: Fixes compilation with old yasm

James Almer git at videolan.org
Sat Apr 24 23:06:19 EEST 2021


ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Sat Apr 24 16:01:04 2021 -0300| [fddddc7ec215fc65bbcb1e626eea10b2a123151a] | committer: James Almer

x86/tx_float: Fixes compilation with old yasm

Use three operand format on some instructions, and lea to load effective
addresses of tables.

Signed-off-by: James Almer <jamrial at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=fddddc7ec215fc65bbcb1e626eea10b2a123151a
---

 libavutil/x86/tx_float.asm | 240 +++++++++++++++++++++++----------------------
 1 file changed, 121 insertions(+), 119 deletions(-)

diff --git a/libavutil/x86/tx_float.asm b/libavutil/x86/tx_float.asm
index def61d86c1..f55a6201af 100644
--- a/libavutil/x86/tx_float.asm
+++ b/libavutil/x86/tx_float.asm
@@ -126,11 +126,11 @@ SECTION .text
 ; %2 - temporary
 %macro FFT2 2
     shufps   %2, %1, %1, q3322
-    shufps   %1, %1, q1100
+    shufps   %1, %1, %1, q1100
 
-    addsubps %1, %2
+    addsubps %1, %1, %2
 
-    shufps   %1, %1, q2031
+    shufps   %1, %1, %1, q2031
 %endmacro
 
 ; Single 4-point in-place complex FFT (will do 2 transforms at once in [AVX] mode)
@@ -139,18 +139,18 @@ SECTION .text
 ; %3 - temporary
 %macro FFT4 3
     subps  %3, %1, %2         ;  r1234, [r5678]
-    addps  %1, %2             ;  t1234, [t5678]
+    addps  %1, %1, %2         ;  t1234, [t5678]
 
     shufps %2, %1, %3, q1010  ;  t12, r12
-    shufps %1, %3, q2332      ;  t34, r43
+    shufps %1, %1, %3, q2332  ;  t34, r43
 
     subps  %3, %2, %1         ;  a34, b32
-    addps  %2, %1             ;  a12, b14
+    addps  %2, %2, %1         ;  a12, b14
 
     shufps %1, %2, %3, q1010  ;  a1234     even
 
-    shufps %2, %3, q2332      ;  b1423
-    shufps %2, %2, q1320      ;  b1234     odd
+    shufps %2, %2, %3, q2332  ;  b1423
+    shufps %2, %2, %2, q1320  ;  b1234     odd
 %endmacro
 
 ; Single/Dual 8-point in-place complex FFT (will do 2 transforms in [AVX] mode)
@@ -164,36 +164,36 @@ SECTION .text
     addps    %5, %1, %3           ; q1-8
     addps    %6, %2, %4           ; k1-8
 
-    subps    %1, %3               ; r1-8
-    subps    %2, %4               ; j1-8
+    subps    %1, %1, %3           ; r1-8
+    subps    %2, %2, %4           ; j1-8
 
     shufps   %4, %1, %1, q2323    ; r4343
     shufps   %3, %5, %6, q3032    ; q34, k14
 
-    shufps   %1, %1, q1010        ; r1212
-    shufps   %5, %6, q1210        ; q12, k32
+    shufps   %1, %1, %1, q1010    ; r1212
+    shufps   %5, %5, %6, q1210    ; q12, k32
 
-    xorps    %4, [mask_pmmppmmp]  ; r4343 * pmmp
+    xorps    %4, %4, [mask_pmmppmmp] ; r4343 * pmmp
     addps    %6, %5, %3           ; s12, g12
 
-    mulps    %2, [d8_mult_odd]    ; r8 * d8_mult_odd
-    subps    %5, %3               ; s34, g43
+    mulps    %2, %2, [d8_mult_odd] ; r8 * d8_mult_odd
+    subps    %5, %5, %3           ; s34, g43
 
     addps    %3, %1, %4           ; z1234
     unpcklpd %1, %6, %5           ; s1234
 
     shufps   %4, %2, %2, q2301    ; j2143
-    shufps   %6, %5, q2332        ; g1234
+    shufps   %6, %6, %5, q2332    ; g1234
 
-    addsubps %2, %4               ; l2143
+    addsubps %2, %2, %4           ; l2143
     shufps   %5, %2, %2, q0123    ; l3412
-    addsubps %5, %2               ; t1234
+    addsubps %5, %5, %2           ; t1234
 
     subps    %2, %1, %6           ; h1234 even
     subps    %4, %3, %5           ; u1234 odd
 
-    addps    %1, %6               ; w1234 even
-    addps    %3, %5               ; o1234 odd
+    addps    %1, %1, %6           ; w1234 even
+    addps    %3, %3, %5           ; o1234 odd
 %endmacro
 
 ; Single 8-point in-place complex FFT in 20 instructions
@@ -203,18 +203,18 @@ SECTION .text
 ; %4 - temporary
 %macro FFT8_AVX 4
     subps      %3, %1, %2               ;  r1234, r5678
-    addps      %1, %2                   ;  q1234, q5678
+    addps      %1, %1, %2               ;  q1234, q5678
 
     vpermilps  %2, %3, [s8_perm_odd1]   ;  r4422, r6688
     shufps     %4, %1, %1, q3322        ;  q1122, q5566
 
     movsldup   %3, %3                   ;  r1133, r5577
-    shufps     %1, %1, q1100            ;  q3344, q7788
+    shufps     %1, %1, %1, q1100        ;  q3344, q7788
 
-    addsubps   %3, %2                   ;  z1234, z5678
-    addsubps   %1, %4                   ;  s3142, s7586
+    addsubps   %3, %3, %2               ;  z1234, z5678
+    addsubps   %1, %1, %4               ;  s3142, s7586
 
-    mulps      %3, [s8_mult_odd]        ;  z * s8_mult_odd
+    mulps      %3, %3, [s8_mult_odd]    ;  z * s8_mult_odd
     vpermilps  %1, [s8_perm_even]       ;  s1234, s5687 !
 
     shufps     %2, %3, %3, q2332        ;   junk, z7887
@@ -223,13 +223,13 @@ SECTION .text
     vpermilps  %3, %3, [s8_perm_odd2]   ;  z2314, z6556
     vperm2f128 %1, %4, 0x03             ;  e5687, s1234
 
-    addsubps   %2, %3                   ;   junk, t5678
-    subps      %1, %4                   ;  w1234, w5678 even
+    addsubps   %2, %2, %3               ;   junk, t5678
+    subps      %1, %1, %4               ;  w1234, w5678 even
 
     vperm2f128 %2, %2, 0x11             ;  t5678, t5678
     vperm2f128 %3, %3, 0x00             ;  z2314, z2314
 
-    xorps      %2, [mask_ppmpmmpm]      ;  t * ppmpmmpm
+    xorps      %2, %2, [mask_ppmpmmpm]  ;  t * ppmpmmpm
     addps      %2, %3, %2               ;  u1234, u5678 odd
 %endmacro
 
@@ -258,23 +258,23 @@ SECTION .text
 %define mask [mask_mpmppmpm]
 %define perm [s16_perm]
 %endif
-    xorps      %5, %5                       ; 0
+    xorps      %5, %5, %5                   ; 0
 
     shufps     %6, %4, %4, q2301            ; z12.imre, z13.imre...
     shufps     %5, %5, %3, q2301            ; 0, 0, z8.imre...
 
-    mulps      %4, [s16_mult_odd1]          ; z.reim * costab
-    xorps      %5, [mask_mppmmpmp]
+    mulps      %4, %4, [s16_mult_odd1]      ; z.reim * costab
+    xorps      %5, %5, [mask_mppmmpmp]
 %if cpuflag(fma3)
     fmaddps    %6, %6, [s16_mult_odd2], %4  ; s[8..15]
     addps      %5, %3, %5                   ; s[0...7]
 %else
-    mulps      %6, [s16_mult_odd2]          ; z.imre * costab
+    mulps      %6, %6, [s16_mult_odd2]      ; z.imre * costab
 
     addps      %5, %3, %5                   ; s[0...7]
     addps      %6, %4, %6                   ; s[8..15]
 %endif
-    mulps      %5, [s16_mult_even]          ; s[0...7]*costab
+    mulps      %5, %5, [s16_mult_even]      ; s[0...7]*costab
 
     xorps      %4, %6, mask                 ; s[8..15]*mpmppmpm
     xorps      %3, %5, mask                 ; s[0...7]*mpmppmpm
@@ -282,8 +282,8 @@ SECTION .text
     vperm2f128 %4, %4, 0x01                 ; s[12..15, 8..11]
     vperm2f128 %3, %3, 0x01                 ; s[4..7, 0..3]
 
-    addps      %6, %4                       ; y56, u56, y34, u34
-    addps      %5, %3                       ; w56, x56, w34, x34
+    addps      %6, %6, %4                   ; y56, u56, y34, u34
+    addps      %5, %5, %3                   ; w56, x56, w34, x34
 
     vpermilps  %6, perm                     ; y56, u56, y43, u43
     vpermilps  %5, perm                     ; w56, x56, w43, x43
@@ -312,7 +312,7 @@ SECTION .text
     shufps     %12, %10, %10, q2200  ; cos00224466
     shufps     %13, %11, %11, q1133  ; wim77553311
     movshdup   %10, %10              ; cos11335577
-    shufps     %11, %11, q0022       ; wim66442200
+    shufps     %11, %11, %11, q0022  ; wim66442200
 
 %if %1 && mmsize == 32
     shufps     %6, %14, %14, q2301   ; m2[0].imre, m2[1].imre, m2[2].imre, m2[3].imre even
@@ -320,20 +320,20 @@ SECTION .text
     shufps     %7, %15, %15, q2301   ; m3[0].imre, m3[1].imre, m3[2].imre, m3[3].imre even
     shufps     %9, %17, %17, q2301   ; m3[0].imre, m3[1].imre, m3[2].imre, m3[3].imre odd
 
-    mulps      %14, %13              ; m2[0123]reim * wim7531 even
-    mulps      %16, %11              ; m2[0123]reim * wim7531 odd
-    mulps      %15, %13              ; m3[0123]reim * wim7531 even
-    mulps      %17, %11              ; m3[0123]reim * wim7531 odd
+    mulps      %14, %14, %13         ; m2[0123]reim * wim7531 even
+    mulps      %16, %16, %11         ; m2[0123]reim * wim7531 odd
+    mulps      %15, %15, %13         ; m3[0123]reim * wim7531 even
+    mulps      %17, %17, %11         ; m3[0123]reim * wim7531 odd
 %else
     mulps      %14, %6, %13          ; m2,3[01]reim * wim7531 even
     mulps      %16, %8, %11          ; m2,3[01]reim * wim7531 odd
     mulps      %15, %7, %13          ; m2,3[23]reim * wim7531 even
     mulps      %17, %9, %11          ; m2,3[23]reim * wim7531 odd
     ; reorder the multiplies to save movs reg, reg in the %if above
-    shufps     %6, %6, q2301         ; m2[0].imre, m2[1].imre, m3[0].imre, m3[1].imre even
-    shufps     %8, %8, q2301         ; m2[0].imre, m2[1].imre, m3[0].imre, m3[1].imre odd
-    shufps     %7, %7, q2301         ; m2[2].imre, m2[3].imre, m3[2].imre, m3[3].imre even
-    shufps     %9, %9, q2301         ; m2[2].imre, m2[3].imre, m3[2].imre, m3[3].imre odd
+    shufps     %6, %6, %6, q2301     ; m2[0].imre, m2[1].imre, m3[0].imre, m3[1].imre even
+    shufps     %8, %8, %8, q2301     ; m2[0].imre, m2[1].imre, m3[0].imre, m3[1].imre odd
+    shufps     %7, %7, %7, q2301     ; m2[2].imre, m2[3].imre, m3[2].imre, m3[3].imre even
+    shufps     %9, %9, %9, q2301     ; m2[2].imre, m2[3].imre, m3[2].imre, m3[3].imre odd
 %endif
 
 %if cpuflag(fma3) ; 11 - 5 = 6 instructions saved through FMA!
@@ -343,17 +343,17 @@ SECTION .text
     fmsubaddps %9, %9, %10, %17      ; j[0..8] odd
     movaps     %13, [mask_pmpmpmpm]  ; "subaddps? pfft, who needs that!"
 %else
-    mulps      %6, %12               ; m2,3[01]imre * cos0246
-    mulps      %8, %10               ; m2,3[01]imre * cos0246
+    mulps      %6, %6, %12           ; m2,3[01]imre * cos0246
+    mulps      %8, %8, %10           ; m2,3[01]imre * cos0246
     movaps     %13, [mask_pmpmpmpm]  ; "subaddps? pfft, who needs that!"
-    mulps      %7, %12               ; m2,3[23]reim * cos0246
-    mulps      %9, %10               ; m2,3[23]reim * cos0246
-    addsubps   %6, %14               ; w[0..8]
-    addsubps   %8, %16               ; w[0..8]
-    xorps      %15, %13              ; +-m2,3[23]imre * wim7531
-    xorps      %17, %13              ; +-m2,3[23]imre * wim7531
-    addps      %7, %15               ; j[0..8]
-    addps      %9, %17               ; j[0..8]
+    mulps      %7, %7, %12           ; m2,3[23]reim * cos0246
+    mulps      %9, %9, %10           ; m2,3[23]reim * cos0246
+    addsubps   %6, %6, %14           ; w[0..8]
+    addsubps   %8, %8, %16           ; w[0..8]
+    xorps      %15, %15, %13         ; +-m2,3[23]imre * wim7531
+    xorps      %17, %17, %13         ; +-m2,3[23]imre * wim7531
+    addps      %7, %7, %15           ; j[0..8]
+    addps      %9, %9, %17           ; j[0..8]
 %endif
 
     addps      %14, %6, %7           ; t10235476 even
@@ -361,20 +361,20 @@ SECTION .text
     subps      %15, %6, %7           ; +-r[0..7] even
     subps      %17, %8, %9           ; +-r[0..7] odd
 
-    shufps     %14, %14, q2301       ; t[0..7] even
-    shufps     %16, %16, q2301       ; t[0..7] odd
-    xorps      %15, %13              ; r[0..7] even
-    xorps      %17, %13              ; r[0..7] odd
+    shufps     %14, %14, %14, q2301  ; t[0..7] even
+    shufps     %16, %16, %16, q2301  ; t[0..7] odd
+    xorps      %15, %15, %13         ; r[0..7] even
+    xorps      %17, %17, %13         ; r[0..7] odd
 
     subps      %6, %2, %14           ; m2,3[01] even
     subps      %8, %4, %16           ; m2,3[01] odd
     subps      %7, %3, %15           ; m2,3[23] even
     subps      %9, %5, %17           ; m2,3[23] odd
 
-    addps      %2, %14               ; m0 even
-    addps      %4, %16               ; m0 odd
-    addps      %3, %15               ; m1 even
-    addps      %5, %17               ; m1 odd
+    addps      %2, %2, %14           ; m0 even
+    addps      %4, %4, %16           ; m0 odd
+    addps      %3, %3, %15           ; m1 even
+    addps      %5, %5, %17           ; m1 odd
 %endmacro
 
 ; Same as above, only does one parity at a time, takes 3 temporary registers,
@@ -390,35 +390,35 @@ SECTION .text
 %endif
 
     mulps      %10, %4, %9           ; m2,3[01]reim * wim7531 even
-    mulps      %9, %5                ; m2,3[23]reim * wim7531 even
+    mulps      %9, %9, %5            ; m2,3[23]reim * wim7531 even
 
-    shufps     %4, %4, q2301         ; m2[0].imre, m2[1].imre, m3[0].imre, m3[1].imre even
-    shufps     %5, %5, q2301         ; m2[2].imre, m2[3].imre, m3[2].imre, m3[3].imre even
+    shufps     %4, %4, %4, q2301     ; m2[0].imre, m2[1].imre, m3[0].imre, m3[1].imre even
+    shufps     %5, %5, %5, q2301     ; m2[2].imre, m2[3].imre, m3[2].imre, m3[3].imre even
 
 %if cpuflag(fma3)
     fmaddsubps %4, %4, %8, %10       ; w[0..8] even
     fmsubaddps %5, %5, %8, %9        ; j[0..8] even
     movaps     %10, [mask_pmpmpmpm]
 %else
-    mulps      %4, %8                ; m2,3[01]imre * cos0246
-    mulps      %5, %8                ; m2,3[23]reim * cos0246
-    addsubps   %4, %10               ; w[0..8]
+    mulps      %4, %4, %8            ; m2,3[01]imre * cos0246
+    mulps      %5, %5, %8            ; m2,3[23]reim * cos0246
+    addsubps   %4, %4, %10           ; w[0..8]
     movaps     %10, [mask_pmpmpmpm]
-    xorps      %9, %10               ; +-m2,3[23]imre * wim7531
-    addps      %5, %9                ; j[0..8]
+    xorps      %9, %9, %10           ; +-m2,3[23]imre * wim7531
+    addps      %5, %5, %9            ; j[0..8]
 %endif
 
     addps      %8, %4, %5            ; t10235476
     subps      %9, %4, %5            ; +-r[0..7]
 
-    shufps     %8, %8, q2301         ; t[0..7]
-    xorps      %9, %10               ; r[0..7]
+    shufps     %8, %8, %8, q2301     ; t[0..7]
+    xorps      %9, %9, %10           ; r[0..7]
 
     subps      %4, %2, %8            ; %3,3[01]
     subps      %5, %3, %9            ; %3,3[23]
 
-    addps      %2, %8                ; m0
-    addps      %3, %9                ; m1
+    addps      %2, %2, %8            ; m0
+    addps      %3, %3, %9            ; m1
 %endmacro
 
 ; Same as above, tries REALLY hard to use 2 temporary registers.
@@ -431,14 +431,14 @@ SECTION .text
     shufps     %9, %7, %7, q0022     ; wim66442200
 %endif
 
-    mulps      %9, %4                ; m2,3[01]reim * wim7531 even
-    shufps     %4, %4, q2301         ; m2[0].imre, m2[1].imre, m3[0].imre, m3[1].imre even
+    mulps      %9, %9, %4            ; m2,3[01]reim * wim7531 even
+    shufps     %4, %4, %4, q2301     ; m2[0].imre, m2[1].imre, m3[0].imre, m3[1].imre even
 
 %if cpuflag(fma3)
     fmaddsubps %4, %4, %8, %9        ; w[0..8] even
 %else
-    mulps      %4, %8                ; m2,3[01]imre * cos0246
-    addsubps   %4, %9                ; w[0..8]
+    mulps      %4, %4, %8            ; m2,3[01]imre * cos0246
+    addsubps   %4, %4, %9            ; w[0..8]
 %endif
 
 %if %1
@@ -447,27 +447,27 @@ SECTION .text
     shufps     %9, %7, %7, q0022     ; wim66442200
 %endif
 
-    mulps      %9, %5                ; m2,3[23]reim * wim7531 even
-    shufps     %5, %5, q2301         ; m2[2].imre, m2[3].imre, m3[2].imre, m3[3].imre even
+    mulps      %9, %9, %5            ; m2,3[23]reim * wim7531 even
+    shufps     %5, %5, %5, q2301     ; m2[2].imre, m2[3].imre, m3[2].imre, m3[3].imre even
 %if cpuflag (fma3)
     fmsubaddps %5, %5, %8, %9        ; j[0..8] even
 %else
-    mulps      %5, %8                ; m2,3[23]reim * cos0246
-    xorps      %9, [mask_pmpmpmpm]   ; +-m2,3[23]imre * wim7531
-    addps      %5, %9                ; j[0..8]
+    mulps      %5, %5, %8            ; m2,3[23]reim * cos0246
+    xorps      %9, %9, [mask_pmpmpmpm]; +-m2,3[23]imre * wim7531
+    addps      %5, %5, %9            ; j[0..8]
 %endif
 
     addps      %8, %4, %5            ; t10235476
     subps      %9, %4, %5            ; +-r[0..7]
 
-    shufps     %8, %8, q2301         ; t[0..7]
-    xorps      %9, [mask_pmpmpmpm]   ; r[0..7]
+    shufps     %8, %8, %8, q2301     ; t[0..7]
+    xorps      %9, %9, [mask_pmpmpmpm] ; r[0..7]
 
     subps      %4, %2, %8            ; %3,3[01]
     subps      %5, %3, %9            ; %3,3[23]
 
-    addps      %2, %8                ; m0
-    addps      %3, %9                ; m1
+    addps      %2, %2, %8            ; m0
+    addps      %3, %3, %9            ; m1
 %endmacro
 
 %macro SPLIT_RADIX_COMBINE_64 0
@@ -591,10 +591,10 @@ SECTION .text
     unpckhpd m11, m1, m3
     unpckhpd m12, m4, m6
     unpckhpd m13, m5, m7
-    unpcklpd m0, m2
-    unpcklpd m1, m3
-    unpcklpd m4, m6
-    unpcklpd m5, m7
+    unpcklpd m0, m0, m2
+    unpcklpd m1, m1, m3
+    unpcklpd m4, m4, m6
+    unpcklpd m5, m5, m7
 
     vextractf128 [outq +      (0 + 0 + %1)*mmsize + %6 +  0], m0,  0
     vextractf128 [outq +      (0 + 0 + %1)*mmsize + %6 + 16], m10, 0
@@ -639,10 +639,10 @@ SECTION .text
     unpcklpd m9,  m1, m3
     unpcklpd m10, m4, m6
     unpcklpd m11, m5, m7
-    unpckhpd m0, m2
-    unpckhpd m1, m3
-    unpckhpd m4, m6
-    unpckhpd m5, m7
+    unpckhpd m0, m0, m2
+    unpckhpd m1, m1, m3
+    unpckhpd m4, m4, m6
+    unpckhpd m5, m5, m7
 
     vextractf128 [outq +      (2 + 0 + %1)*mmsize + %6 +  0], m8,  0
     vextractf128 [outq +      (2 + 0 + %1)*mmsize + %6 + 16], m0,  0
@@ -690,14 +690,14 @@ cglobal fft4_ %+ %1 %+ _float, 4, 4, 3, ctx, out, in, stride
 
 %if %2
     shufps m2, m1, m0, q3210
-    shufps m0, m1, q3210
+    shufps m0, m0, m1, q3210
     movaps m1, m2
 %endif
 
     FFT4 m0, m1, m2
 
     unpcklpd m2, m0, m1
-    unpckhpd m0, m1
+    unpckhpd m0, m0, m1
 
     movaps [outq + 0*mmsize], m2
     movaps [outq + 1*mmsize], m0
@@ -721,8 +721,8 @@ cglobal fft8_float, 4, 4, 6, ctx, out, in, tmp
 
     unpcklpd m4, m0, m3
     unpcklpd m5, m1, m2
-    unpckhpd m0, m3
-    unpckhpd m1, m2
+    unpckhpd m0, m0, m3
+    unpckhpd m1, m1, m2
 
     movups [outq + 0*mmsize], m4
     movups [outq + 1*mmsize], m0
@@ -741,7 +741,7 @@ cglobal fft8_float, 4, 4, 4, ctx, out, in, tmp
     FFT8_AVX m0, m1, m2, m3
 
     unpcklpd m2, m0, m1
-    unpckhpd m0, m1
+    unpckhpd m0, m0, m1
 
     ; Around 2% faster than 2x vperm2f128 + 2x movapd
     vextractf128 [outq + 16*0], m2, 0
@@ -765,8 +765,8 @@ cglobal fft16_float, 4, 4, 8, ctx, out, in, tmp
 
     unpcklpd m5, m1, m3
     unpcklpd m4, m0, m2
-    unpckhpd m1, m3
-    unpckhpd m0, m2
+    unpckhpd m1, m1, m3
+    unpckhpd m0, m0, m2
 
     vextractf128 [outq + 16*0], m4, 0
     vextractf128 [outq + 16*1], m0, 0
@@ -812,10 +812,10 @@ cglobal fft32_float, 4, 4, 16, ctx, out, in, tmp
     unpcklpd m10, m5, m7
     unpcklpd  m8, m0, m2
     unpcklpd m11, m4, m6
-    unpckhpd  m1, m3
-    unpckhpd  m5, m7
-    unpckhpd  m0, m2
-    unpckhpd  m4, m6
+    unpckhpd  m1, m1, m3
+    unpckhpd  m5, m5, m7
+    unpckhpd  m0, m0, m2
+    unpckhpd  m4, m4, m6
 
     vextractf128 [outq + 16* 0],  m8, 0
     vextractf128 [outq + 16* 1],  m0, 0
@@ -858,7 +858,7 @@ ALIGN 16
     POP lenq
     sub outq, (%1*4) + (%1*2) + (%1/2)
 
-    mov rtabq, ff_cos_ %+ %1 %+ _float
+    lea rtabq, [ff_cos_ %+ %1 %+ _float]
     lea itabq, [rtabq + %1 - 4*7]
 
 %if %0 > 1
@@ -989,7 +989,7 @@ ALIGN 16
     POP lenq
     sub outq, 24*mmsize
 
-    mov rtabq, ff_cos_128_float
+    lea rtabq, [ff_cos_128_float]
     lea itabq, [rtabq + 128 - 4*7]
 
     cmp tgtq, 128
@@ -1016,7 +1016,7 @@ ALIGN 16
     POP lenq
     sub outq, 48*mmsize
 
-    mov rtabq, ff_cos_256_float
+    lea rtabq, [ff_cos_256_float]
     lea itabq, [rtabq + 256 - 4*7]
 
     cmp tgtq, 256
@@ -1044,7 +1044,7 @@ ALIGN 16
     POP lenq
     sub outq, 96*mmsize
 
-    mov rtabq, ff_cos_512_float
+    lea rtabq, [ff_cos_512_float]
     lea itabq, [rtabq + 512 - 4*7]
 
     cmp tgtq, 512
@@ -1079,7 +1079,7 @@ ALIGN 16
     POP lenq
     sub outq, 192*mmsize
 
-    mov rtabq, ff_cos_1024_float
+    lea rtabq, [ff_cos_1024_float]
     lea itabq, [rtabq + 1024 - 4*7]
 
     cmp tgtq, 1024
@@ -1137,10 +1137,10 @@ FFT_SPLIT_RADIX_DEF 131072
     unpcklpd tmp2, m1, m3
     unpcklpd tw_o, tx1_e0, tx1_o0
     unpcklpd tw_e, tx2_e0, tx2_o0
-    unpckhpd m0, m2
-    unpckhpd m1, m3
-    unpckhpd tx1_e0, tx1_o0
-    unpckhpd tx2_e0, tx2_o0
+    unpckhpd m0, m0, m2
+    unpckhpd m1, m1, m3
+    unpckhpd tx1_e0, tx1_e0, tx1_o0
+    unpckhpd tx2_e0, tx2_e0, tx2_o0
 
     vextractf128 [outq +  0*mmsize +  0], tmp1,   0
     vextractf128 [outq +  0*mmsize + 16], m0,     0
@@ -1178,10 +1178,10 @@ FFT_SPLIT_RADIX_DEF 131072
     unpcklpd tmp2, m2, m3
     unpcklpd tw_e, tx1_e1, tx1_o1
     unpcklpd tw_o, tx2_e1, tx2_o1
-    unpckhpd m0, m1
-    unpckhpd m2, m3
-    unpckhpd tx1_e1, tx1_o1
-    unpckhpd tx2_e1, tx2_o1
+    unpckhpd m0, m0, m1
+    unpckhpd m2, m2, m3
+    unpckhpd tx1_e1, tx1_e1, tx1_o1
+    unpckhpd tx2_e1, tx2_e1, tx2_o1
 
     vextractf128 [outq +  2*mmsize +  0], tmp1,   0
     vextractf128 [outq +  2*mmsize + 16], m0,     0
@@ -1208,5 +1208,7 @@ FFT_SPLIT_RADIX_DEF 131072
 
 %if ARCH_X86_64
 FFT_SPLIT_RADIX_FN avx
+%if HAVE_AVX2_EXTERNAL
 FFT_SPLIT_RADIX_FN avx2
 %endif
+%endif



More information about the ffmpeg-cvslog mailing list