Guest User

Untitled

a guest
Nov 2nd, 2014
151
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. %macro FLAC_DECORRELATE_INDEP_32 2
  2. cglobal flac_decorrelate_indep%1_32, 2, %1+2, %1+2, out, in0, in1, len, in2, in3, in4, in5
  3. %if ARCH_X86_32
  4.     movd      m%2, r4m
  5. %if %1 == 6
  6.     DEFINE_ARGS out, in0, in1, in2, in3, in4, in5
  7.     %define  lend  dword r3m
  8. %else
  9.     mov      lend, lenm
  10. %endif
  11. %elif WIN64
  12.     movd      m%2, r4m
  13. %else ; UNIX64
  14.     movd      m%2, r4d
  15. %endif
  16.  
  17. %assign %%i 1
  18. %rep %1-1
  19.     mov      in %+ %%i %+ q, [in0q+%%i*gprsize]
  20. %assign    %%i %%i+1
  21. %endrep
  22.  
  23.     mov      in0q, [in0q]
  24.     mov      outq, [outq]
  25.  
  26. %assign %%i 1
  27. %rep %1-1
  28.     sub      in %+ %%i %+ q, in0q
  29. %assign    %%i %%i+1
  30. %endrep
  31.  
  32. align 16
  33. .loop:
  34.     mova       m0, [in0q]
  35. %assign %%i 1
  36. %rep %1-1
  37.     mova       m %+ %%i, [in0q+in %+ %%i %+ q]
  38. %assign    %%i %%i+1
  39. %endrep
  40.  
  41. %assign %%i 0
  42. %rep %1
  43.     pslld    m %+ %%i, m%2
  44. %assign    %%i %%i+1
  45. %endrep
  46.  
  47. %if %1 == 6
  48.     SBUTTERFLY dq, 0, 1, 6
  49.     SBUTTERFLY dq, 2, 3, 6
  50.     SBUTTERFLY dq, 4, 5, 6
  51.  
  52.     punpcklqdq m6, m0, m2
  53.     punpckhqdq m2, m4
  54.     shufps     m4, m0, 0xe4
  55.     mova [outq   ], m6
  56.     mova [outq+16], m4
  57.     mova [outq+32], m2
  58.  
  59.     punpcklqdq m6, m1, m3
  60.     punpckhqdq m3, m5
  61.     shufps     m5, m1, 0xe4
  62.     mova [outq+48], m6
  63.     mova [outq+64], m5
  64.     mova [outq+80], m3
  65.    
  66. %else ; %1 == 2 || %1 == 4
  67.  
  68. %if %1 == 4
  69.     TRANSPOSE4x4D 0, 1, 2, 3, 4
  70. %else ; %1 == 2
  71.     SBUTTERFLY dq, 0, 1, 2
  72. %endif
  73.  
  74.     mova [outq         ], m0
  75.     mova [outq+1*mmsize], m1
  76. %if %1 > 2
  77.     mova [outq+2*mmsize], m2
  78.     mova [outq+3*mmsize], m3
  79. %endif
  80.  
  81. %endif ; %1 == 2 || %1 == 4 || %1 == 6
  82.  
  83.     add      in0q, mmsize
  84.     add      outq, mmsize*%1
  85.     sub      lend, mmsize/4
  86.     jg .loop
  87.     REP_RET
  88. %endmacro
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×