Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. static inline void tempNoiseReducer_MMX2(uint8_t *src, int stride,
  2.                                     uint8_t *tempBlurred, uint32_t *tempBlurredPast, int *maxNoise)
  3. {
  4.  
  5.     tempBlurredPast[127]= maxNoise[0];
  6.     tempBlurredPast[128]= maxNoise[1];
  7.     tempBlurredPast[129]= maxNoise[2];
  8.  
  9.  
  10.  
  11.  
  12.     __asm__ volatile(
  13.         "lea (%2, %2, 2), %%""rax""             \n\t"
  14.         "lea (%2, %2, 4), %%""rdx""             \n\t"
  15.         "lea (%%""rdx"", %2, 2), %%""rcx""      \n\t"
  16. # 2127 "postprocess_template.c"
  17.         "pcmpeqb %%mm7, %%mm7                   \n\t"
  18.         "movq """ "b80"", %%mm6              \n\t"
  19.         "pxor %%mm0, %%mm0                      \n\t"
  20. # 2167 "postprocess_template.c"
  21. "movq " "(%0)" ", %%mm5                     \n\t" "movq " "(%1)" ", %%mm2                     \n\t" "pxor %%mm7, %%mm2                      \n\t" "pavgb " "%%mm2" ", " "%%mm5" " \n\t" "paddb %%mm6, %%mm5                     \n\t" "movq %%mm5, %%mm2                      \n\t" "psllw $8, %%mm5                        \n\t" "pmaddwd %%mm5, %%mm5                   \n\t" "pmaddwd %%mm2, %%mm2                   \n\t" "paddd %%mm2, %%mm5                     \n\t" "psrld $14, %%mm5                       \n\t" "paddd %%mm5, %%mm0                     \n\t"
  22. "movq " "(%0, %2)" ", %%mm5                     \n\t" "movq " "(%1, %2)" ", %%mm2                     \n\t" "pxor %%mm7, %%mm2                      \n\t" "pavgb " "%%mm2" ", " "%%mm5" " \n\t" "paddb %%mm6, %%mm5                     \n\t" "movq %%mm5, %%mm2                      \n\t" "psllw $8, %%mm5                        \n\t" "pmaddwd %%mm5, %%mm5                   \n\t" "pmaddwd %%mm2, %%mm2                   \n\t" "paddd %%mm2, %%mm5                     \n\t" "psrld $14, %%mm5                       \n\t" "paddd %%mm5, %%mm0                     \n\t"
  23. "movq " "(%0, %2, 2)" ", %%mm5                     \n\t" "movq " "(%1, %2, 2)" ", %%mm2                     \n\t" "pxor %%mm7, %%mm2                      \n\t" "pavgb " "%%mm2" ", " "%%mm5" " \n\t" "paddb %%mm6, %%mm5                     \n\t" "movq %%mm5, %%mm2                      \n\t" "psllw $8, %%mm5                        \n\t" "pmaddwd %%mm5, %%mm5                   \n\t" "pmaddwd %%mm2, %%mm2                   \n\t" "paddd %%mm2, %%mm5                     \n\t" "psrld $14, %%mm5                       \n\t" "paddd %%mm5, %%mm0                     \n\t"
  24. "movq " "(%0, %%rax)" ", %%mm5                     \n\t" "movq " "(%1, %%rax)" ", %%mm2                     \n\t" "pxor %%mm7, %%mm2                      \n\t" "pavgb " "%%mm2" ", " "%%mm5" " \n\t" "paddb %%mm6, %%mm5                     \n\t" "movq %%mm5, %%mm2                      \n\t" "psllw $8, %%mm5                        \n\t" "pmaddwd %%mm5, %%mm5                   \n\t" "pmaddwd %%mm2, %%mm2                   \n\t" "paddd %%mm2, %%mm5                     \n\t" "psrld $14, %%mm5                       \n\t" "paddd %%mm5, %%mm0                     \n\t"
  25. "movq " "(%0, %2, 4)" ", %%mm5                     \n\t" "movq " "(%1, %2, 4)" ", %%mm2                     \n\t" "pxor %%mm7, %%mm2                      \n\t" "pavgb " "%%mm2" ", " "%%mm5" " \n\t" "paddb %%mm6, %%mm5                     \n\t" "movq %%mm5, %%mm2                      \n\t" "psllw $8, %%mm5                        \n\t" "pmaddwd %%mm5, %%mm5                   \n\t" "pmaddwd %%mm2, %%mm2                   \n\t" "paddd %%mm2, %%mm5                     \n\t" "psrld $14, %%mm5                       \n\t" "paddd %%mm5, %%mm0                     \n\t"
  26. "movq " "(%0, %%rdx)" ", %%mm5                     \n\t" "movq " "(%1, %%rdx)" ", %%mm2                     \n\t" "pxor %%mm7, %%mm2                      \n\t" "pavgb " "%%mm2" ", " "%%mm5" " \n\t" "paddb %%mm6, %%mm5                     \n\t" "movq %%mm5, %%mm2                      \n\t" "psllw $8, %%mm5                        \n\t" "pmaddwd %%mm5, %%mm5                   \n\t" "pmaddwd %%mm2, %%mm2                   \n\t" "paddd %%mm2, %%mm5                     \n\t" "psrld $14, %%mm5                       \n\t" "paddd %%mm5, %%mm0                     \n\t"
  27. "movq " "(%0, %%rax,2)" ", %%mm5                     \n\t" "movq " "(%1, %%rax,2)" ", %%mm2                     \n\t" "pxor %%mm7, %%mm2                      \n\t" "pavgb " "%%mm2" ", " "%%mm5" " \n\t" "paddb %%mm6, %%mm5                     \n\t" "movq %%mm5, %%mm2                      \n\t" "psllw $8, %%mm5                        \n\t" "pmaddwd %%mm5, %%mm5                   \n\t" "pmaddwd %%mm2, %%mm2                   \n\t" "paddd %%mm2, %%mm5                     \n\t" "psrld $14, %%mm5                       \n\t" "paddd %%mm5, %%mm0                     \n\t"
  28. "movq " "(%0, %%rcx)" ", %%mm5                     \n\t" "movq " "(%1, %%rcx)" ", %%mm2                     \n\t" "pxor %%mm7, %%mm2                      \n\t" "pavgb " "%%mm2" ", " "%%mm5" " \n\t" "paddb %%mm6, %%mm5                     \n\t" "movq %%mm5, %%mm2                      \n\t" "psllw $8, %%mm5                        \n\t" "pmaddwd %%mm5, %%mm5                   \n\t" "pmaddwd %%mm2, %%mm2                   \n\t" "paddd %%mm2, %%mm5                     \n\t" "psrld $14, %%mm5                       \n\t" "paddd %%mm5, %%mm0                     \n\t"
  29.  
  30.         "movq %%mm0, %%mm4                      \n\t"
  31.         "psrlq $32, %%mm0                       \n\t"
  32.         "paddd %%mm0, %%mm4                     \n\t"
  33.         "movd %%mm4, %%ecx                      \n\t"
  34.         "shll $2, %%ecx                         \n\t"
  35.         "mov %3, %%""rdx""                      \n\t"
  36.         "addl -4(%%""rdx""), %%ecx              \n\t"
  37.         "addl 4(%%""rdx""), %%ecx               \n\t"
  38.         "addl -1024(%%""rdx""), %%ecx           \n\t"
  39.         "addl $4, %%ecx                         \n\t"
  40.         "addl 1024(%%""rdx""), %%ecx            \n\t"
  41.         "shrl $3, %%ecx                         \n\t"
  42.         "movl %%ecx, (%%""rdx"")                \n\t"
  43.  
  44.  
  45.  
  46.  
  47.         "cmpl 512(%%""rdx""), %%ecx             \n\t"
  48.         " jb 2f                                 \n\t"
  49.         "cmpl 516(%%""rdx""), %%ecx             \n\t"
  50.         " jb 1f                                 \n\t"
  51.  
  52.         "lea (%%""rax"", %2, 2), %%""rdx""      \n\t"
  53.         "lea (%%""rdx"", %2, 2), %%""rcx""      \n\t"
  54.         "movq (%0), %%mm0                       \n\t"
  55.         "movq (%0, %2), %%mm1                   \n\t"
  56.         "movq (%0, %2, 2), %%mm2                \n\t"
  57.         "movq (%0, %%""rax""), %%mm3            \n\t"
  58.         "movq (%0, %2, 4), %%mm4                \n\t"
  59.         "movq (%0, %%""rdx""), %%mm5            \n\t"
  60.         "movq (%0, %%""rax"", 2), %%mm6         \n\t"
  61.         "movq (%0, %%""rcx""), %%mm7            \n\t"
  62.         "movq %%mm0, (%1)                       \n\t"
  63.         "movq %%mm1, (%1, %2)                   \n\t"
  64.         "movq %%mm2, (%1, %2, 2)                \n\t"
  65.         "movq %%mm3, (%1, %%""rax"")            \n\t"
  66.         "movq %%mm4, (%1, %2, 4)                \n\t"
  67.         "movq %%mm5, (%1, %%""rdx"")            \n\t"
  68.         "movq %%mm6, (%1, %%""rax"", 2)         \n\t"
  69.         "movq %%mm7, (%1, %%""rcx"")            \n\t"
  70.         "jmp 4f                                 \n\t"
  71.         "1:                                     \n\t"
  72.         "lea (%%""rax"", %2, 2), %%""rdx""      \n\t"
  73.         "lea (%%""rdx"", %2, 2), %%""rcx""      \n\t"
  74.         "movq (%0), %%mm0                       \n\t"
  75.         "pavgb " "(%1)" ", " "%%mm0" " \n\t"
  76.         "movq (%0, %2), %%mm1                   \n\t"
  77.         "pavgb " "(%1, %2)" ", " "%%mm1" " \n\t"
  78.         "movq (%0, %2, 2), %%mm2                \n\t"
  79.         "pavgb " "(%1, %2, 2)" ", " "%%mm2" " \n\t"
  80.         "movq (%0, %%""rax""), %%mm3            \n\t"
  81.         "pavgb " "(%1, %%rax)" ", " "%%mm3" " \n\t"
  82.         "movq (%0, %2, 4), %%mm4                \n\t"
  83.         "pavgb " "(%1, %2, 4)" ", " "%%mm4" " \n\t"
  84.         "movq (%0, %%""rdx""), %%mm5            \n\t"
  85.         "pavgb " "(%1, %%rdx)" ", " "%%mm5" " \n\t"
  86.         "movq (%0, %%""rax"", 2), %%mm6         \n\t"
  87.         "pavgb " "(%1, %%rax, 2)" ", " "%%mm6" " \n\t"
  88.         "movq (%0, %%""rcx""), %%mm7            \n\t"
  89.         "pavgb " "(%1, %%rcx)" ", " "%%mm7" " \n\t"
  90.         "movq %%mm0, (%1)                       \n\t"
  91.         "movq %%mm1, (%1, %2)                   \n\t"
  92.         "movq %%mm2, (%1, %2, 2)                \n\t"
  93.         "movq %%mm3, (%1, %%""rax"")            \n\t"
  94.         "movq %%mm4, (%1, %2, 4)                \n\t"
  95.         "movq %%mm5, (%1, %%""rdx"")            \n\t"
  96.         "movq %%mm6, (%1, %%""rax"", 2)         \n\t"
  97.         "movq %%mm7, (%1, %%""rcx"")            \n\t"
  98.         "movq %%mm0, (%0)                       \n\t"
  99.         "movq %%mm1, (%0, %2)                   \n\t"
  100.         "movq %%mm2, (%0, %2, 2)                \n\t"
  101.         "movq %%mm3, (%0, %%""rax"")            \n\t"
  102.         "movq %%mm4, (%0, %2, 4)                \n\t"
  103.         "movq %%mm5, (%0, %%""rdx"")            \n\t"
  104.         "movq %%mm6, (%0, %%""rax"", 2)         \n\t"
  105.         "movq %%mm7, (%0, %%""rcx"")            \n\t"
  106.         "jmp 4f                                 \n\t"
  107.         "2:                                     \n\t"
  108.         "cmpl 508(%%""rdx""), %%ecx             \n\t"
  109.         " jb 3f                                 \n\t"
  110.  
  111.         "lea (%%""rax"", %2, 2), %%""rdx""      \n\t"
  112.         "lea (%%""rdx"", %2, 2), %%""rcx""      \n\t"
  113.         "movq (%0), %%mm0                       \n\t"
  114.         "movq (%0, %2), %%mm1                   \n\t"
  115.         "movq (%0, %2, 2), %%mm2                \n\t"
  116.         "movq (%0, %%""rax""), %%mm3            \n\t"
  117.         "movq (%1), %%mm4                       \n\t"
  118.         "movq (%1, %2), %%mm5                   \n\t"
  119.         "movq (%1, %2, 2), %%mm6                \n\t"
  120.         "movq (%1, %%""rax""), %%mm7            \n\t"
  121.         "pavgb " "%%mm4" ", " "%%mm0" " \n\t"
  122.         "pavgb " "%%mm5" ", " "%%mm1" " \n\t"
  123.         "pavgb " "%%mm6" ", " "%%mm2" " \n\t"
  124.         "pavgb " "%%mm7" ", " "%%mm3" " \n\t"
  125.         "pavgb " "%%mm4" ", " "%%mm0" " \n\t"
  126.         "pavgb " "%%mm5" ", " "%%mm1" " \n\t"
  127.         "pavgb " "%%mm6" ", " "%%mm2" " \n\t"
  128.         "pavgb " "%%mm7" ", " "%%mm3" " \n\t"
  129.         "movq %%mm0, (%1)                       \n\t"
  130.         "movq %%mm1, (%1, %2)                   \n\t"
  131.         "movq %%mm2, (%1, %2, 2)                \n\t"
  132.         "movq %%mm3, (%1, %%""rax"")            \n\t"
  133.         "movq %%mm0, (%0)                       \n\t"
  134.         "movq %%mm1, (%0, %2)                   \n\t"
  135.         "movq %%mm2, (%0, %2, 2)                \n\t"
  136.         "movq %%mm3, (%0, %%""rax"")            \n\t"
  137.  
  138.         "movq (%0, %2, 4), %%mm0                \n\t"
  139.         "movq (%0, %%""rdx""), %%mm1            \n\t"
  140.         "movq (%0, %%""rax"", 2), %%mm2         \n\t"
  141.         "movq (%0, %%""rcx""), %%mm3            \n\t"
  142.         "movq (%1, %2, 4), %%mm4                \n\t"
  143.         "movq (%1, %%""rdx""), %%mm5            \n\t"
  144.         "movq (%1, %%""rax"", 2), %%mm6         \n\t"
  145.         "movq (%1, %%""rcx""), %%mm7            \n\t"
  146.         "pavgb " "%%mm4" ", " "%%mm0" " \n\t"
  147.         "pavgb " "%%mm5" ", " "%%mm1" " \n\t"
  148.         "pavgb " "%%mm6" ", " "%%mm2" " \n\t"
  149.         "pavgb " "%%mm7" ", " "%%mm3" " \n\t"
  150.         "pavgb " "%%mm4" ", " "%%mm0" " \n\t"
  151.         "pavgb " "%%mm5" ", " "%%mm1" " \n\t"
  152.         "pavgb " "%%mm6" ", " "%%mm2" " \n\t"
  153.         "pavgb " "%%mm7" ", " "%%mm3" " \n\t"
  154.         "movq %%mm0, (%1, %2, 4)                \n\t"
  155.         "movq %%mm1, (%1, %%""rdx"")            \n\t"
  156.         "movq %%mm2, (%1, %%""rax"", 2)         \n\t"
  157.         "movq %%mm3, (%1, %%""rcx"")            \n\t"
  158.         "movq %%mm0, (%0, %2, 4)                \n\t"
  159.         "movq %%mm1, (%0, %%""rdx"")            \n\t"
  160.         "movq %%mm2, (%0, %%""rax"", 2)         \n\t"
  161.         "movq %%mm3, (%0, %%""rcx"")            \n\t"
  162.         "jmp 4f                                 \n\t"
  163.         "3:                                     \n\t"
  164.         "lea (%%""rax"", %2, 2), %%""rdx""      \n\t"
  165.         "lea (%%""rdx"", %2, 2), %%""rcx""      \n\t"
  166.         "movq (%0), %%mm0                       \n\t"
  167.         "movq (%0, %2), %%mm1                   \n\t"
  168.         "movq (%0, %2, 2), %%mm2                \n\t"
  169.         "movq (%0, %%""rax""), %%mm3            \n\t"
  170.         "movq (%1), %%mm4                       \n\t"
  171.         "movq (%1, %2), %%mm5                   \n\t"
  172.         "movq (%1, %2, 2), %%mm6                \n\t"
  173.         "movq (%1, %%""rax""), %%mm7            \n\t"
  174.         "pavgb " "%%mm4" ", " "%%mm0" " \n\t"
  175.         "pavgb " "%%mm5" ", " "%%mm1" " \n\t"
  176.         "pavgb " "%%mm6" ", " "%%mm2" " \n\t"
  177.         "pavgb " "%%mm7" ", " "%%mm3" " \n\t"
  178.         "pavgb " "%%mm4" ", " "%%mm0" " \n\t"
  179.         "pavgb " "%%mm5" ", " "%%mm1" " \n\t"
  180.         "pavgb " "%%mm6" ", " "%%mm2" " \n\t"
  181.         "pavgb " "%%mm7" ", " "%%mm3" " \n\t"
  182.         "pavgb " "%%mm4" ", " "%%mm0" " \n\t"
  183.         "pavgb " "%%mm5" ", " "%%mm1" " \n\t"
  184.         "pavgb " "%%mm6" ", " "%%mm2" " \n\t"
  185.         "pavgb " "%%mm7" ", " "%%mm3" " \n\t"
  186.         "movq %%mm0, (%1)                       \n\t"
  187.         "movq %%mm1, (%1, %2)                   \n\t"
  188.         "movq %%mm2, (%1, %2, 2)                \n\t"
  189.         "movq %%mm3, (%1, %%""rax"")            \n\t"
  190.         "movq %%mm0, (%0)                       \n\t"
  191.         "movq %%mm1, (%0, %2)                   \n\t"
  192.         "movq %%mm2, (%0, %2, 2)                \n\t"
  193.         "movq %%mm3, (%0, %%""rax"")            \n\t"
  194.  
  195.         "movq (%0, %2, 4), %%mm0                \n\t"
  196.         "movq (%0, %%""rdx""), %%mm1            \n\t"
  197.         "movq (%0, %%""rax"", 2), %%mm2         \n\t"
  198.         "movq (%0, %%""rcx""), %%mm3            \n\t"
  199.         "movq (%1, %2, 4), %%mm4                \n\t"
  200.         "movq (%1, %%""rdx""), %%mm5            \n\t"
  201.         "movq (%1, %%""rax"", 2), %%mm6         \n\t"
  202.         "movq (%1, %%""rcx""), %%mm7            \n\t"
  203.         "pavgb " "%%mm4" ", " "%%mm0" " \n\t"
  204.         "pavgb " "%%mm5" ", " "%%mm1" " \n\t"
  205.         "pavgb " "%%mm6" ", " "%%mm2" " \n\t"
  206.         "pavgb " "%%mm7" ", " "%%mm3" " \n\t"
  207.         "pavgb " "%%mm4" ", " "%%mm0" " \n\t"
  208.         "pavgb " "%%mm5" ", " "%%mm1" " \n\t"
  209.         "pavgb " "%%mm6" ", " "%%mm2" " \n\t"
  210.         "pavgb " "%%mm7" ", " "%%mm3" " \n\t"
  211.         "pavgb " "%%mm4" ", " "%%mm0" " \n\t"
  212.         "pavgb " "%%mm5" ", " "%%mm1" " \n\t"
  213.         "pavgb " "%%mm6" ", " "%%mm2" " \n\t"
  214.         "pavgb " "%%mm7" ", " "%%mm3" " \n\t"
  215.         "movq %%mm0, (%1, %2, 4)                \n\t"
  216.         "movq %%mm1, (%1, %%""rdx"")            \n\t"
  217.         "movq %%mm2, (%1, %%""rax"", 2)         \n\t"
  218.         "movq %%mm3, (%1, %%""rcx"")            \n\t"
  219.         "movq %%mm0, (%0, %2, 4)                \n\t"
  220.         "movq %%mm1, (%0, %%""rdx"")            \n\t"
  221.         "movq %%mm2, (%0, %%""rax"", 2)         \n\t"
  222.         "movq %%mm3, (%0, %%""rcx"")            \n\t"
  223.  
  224.         "4:                                     \n\t"
  225.  
  226.         :: "r" (src), "r" (tempBlurred), "r"((x86_reg)stride), "m" (tempBlurredPast)
  227.         : "%""rax", "%""rdx", "%""rcx", "memory"
  228.     );
  229. # 2464 "postprocess_template.c"
  230. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement