# HG changeset patch # User Tassilo Philipp # Date 1642411533 -3600 # Node ID 72024b0957c26f052f56892a2d887c53d4d75d74 # Parent fb51dc7145660ca4093915966be773a25f11c2ba - clutter removal (call samples, now annotated/better examples in doc/disas_examples) diff -r fb51dc714566 -r 72024b0957c2 test/samples/calls/d16.c --- a/test/samples/calls/d16.c Mon Jan 17 10:08:58 2022 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -/* - - Package: dyncall - Library: test - File: test/samples/calls/d16.c - Description: - License: - - Copyright (c) 2011-2018 Daniel Adler , - Tassilo Philipp - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - -#define d double -void d16( - d,d,d,d, - d,d,d,d, - d,d,d,d, - d,d,d,d -); -void t(d* x) -{ - d16(x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7],x[8],x[9],x[10],x[11],x[12],x[13],x[14],x[15]); -} diff -r fb51dc714566 -r 72024b0957c2 test/samples/calls/d20.c --- a/test/samples/calls/d20.c Mon Jan 17 10:08:58 2022 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -/* - - Package: dyncall - Library: test - File: test/samples/calls/d20.c - Description: - License: - - Copyright (c) 2011-2018 Daniel Adler , - Tassilo Philipp - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - -#define d double -void d20( - d,d,d,d, - d,d,d,d, - d,d,d,d, - d,d,d,d, - d,d,d,d -); -void t(d*x) -{ - d20(x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7],x[8],x[9],x[10],x[11],x[12],x[13],x[14],x[15],x[16],x[17],x[18],x[19]); -} diff -r fb51dc714566 -r 72024b0957c2 test/samples/calls/d40.c --- a/test/samples/calls/d40.c Mon Jan 17 10:08:58 2022 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -/* - - Package: dyncall - Library: test - File: test/samples/calls/d40.c - Description: - License: - - Copyright (c) 2011-2018 Daniel Adler , - Tassilo Philipp - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - -#define d double -void d40( - d,d,d,d, - d,d,d,d, - d,d,d,d, - d,d,d,d, - d,d,d,d, - d,d,d,d, - d,d,d,d, - d,d,d,d, - d,d,d,d, - d,d,d,d -); -void t() -{ - d40( - 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19, - 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 - ); -} diff -r fb51dc714566 -r 72024b0957c2 test/samples/calls/f16.c --- a/test/samples/calls/f16.c Mon Jan 17 10:08:58 2022 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -/* - - Package: dyncall - Library: test - File: test/samples/calls/f16.c - Description: - License: - - Copyright (c) 2011-2018 Daniel Adler , - Tassilo Philipp - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - -#define f float -void f16( - f,f,f,f, - f,f,f,f, - f,f,f,f, - f,f,f,f -); -void t(f* x) -{ - f16(x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7],x[8],x[9],x[10],x[11],x[12],x[13],x[14],x[15]); -} diff -r fb51dc714566 -r 72024b0957c2 test/samples/calls/f20.c --- a/test/samples/calls/f20.c Mon Jan 17 10:08:58 2022 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -/* - - Package: dyncall - Library: test - File: test/samples/calls/f20.c - Description: - License: - - Copyright (c) 2011-2018 Daniel Adler , - Tassilo Philipp - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - -#define f float -void f20( - f,f,f,f, - f,f,f,f, - f,f,f,f, - f,f,f,f, - f,f,f,f -); -void t() -{ - f20(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19); -} diff -r fb51dc714566 -r 72024b0957c2 test/samples/calls/f40.c --- a/test/samples/calls/f40.c Mon Jan 17 10:08:58 2022 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -/* - - Package: dyncall - Library: test - File: test/samples/calls/f40.c - Description: - License: - - Copyright (c) 2011-2018 Daniel Adler , - Tassilo Philipp - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - -#define d float -void f40( - d,d,d,d, - d,d,d,d, - d,d,d,d, - d,d,d,d, - d,d,d,d, - d,d,d,d, - d,d,d,d, - d,d,d,d, - d,d,d,d, - d,d,d,d -); -void t() -{ - f40( - 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19, - 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 - ); -} diff -r fb51dc714566 -r 72024b0957c2 test/samples/calls/fd40.c --- a/test/samples/calls/fd40.c Mon Jan 17 10:08:58 2022 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* - - Package: dyncall - Library: test - File: test/samples/calls/fd40.c - Description: - License: - - Copyright (c) 2011-2018 Daniel Adler , - Tassilo Philipp - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - -#define a float -#define b double - -void ab40( - a,b,a,b, - a,b,a,b, - a,b,a,b, - a,b,a,b, - a,b,a,b, - a,b,a,b, - a,b,a,b, - a,b,a,b, - a,b,a,b, - a,b,a,b -); -void t(a*x,b*y) -{ - ab40( - x[ 0],y[ 1],x[ 2],y[ 3],x[ 4],y[ 5],x[ 6],y[ 7],x[ 8],y[ 9],x[10],y[11],x[12],y[13],x[14],y[15],x[16],y[17],x[18],y[19], - x[20],y[21],x[22],y[23],x[24],y[25],x[26],y[27],x[28],y[29],x[30],y[31],x[32],y[33],x[34],y[35],x[36],y[37],x[38],y[39] - ); -} diff -r fb51dc714566 -r 72024b0957c2 test/samples/calls/i3.c --- a/test/samples/calls/i3.c Mon Jan 17 10:08:58 2022 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -/* - - Package: dyncall - Library: test - File: test/samples/calls/i3.c - Description: - License: - - Copyright (c) 2011-2018 Daniel Adler , - Tassilo Philipp - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - -#define i int -void i3(i,i,i); - -void t(i*x) -{ - i3(x[1],x[2],x[3]); -} diff -r fb51dc714566 -r 72024b0957c2 test/samples/calls/i7.c --- a/test/samples/calls/i7.c Mon Jan 17 10:08:58 2022 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -/* - - Package: dyncall - Library: test - File: test/samples/calls/i7.c - Description: - License: - - Copyright (c) 2011-2018 Daniel Adler , - Tassilo Philipp - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - -#define i int -void i7(i,i,i,i,i,i,i); -void t() -{ - i7(0,1,2,3,4,5,6); -} diff -r fb51dc714566 -r 72024b0957c2 test/samples/calls/id40.c --- a/test/samples/calls/id40.c Mon Jan 17 10:08:58 2022 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* - - Package: dyncall - Library: test - File: test/samples/calls/id40.c - Description: - License: - - Copyright (c) 2011-2018 Daniel Adler , - Tassilo Philipp - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - -#define d double -#define i int -void id40( - i,d,i,d, - i,d,i,d, - i,d,i,d, - i,d,i,d, - i,d,i,d, - i,d,i,d, - i,d,i,d, - i,d,i,d, - i,d,i,d, - i,d,i,d -); -void t(int*x,double*y) -{ - id40( - x[ 0],y[ 1],x[ 2],y[ 3],x[ 4],y[ 5],x[ 6],y[ 7],x[ 8],y[ 9],x[10],y[11],x[12],y[13],x[14],y[15],x[16],y[17],x[18],y[19], - x[20],y[21],x[22],y[23],x[24],y[25],x[26],y[27],x[28],y[29],x[30],y[31],x[32],y[33],x[34],y[35],x[36],y[37],x[38],y[39] - ); -} diff -r fb51dc714566 -r 72024b0957c2 test/samples/calls/l16.c --- a/test/samples/calls/l16.c Mon Jan 17 10:08:58 2022 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -/* - - Package: dyncall - Library: test - File: test/samples/calls/l16.c - Description: - License: - - Copyright (c) 2011-2018 Daniel Adler , - Tassilo Philipp - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - -#define X long long -void f16( - X,X,X,X, - X,X,X,X, - X,X,X,X, - X,X,X,X -); -void t(X* x) -{ - f16(x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7],x[8],x[9],x[10],x[11],x[12],x[13],x[14],x[15]); -} diff -r fb51dc714566 -r 72024b0957c2 test/samples/calls/many.c --- a/test/samples/calls/many.c Mon Jan 17 10:08:58 2022 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -/* - - Package: dyncall - Library: test - File: test/samples/calls/many.c - Description: - License: - - Copyright (c) 2011-2018 Daniel Adler , - Tassilo Philipp - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - -#define i int -#define f float -#define d double -#define l long long - -void fi16( - f,i,f,i, - f,i,f,i, - f,i,f,i, - f,i,f,i -); - - -void i16( - i,i,i,i, - i,i,i,i, - i,i,i,i, - i,i,i,i -); - -void f16( - f,f,f,f, - f,f,f,f, - f,f,f,f, - f,f,f,f -); -void d16( - d,d,d,d, - d,d,d,d, - d,d,d,d, - d,d,d,d -); -void l16( - l,l,l,l, - l,l,l,l, - l,l,l,l, - l,l,l,l -); -void t() -{ -/* - l16(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); - d16(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); - i16(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); - f16(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); -*/ - di16(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); - fi16(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); -} diff -r fb51dc714566 -r 72024b0957c2 test/samples/composite/args.asm --- a/test/samples/composite/args.asm Mon Jan 17 10:08:58 2022 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,556 +0,0 @@ -; Listing generated by Microsoft (R) Optimizing Compiler Version 15.00.21022.08 - -include listing.inc - -INCLUDELIB LIBCMT -INCLUDELIB OLDNAMES - -PUBLIC call_f_s2i -EXTRN f_s2i:PROC -; Function compile flags: /Ogtpy -; COMDAT call_f_s2i -_TEXT SEGMENT -a1$ = 8 -call_f_s2i PROC ; COMDAT -; File c:\lab\dynabi\tests\composite\args.c -; Line 130 - xor eax, eax - mov DWORD PTR a1$[rsp], 0 - mov DWORD PTR a1$[rsp+4], eax - mov rcx, QWORD PTR a1$[rsp] - jmp f_s2i -call_f_s2i ENDP -_TEXT ENDS -PUBLIC $T993 -PUBLIC call_f_s4i -EXTRN f_s4i:PROC -; COMDAT pdata -pdata SEGMENT -$pdata$call_f_s4i DD imagerel $LN3 - DD imagerel $LN3+52 - DD imagerel $unwind$call_f_s4i -pdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$call_f_s4i DD 010401H - DD 06204H -; Function compile flags: /Ogtpy -xdata ENDS -; COMDAT call_f_s4i -_TEXT SEGMENT -$T993 = 32 -a1$ = 32 -call_f_s4i PROC ; COMDAT -; Line 131 -$LN3: - sub rsp, 56 ; 00000038H - xor eax, eax - mov DWORD PTR a1$[rsp], 0 - lea rcx, QWORD PTR $T993[rsp] - mov DWORD PTR a1$[rsp+4], eax - mov DWORD PTR a1$[rsp+8], eax - mov DWORD PTR a1$[rsp+12], eax - movaps xmm0, XMMWORD PTR a1$[rsp] - movdqa XMMWORD PTR $T993[rsp], xmm0 - call f_s4i - add rsp, 56 ; 00000038H - ret 0 -call_f_s4i ENDP -_TEXT ENDS -PUBLIC $T1004 -PUBLIC call_f_s8i -EXTRN f_s8i:PROC -; COMDAT pdata -pdata SEGMENT -$pdata$call_f_s8i DD imagerel $LN3 - DD imagerel $LN3+97 - DD imagerel $unwind$call_f_s8i -pdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$call_f_s8i DD 010401H - DD 0c204H -; Function compile flags: /Ogtpy -xdata ENDS -; COMDAT call_f_s8i -_TEXT SEGMENT -a1$ = 32 -$T1004 = 64 -call_f_s8i PROC ; COMDAT -; Line 132 -$LN3: - sub rsp, 104 ; 00000068H - xor eax, eax - lea rcx, QWORD PTR a1$[rsp] - lea rdx, QWORD PTR $T1004[rsp] - mov DWORD PTR a1$[rsp+4], eax - mov DWORD PTR a1$[rsp+8], eax - mov DWORD PTR a1$[rsp+12], eax - mov DWORD PTR a1$[rsp+16], eax - mov DWORD PTR a1$[rsp+20], eax - mov DWORD PTR a1$[rsp+24], eax - mov DWORD PTR a1$[rsp+28], eax - mov DWORD PTR a1$[rsp], 0 - mov rax, QWORD PTR [rcx] - mov QWORD PTR [rdx], rax - mov rax, QWORD PTR [rcx+8] - mov QWORD PTR [rdx+8], rax - mov rax, QWORD PTR [rcx+16] - mov QWORD PTR [rdx+16], rax - mov rax, QWORD PTR [rcx+24] - lea rcx, QWORD PTR $T1004[rsp] - mov QWORD PTR [rdx+24], rax - call f_s8i - add rsp, 104 ; 00000068H - ret 0 -call_f_s8i ENDP -_TEXT ENDS -PUBLIC call_f_s2f -EXTRN f_s2f:PROC -EXTRN _fltused:DWORD -; Function compile flags: /Ogtpy -; COMDAT call_f_s2f -_TEXT SEGMENT -a1$ = 8 -call_f_s2f PROC ; COMDAT -; Line 134 - xorps xmm0, xmm0 - xor eax, eax - movss DWORD PTR a1$[rsp], xmm0 - mov DWORD PTR a1$[rsp+4], eax - mov rcx, QWORD PTR a1$[rsp] - jmp f_s2f -call_f_s2f ENDP -_TEXT ENDS -PUBLIC $T1023 -PUBLIC call_f_s4f -EXTRN f_s4f:PROC -; COMDAT pdata -pdata SEGMENT -$pdata$call_f_s4f DD imagerel $LN3 - DD imagerel $LN3+53 - DD imagerel $unwind$call_f_s4f -pdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$call_f_s4f DD 010401H - DD 06204H -; Function compile flags: /Ogtpy -xdata ENDS -; COMDAT call_f_s4f -_TEXT SEGMENT -$T1023 = 32 -a1$ = 32 -call_f_s4f PROC ; COMDAT -; Line 135 -$LN3: - sub rsp, 56 ; 00000038H - xorps xmm0, xmm0 - xor eax, eax - lea rcx, QWORD PTR $T1023[rsp] - movss DWORD PTR a1$[rsp], xmm0 - mov DWORD PTR a1$[rsp+4], eax - mov DWORD PTR a1$[rsp+8], eax - mov DWORD PTR a1$[rsp+12], eax - movaps xmm0, XMMWORD PTR a1$[rsp] - movdqa XMMWORD PTR $T1023[rsp], xmm0 - call f_s4f - add rsp, 56 ; 00000038H - ret 0 -call_f_s4f ENDP -_TEXT ENDS -PUBLIC call_f_s1d -EXTRN f_s1d:PROC -; Function compile flags: /Ogtpy -; COMDAT call_f_s1d -_TEXT SEGMENT -a1$ = 8 -call_f_s1d PROC ; COMDAT -; Line 137 - xorpd xmm0, xmm0 - movsdx QWORD PTR a1$[rsp], xmm0 - mov rcx, QWORD PTR a1$[rsp] - jmp f_s1d -call_f_s1d ENDP -_TEXT ENDS -PUBLIC $T1041 -PUBLIC call_f_s2d -EXTRN f_s2d:PROC -; COMDAT pdata -pdata SEGMENT -$pdata$call_f_s2d DD imagerel $LN3 - DD imagerel $LN3+47 - DD imagerel $unwind$call_f_s2d -pdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$call_f_s2d DD 010401H - DD 06204H -; Function compile flags: /Ogtpy -xdata ENDS -; COMDAT call_f_s2d -_TEXT SEGMENT -$T1041 = 32 -a1$ = 32 -call_f_s2d PROC ; COMDAT -; Line 138 -$LN3: - sub rsp, 56 ; 00000038H - xorpd xmm0, xmm0 - xor eax, eax - lea rcx, QWORD PTR $T1041[rsp] - movsdx QWORD PTR a1$[rsp], xmm0 - mov QWORD PTR a1$[rsp+8], rax - movaps xmm0, XMMWORD PTR a1$[rsp] - movdqa XMMWORD PTR $T1041[rsp], xmm0 - call f_s2d - add rsp, 56 ; 00000038H - ret 0 -call_f_s2d ENDP -_TEXT ENDS -PUBLIC $T1052 -PUBLIC call_f_s4d -EXTRN f_s4d:PROC -; COMDAT pdata -pdata SEGMENT -$pdata$call_f_s4d DD imagerel $LN3 - DD imagerel $LN3+86 - DD imagerel $unwind$call_f_s4d -pdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$call_f_s4d DD 010401H - DD 0c204H -; Function compile flags: /Ogtpy -xdata ENDS -; COMDAT call_f_s4d -_TEXT SEGMENT -a1$ = 32 -$T1052 = 64 -call_f_s4d PROC ; COMDAT -; Line 139 -$LN3: - sub rsp, 104 ; 00000068H - xorpd xmm0, xmm0 - xor eax, eax - lea rcx, QWORD PTR a1$[rsp] - movsdx QWORD PTR a1$[rsp], xmm0 - mov QWORD PTR a1$[rsp+8], rax - mov QWORD PTR a1$[rsp+16], rax - mov QWORD PTR a1$[rsp+24], rax - mov rax, QWORD PTR [rcx] - lea rdx, QWORD PTR $T1052[rsp] - mov QWORD PTR [rdx], rax - mov rax, QWORD PTR [rcx+8] - mov QWORD PTR [rdx+8], rax - mov rax, QWORD PTR [rcx+16] - mov QWORD PTR [rdx+16], rax - mov rax, QWORD PTR [rcx+24] - lea rcx, QWORD PTR $T1052[rsp] - mov QWORD PTR [rdx+24], rax - call f_s4d - add rsp, 104 ; 00000068H - ret 0 -call_f_s4d ENDP -_TEXT ENDS -PUBLIC call_f_s1q -EXTRN f_s1q:PROC -; Function compile flags: /Ogtpy -; COMDAT call_f_s1q -_TEXT SEGMENT -a1$ = 8 -call_f_s1q PROC ; COMDAT -; Line 141 - xorpd xmm0, xmm0 - movsdx QWORD PTR a1$[rsp], xmm0 - mov rcx, QWORD PTR a1$[rsp] - jmp f_s1q -call_f_s1q ENDP -_TEXT ENDS -PUBLIC $T1068 -PUBLIC $T1069 -PUBLIC call_f_s2ds2d -EXTRN f_s2ds2d:PROC -; COMDAT pdata -pdata SEGMENT -$pdata$call_f_s2ds2d DD imagerel $LN3 - DD imagerel $LN3+74 - DD imagerel $unwind$call_f_s2ds2d -pdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$call_f_s2ds2d DD 010401H - DD 08204H -; Function compile flags: /Ogtpy -xdata ENDS -; COMDAT call_f_s2ds2d -_TEXT SEGMENT -$T1069 = 32 -a2$ = 32 -$T1068 = 48 -a1$ = 48 -call_f_s2ds2d PROC ; COMDAT -; Line 147 -$LN3: - sub rsp, 72 ; 00000048H -; Line 148 - xorpd xmm0, xmm0 - xor eax, eax -; Line 150 - lea rdx, QWORD PTR $T1069[rsp] - movsdx QWORD PTR a1$[rsp], xmm0 - movsdx QWORD PTR a2$[rsp], xmm0 - mov QWORD PTR a1$[rsp+8], rax - mov QWORD PTR a2$[rsp+8], rax - lea rcx, QWORD PTR $T1068[rsp] - movaps xmm1, XMMWORD PTR a1$[rsp] - movaps xmm0, XMMWORD PTR a2$[rsp] - movdqa XMMWORD PTR $T1068[rsp], xmm1 - movdqa XMMWORD PTR $T1069[rsp], xmm0 - call f_s2ds2d -; Line 151 - add rsp, 72 ; 00000048H - ret 0 -call_f_s2ds2d ENDP -_TEXT ENDS -PUBLIC __real@40000000 -PUBLIC call_f_sfifi -EXTRN f_sfifi:PROC -; COMDAT pdata -pdata SEGMENT -$pdata$call_f_sfifi DD imagerel $LN3 - DD imagerel $LN3+65 - DD imagerel $unwind$call_f_sfifi -pdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$call_f_sfifi DD 010701H - DD 06207H -xdata ENDS -; COMDAT __real@40000000 -CONST SEGMENT -__real@40000000 DD 040000000r ; 2 -; Function compile flags: /Ogtpy -CONST ENDS -; COMDAT call_f_sfifi -_TEXT SEGMENT -call_f_sfifi PROC ; COMDAT -; Line 155 -$LN3: - mov rax, rsp - sub rsp, 56 ; 00000038H - xorps xmm0, xmm0 - movss xmm1, DWORD PTR __real@40000000 - mov DWORD PTR [rax-20], 1 - mov DWORD PTR [rax-12], 3 - lea rcx, QWORD PTR [rax-24] - movss DWORD PTR [rax-24], xmm0 - movss DWORD PTR [rax-16], xmm1 - movaps xmm0, XMMWORD PTR [rax-24] - movdqa XMMWORD PTR [rax-24], xmm0 - call f_sfifi - add rsp, 56 ; 00000038H - ret 0 -call_f_sfifi ENDP -_TEXT ENDS -PUBLIC __real@40400000 -PUBLIC __real@3f800000 -PUBLIC call_f_sifif -EXTRN f_sifif:PROC -; COMDAT pdata -pdata SEGMENT -$pdata$call_f_sifif DD imagerel $LN3 - DD imagerel $LN3+70 - DD imagerel $unwind$call_f_sifif -pdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$call_f_sifif DD 010701H - DD 06207H -xdata ENDS -; COMDAT __real@40400000 -CONST SEGMENT -__real@40400000 DD 040400000r ; 3 -CONST ENDS -; COMDAT __real@3f800000 -CONST SEGMENT -__real@3f800000 DD 03f800000r ; 1 -; Function compile flags: /Ogtpy -CONST ENDS -; COMDAT call_f_sifif -_TEXT SEGMENT -call_f_sifif PROC ; COMDAT -; Line 161 -$LN3: - mov rax, rsp - sub rsp, 56 ; 00000038H - movss xmm0, DWORD PTR __real@3f800000 - movss xmm1, DWORD PTR __real@40400000 - mov DWORD PTR [rax-24], 0 - mov DWORD PTR [rax-16], 2 - lea rcx, QWORD PTR [rax-24] - movss DWORD PTR [rax-20], xmm0 - movss DWORD PTR [rax-12], xmm1 - movaps xmm0, XMMWORD PTR [rax-24] - movdqa XMMWORD PTR [rax-24], xmm0 - call f_sifif - add rsp, 56 ; 00000038H - ret 0 -call_f_sifif ENDP -_TEXT ENDS -PUBLIC $T1109 -PUBLIC call_f_full_sifif -EXTRN f_full_sifif:PROC -; COMDAT pdata -pdata SEGMENT -$pdata$call_f_full_sifif DD imagerel $LN3 - DD imagerel $LN3+90 - DD imagerel $unwind$call_f_full_sifif -pdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$call_f_full_sifif DD 010401H - DD 0c204H -; Function compile flags: /Ogtpy -xdata ENDS -; COMDAT call_f_full_sifif -_TEXT SEGMENT -$T1109 = 80 -a1$ = 80 -call_f_full_sifif PROC ; COMDAT -; Line 168 -$LN3: - sub rsp, 104 ; 00000068H - xor eax, eax - mov DWORD PTR a1$[rsp], 0 - xor ecx, ecx - lea edx, QWORD PTR [rax+1] - mov DWORD PTR a1$[rsp+4], eax - mov DWORD PTR a1$[rsp+8], eax - mov DWORD PTR a1$[rsp+12], eax - lea rax, QWORD PTR $T1109[rsp] - lea r9d, QWORD PTR [rdx+2] - movaps xmm0, XMMWORD PTR a1$[rsp] - movdqa XMMWORD PTR $T1109[rsp], xmm0 - mov QWORD PTR [rsp+64], rax - mov BYTE PTR [rsp+56], 7 - mov BYTE PTR [rsp+48], 6 - lea r8d, QWORD PTR [rdx+1] - mov BYTE PTR [rsp+40], 5 - mov BYTE PTR [rsp+32], 4 - call f_full_sifif - add rsp, 104 ; 00000068H - ret 0 -call_f_full_sifif ENDP -_TEXT ENDS -PUBLIC $T1120 -PUBLIC call_f_remain64_sifif -EXTRN f_remain64_sifif:PROC -; COMDAT pdata -pdata SEGMENT -$pdata$call_f_remain64_sifif DD imagerel $LN3 - DD imagerel $LN3+56 - DD imagerel $unwind$call_f_remain64_sifif -pdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$call_f_remain64_sifif DD 010401H - DD 06204H -; Function compile flags: /Ogtpy -xdata ENDS -; COMDAT call_f_remain64_sifif -_TEXT SEGMENT -$T1120 = 32 -a1$ = 32 -call_f_remain64_sifif PROC ; COMDAT -; Line 169 -$LN3: - sub rsp, 56 ; 00000038H - xor eax, eax - mov DWORD PTR a1$[rsp], 0 - lea r8, QWORD PTR $T1120[rsp] - mov DWORD PTR a1$[rsp+4], eax - mov DWORD PTR a1$[rsp+8], eax - mov DWORD PTR a1$[rsp+12], eax - movaps xmm0, XMMWORD PTR a1$[rsp] - movdqa XMMWORD PTR $T1120[rsp], xmm0 - mov dl, 1 - xor ecx, ecx - call f_remain64_sifif - add rsp, 56 ; 00000038H - ret 0 -call_f_remain64_sifif ENDP -_TEXT ENDS -PUBLIC call_f_sfffc -EXTRN f_sfffc:PROC -; COMDAT pdata -pdata SEGMENT -$pdata$call_f_sfffc DD imagerel $LN3 - DD imagerel $LN3+68 - DD imagerel $unwind$call_f_sfffc -pdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$call_f_sfffc DD 010701H - DD 06207H -; Function compile flags: /Ogtpy -xdata ENDS -; COMDAT call_f_sfffc -_TEXT SEGMENT -call_f_sfffc PROC ; COMDAT -; Line 173 -$LN3: - mov rax, rsp - sub rsp, 56 ; 00000038H - xorps xmm0, xmm0 - movss xmm1, DWORD PTR __real@3f800000 - mov BYTE PTR [rax-12], 3 - lea rcx, QWORD PTR [rax-24] - movss DWORD PTR [rax-24], xmm0 - movss xmm0, DWORD PTR __real@40000000 - movss DWORD PTR [rax-20], xmm1 - movss DWORD PTR [rax-16], xmm0 - movaps xmm1, XMMWORD PTR [rax-24] - movdqa XMMWORD PTR [rax-24], xmm1 - call f_sfffc - add rsp, 56 ; 00000038H - ret 0 -call_f_sfffc ENDP -_TEXT ENDS -PUBLIC call_f_scfff -EXTRN f_scfff:PROC -; COMDAT pdata -pdata SEGMENT -$pdata$call_f_scfff DD imagerel $LN3 - DD imagerel $LN3+73 - DD imagerel $unwind$call_f_scfff -pdata ENDS -; COMDAT xdata -xdata SEGMENT -$unwind$call_f_scfff DD 010701H - DD 06207H -; Function compile flags: /Ogtpy -xdata ENDS -; COMDAT call_f_scfff -_TEXT SEGMENT -call_f_scfff PROC ; COMDAT -; Line 177 -$LN3: - mov rax, rsp - sub rsp, 56 ; 00000038H - movss xmm0, DWORD PTR __real@3f800000 - movss xmm1, DWORD PTR __real@40000000 - mov BYTE PTR [rax-24], 0 - lea rcx, QWORD PTR [rax-24] - movss DWORD PTR [rax-20], xmm0 - movss xmm0, DWORD PTR __real@40400000 - movss DWORD PTR [rax-16], xmm1 - movss DWORD PTR [rax-12], xmm0 - movaps xmm1, XMMWORD PTR [rax-24] - movdqa XMMWORD PTR [rax-24], xmm1 - call f_scfff - add rsp, 56 ; 00000038H - ret 0 -call_f_scfff ENDP -_TEXT ENDS -END diff -r fb51dc714566 -r 72024b0957c2 test/samples/composite/args.c --- a/test/samples/composite/args.c Mon Jan 17 10:08:58 2022 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,178 +0,0 @@ -// types: - -typedef struct { int x, y; } s2i; -typedef struct { int x, y, z, w; } s4i; -typedef struct { int x, y, z, w, a, b, c, d; } s8i; - -typedef struct { float x, y; } s2f; -typedef struct { float x, y, z, w; } s4f; - -typedef struct { double x; } s1d; -typedef struct { double x, y; } s2d; -typedef struct { double x, y, z, w; } s4d; - -typedef struct { long double x; } s1q; - -#if defined(__ARM_NEON__) -#include -#endif - -#if defined(__i386__) || defined(__x86_64__) && ( defined(__MMX__) || defined(__SSE__) ) -#if defined(__GNUC__) && (__GNUC__ >= 4) && (__GNUC_MINOR__ > 2) - -#include - -#if defined(__AVX__) -#define V256 1 -typedef __m256 v256_t; -#endif - -#else - -#include - -#endif - -#if defined(__MMX__) -#define V64 1 -typedef __m64 v64_t; -#endif - -#if defined(__SSE__) -#define V128 1 -typedef __m128 v128_t; -#endif - -#endif - -#if V64 - -typedef struct { v64_t f1; } s1w; -typedef struct { v64_t f1, f2; } s2w; -typedef struct { v64_t f1, f2, f3, f4; } s4w; - -#endif - -#if V128 - -typedef struct { v128_t f1; } s1x; -typedef struct { v128_t f1, f2; } s2x; - -typedef struct { v64_t f1; v128_t f2; } swx; - -#endif - -// x86_64: - -/* - x86_64 - ------------ - (v{ii}) regs int 8 - (v{iiii}) regs int 16 - (v{iiiiiiii}) stack 32 - (v{ff}) regs sse 8 - (v{ffff}) regs sse 16 - (v{d}) regs sse 8 - (v{dd}) regs sse 16 - (v{dddd}) stack 32 - (v{w}) regs sse 8 - (v{ww}) regs sse 16 - (v{wwww}) stack 32 - (v{x}) regs sse 16 - (v{xx}) stack 32 - (v(wx}) stack 32 - (v{xw}) stack 32 - (v{y}) stack 32 - (v{yy}{x}) stack 32 - (v{ifif}) -*/ - -#if V256 - -typedef struct { v256_t f1; } s1y; -typedef struct { v256_t f1; v256_t f2; } s2y; - -typedef v256_t y; - -extern void f_y(y a1); void call_f_y() { y a1 = {0,}; f_y(a1); } - - -extern void f_s2ys1x(s2y a1,s1x a2); void call_f_s2ys1x() { s2y a1 = {0,}; s1x a2 = {0,}; f_s2ys1x(a1,a2); } -extern void f_s1xs2y(s1x a1,s2y a2); void call_f_s1xs2y() { s1x a1 = {0,}; s2y a2 = {0,}; f_s1xs2y(a1,a2); } - -extern void f_s1y(s1y a1); void call_f_s1y() { s1y a1 = {0,}; f_s1y(a1); } -extern void f_s2y(s2y a1); void call_f_s2y() { s2y a1 = {0,}; f_s2y(a1); } - -extern void f_s1ys1y(s1y a1,s1y a2); void call_f_s1ys1y() { s1y a1 = {0,}, a2 = {0,}; f_s1ys1y(a1,a2); } -extern void f_s2ys1y(s2y a1,s1y a2); void call_f_s2ys1y() { s2y a1 = {0,}; s1y a2 = {0,}; f_s2ys1y(a1,a2); } - -#endif - -#if V128 - -extern void f_swx(swx a1); void call_f_swx() { swx a1 = {0,}; f_swx(a1); } - -extern void f_s2x(s2x a1); void call_f_s2x() { s2x a1 = {0,}; f_s2x(a1); } -extern void f_s1x(s1x a1); void call_f_s1x() { s1x a1 = {0,}; f_s1x(a1); } - -#endif - -#if V64 - -extern void f_s4w(s4w a1); void call_f_s4w() { s4w a1 = {0,}; f_s4w(a1); } -extern void f_s2w(s2w a1); void call_f_s2w() { s2w a1 = {0,}; f_s2w(a1); } -extern void f_s1w(s1w a1); void call_f_s1w() { s1w a1 = {0,}; f_s1w(a1); } - -#endif - -// one composite argument: - -extern void f_s2i(s2i a1); void call_f_s2i() { s2i a1 = {0,}; f_s2i(a1); } -extern void f_s4i(s4i a1); void call_f_s4i() { s4i a1 = {0,}; f_s4i(a1); } -extern void f_s8i(s8i a1); void call_f_s8i() { s8i a1 = {0,}; f_s8i(a1); } - -extern void f_s2f(s2f a1); void call_f_s2f() { s2f a1 = {0,}; f_s2f(a1); } -extern void f_s4f(s4f a1); void call_f_s4f() { s4f a1 = {0,}; f_s4f(a1); } - -extern void f_s1d(s1d a1); void call_f_s1d() { s1d a1 = {0,}; f_s1d(a1); } -extern void f_s2d(s2d a1); void call_f_s2d() { s2d a1 = {0,}; f_s2d(a1); } -extern void f_s4d(s4d a1); void call_f_s4d() { s4d a1 = {0,}; f_s4d(a1); } - -extern void f_s1q(s1q a1); void call_f_s1q() { s1q a1 = {0,}; f_s1q(a1); } - - -// multiple arguments: - -extern void f_s2ds2d(s2d a1, s2d a2); -void call_f_s2ds2d() { - s2d a1={0,}; - s2d a2={0,}; - f_s2ds2d(a1,a2); -} - -typedef struct { float x; int y; float z; int w; } sfifi; -extern void f_sfifi(sfifi a1); -void call_f_sfifi() { sfifi a1 = {0,1,2,3,}; f_sfifi(a1); } - -// int/float 4-byte alignment. - -typedef struct { int x; float y; int z; float w; } sifif; -extern void f_sifif(sifif a1); -void call_f_sifif() { sifif a1 = {0,1,2,3,}; f_sifif(a1); } - -#define FULL_T char, short, int, long int, char, char, char, char -#define FULL_V 0,1,2,3,4,5,6,7 - -#define REMAIN64_T char, char -#define REMAIN64_V 0,1 -extern void f_full_sifif(FULL_T, sifif a1); void call_f_full_sifif() { sifif a1 = {0,}; f_full_sifif(FULL_V,a1); } -extern void f_remain64_sifif(REMAIN64_T, sifif a1); void call_f_remain64_sifif() { sifif a1 = {0,}; f_remain64_sifif(REMAIN64_V,a1); } - -typedef struct { float f1,f2,f3; char f4; } sfffc; -extern void f_sfffc(sfffc a1); -void call_f_sfffc() { sfffc a1 = {0,1,2,3,}; f_sfffc(a1); } - -typedef struct { char f1; float f2,f3,f4; } scfff; -extern void f_scfff(scfff a1); -void call_f_scfff() { scfff a1 = {0,1,2,3,}; f_scfff(a1); } - diff -r fb51dc714566 -r 72024b0957c2 test/samples/composite/args.s --- a/test/samples/composite/args.s Mon Jan 17 10:08:58 2022 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,574 +0,0 @@ - .section __TEXT,__text,regular,pure_instructions - .globl _call_f_swx - .align 4, 0x90 -_call_f_swx: ## @call_f_swx -Ltmp2: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp3: - .cfi_def_cfa_offset 16 -Ltmp4: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp5: - .cfi_def_cfa_register %rbp - subq $64, %rsp - xorps %xmm0, %xmm0 - movaps %xmm0, -16(%rbp) - movaps %xmm0, -32(%rbp) - movaps -32(%rbp), %xmm0 - movaps -16(%rbp), %xmm1 - movaps %xmm1, 16(%rsp) - movaps %xmm0, (%rsp) - callq _f_swx - addq $64, %rsp - popq %rbp - ret -Ltmp6: - .cfi_endproc -Leh_func_end0: - - .globl _call_f_s2x - .align 4, 0x90 -_call_f_s2x: ## @call_f_s2x -Ltmp9: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp10: - .cfi_def_cfa_offset 16 -Ltmp11: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp12: - .cfi_def_cfa_register %rbp - subq $64, %rsp - xorps %xmm0, %xmm0 - movaps %xmm0, -16(%rbp) - movaps %xmm0, -32(%rbp) - movaps -32(%rbp), %xmm0 - movaps -16(%rbp), %xmm1 - movaps %xmm1, 16(%rsp) - movaps %xmm0, (%rsp) - callq _f_s2x - addq $64, %rsp - popq %rbp - ret -Ltmp13: - .cfi_endproc -Leh_func_end1: - - .globl _call_f_s1x - .align 4, 0x90 -_call_f_s1x: ## @call_f_s1x -Ltmp16: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp17: - .cfi_def_cfa_offset 16 -Ltmp18: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp19: - .cfi_def_cfa_register %rbp - xorps %xmm0, %xmm0 - popq %rbp - jmp _f_s1x ## TAILCALL -Ltmp20: - .cfi_endproc -Leh_func_end2: - - .globl _call_f_s4w - .align 4, 0x90 -_call_f_s4w: ## @call_f_s4w -Ltmp23: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp24: - .cfi_def_cfa_offset 16 -Ltmp25: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp26: - .cfi_def_cfa_register %rbp - subq $64, %rsp - xorps %xmm0, %xmm0 - movaps %xmm0, -16(%rbp) - movaps %xmm0, -32(%rbp) - movq -8(%rbp), %rax - movq %rax, 24(%rsp) - movq -16(%rbp), %rax - movq %rax, 16(%rsp) - movq -32(%rbp), %rax - movq -24(%rbp), %rcx - movq %rcx, 8(%rsp) - movq %rax, (%rsp) - callq _f_s4w - addq $64, %rsp - popq %rbp - ret -Ltmp27: - .cfi_endproc -Leh_func_end3: - - .globl _call_f_s2w - .align 4, 0x90 -_call_f_s2w: ## @call_f_s2w -Ltmp30: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp31: - .cfi_def_cfa_offset 16 -Ltmp32: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp33: - .cfi_def_cfa_register %rbp - xorl %edi, %edi - xorl %esi, %esi - popq %rbp - jmp _f_s2w ## TAILCALL -Ltmp34: - .cfi_endproc -Leh_func_end4: - - .globl _call_f_s1w - .align 4, 0x90 -_call_f_s1w: ## @call_f_s1w -Ltmp37: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp38: - .cfi_def_cfa_offset 16 -Ltmp39: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp40: - .cfi_def_cfa_register %rbp - xorl %edi, %edi - popq %rbp - jmp _f_s1w ## TAILCALL -Ltmp41: - .cfi_endproc -Leh_func_end5: - - .globl _call_f_s2i - .align 4, 0x90 -_call_f_s2i: ## @call_f_s2i -Ltmp44: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp45: - .cfi_def_cfa_offset 16 -Ltmp46: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp47: - .cfi_def_cfa_register %rbp - xorl %edi, %edi - popq %rbp - jmp _f_s2i ## TAILCALL -Ltmp48: - .cfi_endproc -Leh_func_end6: - - .globl _call_f_s4i - .align 4, 0x90 -_call_f_s4i: ## @call_f_s4i -Ltmp51: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp52: - .cfi_def_cfa_offset 16 -Ltmp53: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp54: - .cfi_def_cfa_register %rbp - xorl %edi, %edi - xorl %esi, %esi - popq %rbp - jmp _f_s4i ## TAILCALL -Ltmp55: - .cfi_endproc -Leh_func_end7: - - .globl _call_f_s8i - .align 4, 0x90 -_call_f_s8i: ## @call_f_s8i -Ltmp58: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp59: - .cfi_def_cfa_offset 16 -Ltmp60: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp61: - .cfi_def_cfa_register %rbp - subq $64, %rsp - xorps %xmm0, %xmm0 - movaps %xmm0, -16(%rbp) - movaps %xmm0, -32(%rbp) - movq -8(%rbp), %rax - movq %rax, 24(%rsp) - movq -16(%rbp), %rax - movq %rax, 16(%rsp) - movq -32(%rbp), %rax - movq -24(%rbp), %rcx - movq %rcx, 8(%rsp) - movq %rax, (%rsp) - callq _f_s8i - addq $64, %rsp - popq %rbp - ret -Ltmp62: - .cfi_endproc -Leh_func_end8: - - .globl _call_f_s2f - .align 4, 0x90 -_call_f_s2f: ## @call_f_s2f -Ltmp65: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp66: - .cfi_def_cfa_offset 16 -Ltmp67: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp68: - .cfi_def_cfa_register %rbp - xorps %xmm0, %xmm0 - popq %rbp - jmp _f_s2f ## TAILCALL -Ltmp69: - .cfi_endproc -Leh_func_end9: - - .globl _call_f_s4f - .align 4, 0x90 -_call_f_s4f: ## @call_f_s4f -Ltmp72: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp73: - .cfi_def_cfa_offset 16 -Ltmp74: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp75: - .cfi_def_cfa_register %rbp - xorps %xmm0, %xmm0 - xorps %xmm1, %xmm1 - popq %rbp - jmp _f_s4f ## TAILCALL -Ltmp76: - .cfi_endproc -Leh_func_end10: - - .globl _call_f_s1d - .align 4, 0x90 -_call_f_s1d: ## @call_f_s1d -Ltmp79: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp80: - .cfi_def_cfa_offset 16 -Ltmp81: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp82: - .cfi_def_cfa_register %rbp - pxor %xmm0, %xmm0 - popq %rbp - jmp _f_s1d ## TAILCALL -Ltmp83: - .cfi_endproc -Leh_func_end11: - - .globl _call_f_s2d - .align 4, 0x90 -_call_f_s2d: ## @call_f_s2d -Ltmp86: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp87: - .cfi_def_cfa_offset 16 -Ltmp88: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp89: - .cfi_def_cfa_register %rbp - pxor %xmm0, %xmm0 - pxor %xmm1, %xmm1 - popq %rbp - jmp _f_s2d ## TAILCALL -Ltmp90: - .cfi_endproc -Leh_func_end12: - - .globl _call_f_s4d - .align 4, 0x90 -_call_f_s4d: ## @call_f_s4d -Ltmp93: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp94: - .cfi_def_cfa_offset 16 -Ltmp95: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp96: - .cfi_def_cfa_register %rbp - subq $64, %rsp - xorps %xmm0, %xmm0 - movaps %xmm0, -16(%rbp) - movaps %xmm0, -32(%rbp) - movq -8(%rbp), %rax - movq %rax, 24(%rsp) - movq -16(%rbp), %rax - movq %rax, 16(%rsp) - movq -32(%rbp), %rax - movq -24(%rbp), %rcx - movq %rcx, 8(%rsp) - movq %rax, (%rsp) - callq _f_s4d - addq $64, %rsp - popq %rbp - ret -Ltmp97: - .cfi_endproc -Leh_func_end13: - - .globl _call_f_s1q - .align 4, 0x90 -_call_f_s1q: ## @call_f_s1q -Ltmp100: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp101: - .cfi_def_cfa_offset 16 -Ltmp102: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp103: - .cfi_def_cfa_register %rbp - subq $32, %rsp - xorps %xmm0, %xmm0 - movaps %xmm0, -16(%rbp) - movaps -16(%rbp), %xmm0 - movaps %xmm0, (%rsp) - callq _f_s1q - addq $32, %rsp - popq %rbp - ret -Ltmp104: - .cfi_endproc -Leh_func_end14: - - .globl _call_f_s2ds2d - .align 4, 0x90 -_call_f_s2ds2d: ## @call_f_s2ds2d -Ltmp107: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp108: - .cfi_def_cfa_offset 16 -Ltmp109: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp110: - .cfi_def_cfa_register %rbp - pxor %xmm0, %xmm0 - pxor %xmm1, %xmm1 - pxor %xmm2, %xmm2 - pxor %xmm3, %xmm3 - popq %rbp - jmp _f_s2ds2d ## TAILCALL -Ltmp111: - .cfi_endproc -Leh_func_end15: - - .globl _call_f_sfifi - .align 4, 0x90 -_call_f_sfifi: ## @call_f_sfifi -Ltmp114: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp115: - .cfi_def_cfa_offset 16 -Ltmp116: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp117: - .cfi_def_cfa_register %rbp - movabsq $4294967296, %rdi ## imm = 0x100000000 - movabsq $13958643712, %rsi ## imm = 0x340000000 - popq %rbp - jmp _f_sfifi ## TAILCALL -Ltmp118: - .cfi_endproc -Leh_func_end16: - - .globl _call_f_sifif - .align 4, 0x90 -_call_f_sifif: ## @call_f_sifif -Ltmp121: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp122: - .cfi_def_cfa_offset 16 -Ltmp123: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp124: - .cfi_def_cfa_register %rbp - movabsq $4575657221408423936, %rdi ## imm = 0x3F80000000000000 - movabsq $4629700416936869890, %rsi ## imm = 0x4040000000000002 - popq %rbp - jmp _f_sifif ## TAILCALL -Ltmp125: - .cfi_endproc -Leh_func_end17: - - .globl _call_f_full_sifif - .align 4, 0x90 -_call_f_full_sifif: ## @call_f_full_sifif -Ltmp128: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp129: - .cfi_def_cfa_offset 16 -Ltmp130: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp131: - .cfi_def_cfa_register %rbp - subq $48, %rsp - xorps %xmm0, %xmm0 - movaps %xmm0, -16(%rbp) - movq -16(%rbp), %rax - movq -8(%rbp), %rcx - movq %rcx, 24(%rsp) - movq %rax, 16(%rsp) - movl $7, 8(%rsp) - movl $6, (%rsp) - movl $0, %edi - movl $1, %esi - movl $2, %edx - movl $3, %ecx - movl $4, %r8d - movl $5, %r9d - callq _f_full_sifif - addq $48, %rsp - popq %rbp - ret -Ltmp132: - .cfi_endproc -Leh_func_end18: - - .globl _call_f_remain64_sifif - .align 4, 0x90 -_call_f_remain64_sifif: ## @call_f_remain64_sifif -Ltmp135: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp136: - .cfi_def_cfa_offset 16 -Ltmp137: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp138: - .cfi_def_cfa_register %rbp - xorl %edi, %edi - movl $1, %esi - xorl %edx, %edx - xorl %ecx, %ecx - popq %rbp - jmp _f_remain64_sifif ## TAILCALL -Ltmp139: - .cfi_endproc -Leh_func_end19: - - .section __TEXT,__const - .align 4 -LCPI20_0: - .long 0 ## float 0.000000e+00 - .long 1065353216 ## float 1.000000e+00 - .space 4 - .space 4 - .section __TEXT,__text,regular,pure_instructions - .globl _call_f_sfffc - .align 4, 0x90 -_call_f_sfffc: ## @call_f_sfffc -Ltmp142: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp143: - .cfi_def_cfa_offset 16 -Ltmp144: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp145: - .cfi_def_cfa_register %rbp - movaps LCPI20_0(%rip), %xmm0 - movabsq $13958643712, %rdi ## imm = 0x340000000 - popq %rbp - jmp _f_sfffc ## TAILCALL -Ltmp146: - .cfi_endproc -Leh_func_end20: - - .section __TEXT,__const - .align 4 -LCPI21_0: - .long 1073741824 ## float 2.000000e+00 - .long 1077936128 ## float 3.000000e+00 - .space 4 - .space 4 - .section __TEXT,__text,regular,pure_instructions - .globl _call_f_scfff - .align 4, 0x90 -_call_f_scfff: ## @call_f_scfff -Ltmp149: - .cfi_startproc -## BB#0: - pushq %rbp -Ltmp150: - .cfi_def_cfa_offset 16 -Ltmp151: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp152: - .cfi_def_cfa_register %rbp - movaps LCPI21_0(%rip), %xmm0 - movabsq $4575657221408423936, %rdi ## imm = 0x3F80000000000000 - popq %rbp - jmp _f_scfff ## TAILCALL -Ltmp153: - .cfi_endproc -Leh_func_end21: - - -.subsections_via_symbols diff -r fb51dc714566 -r 72024b0957c2 test/samples/composite/build.bat --- a/test/samples/composite/build.bat Mon Jan 17 10:08:58 2022 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -cl /c /O2 args.c /Faargs.asm diff -r fb51dc714566 -r 72024b0957c2 test/samples/composite/makefile --- a/test/samples/composite/makefile Mon Jan 17 10:08:58 2022 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -TARGETS=args.s - -#CC=gcc-mp-4.7 -#TARGET_ARCH=-march=corei7-avx -#TARGET_ARCH=-march=corei7-avx -mavx -msse2avx -#-mno-vzeroupper -CFLAGS=-O3 -#-fomit-frame-pointer -fno-exceptions -# -fno-rtti -all: ${TARGETS} -clean: - rm -f ${TARGETS} -.c.s: - ${CC} -S $< -o $@ ${CFLAGS} ${TARGET_ARCH}