; 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 __6DC84844_mat4@c DB 01H msvcjmc ENDS PUBLIC add_mat4 PUBLIC sub_mat4 PUBLIC mul_const PUBLIC mul_4_2 PUBLIC mul_4_4 PUBLIC transpose4to2 PUBLIC transpose4to4 PUBLIC det_mat4 PUBLIC deinit_mat4 PUBLIC transpose4to3 PUBLIC __JustMyCode_Default PUBLIC __xmm@80000000800000008000000080000000 EXTRN __imp__aligned_free:PROC EXTRN __imp__aligned_malloc:PROC EXTRN mulps_sum_internal:PROC EXTRN det_mat3_internal:PROC EXTRN __CheckForDebuggerJustMyCode:PROC EXTRN _fltused:DWORD ; COMDAT pdata pdata SEGMENT $pdata$add_mat4 DD imagerel $LN7 DD imagerel $LN7+103 DD imagerel $unwind$add_mat4 pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$sub_mat4 DD imagerel $LN7 DD imagerel $LN7+103 DD imagerel $unwind$sub_mat4 pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$mul_const DD imagerel $LN15 DD imagerel $LN15+110 DD imagerel $unwind$mul_const pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$mul_4_2 DD imagerel $LN6 DD imagerel $LN6+87 DD imagerel $unwind$mul_4_2 pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$2$mul_4_2 DD imagerel $LN6+87 DD imagerel $LN6+374 DD imagerel $chain$2$mul_4_2 pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$3$mul_4_2 DD imagerel $LN6+374 DD imagerel $LN6+399 DD imagerel $chain$3$mul_4_2 pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$mul_4_4 DD imagerel $LN7 DD imagerel $LN7+87 DD imagerel $unwind$mul_4_4 pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$2$mul_4_4 DD imagerel $LN7+87 DD imagerel $LN7+631 DD imagerel $chain$2$mul_4_4 pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$3$mul_4_4 DD imagerel $LN7+631 DD imagerel $LN7+656 DD imagerel $chain$3$mul_4_4 pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$transpose4to2 DD imagerel $LN4 DD imagerel $LN4+80 DD imagerel $unwind$transpose4to2 pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$transpose4to4 DD imagerel $LN4 DD imagerel $LN4+113 DD imagerel $unwind$transpose4to4 pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$det_mat4 DD imagerel $LN4 DD imagerel $LN4+278 DD imagerel $unwind$det_mat4 pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$deinit_mat4 DD imagerel $LN4 DD imagerel $LN4+36 DD imagerel $unwind$deinit_mat4 pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$transpose4to3 DD imagerel $LN4 DD imagerel $LN4+112 DD imagerel $unwind$transpose4to3 pdata ENDS ; COMDAT __xmm@80000000800000008000000080000000 CONST SEGMENT __xmm@80000000800000008000000080000000 DB 00H, 00H, 00H, 080H, 00H, 00H, 00H DB 080H, 00H, 00H, 00H, 080H, 00H, 00H, 00H, 080H CONST ENDS ; COMDAT xdata xdata SEGMENT $unwind$transpose4to3 DD 061201H DD 026812H DD 08340aH DD 07006520aH xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$deinit_mat4 DD 020601H DD 030023206H xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$det_mat4 DD 0d2e01H DD 0e882eH DD 0f7822H DD 010681bH DD 0257417H DD 0243417H DD 0220117H DD 0500cH xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$transpose4to4 DD 040a01H DD 06340aH DD 07006320aH xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$transpose4to2 DD 040a01H DD 06340aH DD 07006320aH xdata ENDS ; COMDAT xdata xdata SEGMENT $chain$3$mul_4_4 DD 021H DD imagerel $LN7 DD imagerel $LN7+87 DD imagerel $unwind$mul_4_4 xdata ENDS ; COMDAT xdata xdata SEGMENT $chain$2$mul_4_4 DD 064021H DD 0a8840H DD 0b7833H DD 0c6808H DD imagerel $LN7 DD imagerel $LN7+87 DD imagerel $unwind$mul_4_4 xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$mul_4_4 DD 091c01H DD 01e741cH DD 01d641cH DD 01c341cH DD 01a011cH DD 05010H xdata ENDS ; COMDAT xdata xdata SEGMENT $chain$3$mul_4_2 DD 021H DD imagerel $LN6 DD imagerel $LN6+87 DD imagerel $unwind$mul_4_2 xdata ENDS ; COMDAT xdata xdata SEGMENT $chain$2$mul_4_2 DD 064021H DD 0a8840H DD 0b7833H DD 0c6808H DD imagerel $LN6 DD imagerel $LN6+87 DD imagerel $unwind$mul_4_2 xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$mul_4_2 DD 091c01H DD 01e741cH DD 01d641cH DD 01c341cH DD 01a011cH DD 05010H xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$mul_const DD 040b01H DD 03680bH DD 030027206H xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$sub_mat4 DD 040a01H DD 06340aH DD 07006320aH xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$add_mat4 DD 040a01H DD 06340aH DD 07006320aH 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\mat4.c ; COMDAT transpose4to3 _TEXT SEGMENT source$ = 64 target$ = 72 transpose4to3 PROC ; COMDAT ; 134 : { $LN4: 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx 00005 57 push rdi 00006 48 83 ec 30 sub rsp, 48 ; 00000030H 0000a 48 8b d9 mov rbx, rcx 0000d 0f 29 74 24 20 movaps XMMWORD PTR [rsp+32], xmm6 00012 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__6DC84844_mat4@c 00019 48 8b fa mov rdi, rdx 0001c e8 00 00 00 00 call __CheckForDebuggerJustMyCode 00021 0f 10 33 movups xmm6, XMMWORD PTR [rbx] 00024 0f 10 63 10 movups xmm4, XMMWORD PTR [rbx+16] 00028 0f 10 6b 20 movups xmm5, XMMWORD PTR [rbx+32] 0002c 0f 10 5b 30 movups xmm3, XMMWORD PTR [rbx+48] 00030 48 8b 5c 24 40 mov rbx, QWORD PTR [rsp+64] 00035 0f 28 d6 movaps xmm2, xmm6 00038 0f 28 cd movaps xmm1, xmm5 0003b 0f c6 d4 44 shufps xmm2, xmm4, 68 ; 00000044H 0003f 0f c6 f4 ee shufps xmm6, xmm4, 238 ; 000000eeH 00043 0f 28 c2 movaps xmm0, xmm2 00046 0f c6 cb 44 shufps xmm1, xmm3, 68 ; 00000044H 0004a 0f c6 eb ee shufps xmm5, xmm3, 238 ; 000000eeH 0004e 0f c6 f5 88 shufps xmm6, xmm5, 136 ; 00000088H 00052 0f c6 c1 88 shufps xmm0, xmm1, 136 ; 00000088H 00056 0f c6 d1 dd shufps xmm2, xmm1, 221 ; 000000ddH 0005a 0f 11 77 20 movups XMMWORD PTR [rdi+32], xmm6 0005e 0f 28 74 24 20 movaps xmm6, XMMWORD PTR [rsp+32] 00063 0f 11 07 movups XMMWORD PTR [rdi], xmm0 00066 0f 11 57 10 movups XMMWORD PTR [rdi+16], xmm2 ; 135 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0)); ; 136 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(3, 2, 3, 2)); ; 137 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(1, 0, 1, 0)); ; 138 : __m128 t3 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(3, 2, 3, 2)); ; 139 : ; 140 : target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); ; 141 : target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); ; 142 : target->colum[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); ; 143 : ; 144 : } 0006a 48 83 c4 30 add rsp, 48 ; 00000030H 0006e 5f pop rdi 0006f c3 ret 0 transpose4to3 ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgShqrpGraphic\mat4.c ; COMDAT deinit_mat4 _TEXT SEGMENT matPtr$ = 48 deinit_mat4 PROC ; COMDAT ; 169 : { $LN4: 00000 40 53 push rbx 00002 48 83 ec 20 sub rsp, 32 ; 00000020H 00006 48 8b d9 mov rbx, rcx 00009 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__6DC84844_mat4@c 00010 e8 00 00 00 00 call __CheckForDebuggerJustMyCode 00015 48 8b cb mov rcx, rbx ; 170 : _aligned_free(matPtr); ; 171 : } 00018 48 83 c4 20 add rsp, 32 ; 00000020H 0001c 5b pop rbx 0001d 48 ff 25 00 00 00 00 rex_jmp QWORD PTR __imp__aligned_free deinit_mat4 ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgShqrpGraphic\mat4.c ; COMDAT det_mat4 _TEXT SEGMENT $T1 = 32 $T2 = 48 $T3 = 64 $T4 = 80 $T5 = 96 $T6 = 112 $T7 = 128 $T8 = 144 $T9 = 160 $T10 = 176 $T11 = 192 $T12 = 208 matPtr$ = 288 transpose$ = 296 det_mat4 PROC ; COMDAT ; 149 : { $LN4: 00000 48 8b c4 mov rax, rsp 00003 48 89 58 08 mov QWORD PTR [rax+8], rbx 00007 48 89 78 10 mov QWORD PTR [rax+16], rdi 0000b 55 push rbp 0000c 48 8d 68 e8 lea rbp, QWORD PTR [rax-24] 00010 48 81 ec 10 01 00 00 sub rsp, 272 ; 00000110H 00017 0f 29 70 e8 movaps XMMWORD PTR [rax-24], xmm6 0001b 48 8b d9 mov rbx, rcx 0001e 0f 29 78 d8 movaps XMMWORD PTR [rax-40], xmm7 00022 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__6DC84844_mat4@c 00029 44 0f 29 40 c8 movaps XMMWORD PTR [rax-56], xmm8 0002e 48 8b fa mov rdi, rdx 00031 e8 00 00 00 00 call __CheckForDebuggerJustMyCode 00036 0f 10 1b movups xmm3, XMMWORD PTR [rbx] 00039 4c 8d 44 24 20 lea r8, QWORD PTR $T1[rsp] 0003e 0f 10 53 10 movups xmm2, XMMWORD PTR [rbx+16] 00042 48 8d 54 24 30 lea rdx, QWORD PTR $T2[rsp] 00047 0f 10 4b 20 movups xmm1, XMMWORD PTR [rbx+32] 0004b 48 8d 4c 24 40 lea rcx, QWORD PTR $T3[rsp] 00050 0f 10 43 30 movups xmm0, XMMWORD PTR [rbx+48] 00054 0f 29 4d c0 movaps XMMWORD PTR $T11[rbp-256], xmm1 00058 0f 29 45 b0 movaps XMMWORD PTR $T10[rbp-256], xmm0 0005c 0f 29 55 d0 movaps XMMWORD PTR $T12[rbp-256], xmm2 00060 0f 29 45 80 movaps XMMWORD PTR $T7[rbp-256], xmm0 00064 0f 29 4d 90 movaps XMMWORD PTR $T8[rbp-256], xmm1 00068 0f 29 5d a0 movaps XMMWORD PTR $T9[rbp-256], xmm3 0006c 0f 29 44 24 50 movaps XMMWORD PTR $T4[rsp], xmm0 00071 0f 29 54 24 60 movaps XMMWORD PTR $T5[rsp], xmm2 00076 0f 29 5c 24 70 movaps XMMWORD PTR $T6[rsp], xmm3 0007b 0f 29 4c 24 20 movaps XMMWORD PTR $T1[rsp], xmm1 00080 0f 29 54 24 30 movaps XMMWORD PTR $T2[rsp], xmm2 00085 0f 29 5c 24 40 movaps XMMWORD PTR $T3[rsp], xmm3 0008a e8 00 00 00 00 call det_mat3_internal 0008f 4c 8d 44 24 50 lea r8, QWORD PTR $T4[rsp] 00094 44 0f 28 c0 movaps xmm8, xmm0 00098 48 8d 54 24 60 lea rdx, QWORD PTR $T5[rsp] 0009d 48 8d 4c 24 70 lea rcx, QWORD PTR $T6[rsp] 000a2 e8 00 00 00 00 call det_mat3_internal 000a7 4c 8d 45 80 lea r8, QWORD PTR $T7[rbp-256] 000ab 0f 28 f8 movaps xmm7, xmm0 000ae 48 8d 55 90 lea rdx, QWORD PTR $T8[rbp-256] 000b2 48 8d 4d a0 lea rcx, QWORD PTR $T9[rbp-256] 000b6 e8 00 00 00 00 call det_mat3_internal 000bb 4c 8d 45 b0 lea r8, QWORD PTR $T10[rbp-256] 000bf 0f 28 f0 movaps xmm6, xmm0 000c2 48 8d 55 c0 lea rdx, QWORD PTR $T11[rbp-256] 000c6 48 8d 4d d0 lea rcx, QWORD PTR $T12[rbp-256] 000ca e8 00 00 00 00 call det_mat3_internal 000cf 0f 10 4f 30 movups xmm1, XMMWORD PTR [rdi+48] 000d3 4c 8d 9c 24 10 01 00 00 lea r11, QWORD PTR [rsp+272] 000db 0f 14 c6 unpcklps xmm0, xmm6 000de 49 8b 5b 10 mov rbx, QWORD PTR [r11+16] 000e2 49 8b 7b 18 mov rdi, QWORD PTR [r11+24] 000e6 41 0f 28 73 f0 movaps xmm6, XMMWORD PTR [r11-16] 000eb 41 0f 14 f8 unpcklps xmm7, xmm8 000ef 45 0f 28 43 d0 movaps xmm8, XMMWORD PTR [r11-48] 000f4 0f 16 c7 movlhps xmm0, xmm7 000f7 41 0f 28 7b e0 movaps xmm7, XMMWORD PTR [r11-32] 000fc 0f 59 c8 mulps xmm1, xmm0 000ff f2 0f 7d c9 hsubps xmm1, xmm1 00103 f2 0f 7c c9 haddps xmm1, xmm1 00107 0f 57 0d 00 00 00 00 xorps xmm1, DWORD PTR __xmm@80000000800000008000000080000000 0010e 0f 28 c1 movaps xmm0, xmm1 ; 150 : __m128 mc0 = ALIGN(matPtr->colum[0]); ; 151 : __m128 mc1 = ALIGN(matPtr->colum[1]); ; 152 : __m128 mc2 = ALIGN(matPtr->colum[2]); ; 153 : __m128 mc3 = ALIGN(matPtr->colum[3]); ; 154 : ; 155 : __m128 cogeneration = _mm_set_ps( ; 156 : det_mat3_internal(mc0, mc1, mc2), ; 157 : det_mat3_internal(mc0, mc1, mc3), ; 158 : det_mat3_internal(mc0, mc2, mc3), ; 159 : det_mat3_internal(mc1, mc2, mc3) ; 160 : ); ; 161 : __m128 retvec = _mm_mul_ps(ALIGN(transpose->colum[3]),cogeneration); ; 162 : retvec = _mm_hsub_ps(retvec,retvec); ; 163 : retvec = _mm_hadd_ps(retvec,retvec); ; 164 : return -retvec.m128_f32[0]; ; 165 : ; 166 : } 00111 49 8b e3 mov rsp, r11 00114 5d pop rbp 00115 c3 ret 0 det_mat4 ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgShqrpGraphic\mat4.c ; COMDAT transpose4to4 _TEXT SEGMENT source$ = 48 target$ = 56 transpose4to4 PROC ; COMDAT ; 120 : { $LN4: 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx 00005 57 push rdi 00006 48 83 ec 20 sub rsp, 32 ; 00000020H 0000a 48 8b d9 mov rbx, rcx 0000d 48 8b fa mov rdi, rdx 00010 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__6DC84844_mat4@c 00017 e8 00 00 00 00 call __CheckForDebuggerJustMyCode 0001c 0f 10 43 10 movups xmm0, XMMWORD PTR [rbx+16] 00020 0f 10 23 movups xmm4, XMMWORD PTR [rbx] 00023 0f 10 53 20 movups xmm2, XMMWORD PTR [rbx+32] 00027 0f 28 dc movaps xmm3, xmm4 0002a 0f c6 e0 ee shufps xmm4, xmm0, 238 ; 000000eeH 0002e 0f c6 d8 44 shufps xmm3, xmm0, 68 ; 00000044H 00032 0f 28 ca movaps xmm1, xmm2 00035 0f 10 43 30 movups xmm0, XMMWORD PTR [rbx+48] 00039 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] 0003e 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H 00042 0f c6 d0 ee shufps xmm2, xmm0, 238 ; 000000eeH 00046 0f 28 c3 movaps xmm0, xmm3 00049 0f c6 c1 88 shufps xmm0, xmm1, 136 ; 00000088H 0004d 0f 11 07 movups XMMWORD PTR [rdi], xmm0 00050 0f 28 c4 movaps xmm0, xmm4 00053 0f c6 c2 88 shufps xmm0, xmm2, 136 ; 00000088H 00057 0f c6 d9 dd shufps xmm3, xmm1, 221 ; 000000ddH 0005b 0f c6 e2 dd shufps xmm4, xmm2, 221 ; 000000ddH 0005f 0f 11 47 20 movups XMMWORD PTR [rdi+32], xmm0 00063 0f 11 5f 10 movups XMMWORD PTR [rdi+16], xmm3 00067 0f 11 67 30 movups XMMWORD PTR [rdi+48], xmm4 ; 121 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0)); ; 122 : __m128 t1 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(3, 2, 3, 2)); ; 123 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(1, 0, 1, 0)); ; 124 : __m128 t3 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(3, 2, 3, 2)); ; 125 : ; 126 : target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); ; 127 : target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); ; 128 : target->colum[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); ; 129 : target->colum[3] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(3, 1, 3, 1)); ; 130 : ; 131 : } 0006b 48 83 c4 20 add rsp, 32 ; 00000020H 0006f 5f pop rdi 00070 c3 ret 0 transpose4to4 ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgShqrpGraphic\mat4.c ; COMDAT transpose4to2 _TEXT SEGMENT source$ = 48 target$ = 56 transpose4to2 PROC ; COMDAT ; 111 : { $LN4: 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx 00005 57 push rdi 00006 48 83 ec 20 sub rsp, 32 ; 00000020H 0000a 48 8b d9 mov rbx, rcx 0000d 48 8b fa mov rdi, rdx 00010 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__6DC84844_mat4@c 00017 e8 00 00 00 00 call __CheckForDebuggerJustMyCode 0001c 0f 10 43 10 movups xmm0, XMMWORD PTR [rbx+16] 00020 0f 10 13 movups xmm2, XMMWORD PTR [rbx] 00023 0f 10 4b 20 movups xmm1, XMMWORD PTR [rbx+32] 00027 0f c6 d0 44 shufps xmm2, xmm0, 68 ; 00000044H 0002b 0f 10 43 30 movups xmm0, XMMWORD PTR [rbx+48] 0002f 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] 00034 0f c6 c8 44 shufps xmm1, xmm0, 68 ; 00000044H 00038 0f 28 c2 movaps xmm0, xmm2 0003b 0f c6 c1 88 shufps xmm0, xmm1, 136 ; 00000088H 0003f 0f c6 d1 dd shufps xmm2, xmm1, 221 ; 000000ddH 00043 0f 11 07 movups XMMWORD PTR [rdi], xmm0 00046 0f 11 57 10 movups XMMWORD PTR [rdi+16], xmm2 ; 112 : __m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0)); ; 113 : __m128 t2 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(1, 0, 1, 0)); ; 114 : ; 115 : target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); ; 116 : target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); ; 117 : } 0004a 48 83 c4 20 add rsp, 32 ; 00000020H 0004e 5f pop rdi 0004f c3 ret 0 transpose4to2 ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgShqrpGraphic\mat4.c ; COMDAT mul_4_4 _TEXT SEGMENT $T1 = 32 $T2 = 32 $T3 = 32 $T4 = 32 $T5 = 48 $T6 = 48 $T7 = 48 $T8 = 48 $T9 = 64 $T10 = 64 $T11 = 64 $T12 = 64 $T13 = 80 $T14 = 80 $T15 = 80 $T16 = 80 $T17 = 96 $T18 = 96 $T19 = 96 $T20 = 96 $T21 = 112 $T22 = 112 $T23 = 112 $T24 = 112 $T25 = 128 $T26 = 128 $T27 = 128 $T28 = 128 $T29 = 144 $T30 = 144 $T31 = 144 $T32 = 144 left$ = 224 right$ = 232 mul_4_4 PROC ; COMDAT ; 78 : { $LN7: 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 48 89 7c 24 18 mov QWORD PTR [rsp+24], rdi 0000f 55 push rbp 00010 48 8d 6c 24 a9 lea rbp, QWORD PTR [rsp-87] 00015 48 81 ec d0 00 00 00 sub rsp, 208 ; 000000d0H 0001c 48 8b f9 mov rdi, rcx 0001f 48 8b f2 mov rsi, rdx 00022 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__6DC84844_mat4@c 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode 0002e ba 10 00 00 00 mov edx, 16 00033 8d 4a 30 lea ecx, QWORD PTR [rdx+48] 00036 ff 15 00 00 00 00 call QWORD PTR __imp__aligned_malloc 0003c 48 8b d8 mov rbx, rax 0003f 48 85 c0 test rax, rax 00042 0f 84 2f 02 00 00 je $LN2@mul_4_4 ; 79 : matrix4map* retPtr = _aligned_malloc(sizeof(matrix4map), 16); ; 80 : if (NULL != retPtr) ; 81 : { ; 82 : retPtr->colum[0] = _mm_set_ps( 00048 0f 10 0e movups xmm1, XMMWORD PTR [rsi] 0004b 48 8d 55 a7 lea rdx, QWORD PTR $T4[rbp-121] 0004f 0f 10 47 30 movups xmm0, XMMWORD PTR [rdi+48] 00053 48 8d 4d b7 lea rcx, QWORD PTR $T8[rbp-121] 00057 0f 29 b4 24 c0 00 00 00 movaps XMMWORD PTR [rsp+192], xmm6 0005f 0f 11 45 17 movups XMMWORD PTR $T32[rbp-121], xmm0 00063 0f 10 47 20 movups xmm0, XMMWORD PTR [rdi+32] 00067 0f 29 4d 07 movaps XMMWORD PTR $T28[rbp-121], xmm1 0006b 0f 11 45 f7 movups XMMWORD PTR $T24[rbp-121], xmm0 0006f 0f 10 47 10 movups xmm0, XMMWORD PTR [rdi+16] 00073 0f 29 4d e7 movaps XMMWORD PTR $T20[rbp-121], xmm1 00077 0f 29 4d c7 movaps XMMWORD PTR $T12[rbp-121], xmm1 0007b 0f 29 4d a7 movaps XMMWORD PTR $T4[rbp-121], xmm1 0007f 0f 10 0f movups xmm1, XMMWORD PTR [rdi] 00082 0f 29 bc 24 b0 00 00 00 movaps XMMWORD PTR [rsp+176], xmm7 0008a 0f 11 45 d7 movups XMMWORD PTR $T16[rbp-121], xmm0 0008e 44 0f 29 84 24 a0 00 00 00 movaps XMMWORD PTR [rsp+160], xmm8 00097 0f 11 4d b7 movups XMMWORD PTR $T8[rbp-121], xmm1 0009b e8 00 00 00 00 call mulps_sum_internal 000a0 48 8d 55 c7 lea rdx, QWORD PTR $T12[rbp-121] 000a4 44 0f 28 c0 movaps xmm8, xmm0 000a8 48 8d 4d d7 lea rcx, QWORD PTR $T16[rbp-121] 000ac e8 00 00 00 00 call mulps_sum_internal 000b1 48 8d 55 e7 lea rdx, QWORD PTR $T20[rbp-121] 000b5 0f 28 f8 movaps xmm7, xmm0 000b8 48 8d 4d f7 lea rcx, QWORD PTR $T24[rbp-121] 000bc e8 00 00 00 00 call mulps_sum_internal 000c1 48 8d 55 07 lea rdx, QWORD PTR $T28[rbp-121] 000c5 0f 28 f0 movaps xmm6, xmm0 000c8 48 8d 4d 17 lea rcx, QWORD PTR $T32[rbp-121] 000cc e8 00 00 00 00 call mulps_sum_internal 000d1 0f 14 c6 unpcklps xmm0, xmm6 ; 83 : mulps_sum_internal(ALIGN(left->colum[0]), ALIGN(right->colum[0])), ; 84 : mulps_sum_internal(ALIGN(left->colum[1]), ALIGN(right->colum[0])), ; 85 : mulps_sum_internal(ALIGN(left->colum[2]), ALIGN(right->colum[0])), ; 86 : mulps_sum_internal(ALIGN(left->colum[3]), ALIGN(right->colum[0])) ; 87 : ); ; 88 : retPtr->colum[1] = _mm_set_ps( 000d4 48 8d 55 17 lea rdx, QWORD PTR $T31[rbp-121] 000d8 41 0f 14 f8 unpcklps xmm7, xmm8 000dc 48 8d 4d 07 lea rcx, QWORD PTR $T27[rbp-121] 000e0 0f 16 c7 movlhps xmm0, xmm7 000e3 0f 11 03 movups XMMWORD PTR [rbx], xmm0 000e6 0f 10 56 10 movups xmm2, XMMWORD PTR [rsi+16] 000ea 0f 10 47 30 movups xmm0, XMMWORD PTR [rdi+48] 000ee 0f 10 4f 20 movups xmm1, XMMWORD PTR [rdi+32] 000f2 0f 11 45 a7 movups XMMWORD PTR $T3[rbp-121], xmm0 000f6 0f 10 47 10 movups xmm0, XMMWORD PTR [rdi+16] 000fa 0f 11 4d c7 movups XMMWORD PTR $T11[rbp-121], xmm1 000fe 0f 10 0f movups xmm1, XMMWORD PTR [rdi] 00101 0f 11 45 e7 movups XMMWORD PTR $T19[rbp-121], xmm0 00105 0f 11 4d 07 movups XMMWORD PTR $T27[rbp-121], xmm1 00109 0f 29 55 b7 movaps XMMWORD PTR $T7[rbp-121], xmm2 0010d 0f 29 55 d7 movaps XMMWORD PTR $T15[rbp-121], xmm2 00111 0f 29 55 f7 movaps XMMWORD PTR $T23[rbp-121], xmm2 00115 0f 29 55 17 movaps XMMWORD PTR $T31[rbp-121], xmm2 00119 e8 00 00 00 00 call mulps_sum_internal 0011e 48 8d 55 f7 lea rdx, QWORD PTR $T23[rbp-121] 00122 44 0f 28 c0 movaps xmm8, xmm0 00126 48 8d 4d e7 lea rcx, QWORD PTR $T19[rbp-121] 0012a e8 00 00 00 00 call mulps_sum_internal 0012f 48 8d 55 d7 lea rdx, QWORD PTR $T15[rbp-121] 00133 0f 28 f8 movaps xmm7, xmm0 00136 48 8d 4d c7 lea rcx, QWORD PTR $T11[rbp-121] 0013a e8 00 00 00 00 call mulps_sum_internal 0013f 48 8d 55 b7 lea rdx, QWORD PTR $T7[rbp-121] 00143 0f 28 f0 movaps xmm6, xmm0 00146 48 8d 4d a7 lea rcx, QWORD PTR $T3[rbp-121] 0014a e8 00 00 00 00 call mulps_sum_internal 0014f 0f 14 c6 unpcklps xmm0, xmm6 ; 89 : mulps_sum_internal(ALIGN(left->colum[0]), ALIGN(right->colum[1])), ; 90 : mulps_sum_internal(ALIGN(left->colum[1]), ALIGN(right->colum[1])), ; 91 : mulps_sum_internal(ALIGN(left->colum[2]), ALIGN(right->colum[1])), ; 92 : mulps_sum_internal(ALIGN(left->colum[3]), ALIGN(right->colum[1])) ; 93 : ); ; 94 : retPtr->colum[1] = _mm_set_ps( 00152 48 8d 55 17 lea rdx, QWORD PTR $T30[rbp-121] 00156 41 0f 14 f8 unpcklps xmm7, xmm8 0015a 0f 16 c7 movlhps xmm0, xmm7 0015d 0f 11 43 10 movups XMMWORD PTR [rbx+16], xmm0 00161 0f 10 56 20 movups xmm2, XMMWORD PTR [rsi+32] 00165 0f 10 47 30 movups xmm0, XMMWORD PTR [rdi+48] 00169 0f 10 4f 20 movups xmm1, XMMWORD PTR [rdi+32] 0016d 0f 11 45 a7 movups XMMWORD PTR $T2[rbp-121], xmm0 00171 0f 10 47 10 movups xmm0, XMMWORD PTR [rdi+16] 00175 0f 11 4d c7 movups XMMWORD PTR $T10[rbp-121], xmm1 00179 0f 10 0f movups xmm1, XMMWORD PTR [rdi] 0017c 0f 11 45 e7 movups XMMWORD PTR $T18[rbp-121], xmm0 00180 0f 11 4d 07 movups XMMWORD PTR $T26[rbp-121], xmm1 00184 0f 29 55 b7 movaps XMMWORD PTR $T6[rbp-121], xmm2 00188 0f 29 55 d7 movaps XMMWORD PTR $T14[rbp-121], xmm2 0018c 0f 29 55 f7 movaps XMMWORD PTR $T22[rbp-121], xmm2 00190 0f 29 55 17 movaps XMMWORD PTR $T30[rbp-121], xmm2 00194 48 8d 4d 07 lea rcx, QWORD PTR $T26[rbp-121] 00198 e8 00 00 00 00 call mulps_sum_internal 0019d 48 8d 55 f7 lea rdx, QWORD PTR $T22[rbp-121] 001a1 44 0f 28 c0 movaps xmm8, xmm0 001a5 48 8d 4d e7 lea rcx, QWORD PTR $T18[rbp-121] 001a9 e8 00 00 00 00 call mulps_sum_internal 001ae 48 8d 55 d7 lea rdx, QWORD PTR $T14[rbp-121] 001b2 0f 28 f8 movaps xmm7, xmm0 001b5 48 8d 4d c7 lea rcx, QWORD PTR $T10[rbp-121] 001b9 e8 00 00 00 00 call mulps_sum_internal 001be 48 8d 55 b7 lea rdx, QWORD PTR $T6[rbp-121] 001c2 0f 28 f0 movaps xmm6, xmm0 001c5 48 8d 4d a7 lea rcx, QWORD PTR $T2[rbp-121] 001c9 e8 00 00 00 00 call mulps_sum_internal 001ce 0f 14 c6 unpcklps xmm0, xmm6 ; 95 : mulps_sum_internal(ALIGN(left->colum[0]), ALIGN(right->colum[2])), ; 96 : mulps_sum_internal(ALIGN(left->colum[1]), ALIGN(right->colum[2])), ; 97 : mulps_sum_internal(ALIGN(left->colum[2]), ALIGN(right->colum[2])), ; 98 : mulps_sum_internal(ALIGN(left->colum[3]), ALIGN(right->colum[2])) ; 99 : ); ; 100 : retPtr->colum[1] = _mm_set_ps( 001d1 48 8d 55 17 lea rdx, QWORD PTR $T29[rbp-121] 001d5 41 0f 14 f8 unpcklps xmm7, xmm8 001d9 48 8d 4d 07 lea rcx, QWORD PTR $T25[rbp-121] 001dd 0f 16 c7 movlhps xmm0, xmm7 001e0 0f 11 43 10 movups XMMWORD PTR [rbx+16], xmm0 001e4 0f 10 56 30 movups xmm2, XMMWORD PTR [rsi+48] 001e8 0f 10 47 30 movups xmm0, XMMWORD PTR [rdi+48] 001ec 0f 10 4f 20 movups xmm1, XMMWORD PTR [rdi+32] 001f0 0f 11 45 a7 movups XMMWORD PTR $T1[rbp-121], xmm0 001f4 0f 10 47 10 movups xmm0, XMMWORD PTR [rdi+16] 001f8 0f 11 4d c7 movups XMMWORD PTR $T9[rbp-121], xmm1 001fc 0f 10 0f movups xmm1, XMMWORD PTR [rdi] 001ff 0f 11 45 e7 movups XMMWORD PTR $T17[rbp-121], xmm0 00203 0f 11 4d 07 movups XMMWORD PTR $T25[rbp-121], xmm1 00207 0f 29 55 b7 movaps XMMWORD PTR $T5[rbp-121], xmm2 0020b 0f 29 55 d7 movaps XMMWORD PTR $T13[rbp-121], xmm2 0020f 0f 29 55 f7 movaps XMMWORD PTR $T21[rbp-121], xmm2 00213 0f 29 55 17 movaps XMMWORD PTR $T29[rbp-121], xmm2 00217 e8 00 00 00 00 call mulps_sum_internal 0021c 48 8d 55 f7 lea rdx, QWORD PTR $T21[rbp-121] 00220 44 0f 28 c0 movaps xmm8, xmm0 00224 48 8d 4d e7 lea rcx, QWORD PTR $T17[rbp-121] 00228 e8 00 00 00 00 call mulps_sum_internal 0022d 48 8d 55 d7 lea rdx, QWORD PTR $T13[rbp-121] 00231 0f 28 f8 movaps xmm7, xmm0 00234 48 8d 4d c7 lea rcx, QWORD PTR $T9[rbp-121] 00238 e8 00 00 00 00 call mulps_sum_internal 0023d 48 8d 55 b7 lea rdx, QWORD PTR $T5[rbp-121] 00241 0f 28 f0 movaps xmm6, xmm0 00244 48 8d 4d a7 lea rcx, QWORD PTR $T1[rbp-121] 00248 e8 00 00 00 00 call mulps_sum_internal 0024d 41 0f 14 f8 unpcklps xmm7, xmm8 ; 101 : mulps_sum_internal(ALIGN(left->colum[0]), ALIGN(right->colum[3])), ; 102 : mulps_sum_internal(ALIGN(left->colum[1]), ALIGN(right->colum[3])), ; 103 : mulps_sum_internal(ALIGN(left->colum[2]), ALIGN(right->colum[3])), ; 104 : mulps_sum_internal(ALIGN(left->colum[3]), ALIGN(right->colum[3])) ; 105 : ); ; 106 : } ; 107 : return retPtr; 00251 48 8b c3 mov rax, rbx 00254 44 0f 28 84 24 a0 00 00 00 movaps xmm8, XMMWORD PTR [rsp+160] 0025d 0f 14 c6 unpcklps xmm0, xmm6 00260 0f 28 b4 24 c0 00 00 00 movaps xmm6, XMMWORD PTR [rsp+192] 00268 0f 16 c7 movlhps xmm0, xmm7 0026b 0f 28 bc 24 b0 00 00 00 movaps xmm7, XMMWORD PTR [rsp+176] 00273 0f 11 43 10 movups XMMWORD PTR [rbx+16], xmm0 $LN2@mul_4_4: ; 108 : } 00277 4c 8d 9c 24 d0 00 00 00 lea r11, QWORD PTR [rsp+208] 0027f 49 8b 5b 10 mov rbx, QWORD PTR [r11+16] 00283 49 8b 73 18 mov rsi, QWORD PTR [r11+24] 00287 49 8b 7b 20 mov rdi, QWORD PTR [r11+32] 0028b 49 8b e3 mov rsp, r11 0028e 5d pop rbp 0028f c3 ret 0 mul_4_4 ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgShqrpGraphic\mat4.c ; COMDAT mul_4_2 _TEXT SEGMENT $T1 = 32 $T2 = 32 $T3 = 48 $T4 = 48 $T5 = 64 $T6 = 64 $T7 = 80 $T8 = 80 $T9 = 96 $T10 = 96 $T11 = 112 $T12 = 112 $T13 = 128 $T14 = 128 $T15 = 144 $T16 = 144 left$ = 224 right$ = 232 mul_4_2 PROC ; COMDAT ; 57 : { $LN6: 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 48 89 7c 24 18 mov QWORD PTR [rsp+24], rdi 0000f 55 push rbp 00010 48 8d 6c 24 a9 lea rbp, QWORD PTR [rsp-87] 00015 48 81 ec d0 00 00 00 sub rsp, 208 ; 000000d0H 0001c 48 8b f9 mov rdi, rcx 0001f 48 8b f2 mov rsi, rdx 00022 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__6DC84844_mat4@c 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode 0002e ba 10 00 00 00 mov edx, 16 00033 8d 4a 10 lea ecx, QWORD PTR [rdx+16] 00036 ff 15 00 00 00 00 call QWORD PTR __imp__aligned_malloc 0003c 48 8b d8 mov rbx, rax 0003f 48 85 c0 test rax, rax 00042 0f 84 2e 01 00 00 je $LN2@mul_4_2 ; 58 : matrix2map* retPtr = _aligned_malloc(sizeof(matrix2map), 16); ; 59 : if (NULL != retPtr) ; 60 : { ; 61 : retPtr->colum[0] = _mm_set_ps( 00048 0f 10 0e movups xmm1, XMMWORD PTR [rsi] 0004b 48 8d 55 a7 lea rdx, QWORD PTR $T2[rbp-121] 0004f 0f 10 47 30 movups xmm0, XMMWORD PTR [rdi+48] 00053 48 8d 4d b7 lea rcx, QWORD PTR $T4[rbp-121] 00057 0f 29 b4 24 c0 00 00 00 movaps XMMWORD PTR [rsp+192], xmm6 0005f 0f 11 45 17 movups XMMWORD PTR $T16[rbp-121], xmm0 00063 0f 10 47 20 movups xmm0, XMMWORD PTR [rdi+32] 00067 0f 29 4d 07 movaps XMMWORD PTR $T14[rbp-121], xmm1 0006b 0f 11 45 f7 movups XMMWORD PTR $T12[rbp-121], xmm0 0006f 0f 10 47 10 movups xmm0, XMMWORD PTR [rdi+16] 00073 0f 29 4d e7 movaps XMMWORD PTR $T10[rbp-121], xmm1 00077 0f 29 4d c7 movaps XMMWORD PTR $T6[rbp-121], xmm1 0007b 0f 29 4d a7 movaps XMMWORD PTR $T2[rbp-121], xmm1 0007f 0f 10 0f movups xmm1, XMMWORD PTR [rdi] 00082 0f 29 bc 24 b0 00 00 00 movaps XMMWORD PTR [rsp+176], xmm7 0008a 0f 11 45 d7 movups XMMWORD PTR $T8[rbp-121], xmm0 0008e 44 0f 29 84 24 a0 00 00 00 movaps XMMWORD PTR [rsp+160], xmm8 00097 0f 11 4d b7 movups XMMWORD PTR $T4[rbp-121], xmm1 0009b e8 00 00 00 00 call mulps_sum_internal 000a0 48 8d 55 c7 lea rdx, QWORD PTR $T6[rbp-121] 000a4 44 0f 28 c0 movaps xmm8, xmm0 000a8 48 8d 4d d7 lea rcx, QWORD PTR $T8[rbp-121] 000ac e8 00 00 00 00 call mulps_sum_internal 000b1 48 8d 55 e7 lea rdx, QWORD PTR $T10[rbp-121] 000b5 0f 28 f8 movaps xmm7, xmm0 000b8 48 8d 4d f7 lea rcx, QWORD PTR $T12[rbp-121] 000bc e8 00 00 00 00 call mulps_sum_internal 000c1 48 8d 55 07 lea rdx, QWORD PTR $T14[rbp-121] 000c5 0f 28 f0 movaps xmm6, xmm0 000c8 48 8d 4d 17 lea rcx, QWORD PTR $T16[rbp-121] 000cc e8 00 00 00 00 call mulps_sum_internal 000d1 0f 14 c6 unpcklps xmm0, xmm6 ; 62 : mulps_sum_internal(ALIGN(left->colum[0]), ALIGN(right->colum[0])), ; 63 : mulps_sum_internal(ALIGN(left->colum[1]), ALIGN(right->colum[0])), ; 64 : mulps_sum_internal(ALIGN(left->colum[2]), ALIGN(right->colum[0])), ; 65 : mulps_sum_internal(ALIGN(left->colum[3]), ALIGN(right->colum[0])) ; 66 : ); ; 67 : retPtr->colum[1] = _mm_set_ps( 000d4 48 8d 55 17 lea rdx, QWORD PTR $T15[rbp-121] 000d8 41 0f 14 f8 unpcklps xmm7, xmm8 000dc 48 8d 4d 07 lea rcx, QWORD PTR $T13[rbp-121] 000e0 0f 16 c7 movlhps xmm0, xmm7 000e3 0f 11 03 movups XMMWORD PTR [rbx], xmm0 000e6 0f 10 56 10 movups xmm2, XMMWORD PTR [rsi+16] 000ea 0f 10 47 30 movups xmm0, XMMWORD PTR [rdi+48] 000ee 0f 10 4f 20 movups xmm1, XMMWORD PTR [rdi+32] 000f2 0f 11 45 a7 movups XMMWORD PTR $T1[rbp-121], xmm0 000f6 0f 10 47 10 movups xmm0, XMMWORD PTR [rdi+16] 000fa 0f 11 4d c7 movups XMMWORD PTR $T5[rbp-121], xmm1 000fe 0f 10 0f movups xmm1, XMMWORD PTR [rdi] 00101 0f 11 45 e7 movups XMMWORD PTR $T9[rbp-121], xmm0 00105 0f 11 4d 07 movups XMMWORD PTR $T13[rbp-121], xmm1 00109 0f 29 55 b7 movaps XMMWORD PTR $T3[rbp-121], xmm2 0010d 0f 29 55 d7 movaps XMMWORD PTR $T7[rbp-121], xmm2 00111 0f 29 55 f7 movaps XMMWORD PTR $T11[rbp-121], xmm2 00115 0f 29 55 17 movaps XMMWORD PTR $T15[rbp-121], xmm2 00119 e8 00 00 00 00 call mulps_sum_internal 0011e 48 8d 55 f7 lea rdx, QWORD PTR $T11[rbp-121] 00122 44 0f 28 c0 movaps xmm8, xmm0 00126 48 8d 4d e7 lea rcx, QWORD PTR $T9[rbp-121] 0012a e8 00 00 00 00 call mulps_sum_internal 0012f 48 8d 55 d7 lea rdx, QWORD PTR $T7[rbp-121] 00133 0f 28 f8 movaps xmm7, xmm0 00136 48 8d 4d c7 lea rcx, QWORD PTR $T5[rbp-121] 0013a e8 00 00 00 00 call mulps_sum_internal 0013f 48 8d 55 b7 lea rdx, QWORD PTR $T3[rbp-121] 00143 0f 28 f0 movaps xmm6, xmm0 00146 48 8d 4d a7 lea rcx, QWORD PTR $T1[rbp-121] 0014a e8 00 00 00 00 call mulps_sum_internal 0014f 41 0f 14 f8 unpcklps xmm7, xmm8 00153 44 0f 28 84 24 a0 00 00 00 movaps xmm8, XMMWORD PTR [rsp+160] 0015c 0f 14 c6 unpcklps xmm0, xmm6 0015f 0f 28 b4 24 c0 00 00 00 movaps xmm6, XMMWORD PTR [rsp+192] 00167 0f 16 c7 movlhps xmm0, xmm7 0016a 0f 28 bc 24 b0 00 00 00 movaps xmm7, XMMWORD PTR [rsp+176] 00172 0f 11 43 10 movups XMMWORD PTR [rbx+16], xmm0 $LN2@mul_4_2: ; 68 : mulps_sum_internal(ALIGN(left->colum[0]), ALIGN(right->colum[1])), ; 69 : mulps_sum_internal(ALIGN(left->colum[1]), ALIGN(right->colum[1])), ; 70 : mulps_sum_internal(ALIGN(left->colum[2]), ALIGN(right->colum[1])), ; 71 : mulps_sum_internal(ALIGN(left->colum[3]), ALIGN(right->colum[1])) ; 72 : ); ; 73 : } ; 74 : } 00176 4c 8d 9c 24 d0 00 00 00 lea r11, QWORD PTR [rsp+208] 0017e 49 8b 5b 10 mov rbx, QWORD PTR [r11+16] 00182 49 8b 73 18 mov rsi, QWORD PTR [r11+24] 00186 49 8b 7b 20 mov rdi, QWORD PTR [r11+32] 0018a 49 8b e3 mov rsp, r11 0018d 5d pop rbp 0018e c3 ret 0 mul_4_2 ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgShqrpGraphic\mat4.c ; COMDAT mul_const _TEXT SEGMENT cst128$1 = 32 mat$ = 80 value$ = 88 mul_const PROC ; COMDAT ; 37 : { $LN15: 00000 40 53 push rbx 00002 48 83 ec 40 sub rsp, 64 ; 00000040H 00006 0f 29 74 24 30 movaps XMMWORD PTR [rsp+48], xmm6 0000b 48 8b d9 mov rbx, rcx 0000e 0f 28 f1 movaps xmm6, xmm1 00011 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__6DC84844_mat4@c 00018 0f c6 f6 00 shufps xmm6, xmm6, 0 0001c e8 00 00 00 00 call __CheckForDebuggerJustMyCode 00021 ba 10 00 00 00 mov edx, 16 00026 8d 4a 70 lea ecx, QWORD PTR [rdx+112] 00029 ff 15 00 00 00 00 call QWORD PTR __imp__aligned_malloc 0002f 48 85 c0 test rax, rax 00032 74 2f je SHORT $LN12@mul_const ; 38 : matrix4map* ret = _aligned_malloc(sizeof(matrix4),16); ; 39 : ; 40 : if (NULL != ret) ; 41 : { ; 42 : float cstarray[4] = { value, value, value, value }; ; 43 : ; 44 : __m128 cst128 = _mm_loadu_ps(&cstarray); 00034 0f 28 c6 movaps xmm0, xmm6 00037 0f 29 74 24 20 movaps XMMWORD PTR cst128$1[rsp], xmm6 ; 45 : ; 46 : ret->colum[0] = _mm_mul_ps(mat->colum[0], cst128); 0003c 0f 59 03 mulps xmm0, XMMWORD PTR [rbx] ; 47 : ret->colum[1] = _mm_mul_ps(mat->colum[1], cst128); 0003f 0f 28 ce movaps xmm1, xmm6 00042 0f 28 d6 movaps xmm2, xmm6 00045 0f 11 00 movups XMMWORD PTR [rax], xmm0 ; 48 : ret->colum[2] = _mm_mul_ps(mat->colum[2], cst128); 00048 0f 28 c6 movaps xmm0, xmm6 0004b 0f 59 4b 10 mulps xmm1, XMMWORD PTR [rbx+16] 0004f 0f 11 48 10 movups XMMWORD PTR [rax+16], xmm1 00053 0f 59 43 20 mulps xmm0, XMMWORD PTR [rbx+32] 00057 0f 11 40 20 movups XMMWORD PTR [rax+32], xmm0 ; 49 : ret->colum[3] = _mm_mul_ps(mat->colum[3], cst128); 0005b 0f 59 53 30 mulps xmm2, XMMWORD PTR [rbx+48] 0005f 0f 11 50 30 movups XMMWORD PTR [rax+48], xmm2 $LN12@mul_const: ; 50 : } ; 51 : ; 52 : return ret; ; 53 : ; 54 : } 00063 0f 28 74 24 30 movaps xmm6, XMMWORD PTR [rsp+48] 00068 48 83 c4 40 add rsp, 64 ; 00000040H 0006c 5b pop rbx 0006d c3 ret 0 mul_const ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgShqrpGraphic\mat4.c ; COMDAT sub_mat4 _TEXT SEGMENT mat1$ = 48 mat2$ = 56 sub_mat4 PROC ; COMDAT ; 22 : { $LN7: 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx 00005 57 push rdi 00006 48 83 ec 20 sub rsp, 32 ; 00000020H 0000a 48 8b f9 mov rdi, rcx 0000d 48 8b da mov rbx, rdx 00010 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__6DC84844_mat4@c 00017 e8 00 00 00 00 call __CheckForDebuggerJustMyCode 0001c ba 10 00 00 00 mov edx, 16 00021 8d 4a 70 lea ecx, QWORD PTR [rdx+112] 00024 ff 15 00 00 00 00 call QWORD PTR __imp__aligned_malloc 0002a 48 85 c0 test rax, rax 0002d 74 2d je SHORT $LN4@sub_mat4 ; 23 : matrix4map* ret = _aligned_malloc(sizeof(matrix4), 16); ; 24 : ; 25 : if (ret != 0) ; 26 : { ; 27 : ret->colum[0] = _mm_sub_ps(mat1->colum[0], mat2->colum[0]); 0002f 0f 10 07 movups xmm0, XMMWORD PTR [rdi] 00032 0f 5c 03 subps xmm0, XMMWORD PTR [rbx] 00035 0f 11 00 movups XMMWORD PTR [rax], xmm0 ; 28 : ret->colum[1] = _mm_sub_ps(mat1->colum[1], mat2->colum[1]); 00038 0f 10 4f 10 movups xmm1, XMMWORD PTR [rdi+16] 0003c 0f 5c 4b 10 subps xmm1, XMMWORD PTR [rbx+16] 00040 0f 11 48 10 movups XMMWORD PTR [rax+16], xmm1 ; 29 : ret->colum[2] = _mm_sub_ps(mat1->colum[2], mat2->colum[2]); 00044 0f 10 47 20 movups xmm0, XMMWORD PTR [rdi+32] 00048 0f 5c 43 20 subps xmm0, XMMWORD PTR [rbx+32] 0004c 0f 11 40 20 movups XMMWORD PTR [rax+32], xmm0 ; 30 : ret->colum[3] = _mm_sub_ps(mat1->colum[3], mat2->colum[3]); 00050 0f 10 4f 30 movups xmm1, XMMWORD PTR [rdi+48] 00054 0f 5c 4b 30 subps xmm1, XMMWORD PTR [rbx+48] 00058 0f 11 48 30 movups XMMWORD PTR [rax+48], xmm1 $LN4@sub_mat4: ; 31 : } ; 32 : ; 33 : return ret; ; 34 : } 0005c 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] 00061 48 83 c4 20 add rsp, 32 ; 00000020H 00065 5f pop rdi 00066 c3 ret 0 sub_mat4 ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgShqrpGraphic\mat4.c ; COMDAT add_mat4 _TEXT SEGMENT mat1$ = 48 mat2$ = 56 add_mat4 PROC ; COMDAT ; 7 : { $LN7: 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx 00005 57 push rdi 00006 48 83 ec 20 sub rsp, 32 ; 00000020H 0000a 48 8b f9 mov rdi, rcx 0000d 48 8b da mov rbx, rdx 00010 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__6DC84844_mat4@c 00017 e8 00 00 00 00 call __CheckForDebuggerJustMyCode 0001c ba 10 00 00 00 mov edx, 16 00021 8d 4a 70 lea ecx, QWORD PTR [rdx+112] 00024 ff 15 00 00 00 00 call QWORD PTR __imp__aligned_malloc 0002a 48 85 c0 test rax, rax 0002d 74 2d je SHORT $LN4@add_mat4 ; 8 : matrix4map* ret = _aligned_malloc(sizeof(matrix4), 16); ; 9 : ; 10 : if (ret != 0) ; 11 : { ; 12 : ret->colum[0] = _mm_add_ps(mat1->colum[0], mat2->colum[0]); 0002f 0f 10 07 movups xmm0, XMMWORD PTR [rdi] 00032 0f 58 03 addps xmm0, XMMWORD PTR [rbx] 00035 0f 11 00 movups XMMWORD PTR [rax], xmm0 ; 13 : ret->colum[1] = _mm_add_ps(mat1->colum[1], mat2->colum[1]); 00038 0f 10 4f 10 movups xmm1, XMMWORD PTR [rdi+16] 0003c 0f 58 4b 10 addps xmm1, XMMWORD PTR [rbx+16] 00040 0f 11 48 10 movups XMMWORD PTR [rax+16], xmm1 ; 14 : ret->colum[2] = _mm_add_ps(mat1->colum[2], mat2->colum[2]); 00044 0f 10 47 20 movups xmm0, XMMWORD PTR [rdi+32] 00048 0f 58 43 20 addps xmm0, XMMWORD PTR [rbx+32] 0004c 0f 11 40 20 movups XMMWORD PTR [rax+32], xmm0 ; 15 : ret->colum[3] = _mm_add_ps(mat1->colum[3], mat2->colum[3]); 00050 0f 10 4f 30 movups xmm1, XMMWORD PTR [rdi+48] 00054 0f 58 4b 30 addps xmm1, XMMWORD PTR [rbx+48] 00058 0f 11 48 30 movups XMMWORD PTR [rax+48], xmm1 $LN4@add_mat4: ; 16 : } ; 17 : ; 18 : return ret; ; 19 : } 0005c 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] 00061 48 83 c4 20 add rsp, 32 ; 00000020H 00065 5f pop rdi 00066 c3 ret 0 add_mat4 ENDP _TEXT ENDS END