; Listing generated by Microsoft (R) Optimizing Compiler Version 19.36.32537.0 include listing.inc INCLUDELIB MSVCRT INCLUDELIB OLDNAMES _DATA SEGMENT COMM pack:BYTE:038H _DATA ENDS msvcjmc SEGMENT __0998321F_concurrencysal@h DB 01H __E9680BEC_sal@h DB 01H __75F3BDA1_vadefs@h DB 01H __FF647DA5_vcruntime@h DB 01H __0DFED3C7_stdint@h DB 01H __018B5678_khrplatform@h DB 01H __79FC18F0_glad@h DB 01H __04C75F1C_corecrt@h DB 01H __0C5B3DCC_stddef@h DB 01H __986CAB3E_glfw3@h DB 01H __9BEA891A_mmintrin@h DB 01H __494656A0_corecrt_malloc@h DB 01H __E5D9469F_malloc@h DB 01H __7FB111F1_xmmintrin@h DB 01H __1AD3983D_emmintrin@h DB 01H __C572F0B4_pmmintrin@h DB 01H __75AB8336_tmmintrin@h DB 01H __5C9096B5_smmintrin@h DB 01H __39F21F79_nmmintrin@h DB 01H __EC49E537_wmmintrin@h DB 01H __27DDA830_zmmintrin@h DB 01H __10C90AFA_immintrin@h DB 01H __C508448F_StgSharpGraphic@h DB 01H __C44F8F6B_corecrt_stdio_config@h DB 01H __A7F89B2B_corecrt_wstdio@h DB 01H __B5C48800_stdio@h DB 01H __68875EC1_mat3@c DB 01H msvcjmc ENDS PUBLIC det_mat3_internal PUBLIC __JustMyCode_Default EXTRN __CheckForDebuggerJustMyCode:PROC EXTRN _fltused:DWORD ; COMDAT pdata pdata SEGMENT $pdata$det_mat3_internal DD imagerel $LN4 DD imagerel $LN4+109 DD imagerel $unwind$det_mat3_internal pdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$det_mat3_internal DD 060f01H DD 07640fH DD 06340fH DD 0700b320fH xdata ENDS ; Function compile flags: /Odt ; COMDAT __JustMyCode_Default _TEXT SEGMENT __JustMyCode_Default PROC ; COMDAT 00000 c2 00 00 ret 0 __JustMyCode_Default ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgShqrpGraphic\mat3.c ; COMDAT det_mat3_internal _TEXT SEGMENT c0$ = 48 c1$ = 56 c2$ = 64 det_mat3_internal PROC ; COMDAT ; 5 : { $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 0000a 57 push rdi 0000b 48 83 ec 20 sub rsp, 32 ; 00000020H 0000f 48 8b f9 mov rdi, rcx 00012 49 8b f0 mov rsi, r8 00015 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__68875EC1_mat3@c 0001c 48 8b da mov rbx, rdx 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode 00024 0f 10 1b movups xmm3, XMMWORD PTR [rbx] 00027 0f 10 16 movups xmm2, XMMWORD PTR [rsi] 0002a 0f 28 e3 movaps xmm4, xmm3 0002d 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] 00032 0f 28 c2 movaps xmm0, xmm2 00035 48 8b 74 24 38 mov rsi, QWORD PTR [rsp+56] 0003a 0f c6 e3 c9 shufps xmm4, xmm3, 201 ; 000000c9H 0003e 0f 59 27 mulps xmm4, XMMWORD PTR [rdi] 00041 0f c6 c2 d2 shufps xmm0, xmm2, 210 ; 000000d2H 00045 0f c6 db d2 shufps xmm3, xmm3, 210 ; 000000d2H 00049 0f 59 1f mulps xmm3, XMMWORD PTR [rdi] 0004c 0f 59 e0 mulps xmm4, xmm0 0004f 0f c6 d2 c9 shufps xmm2, xmm2, 201 ; 000000c9H 00053 0f 59 da mulps xmm3, xmm2 00056 0f 5c e3 subps xmm4, xmm3 00059 0f 28 c4 movaps xmm0, xmm4 0005c f2 0f 7c c4 haddps xmm0, xmm4 00060 0f 58 c4 addps xmm0, xmm4 00063 0f c6 c0 aa shufps xmm0, xmm0, 170 ; 000000aaH ; 6 : ; 7 : //let adding row aligned ; 8 : __m128 addc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 0, 2, 1)); ; 9 : __m128 addc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 1, 0, 2)); ; 10 : ; 11 : //let sub row aligned ; 12 : __m128 subc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 1, 0, 2)); ; 13 : __m128 subc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 0, 2, 1)); ; 14 : ; 15 : //multple all add row ; 16 : __m128 cache = _mm_mul_ps(c0,addc1); ; 17 : cache = _mm_mul_ps(cache,addc2); ; 18 : ; 19 : //multiple all sub row ; 20 : __m128 sub = _mm_mul_ps(c0, subc1); ; 21 : sub = _mm_mul_ps(sub, subc2); ; 22 : ; 23 : //main-corner sub sub-corner ; 24 : cache = _mm_sub_ps(cache,sub); ; 25 : ; 26 : __m128 ret = _mm_hadd_ps(cache,cache); //element 1 add element 2 ; 27 : ret = _mm_add_ps(ret, cache); //(e1 add e2) add element 3 ; 28 : ; 29 : ; 30 : return ret.m128_f32[2]; ; 31 : } 00067 48 83 c4 20 add rsp, 32 ; 00000020H 0006b 5f pop rdi 0006c c3 ret 0 det_mat3_internal ENDP _TEXT ENDS END