summaryrefslogtreecommitdiff
path: root/source/files/assembly/x86/perf/array_fastest.asm
blob: 2e91562f2f51fe128e960fb543b6156e52306925 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
section .text
global _start:
  call do_work
  mov rax, 60
  mov rdi, r13
  syscall

do_work:
  mov r14, arrrrrr
  xor r15, r15
  xor r13, r13
  mov rcx, 0x0f0f0f0f
  rcl rcx, 32
  or rcx, 0x0f0f0f0f
  mov rax, 0
  movq mm1, rax

  mov ebx, dword [r14]
  lea rsi, [r14 + 0x8]
  test rbx, rbx
  jmp tst
  nop
lp:
  lodsq
  and rax, rcx
  movq mm0, rax
  psadbw mm0, mm1
  movq rax, mm0
  add r13, rax

  sub rbx, 8
tst:
  jnz lp
  ret

arrrrrr:
  dd 134217728
  times 134217728 db 57h