Advertisement
Guest User

Untitled

a guest
Feb 15th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.         .text
  2.         .global dot_product
  3. dot_product:
  4.         push    %ebp
  5.         mov     %esp, %ebp
  6.         push    %ebx
  7.         mov     8(%ebp), %eax
  8.         mov     12(%ebp), %ebx
  9.         mov     16(%ebp), %edx
  10.         movss   $0, %xmm2
  11.         cmpl    $4, %eax
  12.         jge     more_than_four
  13. last_point:
  14.         testl   %eax, %eax
  15.         je      is_zero
  16.         movss   (%ebx), %xmm0
  17.         movss   (%edx), %xmm1
  18.         mulss   %xmm0, %xmm1
  19.         addss   %xmm1, %xmm2
  20.         addl    $4, %edx
  21.         addl    $4, %ebx
  22.         decl    %eax
  23.         jmp     last_point
  24. more_than_four:
  25.         movupd  (%ebx), %xmm0
  26.         movupd  (%edx), %xmm1
  27.         mulps   %xmm1, %xmm0
  28.         movss   $0, %xmm1
  29.         subl    $16, %esp
  30.         movupd  %xmm0, %esp
  31.         addss   (%esp), %xmm2
  32.         addss   4(%esp), %xmm2
  33.         addss   8(%esp), %xmm2
  34.         addss   12(%esp), %xmm2
  35.         addl    $16, %esp
  36.         addl    $16, %ebx
  37.         addl    $16, %edx
  38.         subl    $4, %eax
  39.         cmpl    $4, %eax
  40.         jl      last_point
  41.         jmp     more_than_four
  42. is_zero:
  43.         movss   %xmm2, %xmm0
  44.         subl    $4, %esp
  45.         movss   %xmm0, (%esp)
  46.         flds    (%esp)
  47.         addl    $4, %esp
  48.         popl    %ebx
  49.         movl    %ebp, %esp
  50.         popl    %ebp
  51.         ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement