annotate test/gen-masm/call_x64.masm @ 663:127b569978cc default tip

- another tweak handling clang trying to be too smart (see last commit)
author Tassilo Philipp
date Sun, 24 Mar 2024 13:52:44 +0100
parents 3e629dc19168
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
1 .CODE
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
2
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
3 dcCall_x64_sysv PROC
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
4 OPTION PROLOGUE:NONE, EPILOGUE:NONE
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
5 push rbp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
6 push rbx
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
7 mov rbp, rsp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
8 mov rbx, r8
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
9 movsd xmm0, qword ptr[rcx ]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
10 movsd xmm1, qword ptr[rcx+ 8]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
11 movsd xmm2, qword ptr[rcx+16]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
12 movsd xmm3, qword ptr[rcx+24]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
13 movsd xmm4, qword ptr[rcx+32]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
14 movsd xmm5, qword ptr[rcx+40]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
15 movsd xmm6, qword ptr[rcx+48]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
16 movsd xmm7, qword ptr[rcx+56]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
17 sub rsp, rdi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
18 mov rax, rdi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
19 add rax, 8
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
20 and rax, 15
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
21 sub rsp, rax
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
22 mov rcx, rdi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
23 mov rdi, rsp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
24 rep movsb
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
25 mov rdi, qword ptr[rdx ]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
26 mov rsi, qword ptr[rdx+ 8]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
27 mov rcx, qword ptr[rdx+24]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
28 mov r8, qword ptr[rdx+32]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
29 mov r9, qword ptr[rdx+40]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
30 mov rdx, qword ptr[rdx+16]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
31 mov al, 8
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
32 call rbx
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
33 mov rsp, rbp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
34 pop rbx
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
35 pop rbp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
36 ret
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
37 dcCall_x64_sysv ENDP
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
38 dcCall_x64_win64 PROC
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
39 OPTION PROLOGUE:NONE, EPILOGUE:NONE
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
40 push rbp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
41 push rsi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
42 push rdi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
43 mov rbp, rsp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
44 sub rsp, rcx
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
45 mov rax, rcx
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
46 add rax, 8
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
47 and rax, 15
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
48 sub rsp, rax
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
49 mov rsi, rdx
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
50 mov rdi, rsp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
51 mov rax, r9
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
52 rep movsb
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
53 mov rcx, qword ptr[r8 ]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
54 mov rdx, qword ptr[r8+ 8]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
55 mov r9, qword ptr[r8+24]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
56 mov r8, qword ptr[r8+16]
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
57 movd xmm0, rcx
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
58 movd xmm1, rdx
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
59 movd xmm2, r8
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
60 movd xmm3, r9
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
61 push r9
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
62 push r8
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
63 push rdx
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
64 push rcx
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
65 call rax
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
66 mov rsp, rbp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
67 pop rdi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
68 pop rsi
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
69 pop rbp
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
70 ret
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
71 dcCall_x64_win64 ENDP
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
72 END