Advertisement
shssoichiro

8x8 kernel after

Oct 26th, 2022
1,428
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .section .text.rav1e::asm::x86::dist::hbd::satd_kernel_8x8_hbd_avx2,"ax",@progbits
  2.     .p2align    4, 0x90
  3.     .type   rav1e::asm::x86::dist::hbd::satd_kernel_8x8_hbd_avx2,@function
  4. rav1e::asm::x86::dist::hbd::satd_kernel_8x8_hbd_avx2:
  5.  
  6.     .cfi_startproc
  7.     push rbp
  8.     .cfi_def_cfa_offset 16
  9.     .cfi_offset rbp, -16
  10.     mov rbp, rsp
  11.     .cfi_def_cfa_register rbp
  12.  
  13.     push r15
  14.     push r14
  15.     push r12
  16.     push rbx
  17.     and rsp, -64
  18.     sub rsp, 320
  19.     .cfi_offset rbx, -48
  20.     .cfi_offset r12, -40
  21.     .cfi_offset r14, -32
  22.     .cfi_offset r15, -24
  23.  
  24.     vpmovsxwd ymm0, xmmword ptr [rdi]
  25.  
  26.     vpmovsxwd ymm1, xmmword ptr [rdx]
  27.  
  28.     vpmovsxwd ymm2, xmmword ptr [rdx + 2*rcx]
  29.  
  30.     vpmovsxwd ymm3, xmmword ptr [rdi + 4*rsi]
  31.  
  32.     vpmovsxwd ymm4, xmmword ptr [rdx + 4*rcx]
  33.  
  34.     lea r8, [rsi + 2*rsi]
  35.  
  36.     lea rbx, [rcx + 2*rcx]
  37.  
  38.     vpmovsxwd ymm6, xmmword ptr [rdx + 8*rcx]
  39.  
  40.     lea rax, [rsi + 4*rsi]
  41.  
  42.     vpmovsxwd ymm5, xmmword ptr [rdi + 2*r8]
  43.  
  44.     vpmovsxwd ymm7, xmmword ptr [rdi + 4*r8]
  45.     vpmovsxwd ymm8, xmmword ptr [rdx + 4*rbx]
  46.  
  47.     vpsubd ymm0, ymm0, ymm1
  48.  
  49.     vpmovsxwd ymm1, xmmword ptr [rdi + 2*rsi]
  50.  
  51.     vmovd r12d, xmm0
  52.  
  53.     vpsubd ymm1, ymm1, ymm2
  54.     vpsubd ymm2, ymm3, ymm4
  55.  
  56.     vpmovsxwd ymm3, xmmword ptr [rdx + 2*rbx]
  57.  
  58.     vpmovsxwd ymm4, xmmword ptr [rdi + 8*rsi]
  59.  
  60.     vmovd r9d, xmm1
  61.     vmovd r8d, xmm2
  62.  
  63.     vpsubd ymm3, ymm5, ymm3
  64.  
  65.     vpmovsxwd ymm5, xmmword ptr [rdi + 2*rax]
  66.  
  67.     lea rax, [rcx + 4*rcx]
  68.  
  69.     vpsubd ymm4, ymm4, ymm6
  70.  
  71.     vpmovsxwd ymm6, xmmword ptr [rdx + 2*rax]
  72.  
  73.     mov rax, rsi
  74.  
  75.     vmovd r10d, xmm3
  76.     vmovd r15d, xmm4
  77.  
  78.     shl rax, 4
  79.     sub rax, rsi
  80.     sub rax, rsi
  81.  
  82.     vpsubd ymm6, ymm5, ymm6
  83.     vpsubd ymm5, ymm7, ymm8
  84.  
  85.     vpmovsxwd ymm7, xmmword ptr [rdi + rax]
  86.  
  87.     mov rax, rcx
  88.     shl rax, 4
  89.  
  90.     vmovd r11d, xmm6
  91.     vmovd r14d, xmm5
  92.  
  93.     sub rax, rcx
  94.     sub rax, rcx
  95.     mov rcx, -7
  96.  
  97.     vpmovsxwd ymm8, xmmword ptr [rdx + rax]
  98.  
  99.     vmovdqa ymmword ptr [rsp], ymm0
  100.  
  101.     vmovdqa ymmword ptr [rsp + 32], ymm1
  102.  
  103.     vmovdqa ymmword ptr [rsp + 64], ymm2
  104.  
  105.     vmovdqa ymmword ptr [rsp + 96], ymm3
  106.  
  107.     vmovdqa ymmword ptr [rsp + 128], ymm4
  108.  
  109.     vmovdqa ymmword ptr [rsp + 160], ymm6
  110.  
  111.     vmovdqa ymmword ptr [rsp + 192], ymm5
  112.  
  113.     vpsubd ymm7, ymm7, ymm8
  114.  
  115.     vmovd ebx, xmm7
  116.  
  117.     vmovdqa ymmword ptr [rsp + 224], ymm7
  118.  
  119.     .p2align    4, 0x90
  120. .LBB666_1:
  121.     lea esi, [r9 + r12]
  122.  
  123.     sub r12d, r9d
  124.  
  125.     lea edx, [r10 + r8]
  126.  
  127.     sub r8d, r10d
  128.  
  129.     lea edi, [r11 + r15]
  130.  
  131.     lea r9d, [rbx + r14]
  132.  
  133.     sub r14d, ebx
  134.  
  135.     sub r15d, r11d
  136.  
  137.     lea r10d, [rdx + rsi]
  138.  
  139.     sub esi, edx
  140.  
  141.     lea edx, [r8 + r12]
  142.  
  143.     lea ebx, [r9 + rdi]
  144.  
  145.     sub r12d, r8d
  146.  
  147.     lea eax, [r14 + r15]
  148.  
  149.     sub edi, r9d
  150.  
  151.     sub r15d, r14d
  152.  
  153.     lea r8d, [rbx + r10]
  154.  
  155.     sub r10d, ebx
  156.  
  157.     lea ebx, [rax + rdx]
  158.  
  159.     sub edx, eax
  160.  
  161.     lea eax, [rdi + rsi]
  162.  
  163.     sub esi, edi
  164.  
  165.     lea edi, [r15 + r12]
  166.  
  167.     sub r12d, r15d
  168.  
  169.     mov dword ptr [rsp + 4*rcx + 28], r8d
  170.  
  171.     mov dword ptr [rsp + 4*rcx + 60], ebx
  172.  
  173.     mov dword ptr [rsp + 4*rcx + 92], eax
  174.  
  175.     mov dword ptr [rsp + 4*rcx + 124], edi
  176.  
  177.     mov dword ptr [rsp + 4*rcx + 156], r10d
  178.  
  179.     mov dword ptr [rsp + 4*rcx + 188], edx
  180.  
  181.     mov dword ptr [rsp + 4*rcx + 220], esi
  182.  
  183.     mov dword ptr [rsp + 4*rcx + 252], r12d
  184.  
  185.     test rcx, rcx
  186.  
  187.     je .LBB666_2
  188.  
  189.     mov r12d, dword ptr [rsp + 4*rcx + 32]
  190.     mov r9d, dword ptr [rsp + 4*rcx + 64]
  191.  
  192.     mov r8d, dword ptr [rsp + 4*rcx + 96]
  193.     mov r10d, dword ptr [rsp + 4*rcx + 128]
  194.  
  195.     mov r15d, dword ptr [rsp + 4*rcx + 160]
  196.     mov r11d, dword ptr [rsp + 4*rcx + 192]
  197.  
  198.     mov r14d, dword ptr [rsp + 4*rcx + 224]
  199.     mov ebx, dword ptr [rsp + 4*rcx + 256]
  200.  
  201.     inc rcx
  202.  
  203.     jmp .LBB666_1
  204.  
  205. .LBB666_2:
  206.     xor eax, eax
  207.  
  208.     .p2align    4, 0x90
  209. .LBB666_3:
  210.     mov ecx, dword ptr [rsp + rax]
  211.  
  212.     mov esi, dword ptr [rsp + rax + 4]
  213.  
  214.     mov ebx, dword ptr [rsp + rax + 8]
  215.  
  216.     mov edx, dword ptr [rsp + rax + 20]
  217.  
  218.     mov edi, dword ptr [rsp + rax + 28]
  219.  
  220.     lea r10d, [rsi + rcx]
  221.  
  222.     sub ecx, esi
  223.  
  224.     mov esi, dword ptr [rsp + rax + 12]
  225.  
  226.     lea r9d, [rsi + rbx]
  227.  
  228.     sub ebx, esi
  229.  
  230.     mov esi, dword ptr [rsp + rax + 16]
  231.  
  232.     lea r8d, [r9 + r10]
  233.  
  234.     sub r10d, r9d
  235.  
  236.     lea r9d, [rbx + rcx]
  237.  
  238.     sub ecx, ebx
  239.  
  240.     lea r11d, [rdx + rsi]
  241.  
  242.     sub esi, edx
  243.  
  244.     mov edx, dword ptr [rsp + rax + 24]
  245.  
  246.     lea r14d, [rdi + rdx]
  247.  
  248.     sub edx, edi
  249.  
  250.     lea edi, [r14 + r11]
  251.  
  252.     sub r11d, r14d
  253.  
  254.     lea ebx, [rdx + rsi]
  255.  
  256.     sub esi, edx
  257.  
  258.     lea r14d, [rdi + r8]
  259.  
  260.     sub r8d, edi
  261.  
  262.     lea edi, [rbx + r9]
  263.  
  264.     sub r9d, ebx
  265.  
  266.     lea ebx, [r11 + r10]
  267.  
  268.     lea edx, [rsi + rcx]
  269.  
  270.     sub r10d, r11d
  271.  
  272.     sub ecx, esi
  273.  
  274.     mov dword ptr [rsp + rax], r14d
  275.  
  276.     mov dword ptr [rsp + rax + 4], edi
  277.  
  278.     mov dword ptr [rsp + rax + 8], ebx
  279.  
  280.     mov dword ptr [rsp + rax + 12], edx
  281.  
  282.     mov dword ptr [rsp + rax + 16], r8d
  283.  
  284.     mov dword ptr [rsp + rax + 20], r9d
  285.  
  286.     mov dword ptr [rsp + rax + 24], r10d
  287.  
  288.     mov dword ptr [rsp + rax + 28], ecx
  289.  
  290.     add rax, 32
  291.  
  292.     cmp rax, 256
  293.  
  294.     jne .LBB666_3
  295.  
  296.     vpabsd ymm0, ymmword ptr [rsp]
  297.  
  298.     vpabsd ymm1, ymmword ptr [rsp + 32]
  299.  
  300.     vpabsd ymm2, ymmword ptr [rsp + 96]
  301.  
  302.     vpaddd ymm0, ymm1, ymm0
  303.  
  304.     vpabsd ymm1, ymmword ptr [rsp + 64]
  305.  
  306.     vpaddd ymm1, ymm1, ymm2
  307.  
  308.     vpabsd ymm2, ymmword ptr [rsp + 160]
  309.  
  310.     vpaddd ymm0, ymm0, ymm1
  311.  
  312.     vpabsd ymm1, ymmword ptr [rsp + 128]
  313.  
  314.     vpaddd ymm1, ymm1, ymm2
  315.  
  316.     vpabsd ymm2, ymmword ptr [rsp + 192]
  317.  
  318.     vpaddd ymm1, ymm1, ymm2
  319.  
  320.     vpabsd ymm2, ymmword ptr [rsp + 224]
  321.  
  322.     vpaddd ymm0, ymm0, ymm1
  323.  
  324.     vpaddd ymm0, ymm0, ymm2
  325.  
  326.     vmovd eax, xmm0
  327.  
  328.     vpextrd ecx, xmm0, 1
  329.  
  330.     add rcx, rax
  331.  
  332.     vpextrd eax, xmm0, 2
  333.  
  334.     add rax, rcx
  335.  
  336.     vpextrd ecx, xmm0, 3
  337.  
  338.     vextracti128 xmm0, ymm0, 1
  339.  
  340.     add rcx, rax
  341.  
  342.     vmovd eax, xmm0
  343.     vpextrd edx, xmm0, 2
  344.  
  345.     add rax, rcx
  346.  
  347.     vpextrd ecx, xmm0, 1
  348.  
  349.     add rcx, rax
  350.  
  351.     vpextrd eax, xmm0, 3
  352.  
  353.     add rdx, rcx
  354.  
  355.     add rax, rdx
  356.  
  357.     lea rsp, [rbp - 32]
  358.  
  359.     pop rbx
  360.     pop r12
  361.     pop r14
  362.     pop r15
  363.     pop rbp
  364.     .cfi_def_cfa rsp, 8
  365.     vzeroupper
  366.  
  367.     ret
  368.  
  369. .Lfunc_end666:
  370.     .size   rav1e::asm::x86::dist::hbd::satd_kernel_8x8_hbd_avx2, .Lfunc_end666-rav1e::asm::x86::dist::hbd::satd_kernel_8x8_hbd_avx2
  371.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement