| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- ;# callee-saved registers - Microsoft x64 calling convention
- push rbx
- push rbp
- push rdi
- push rsi
- push r12
- push r13
- push r14
- push r15
- sub rsp, 80
- movdqu xmmword ptr [rsp+64], xmm6
- movdqu xmmword ptr [rsp+48], xmm7
- movdqu xmmword ptr [rsp+32], xmm8
- movdqu xmmword ptr [rsp+16], xmm9
- movdqu xmmword ptr [rsp+0], xmm10
- sub rsp, 80
- movdqu xmmword ptr [rsp+64], xmm11
- movdqu xmmword ptr [rsp+48], xmm12
- movdqu xmmword ptr [rsp+32], xmm13
- movdqu xmmword ptr [rsp+16], xmm14
- movdqu xmmword ptr [rsp+0], xmm15
- ;# function arguments
- push rcx ;# RegisterFile& registerFile
- mov rbp, qword ptr [rdx] ;# "mx", "ma"
- mov rdi, qword ptr [rdx+8] ;# uint8_t* dataset
- mov rsi, r8 ;# uint8_t* scratchpad
- mov rbx, r9 ;# loop counter
- mov rax, rbp
- ;# zero integer registers
- xor r8, r8
- xor r9, r9
- xor r10, r10
- xor r11, r11
- xor r12, r12
- xor r13, r13
- xor r14, r14
- xor r15, r15
- ;# load constant registers
- lea rcx, [rcx+120]
- movapd xmm8, xmmword ptr [rcx+72]
- movapd xmm9, xmmword ptr [rcx+88]
- movapd xmm10, xmmword ptr [rcx+104]
- movapd xmm11, xmmword ptr [rcx+120]
- movapd xmm13, xmmword ptr [mantissaMask]
- movapd xmm14, xmmword ptr [exp240]
- movapd xmm15, xmmword ptr [scaleMask]
- jmp randomx_program_loop_begin
|