daily update on 20240828 by nitload youmu, autotexture added

This commit is contained in:
Nitload
2024-08-28 10:58:31 +08:00
parent d082071f2d
commit 1ee4e4a42f
586 changed files with 60910 additions and 123106 deletions
+135 -158
View File
@@ -5,7 +5,6 @@ include listing.inc
INCLUDELIB OLDNAMES
PUBLIC infolog
PUBLIC ??_C@_05JMLLFKBP@?$CFllu?6@ ; `string'
PUBLIC ??_C@_0BL@MOJGOJJP@Failed?5to?5load?5OpenGL?5api?3@ ; `string'
PUBLIC ??_C@_03OFAPEBGM@?$CFs?6@ ; `string'
EXTRN glfwGetProcAddress:PROC
@@ -23,16 +22,13 @@ CONST ENDS
CONST SEGMENT
??_C@_0BL@MOJGOJJP@Failed?5to?5load?5OpenGL?5api?3@ DB 'Failed to load Op'
DB 'enGL api:', 00H ; `string'
CONST ENDS
; COMDAT ??_C@_05JMLLFKBP@?$CFllu?6@
CONST SEGMENT
??_C@_05JMLLFKBP@?$CFllu?6@ DB '%llu', 0aH, 00H ; `string'
PUBLIC readLog
PUBLIC unloadImageData
PUBLIC loadImageData
PUBLIC linkShaderProgram
PUBLIC loadGlfuncDefault
PUBLIC initGL
PUBLIC glCheckShaderStat
PUBLIC printf
PUBLIC _vfprintf_l
PUBLIC __local_stdio_printf_options
@@ -51,17 +47,23 @@ pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$loadGlfuncDefault DD imagerel $LN19
DD imagerel $LN19+31
DD imagerel $LN19+16
DD imagerel $unwind$loadGlfuncDefault
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$initGL DD imagerel $LN4
DD imagerel $LN4+52
DD imagerel $LN4+67
DD imagerel $unwind$initGL
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$glCheckShaderStat DD imagerel $LN6
DD imagerel $LN6+122
DD imagerel $unwind$glCheckShaderStat
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$printf DD imagerel $LN6
DD imagerel $LN6+85
DD imagerel $unwind$printf
@@ -87,6 +89,15 @@ $unwind$printf DD 041b01H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$glCheckShaderStat DD 051819H
DD 070056209H
DD 050036004H
DD 03002H
DD imagerel __GSHandlerCheck
DD 028H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$initGL DD 020601H
DD 030023206H
xdata ENDS
@@ -108,24 +119,18 @@ xdata SEGMENT
$unwind$loadImageData DD 020601H
DD 030025206H
; Function compile flags: /Ogtpy
; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\corecrt_stdio_config.h
; COMDAT __local_stdio_printf_options
_TEXT SEGMENT
__local_stdio_printf_options PROC ; COMDAT
; 91 : static unsigned __int64 _OptionsStorage;
; 92 : return &_OptionsStorage;
; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\corecrt_stdio_config.h
; Line 92
00000 48 8d 05 00 00
00 00 lea rax, OFFSET FLAT:?_OptionsStorage@?1??__local_stdio_printf_options@@9@9 ; `__local_stdio_printf_options'::`2'::_OptionsStorage
; 93 : }
; Line 93
00007 c3 ret 0
__local_stdio_printf_options ENDP
_TEXT ENDS
; Function compile flags: /Ogtpy
; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\stdio.h
; COMDAT _vfprintf_l
_TEXT SEGMENT
_Stream$ = 64
@@ -133,9 +138,8 @@ _Format$ = 72
_Locale$dead$ = 80
_ArgList$ = 88
_vfprintf_l PROC ; COMDAT
; 644 : {
; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\stdio.h
; Line 644
$LN4:
00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx
00005 48 89 74 24 10 mov QWORD PTR [rsp+16], rsi
@@ -144,9 +148,7 @@ $LN4:
0000f 49 8b d9 mov rbx, r9
00012 48 8b fa mov rdi, rdx
00015 48 8b f1 mov rsi, rcx
; 645 : return __stdio_common_vfprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, _Stream, _Format, _Locale, _ArgList);
; Line 645
00018 e8 00 00 00 00 call __local_stdio_printf_options
0001d 45 33 c9 xor r9d, r9d
00020 48 89 5c 24 20 mov QWORD PTR [rsp+32], rbx
@@ -155,9 +157,7 @@ $LN4:
0002b 48 8b 08 mov rcx, QWORD PTR [rax]
0002e ff 15 00 00 00
00 call QWORD PTR __imp___stdio_common_vfprintf
; 646 : }
; Line 646
00034 48 8b 5c 24 40 mov rbx, QWORD PTR [rsp+64]
00039 48 8b 74 24 48 mov rsi, QWORD PTR [rsp+72]
0003e 48 83 c4 30 add rsp, 48 ; 00000030H
@@ -166,14 +166,12 @@ $LN4:
_vfprintf_l ENDP
_TEXT ENDS
; Function compile flags: /Ogtpy
; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\stdio.h
; COMDAT printf
_TEXT SEGMENT
_Format$ = 80
printf PROC ; COMDAT
; 956 : {
; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\stdio.h
; Line 956
$LN6:
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
@@ -184,22 +182,14 @@ $LN6:
00016 57 push rdi
00017 48 83 ec 30 sub rsp, 48 ; 00000030H
0001b 48 8b f9 mov rdi, rcx
; 957 : int _Result;
; 958 : va_list _ArgList;
; 959 : __crt_va_start(_ArgList, _Format);
; Line 959
0001e 48 8d 74 24 58 lea rsi, QWORD PTR _Format$[rsp+8]
; 960 : _Result = _vfprintf_l(stdout, _Format, NULL, _ArgList);
; Line 960
00023 b9 01 00 00 00 mov ecx, 1
00028 ff 15 00 00 00
00 call QWORD PTR __imp___acrt_iob_func
0002e 48 8b d8 mov rbx, rax
; 645 : return __stdio_common_vfprintf(_CRT_INTERNAL_LOCAL_PRINTF_OPTIONS, _Stream, _Format, _Locale, _ArgList);
; Line 645
00031 e8 00 00 00 00 call __local_stdio_printf_options
00036 45 33 c9 xor r9d, r9d
00039 48 89 74 24 20 mov QWORD PTR [rsp+32], rsi
@@ -208,11 +198,7 @@ $LN6:
00044 48 8b 08 mov rcx, QWORD PTR [rax]
00047 ff 15 00 00 00
00 call QWORD PTR __imp___stdio_common_vfprintf
; 961 : __crt_va_end(_ArgList);
; 962 : return _Result;
; 963 : }
; Line 963
0004d 48 83 c4 30 add rsp, 48 ; 00000030H
00051 5f pop rdi
00052 5e pop rsi
@@ -221,91 +207,122 @@ $LN6:
printf ENDP
_TEXT ENDS
; Function compile flags: /Ogtpy
; COMDAT glCheckShaderStat
_TEXT SEGMENT
stat$ = 32
__$ArrayPad$ = 40
context$ = 96
shaderHandle$ = 104
key$ = 112
logRef$ = 120
glCheckShaderStat PROC ; COMDAT
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\StgSharpC.c
; Line 11
$LN6:
00000 40 53 push rbx
00002 55 push rbp
00003 56 push rsi
00004 57 push rdi
00005 48 83 ec 38 sub rsp, 56 ; 00000038H
00009 48 8b 05 00 00
00 00 mov rax, QWORD PTR __security_cookie
00010 48 33 c4 xor rax, rsp
00013 48 89 44 24 28 mov QWORD PTR __$ArrayPad$[rsp], rax
00018 41 8b c0 mov eax, r8d
; Line 12
0001b c7 44 24 20 00
00 00 00 mov DWORD PTR stat$[rsp], 0
00023 48 8b fa mov rdi, rdx
; Line 13
00026 4c 8d 44 24 20 lea r8, QWORD PTR stat$[rsp]
0002b 48 8b d9 mov rbx, rcx
0002e 8b d0 mov edx, eax
00030 8b cf mov ecx, edi
00032 49 8b f1 mov rsi, r9
00035 ff 93 40 1b 00
00 call QWORD PTR [rbx+6976]
; Line 14
0003b 8b 44 24 20 mov eax, DWORD PTR stat$[rsp]
0003f 48 8d 2d 00 00
00 00 lea rbp, OFFSET FLAT:infolog
00046 85 c0 test eax, eax
00048 75 17 jne SHORT $LN2@glCheckSha
; Line 16
0004a 4c 8b cd mov r9, rbp
0004d 45 33 c0 xor r8d, r8d
00050 ba 00 02 00 00 mov edx, 512 ; 00000200H
00055 8b cf mov ecx, edi
00057 ff 93 20 1b 00
00 call QWORD PTR [rbx+6944]
0005d 8b 44 24 20 mov eax, DWORD PTR stat$[rsp]
$LN2@glCheckSha:
; Line 18
00061 48 89 2e mov QWORD PTR [rsi], rbp
; Line 20
00064 48 8b 4c 24 28 mov rcx, QWORD PTR __$ArrayPad$[rsp]
00069 48 33 cc xor rcx, rsp
0006c e8 00 00 00 00 call __security_check_cookie
00071 48 83 c4 38 add rsp, 56 ; 00000038H
00075 5f pop rdi
00076 5e pop rsi
00077 5d pop rbp
00078 5b pop rbx
00079 c3 ret 0
glCheckShaderStat ENDP
_TEXT ENDS
; Function compile flags: /Ogtpy
; COMDAT initGL
_TEXT SEGMENT
majorVersion$ = 48
minorVersion$ = 56
initGL PROC ; COMDAT
; 11 : {
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\StgSharpC.c
; Line 23
$LN4:
00000 40 53 push rbx
00002 48 83 ec 20 sub rsp, 32 ; 00000020H
00006 8b da mov ebx, edx
; 12 : glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, majorVersion);
; Line 24
00008 8b d1 mov edx, ecx
0000a b9 02 20 02 00 mov ecx, 139266 ; 00022002H
0000f e8 00 00 00 00 call glfwWindowHint
; 13 : glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, minorVersion);
; Line 25
00014 8b d3 mov edx, ebx
00016 b9 03 20 02 00 mov ecx, 139267 ; 00022003H
0001b e8 00 00 00 00 call glfwWindowHint
; 14 : glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
; Line 26
00020 ba 01 20 03 00 mov edx, 204801 ; 00032001H
00025 b9 08 20 02 00 mov ecx, 139272 ; 00022008H
; 15 : }
0002a 48 83 c4 20 add rsp, 32 ; 00000020H
0002e 5b pop rbx
; 14 : glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
0002f e9 00 00 00 00 jmp glfwWindowHint
0002a e8 00 00 00 00 call glfwWindowHint
; Line 27
0002f ba 01 00 00 00 mov edx, 1
00034 b9 03 00 02 00 mov ecx, 131075 ; 00020003H
; Line 28
00039 48 83 c4 20 add rsp, 32 ; 00000020H
0003d 5b pop rbx
; Line 27
0003e e9 00 00 00 00 jmp glfwWindowHint
initGL ENDP
_TEXT ENDS
; Function compile flags: /Ogtpy
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\StgSharpC.c
; COMDAT loadGlfuncDefault
_TEXT SEGMENT
procName$ = 48
loadGlfuncDefault PROC ; COMDAT
; 18 : {
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\StgSharpC.c
; Line 31
$LN19:
00000 48 83 ec 28 sub rsp, 40 ; 00000028H
; 19 : void* ret = glfwGetProcAddress(procName);
; Line 32
00004 e8 00 00 00 00 call glfwGetProcAddress
; 20 : printf("%llu\n", (uint64_t)ret);
00009 48 8b d0 mov rdx, rax
0000c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_05JMLLFKBP@?$CFllu?6@
00013 e8 00 00 00 00 call printf
; 21 : if (ret = NULL)
; 22 : {
; 23 : *infolog = "Failed to load OpenGL api:";
; 24 : for (size_t i = 0; i < sizeof(procName); i++)
; 25 : {
; 26 : infolog[30 + i] = procName[i];
; 27 : }
; 28 : printf("%s\n", infolog);
; 29 : }
; 30 : return (GLFWglproc)ret;
00018 33 c0 xor eax, eax
; 31 : }
0001a 48 83 c4 28 add rsp, 40 ; 00000028H
0001e c3 ret 0
; Line 43
00009 33 c0 xor eax, eax
; Line 44
0000b 48 83 c4 28 add rsp, 40 ; 00000028H
0000f c3 ret 0
loadGlfuncDefault ENDP
_TEXT ENDS
; Function compile flags: /Ogtpy
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\StgSharpC.c
; COMDAT linkShaderProgram
_TEXT SEGMENT
success$ = 32
@@ -313,9 +330,8 @@ __$ArrayPad$ = 40
context$ = 64
shaderProgram$ = 72
linkShaderProgram PROC ; COMDAT
; 34 : {
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\StgSharpC.c
; Line 47
$LN7:
00000 48 89 5c 24 18 mov QWORD PTR [rsp+24], rbx
00005 57 push rdi
@@ -326,31 +342,20 @@ $LN7:
00014 48 89 44 24 28 mov QWORD PTR __$ArrayPad$[rsp], rax
00019 48 8b f9 mov rdi, rcx
0001c 8b da mov ebx, edx
; 35 : context->LinkProgram(shaderProgram);
; Line 48
0001e 8b ca mov ecx, edx
00020 ff 97 80 22 00
00 call QWORD PTR [rdi+8832]
; 36 :
; 37 : int success;
; 38 : context->GetProgramiv(shaderProgram, GL_LINK_STATUS, &success);
; Line 51
00026 4c 8d 44 24 20 lea r8, QWORD PTR success$[rsp]
0002b ba 82 8b 00 00 mov edx, 35714 ; 00008b82H
00030 8b cb mov ecx, ebx
00032 ff 97 48 1a 00
00 call QWORD PTR [rdi+6728]
; 39 : if (!success)
; Line 52
00038 83 7c 24 20 00 cmp DWORD PTR success$[rsp], 0
0003d 75 1b jne SHORT $LN2@linkShader
; 40 : {
; 41 : context->GetProgramInfoLog(shaderProgram, 512, NULL, infolog);
; Line 54
0003f 4c 8d 0d 00 00
00 00 lea r9, OFFSET FLAT:infolog
00046 45 33 c0 xor r8d, r8d
@@ -358,24 +363,14 @@ $LN7:
0004e 8b cb mov ecx, ebx
00050 ff 97 98 19 00
00 call QWORD PTR [rdi+6552]
; 42 : return 0;
; Line 55
00056 33 c0 xor eax, eax
00058 eb 02 jmp SHORT $LN3@linkShader
$LN2@linkShader:
; 43 : }
; 44 : else
; 45 : {
; 46 : return shaderProgram;
; Line 59
0005a 8b c3 mov eax, ebx
$LN3@linkShader:
; 47 : }
; 48 : }
; Line 61
0005c 48 8b 4c 24 28 mov rcx, QWORD PTR __$ArrayPad$[rsp]
00061 48 33 cc xor rcx, rsp
00064 e8 00 00 00 00 call __security_check_cookie
@@ -386,27 +381,19 @@ $LN3@linkShader:
linkShaderProgram ENDP
_TEXT ENDS
; Function compile flags: /Ogtpy
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\StgSharpC.c
; COMDAT loadImageData
_TEXT SEGMENT
location$ = 64
out$ = 72
loader$ = 80
loadImageData PROC ; COMDAT
; 51 : {
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\StgSharpC.c
; Line 64
$LN5:
00000 40 53 push rbx
00002 48 83 ec 30 sub rsp, 48 ; 00000030H
00006 4d 8b d0 mov r10, r8
; 52 : if (loader == NULL)
; 53 : {
; 54 : loader = stbi_load;
; 55 : }
; 56 : out->pixelPtr = loader(location, &(out->width), &(out->height), &(out->channel), 0);
; Line 69
00009 c7 44 24 20 00
00 00 00 mov DWORD PTR [rsp+32], 0
00011 4d 85 d2 test r10, r10
@@ -418,46 +405,36 @@ $LN5:
00026 4c 8d 42 04 lea r8, QWORD PTR [rdx+4]
0002a ff d0 call rax
0002c 48 89 43 10 mov QWORD PTR [rbx+16], rax
; 57 : }
; Line 70
00030 48 83 c4 30 add rsp, 48 ; 00000030H
00034 5b pop rbx
00035 c3 ret 0
loadImageData ENDP
_TEXT ENDS
; Function compile flags: /Ogtpy
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\StgSharpC.c
; COMDAT unloadImageData
_TEXT SEGMENT
out$ = 8
unloadImageData PROC ; COMDAT
; 61 : free(out->pixelPtr);
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\StgSharpC.c
; Line 74
00000 48 8b 49 10 mov rcx, QWORD PTR [rcx+16]
00004 48 ff 25 00 00
00 00 rex_jmp QWORD PTR __imp_free
unloadImageData ENDP
_TEXT ENDS
; Function compile flags: /Ogtpy
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\StgSharpC.c
; COMDAT readLog
_TEXT SEGMENT
readLog PROC ; COMDAT
; 66 : infolog[511] = '\0';
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\StgSharpC.c
; Line 79
00000 c6 05 ff 01 00
00 00 mov BYTE PTR infolog+511, 0
; 67 : return &infolog;
; Line 80
00007 48 8d 05 00 00
00 00 lea rax, OFFSET FLAT:infolog
; 68 : }
; Line 81
0000e c3 ret 0
readLog ENDP
_TEXT ENDS
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
+3 -24
View File
@@ -205,37 +205,16 @@ CONST SEGMENT
__real@3f000000 DD 03f000000r ; 0.5
CONST ENDS
; Function compile flags: /Ogtpy
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\dllmain.c
; COMDAT DllMain
_TEXT SEGMENT
hModule$ = 8
ul_reason_for_call$ = 16
lpReserved$ = 24
DllMain PROC ; COMDAT
; 15 : switch (ul_reason_for_call)
; 16 : {
; 17 : case DLL_PROCESS_ATTACH:
; 18 :
; 19 : return 1;
; 20 :
; 21 : case DLL_THREAD_ATTACH:
; 22 : return 1;
; 23 :
; 24 : case DLL_THREAD_DETACH:
; 25 : return 1;
; 26 :
; 27 : case DLL_PROCESS_DETACH:
; 28 : return 1;
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\dllmain.c
; Line 28
00000 b8 01 00 00 00 mov eax, 1
; 29 :
; 30 : break;
; 31 : }
; 32 : return TRUE;
; 33 : }
; Line 33
00005 c3 ret 0
DllMain ENDP
_TEXT ENDS
Binary file not shown.
+39 -68
View File
@@ -9,102 +9,73 @@ PUBLIC deinit_mat2
PUBLIC transpose2to4
PUBLIC transpose2to3
; Function compile flags: /Ogtpy
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat2.c
; COMDAT transpose2to3
_TEXT SEGMENT
source$ = 8
target$ = 16
transpose2to3 PROC ; COMDAT
; 6 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(1, 0, 1, 0));
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat2.c
; Line 6
00000 0f 10 21 movups xmm4, XMMWORD PTR [rcx]
00003 0f 10 59 04 movups xmm3, XMMWORD PTR [rcx+4]
00007 0f 28 d4 movaps xmm2, xmm4
0000a 0f 57 c0 xorps xmm0, xmm0
0000d 0f c6 d3 44 shufps xmm2, xmm3, 68 ; 00000044H
; 7 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(3, 2, 3, 2));
; 8 :
; 9 : target->colum[0] = _mm_shuffle_ps(t0, zeroVec, _MM_SHUFFLE(2, 0, 2, 0));
00011 0f 28 ca movaps xmm1, xmm2
00003 0f 10 59 10 movups xmm3, XMMWORD PTR [rcx+16]
00007 0f 28 cc movaps xmm1, xmm4
0000a 0f 57 d2 xorps xmm2, xmm2
0000d 0f c6 cb 44 shufps xmm1, xmm3, 68 ; 00000044H
; Line 9
00011 0f 28 c1 movaps xmm0, xmm1
00014 0f c6 e3 ee shufps xmm4, xmm3, 238 ; 000000eeH
00018 0f c6 c8 88 shufps xmm1, xmm0, 136 ; 00000088H
; 10 : target->colum[1] = _mm_shuffle_ps(t0, zeroVec, _MM_SHUFFLE(3, 1, 3, 1));
0001c 0f c6 d0 dd shufps xmm2, xmm0, 221 ; 000000ddH
; 11 : target->colum[2] = _mm_shuffle_ps(t1, zeroVec, _MM_SHUFFLE(2, 0, 2, 0));
00020 0f c6 e0 88 shufps xmm4, xmm0, 136 ; 00000088H
00024 0f 11 0a movups XMMWORD PTR [rdx], xmm1
00027 0f 11 52 10 movups XMMWORD PTR [rdx+16], xmm2
00018 0f c6 c2 88 shufps xmm0, xmm2, 136 ; 00000088H
; Line 10
0001c 0f c6 ca dd shufps xmm1, xmm2, 221 ; 000000ddH
; Line 11
00020 0f c6 e2 88 shufps xmm4, xmm2, 136 ; 00000088H
00024 0f 11 02 movups XMMWORD PTR [rdx], xmm0
00027 0f 11 4a 10 movups XMMWORD PTR [rdx+16], xmm1
0002b 0f 11 62 20 movups XMMWORD PTR [rdx+32], xmm4
; 12 : }
; Line 12
0002f c3 ret 0
transpose2to3 ENDP
_TEXT ENDS
; Function compile flags: /Ogtpy
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat2.c
; COMDAT transpose2to4
_TEXT SEGMENT
source$ = 8
target$ = 16
transpose2to4 PROC ; COMDAT
; 16 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(1, 0, 1, 0));
00000 0f 10 41 04 movups xmm0, XMMWORD PTR [rcx+4]
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat2.c
; Line 16
00000 0f 10 41 10 movups xmm0, XMMWORD PTR [rcx+16]
00004 0f 10 19 movups xmm3, XMMWORD PTR [rcx]
00007 0f 28 d3 movaps xmm2, xmm3
; 17 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(3, 2, 3, 2));
0000a 0f c6 d8 ee shufps xmm3, xmm0, 238 ; 000000eeH
0000e 0f c6 d0 44 shufps xmm2, xmm0, 68 ; 00000044H
00012 0f 57 c0 xorps xmm0, xmm0
; 18 :
; 19 : target->colum[0] = _mm_shuffle_ps(t0, zeroVec, _MM_SHUFFLE(2, 0, 2, 0));
00015 0f 28 ca movaps xmm1, xmm2
; 20 : target->colum[1] = _mm_shuffle_ps(t0, zeroVec, _MM_SHUFFLE(3, 1, 3, 1));
00018 0f c6 d0 dd shufps xmm2, xmm0, 221 ; 000000ddH
0001c 0f c6 c8 88 shufps xmm1, xmm0, 136 ; 00000088H
00020 0f 11 0a movups XMMWORD PTR [rdx], xmm1
; 21 : target->colum[2] = _mm_shuffle_ps(t1, zeroVec, _MM_SHUFFLE(2, 0, 2, 0));
00023 0f 28 cb movaps xmm1, xmm3
00026 0f c6 c8 88 shufps xmm1, xmm0, 136 ; 00000088H
; 22 : target->colum[3] = _mm_shuffle_ps(t1, zeroVec, _MM_SHUFFLE(3, 1, 3, 1));
0002a 0f c6 d8 dd shufps xmm3, xmm0, 221 ; 000000ddH
0002e 0f 11 4a 20 movups XMMWORD PTR [rdx+32], xmm1
00007 0f 57 c9 xorps xmm1, xmm1
0000a 0f 28 d3 movaps xmm2, xmm3
; Line 17
0000d 0f c6 d8 ee shufps xmm3, xmm0, 238 ; 000000eeH
00011 0f c6 d0 44 shufps xmm2, xmm0, 68 ; 00000044H
; Line 19
00015 0f 28 c2 movaps xmm0, xmm2
; Line 20
00018 0f c6 d1 dd shufps xmm2, xmm1, 221 ; 000000ddH
0001c 0f c6 c1 88 shufps xmm0, xmm1, 136 ; 00000088H
00020 0f 11 02 movups XMMWORD PTR [rdx], xmm0
; Line 21
00023 0f 28 c3 movaps xmm0, xmm3
00026 0f c6 c1 88 shufps xmm0, xmm1, 136 ; 00000088H
; Line 22
0002a 0f c6 d9 dd shufps xmm3, xmm1, 221 ; 000000ddH
0002e 0f 11 42 20 movups XMMWORD PTR [rdx+32], xmm0
00032 0f 11 52 10 movups XMMWORD PTR [rdx+16], xmm2
00036 0f 11 5a 30 movups XMMWORD PTR [rdx+48], xmm3
; 23 : }
; Line 23
0003a c3 ret 0
transpose2to4 ENDP
_TEXT ENDS
; Function compile flags: /Ogtpy
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat2.c
; COMDAT deinit_mat2
_TEXT SEGMENT
mat$ = 8
deinit_mat2 PROC ; COMDAT
; 27 : _aligned_free(mat);
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat2.c
; Line 27
00000 48 ff 25 00 00
00 00 rex_jmp QWORD PTR __imp__aligned_free
deinit_mat2 ENDP
Binary file not shown.
+99 -213
View File
@@ -12,7 +12,7 @@ PUBLIC transpose3to2
; COMDAT pdata
pdata SEGMENT
$pdata$transpose3to3 DD imagerel $LN4
DD imagerel $LN4+83
DD imagerel $LN4+79
DD imagerel $unwind$transpose3to3
; COMDAT xdata
xdata SEGMENT
@@ -20,293 +20,179 @@ $unwind$transpose3to3 DD 031001H
DD 06810H
DD 02204H
; Function compile flags: /Ogtpy
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; COMDAT transpose3to2
_TEXT SEGMENT
source$ = 8
target$ = 16
transpose3to2 PROC ; COMDAT
; 7 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(1, 0, 1, 0));
00000 0f 10 41 34 movups xmm0, XMMWORD PTR [rcx+52]
00004 0f 10 51 30 movups xmm2, XMMWORD PTR [rcx+48]
; 8 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->m[0][2]), zeroVec, _MM_SHUFFLE(1, 0, 1, 0));
00008 0f 10 49 38 movups xmm1, XMMWORD PTR [rcx+56]
0000c 0f c6 d0 44 shufps xmm2, xmm0, 68 ; 00000044H
00010 0f 57 c0 xorps xmm0, xmm0
00013 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H
; 9 :
; 10 : target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0));
00017 0f 28 c2 movaps xmm0, xmm2
0001a 0f c6 c1 88 shufps xmm0, xmm1, 136 ; 00000088H
; 11 : target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1));
0001e 0f c6 d1 dd shufps xmm2, xmm1, 221 ; 000000ddH
00022 0f 11 02 movups XMMWORD PTR [rdx], xmm0
00025 0f 11 52 10 movups XMMWORD PTR [rdx+16], xmm2
; 12 : }
00029 c3 ret 0
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; Line 7
00000 0f 10 41 10 movups xmm0, XMMWORD PTR [rcx+16]
00004 0f 10 11 movups xmm2, XMMWORD PTR [rcx]
; Line 8
00007 0f 10 49 20 movups xmm1, XMMWORD PTR [rcx+32]
0000b 0f c6 d0 44 shufps xmm2, xmm0, 68 ; 00000044H
0000f 0f 57 c0 xorps xmm0, xmm0
00012 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H
; Line 10
00016 0f 28 c2 movaps xmm0, xmm2
00019 0f c6 c1 88 shufps xmm0, xmm1, 136 ; 00000088H
; Line 11
0001d 0f c6 d1 dd shufps xmm2, xmm1, 221 ; 000000ddH
00021 0f 11 02 movups XMMWORD PTR [rdx], xmm0
00024 0f 11 52 10 movups XMMWORD PTR [rdx+16], xmm2
; Line 12
00028 c3 ret 0
transpose3to2 ENDP
_TEXT ENDS
; Function compile flags: /Ogtpy
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; COMDAT transpose3to3
_TEXT SEGMENT
source$ = 32
target$ = 40
transpose3to3 PROC ; COMDAT
; 15 : {
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; Line 15
$LN4:
00000 48 83 ec 18 sub rsp, 24
; 16 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(1, 0, 1, 0));
; 17 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(3, 2, 3, 2));
; 18 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->m[0][2]), zeroVec, _MM_SHUFFLE(1, 0, 1, 0));
00004 0f 10 61 38 movups xmm4, XMMWORD PTR [rcx+56]
00008 0f 10 69 34 movups xmm5, XMMWORD PTR [rcx+52]
; Line 16
00004 0f 10 61 10 movups xmm4, XMMWORD PTR [rcx+16]
; Line 18
00008 0f 10 69 20 movups xmm5, XMMWORD PTR [rcx+32]
0000c 0f 29 34 24 movaps XMMWORD PTR [rsp], xmm6
00010 0f 57 c0 xorps xmm0, xmm0
00013 0f 10 71 30 movups xmm6, XMMWORD PTR [rcx+48]
00017 0f 28 cc movaps xmm1, xmm4
0001a 0f 57 d2 xorps xmm2, xmm2
0001d 0f 28 de movaps xmm3, xmm6
00020 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H
00024 0f c6 dd 44 shufps xmm3, xmm5, 68 ; 00000044H
00028 0f c6 f5 ee shufps xmm6, xmm5, 238 ; 000000eeH
; 19 : __m128 t3 = _mm_shuffle_ps(ALIGN(source->m[0][2]), zeroVec, _MM_SHUFFLE(3, 2, 3, 2));
; 20 :
; 21 : target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0));
0002c 0f 28 c3 movaps xmm0, xmm3
0002f 0f c6 e2 ee shufps xmm4, xmm2, 238 ; 000000eeH
; 22 : target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1));
; 23 : target->colum[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0));
00033 0f c6 f4 88 shufps xmm6, xmm4, 136 ; 00000088H
00037 0f c6 c1 88 shufps xmm0, xmm1, 136 ; 00000088H
0003b 0f c6 d9 dd shufps xmm3, xmm1, 221 ; 000000ddH
0003f 0f 11 72 20 movups XMMWORD PTR [rdx+32], xmm6
; 24 : }
00043 0f 28 34 24 movaps xmm6, XMMWORD PTR [rsp]
00047 0f 11 02 movups XMMWORD PTR [rdx], xmm0
0004a 0f 11 5a 10 movups XMMWORD PTR [rdx+16], xmm3
0004e 48 83 c4 18 add rsp, 24
00052 c3 ret 0
00010 0f 57 db xorps xmm3, xmm3
00013 0f 10 31 movups xmm6, XMMWORD PTR [rcx]
00016 0f 28 cd movaps xmm1, xmm5
; Line 19
00019 0f c6 eb ee shufps xmm5, xmm3, 238 ; 000000eeH
0001d 0f 28 d6 movaps xmm2, xmm6
00020 0f c6 cb 44 shufps xmm1, xmm3, 68 ; 00000044H
00024 0f c6 d4 44 shufps xmm2, xmm4, 68 ; 00000044H
00028 0f c6 f4 ee shufps xmm6, xmm4, 238 ; 000000eeH
; Line 21
0002c 0f 28 c2 movaps xmm0, xmm2
; Line 23
0002f 0f c6 f5 88 shufps xmm6, xmm5, 136 ; 00000088H
00033 0f c6 c1 88 shufps xmm0, xmm1, 136 ; 00000088H
00037 0f c6 d1 dd shufps xmm2, xmm1, 221 ; 000000ddH
0003b 0f 11 72 20 movups XMMWORD PTR [rdx+32], xmm6
; Line 24
0003f 0f 28 34 24 movaps xmm6, XMMWORD PTR [rsp]
00043 0f 11 02 movups XMMWORD PTR [rdx], xmm0
00046 0f 11 52 10 movups XMMWORD PTR [rdx+16], xmm2
0004a 48 83 c4 18 add rsp, 24
0004e c3 ret 0
transpose3to3 ENDP
_TEXT ENDS
; Function compile flags: /Ogtpy
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; COMDAT transpose3to4
_TEXT SEGMENT
source$ = 8
target$ = 16
transpose3to4 PROC ; COMDAT
; 28 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(1, 0, 1, 0));
00000 0f 10 41 34 movups xmm0, XMMWORD PTR [rcx+52]
00004 0f 10 61 30 movups xmm4, XMMWORD PTR [rcx+48]
; 29 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->m[0][0]), ALIGN(source->m[0][1]), _MM_SHUFFLE(3, 2, 3, 2));
; 30 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->m[0][2]), zeroVec, _MM_SHUFFLE(1, 0, 1, 0));
00008 0f 10 51 38 movups xmm2, XMMWORD PTR [rcx+56]
0000c 0f 28 dc movaps xmm3, xmm4
0000f 0f c6 e0 ee shufps xmm4, xmm0, 238 ; 000000eeH
00013 0f c6 d8 44 shufps xmm3, xmm0, 68 ; 00000044H
00017 0f 28 ca movaps xmm1, xmm2
0001a 0f 57 c0 xorps xmm0, xmm0
0001d 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H
; 31 : __m128 t3 = _mm_shuffle_ps(ALIGN(source->m[0][2]), zeroVec, _MM_SHUFFLE(3, 2, 3, 2));
00021 0f c6 d0 ee shufps xmm2, xmm0, 238 ; 000000eeH
; 32 :
; 33 : target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0));
00025 0f 28 c3 movaps xmm0, xmm3
00028 0f c6 c1 88 shufps xmm0, xmm1, 136 ; 00000088H
0002c 0f 11 02 movups XMMWORD PTR [rdx], xmm0
; 34 : target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1));
; 35 : target->colum[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0));
0002f 0f 28 c4 movaps xmm0, xmm4
00032 0f c6 c2 88 shufps xmm0, xmm2, 136 ; 00000088H
00036 0f c6 d9 dd shufps xmm3, xmm1, 221 ; 000000ddH
; 36 : target->colum[3] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(3, 1, 3, 1));
0003a 0f c6 e2 dd shufps xmm4, xmm2, 221 ; 000000ddH
0003e 0f 11 42 20 movups XMMWORD PTR [rdx+32], xmm0
00042 0f 11 5a 10 movups XMMWORD PTR [rdx+16], xmm3
00046 0f 11 62 30 movups XMMWORD PTR [rdx+48], xmm4
; 37 : }
0004a c3 ret 0
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; Line 28
00000 0f 10 41 10 movups xmm0, XMMWORD PTR [rcx+16]
00004 0f 10 21 movups xmm4, XMMWORD PTR [rcx]
; Line 30
00007 0f 10 51 20 movups xmm2, XMMWORD PTR [rcx+32]
0000b 0f 28 dc movaps xmm3, xmm4
0000e 0f c6 e0 ee shufps xmm4, xmm0, 238 ; 000000eeH
00012 0f c6 d8 44 shufps xmm3, xmm0, 68 ; 00000044H
00016 0f 28 ca movaps xmm1, xmm2
00019 0f 57 c0 xorps xmm0, xmm0
0001c 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H
; Line 31
00020 0f c6 d0 ee shufps xmm2, xmm0, 238 ; 000000eeH
; Line 33
00024 0f 28 c3 movaps xmm0, xmm3
00027 0f c6 c1 88 shufps xmm0, xmm1, 136 ; 00000088H
0002b 0f 11 02 movups XMMWORD PTR [rdx], xmm0
; Line 35
0002e 0f 28 c4 movaps xmm0, xmm4
00031 0f c6 c2 88 shufps xmm0, xmm2, 136 ; 00000088H
00035 0f c6 d9 dd shufps xmm3, xmm1, 221 ; 000000ddH
; Line 36
00039 0f c6 e2 dd shufps xmm4, xmm2, 221 ; 000000ddH
0003d 0f 11 42 20 movups XMMWORD PTR [rdx+32], xmm0
00041 0f 11 5a 10 movups XMMWORD PTR [rdx+16], xmm3
00045 0f 11 62 30 movups XMMWORD PTR [rdx+48], xmm4
; Line 37
00049 c3 ret 0
transpose3to4 ENDP
_TEXT ENDS
; Function compile flags: /Ogtpy
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; COMDAT det_mat3_internal
_TEXT SEGMENT
c0$ = 8
c1$ = 16
c2$ = 24
det_mat3_internal PROC ; COMDAT
; 41 : //let adding row aligned
; 42 : __m128 addc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 0, 2, 1));
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; Line 42
00000 0f 10 1a movups xmm3, XMMWORD PTR [rdx]
; 43 : __m128 addc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 1, 0, 2));
; Line 43
00003 41 0f 10 10 movups xmm2, XMMWORD PTR [r8]
00007 0f 28 e3 movaps xmm4, xmm3
0000a 0f c6 e3 c9 shufps xmm4, xmm3, 201 ; 000000c9H
0000e 0f 28 c2 movaps xmm0, xmm2
; 44 :
; 45 : //let sub row aligned
; 46 : __m128 subc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 1, 0, 2));
; 47 : __m128 subc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 0, 2, 1));
; 48 :
; 49 : //multple all add row
; 50 : __m128 cache = _mm_mul_ps(c0, addc1);
; Line 50
00011 0f 59 21 mulps xmm4, XMMWORD PTR [rcx]
00014 0f c6 c2 d2 shufps xmm0, xmm2, 210 ; 000000d2H
00018 0f c6 db d2 shufps xmm3, xmm3, 210 ; 000000d2H
; 51 : cache = _mm_mul_ps(cache, addc2);
; 52 :
; 53 : //multiple all sub row
; 54 : __m128 sub = _mm_mul_ps(c0, subc1);
; Line 54
0001c 0f 59 19 mulps xmm3, XMMWORD PTR [rcx]
0001f 0f 59 e0 mulps xmm4, xmm0
00022 0f c6 d2 c9 shufps xmm2, xmm2, 201 ; 000000c9H
; 55 : sub = _mm_mul_ps(sub, subc2);
; Line 55
00026 0f 59 da mulps xmm3, xmm2
; 56 :
; 57 : //main-corner sub sub-corner
; 58 : cache = _mm_sub_ps(cache, sub);
; Line 58
00029 0f 5c e3 subps xmm4, xmm3
; 59 :
; 60 : __m128 ret = _mm_hadd_ps(cache, cache); //element 1 add element 2
; Line 60
0002c 0f 28 c4 movaps xmm0, xmm4
0002f f2 0f 7c c4 haddps xmm0, xmm4
; 61 : ret = _mm_add_ps(ret, cache); //(e1 add e2) add element 3
; Line 61
00033 0f 58 c4 addps xmm0, xmm4
; 62 :
; 63 : return ret.m128_f32[2];
; Line 63
00036 0f c6 c0 aa shufps xmm0, xmm0, 170 ; 000000aaH
; 64 : }
; Line 64
0003a c3 ret 0
det_mat3_internal ENDP
_TEXT ENDS
; Function compile flags: /Ogtpy
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; COMDAT det_mat3
_TEXT SEGMENT
mat$ = 8
det_mat3 PROC ; COMDAT
; 68 : return det_mat3_internal(
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; Line 68
00000 0f 10 59 10 movups xmm3, XMMWORD PTR [rcx+16]
00004 0f 10 51 20 movups xmm2, XMMWORD PTR [rcx+32]
; 42 : __m128 addc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 0, 2, 1));
; Line 42
00008 0f 28 e3 movaps xmm4, xmm3
0000b 0f c6 e3 c9 shufps xmm4, xmm3, 201 ; 000000c9H
; 43 : __m128 addc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 1, 0, 2));
; Line 43
0000f 0f 28 c2 movaps xmm0, xmm2
; 44 :
; 45 : //let sub row aligned
; 46 : __m128 subc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 1, 0, 2));
; 47 : __m128 subc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 0, 2, 1));
; 48 :
; 49 : //multple all add row
; 50 : __m128 cache = _mm_mul_ps(c0, addc1);
; Line 50
00012 0f 59 21 mulps xmm4, XMMWORD PTR [rcx]
00015 0f c6 c2 d2 shufps xmm0, xmm2, 210 ; 000000d2H
00019 0f c6 db d2 shufps xmm3, xmm3, 210 ; 000000d2H
; 51 : cache = _mm_mul_ps(cache, addc2);
; 52 :
; 53 : //multiple all sub row
; 54 : __m128 sub = _mm_mul_ps(c0, subc1);
; Line 54
0001d 0f 59 19 mulps xmm3, XMMWORD PTR [rcx]
00020 0f 59 e0 mulps xmm4, xmm0
00023 0f c6 d2 c9 shufps xmm2, xmm2, 201 ; 000000c9H
; 55 : sub = _mm_mul_ps(sub, subc2);
; Line 55
00027 0f 59 da mulps xmm3, xmm2
; 56 :
; 57 : //main-corner sub sub-corner
; 58 : cache = _mm_sub_ps(cache, sub);
; Line 58
0002a 0f 5c e3 subps xmm4, xmm3
; 59 :
; 60 : __m128 ret = _mm_hadd_ps(cache, cache); //element 1 add element 2
; Line 60
0002d 0f 28 c4 movaps xmm0, xmm4
00030 f2 0f 7c c4 haddps xmm0, xmm4
; 61 : ret = _mm_add_ps(ret, cache); //(e1 add e2) add element 3
; Line 61
00034 0f 58 c4 addps xmm0, xmm4
; 68 : return det_mat3_internal(
; Line 68
00037 0f c6 c0 aa shufps xmm0, xmm0, 170 ; 000000aaH
; 69 : mat->colum[0],
; 70 : mat->colum[1],
; 71 : mat->colum[2]
; 72 : );
; 73 : }
; Line 73
0003b c3 ret 0
det_mat3 ENDP
_TEXT ENDS
Binary file not shown.
+68 -226
View File
@@ -36,58 +36,42 @@ $unwind$det_mat4 DD 0b3501H
DD 04680eH
DD 0a207H
; Function compile flags: /Ogtpy
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; COMDAT transpose4to2
_TEXT SEGMENT
source$ = 8
target$ = 16
transpose4to2 PROC ; COMDAT
; 8 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0));
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; Line 8
00000 0f 10 41 10 movups xmm0, XMMWORD PTR [rcx+16]
00004 0f 10 11 movups xmm2, XMMWORD PTR [rcx]
; 9 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(1, 0, 1, 0));
; Line 9
00007 0f 10 49 20 movups xmm1, XMMWORD PTR [rcx+32]
0000b 0f c6 d0 44 shufps xmm2, xmm0, 68 ; 00000044H
0000f 0f 10 41 30 movups xmm0, XMMWORD PTR [rcx+48]
00013 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H
; 10 :
; 11 : target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0));
; Line 11
00017 0f 28 c2 movaps xmm0, xmm2
0001a 0f c6 c1 88 shufps xmm0, xmm1, 136 ; 00000088H
; 12 : target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1));
; Line 12
0001e 0f c6 d1 dd shufps xmm2, xmm1, 221 ; 000000ddH
00022 0f 11 02 movups XMMWORD PTR [rdx], xmm0
00025 0f 11 52 10 movups XMMWORD PTR [rdx+16], xmm2
; 13 : }
; Line 13
00029 c3 ret 0
transpose4to2 ENDP
_TEXT ENDS
; Function compile flags: /Ogtpy
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; COMDAT transpose4to4
_TEXT SEGMENT
source$ = 8
target$ = 16
transpose4to4 PROC ; COMDAT
; 17 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0));
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; Line 17
00000 0f 10 41 10 movups xmm0, XMMWORD PTR [rcx+16]
00004 0f 10 21 movups xmm4, XMMWORD PTR [rcx]
; 18 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(3, 2, 3, 2));
; 19 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(1, 0, 1, 0));
; Line 19
00007 0f 10 51 20 movups xmm2, XMMWORD PTR [rcx+32]
0000b 0f 28 dc movaps xmm3, xmm4
0000e 0f c6 e0 ee shufps xmm4, xmm0, 238 ; 000000eeH
@@ -95,57 +79,38 @@ transpose4to4 PROC ; COMDAT
00016 0f 28 ca movaps xmm1, xmm2
00019 0f 10 41 30 movups xmm0, XMMWORD PTR [rcx+48]
0001d 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H
; 20 : __m128 t3 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(3, 2, 3, 2));
; Line 20
00021 0f c6 d0 ee shufps xmm2, xmm0, 238 ; 000000eeH
; 21 :
; 22 : target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0));
; Line 22
00025 0f 28 c3 movaps xmm0, xmm3
00028 0f c6 c1 88 shufps xmm0, xmm1, 136 ; 00000088H
0002c 0f 11 02 movups XMMWORD PTR [rdx], xmm0
; 23 : target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1));
; 24 : target->colum[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0));
; Line 24
0002f 0f 28 c4 movaps xmm0, xmm4
00032 0f c6 c2 88 shufps xmm0, xmm2, 136 ; 00000088H
00036 0f c6 d9 dd shufps xmm3, xmm1, 221 ; 000000ddH
; 25 : target->colum[3] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(3, 1, 3, 1));
; Line 25
0003a 0f c6 e2 dd shufps xmm4, xmm2, 221 ; 000000ddH
0003e 0f 11 42 20 movups XMMWORD PTR [rdx+32], xmm0
00042 0f 11 5a 10 movups XMMWORD PTR [rdx+16], xmm3
00046 0f 11 62 30 movups XMMWORD PTR [rdx+48], xmm4
; 26 : }
; Line 26
0004a c3 ret 0
transpose4to4 ENDP
_TEXT ENDS
; Function compile flags: /Ogtpy
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; COMDAT transpose4to3
_TEXT SEGMENT
source$ = 32
target$ = 40
transpose4to3 PROC ; COMDAT
; 29 : {
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; Line 29
$LN4:
00000 48 83 ec 18 sub rsp, 24
; 30 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0));
; Line 30
00004 0f 10 61 10 movups xmm4, XMMWORD PTR [rcx+16]
; 31 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(3, 2, 3, 2));
; 32 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(1, 0, 1, 0));
; Line 32
00008 0f 10 69 20 movups xmm5, XMMWORD PTR [rcx+32]
0000c 0f 10 59 30 movups xmm3, XMMWORD PTR [rcx+48]
00010 0f 29 34 24 movaps XMMWORD PTR [rsp], xmm6
@@ -153,28 +118,18 @@ $LN4:
00017 0f 10 31 movups xmm6, XMMWORD PTR [rcx]
0001a 0f c6 cb 44 shufps xmm1, xmm3, 68 ; 00000044H
0001e 0f 28 d6 movaps xmm2, xmm6
; 33 : __m128 t3 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(3, 2, 3, 2));
; Line 33
00021 0f c6 eb ee shufps xmm5, xmm3, 238 ; 000000eeH
00025 0f c6 d4 44 shufps xmm2, xmm4, 68 ; 00000044H
00029 0f c6 f4 ee shufps xmm6, xmm4, 238 ; 000000eeH
; 34 :
; 35 : target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0));
; Line 35
0002d 0f 28 c2 movaps xmm0, xmm2
; 36 : target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1));
; 37 : target->colum[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0));
; Line 37
00030 0f c6 f5 88 shufps xmm6, xmm5, 136 ; 00000088H
00034 0f c6 c1 88 shufps xmm0, xmm1, 136 ; 00000088H
00038 0f c6 d1 dd shufps xmm2, xmm1, 221 ; 000000ddH
0003c 0f 11 72 20 movups XMMWORD PTR [rdx+32], xmm6
; 38 : }
; Line 38
00040 0f 28 34 24 movaps xmm6, XMMWORD PTR [rsp]
00044 0f 11 02 movups XMMWORD PTR [rdx], xmm0
00047 0f 11 52 10 movups XMMWORD PTR [rdx+16], xmm2
@@ -183,252 +138,141 @@ $LN4:
transpose4to3 ENDP
_TEXT ENDS
; Function compile flags: /Ogtpy
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; COMDAT det_mat4
_TEXT SEGMENT
matPtr$ = 96
transpose$ = 104
det_mat4 PROC ; COMDAT
; 41 : {
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; Line 41
$LN12:
00000 48 8b c4 mov rax, rsp
00003 48 83 ec 58 sub rsp, 88 ; 00000058H
; 42 : __m128 mc0 = ALIGN(matPtr->colum[0]);
; Line 42
00007 0f 10 29 movups xmm5, XMMWORD PTR [rcx]
0000a 0f 29 70 e8 movaps XMMWORD PTR [rax-24], xmm6
; 47 : __m128 cogeneration = _mm_set_ps(
; Line 47
0000e 0f 10 71 30 movups xmm6, XMMWORD PTR [rcx+48]
00012 0f 29 78 d8 movaps XMMWORD PTR [rax-40], xmm7
00016 44 0f 29 40 c8 movaps XMMWORD PTR [rax-56], xmm8
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; 43 : __m128 addc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 1, 0, 2));
; Line 43
0001b 0f 28 de movaps xmm3, xmm6
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; 47 : __m128 cogeneration = _mm_set_ps(
; Line 47
0001e 44 0f 10 41 20 movups xmm8, XMMWORD PTR [rcx+32]
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; 43 : __m128 addc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 1, 0, 2));
; Line 43
00023 0f c6 de d2 shufps xmm3, xmm6, 210 ; 000000d2H
00027 44 0f 29 48 b8 movaps XMMWORD PTR [rax-72], xmm9
; 42 : __m128 addc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 0, 2, 1));
; Line 42
0002c 45 0f 28 c8 movaps xmm9, xmm8
00030 44 0f 29 14 24 movaps XMMWORD PTR [rsp], xmm10
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; 43 : __m128 mc1 = ALIGN(matPtr->colum[1]);
; Line 43
00035 44 0f 10 51 10 movups xmm10, XMMWORD PTR [rcx+16]
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; 42 : __m128 addc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 0, 2, 1));
; Line 42
0003a 45 0f c6 c8 c9 shufps xmm9, xmm8, 201 ; 000000c9H
; 44 :
; 45 : //let sub row aligned
; 46 : __m128 subc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 1, 0, 2));
; Line 46
0003f 45 0f c6 c0 d2 shufps xmm8, xmm8, 210 ; 000000d2H
; 42 : __m128 addc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 0, 2, 1));
; Line 42
00044 41 0f 28 d2 movaps xmm2, xmm10
00048 41 0f c6 d2 c9 shufps xmm2, xmm10, 201 ; 000000c9H
; 54 : __m128 sub = _mm_mul_ps(c0, subc1);
; Line 54
0004d 41 0f 28 c0 movaps xmm0, xmm8
00051 41 0f 59 c2 mulps xmm0, xmm10
00055 41 0f 28 c9 movaps xmm1, xmm9
00059 41 0f 59 ca mulps xmm1, xmm10
0005d 0f c6 f6 c9 shufps xmm6, xmm6, 201 ; 000000c9H
; 55 : sub = _mm_mul_ps(sub, subc2);
; Line 55
00061 0f 59 c6 mulps xmm0, xmm6
00064 0f 59 cb mulps xmm1, xmm3
; 46 : __m128 subc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 1, 0, 2));
; Line 46
00067 45 0f c6 d2 d2 shufps xmm10, xmm10, 210 ; 000000d2H
; 47 : __m128 subc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 0, 2, 1));
; 48 :
; 49 : //multple all add row
; 50 : __m128 cache = _mm_mul_ps(c0, addc1);
; Line 50
0006c 0f 59 d5 mulps xmm2, xmm5
; 58 : cache = _mm_sub_ps(cache, sub);
; Line 58
0006f 0f 5c c8 subps xmm1, xmm0
; 54 : __m128 sub = _mm_mul_ps(c0, subc1);
; Line 54
00072 44 0f 59 d5 mulps xmm10, xmm5
00076 41 0f 28 c0 movaps xmm0, xmm8
0007a 0f 59 c5 mulps xmm0, xmm5
; 60 : __m128 ret = _mm_hadd_ps(cache, cache); //element 1 add element 2
; Line 60
0007d 0f 28 f9 movaps xmm7, xmm1
00080 f2 0f 7c f9 haddps xmm7, xmm1
; 55 : sub = _mm_mul_ps(sub, subc2);
; Line 55
00084 0f 59 c6 mulps xmm0, xmm6
; 61 : ret = _mm_add_ps(ret, cache); //(e1 add e2) add element 3
; Line 61
00087 0f 58 f9 addps xmm7, xmm1
; 50 : __m128 cache = _mm_mul_ps(c0, addc1);
; Line 50
0008a 41 0f 28 c9 movaps xmm1, xmm9
0008e 0f 59 cd mulps xmm1, xmm5
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; 47 : __m128 cogeneration = _mm_set_ps(
; Line 47
00091 0f c6 ff aa shufps xmm7, xmm7, 170 ; 000000aaH
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; 51 : cache = _mm_mul_ps(cache, addc2);
; Line 51
00095 0f 59 cb mulps xmm1, xmm3
; 58 : cache = _mm_sub_ps(cache, sub);
; Line 58
00098 0f 5c c8 subps xmm1, xmm0
; 55 : sub = _mm_mul_ps(sub, subc2);
; Line 55
0009b 41 0f 28 c2 movaps xmm0, xmm10
0009f 0f 59 c6 mulps xmm0, xmm6
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; 57 : }
; Line 57
000a2 0f 28 70 e8 movaps xmm6, XMMWORD PTR [rax-24]
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; 55 : sub = _mm_mul_ps(sub, subc2);
; Line 55
000a6 45 0f 59 d1 mulps xmm10, xmm9
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; 57 : }
; Line 57
000aa 44 0f 28 48 b8 movaps xmm9, XMMWORD PTR [rax-72]
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; 60 : __m128 ret = _mm_hadd_ps(cache, cache); //element 1 add element 2
; Line 60
000af 0f 28 e1 movaps xmm4, xmm1
000b2 f2 0f 7c e1 haddps xmm4, xmm1
; 61 : ret = _mm_add_ps(ret, cache); //(e1 add e2) add element 3
; Line 61
000b6 0f 58 e1 addps xmm4, xmm1
; 51 : cache = _mm_mul_ps(cache, addc2);
; Line 51
000b9 0f 28 ca movaps xmm1, xmm2
000bc 0f 59 cb mulps xmm1, xmm3
000bf 41 0f 59 d0 mulps xmm2, xmm8
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; 57 : }
; Line 57
000c3 44 0f 28 40 c8 movaps xmm8, XMMWORD PTR [rax-56]
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; 58 : cache = _mm_sub_ps(cache, sub);
; Line 58
000c8 0f 5c c8 subps xmm1, xmm0
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; 47 : __m128 cogeneration = _mm_set_ps(
; Line 47
000cb 0f c6 e4 aa shufps xmm4, xmm4, 170 ; 000000aaH
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; 58 : cache = _mm_sub_ps(cache, sub);
; Line 58
000cf 41 0f 5c d2 subps xmm2, xmm10
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; 57 : }
; Line 57
000d3 44 0f 28 14 24 movaps xmm10, XMMWORD PTR [rsp]
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; 60 : __m128 ret = _mm_hadd_ps(cache, cache); //element 1 add element 2
; Line 60
000d8 0f 28 d9 movaps xmm3, xmm1
000db f2 0f 7c d9 haddps xmm3, xmm1
000df 0f 28 c2 movaps xmm0, xmm2
; 61 : ret = _mm_add_ps(ret, cache); //(e1 add e2) add element 3
; Line 61
000e2 0f 58 d9 addps xmm3, xmm1
; 60 : __m128 ret = _mm_hadd_ps(cache, cache); //element 1 add element 2
; Line 60
000e5 f2 0f 7c c2 haddps xmm0, xmm2
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; 47 : __m128 cogeneration = _mm_set_ps(
; Line 47
000e9 0f c6 db aa shufps xmm3, xmm3, 170 ; 000000aaH
000ed 0f 28 cb movaps xmm1, xmm3
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat3.c
; 61 : ret = _mm_add_ps(ret, cache); //(e1 add e2) add element 3
; Line 61
000f0 0f 58 c2 addps xmm0, xmm2
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; 47 : __m128 cogeneration = _mm_set_ps(
; Line 47
000f3 0f 28 df movaps xmm3, xmm7
; 57 : }
; Line 57
000f6 0f 28 78 d8 movaps xmm7, XMMWORD PTR [rax-40]
000fa 0f 14 dc unpcklps xmm3, xmm4
000fd 0f c6 c0 aa shufps xmm0, xmm0, 170 ; 000000aaH
@@ -446,14 +290,12 @@ $LN12:
det_mat4 ENDP
_TEXT ENDS
; Function compile flags: /Ogtpy
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; COMDAT deinit_mat4
_TEXT SEGMENT
matPtr$ = 8
deinit_mat4 PROC ; COMDAT
; 61 : _aligned_free(matPtr);
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\mat4.c
; Line 61
00000 48 ff 25 00 00
00 00 rex_jmp QWORD PTR __imp__aligned_free
deinit_mat4 ENDP
Binary file not shown.
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
+16 -57
View File
@@ -6,102 +6,61 @@ INCLUDELIB OLDNAMES
PUBLIC normalize
; Function compile flags: /Ogtpy
; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpC\vector.c
; COMDAT normalize
_TEXT SEGMENT
source$ = 8
target$ = 16
normalize PROC ; COMDAT
; 6 : // 计算source的长度的平方
; 7 : __m128 a_length_sq = _mm_mul_ps(*source, *source); // 向量点乘自身
; File D:\NitloadIndustry\Ñо¿ÏîÄ¿\1-Flagship\TH2020\ProjectFile\Ô´´úÂë\StgSharpC\vector.c
; Line 7
00000 0f 10 11 movups xmm2, XMMWORD PTR [rcx]
00003 0f 28 ca movaps xmm1, xmm2
00006 0f 59 ca mulps xmm1, xmm2
; 8 : a_length_sq = _mm_add_ps(a_length_sq, _mm_shuffle_ps(a_length_sq, a_length_sq, _MM_SHUFFLE(2, 3, 0, 1)));
; Line 8
00009 0f 28 c1 movaps xmm0, xmm1
0000c 0f c6 c1 b1 shufps xmm0, xmm1, 177 ; 000000b1H
00010 0f 58 c8 addps xmm1, xmm0
; 9 : a_length_sq = _mm_add_ss(a_length_sq, _mm_shuffle_ps(a_length_sq, a_length_sq, _MM_SHUFFLE(0, 0, 3, 2)));
; Line 9
00013 0f 28 c1 movaps xmm0, xmm1
00016 0f c6 c1 0e shufps xmm0, xmm1, 14
0001a f3 0f 58 c8 addss xmm1, xmm0
; 10 :
; 11 : // 归一化向量source
; 12 : __m128 a_inv_length = _mm_rsqrt_ps(a_length_sq); // 计算source长度的倒数平方根
; Line 12
0001e 0f 52 d9 rsqrtps xmm3, xmm1
; 13 : *source = _mm_mul_ps(*source, a_inv_length); // 用source乘以其长度的倒数平方根得到单位向量
; Line 13
00021 0f 59 da mulps xmm3, xmm2
00024 0f 11 19 movups XMMWORD PTR [rcx], xmm3
; 14 :
; 15 : // 计算target与source的点积
; 16 : __m128 dot_product = _mm_mul_ps(*target, *source);
; Line 16
00027 0f 28 cb movaps xmm1, xmm3
0002a 0f 10 12 movups xmm2, XMMWORD PTR [rdx]
0002d 0f 59 ca mulps xmm1, xmm2
; 17 : dot_product = _mm_add_ps(dot_product, _mm_shuffle_ps(dot_product, dot_product, _MM_SHUFFLE(2, 3, 0, 1)));
; Line 17
00030 0f 28 c1 movaps xmm0, xmm1
00033 0f c6 c1 b1 shufps xmm0, xmm1, 177 ; 000000b1H
00037 0f 58 c8 addps xmm1, xmm0
; 18 : dot_product = _mm_add_ss(dot_product, _mm_shuffle_ps(dot_product, dot_product, _MM_SHUFFLE(0, 0, 3, 2)));
; Line 18
0003a 0f 28 c1 movaps xmm0, xmm1
0003d 0f c6 c1 0e shufps xmm0, xmm1, 14
00041 f3 0f 58 c8 addss xmm1, xmm0
; 19 :
; 20 : // 从target中减去source的方向分量,使其垂直于source
; 21 : __m128 b_orthogonal = _mm_sub_ps(*target, _mm_mul_ps(*source, dot_product));
; Line 21
00045 0f 59 cb mulps xmm1, xmm3
00048 0f 5c d1 subps xmm2, xmm1
; 22 :
; 23 : // 归一化向量b_orthogonal
; 24 : __m128 b_length_sq = _mm_mul_ps(b_orthogonal, b_orthogonal);
; Line 24
0004b 0f 28 ca movaps xmm1, xmm2
0004e 0f 59 ca mulps xmm1, xmm2
; 25 : b_length_sq = _mm_add_ps(b_length_sq, _mm_shuffle_ps(b_length_sq, b_length_sq, _MM_SHUFFLE(2, 3, 0, 1)));
; Line 25
00051 0f 28 c1 movaps xmm0, xmm1
00054 0f c6 c1 b1 shufps xmm0, xmm1, 177 ; 000000b1H
00058 0f 58 c8 addps xmm1, xmm0
; 26 : b_length_sq = _mm_add_ss(b_length_sq, _mm_shuffle_ps(b_length_sq, b_length_sq, _MM_SHUFFLE(0, 0, 3, 2)));
; Line 26
0005b 0f 28 c1 movaps xmm0, xmm1
0005e 0f c6 c1 0e shufps xmm0, xmm1, 14
00062 f3 0f 58 c8 addss xmm1, xmm0
; 27 :
; 28 : __m128 b_inv_length = _mm_rsqrt_ps(b_length_sq);
; Line 28
00066 0f 52 c9 rsqrtps xmm1, xmm1
; 29 : *target = _mm_mul_ps(b_orthogonal, b_inv_length);
; Line 29
00069 0f 59 ca mulps xmm1, xmm2
0006c 0f 11 0a movups XMMWORD PTR [rdx], xmm1
; 30 :
; 31 : }
; Line 31
0006f c3 ret 0
normalize ENDP
_TEXT ENDS
Binary file not shown.