; Listing generated by Microsoft (R) Optimizing Compiler Version 19.36.32537.0 include listing.inc INCLUDELIB OLDNAMES PUBLIC det_mat3 PUBLIC det_mat3_internal PUBLIC transpose3to4 PUBLIC transpose3to3 PUBLIC transpose3to2 ; COMDAT pdata pdata SEGMENT $pdata$transpose3to3 DD imagerel $LN4@transpose3 DD imagerel $LN4@transpose3+86 DD imagerel $unwind$transpose3to3 ; COMDAT xdata xdata SEGMENT $unwind$transpose3to3 DQ 00000681700031701r ; 5.65448e-310 DD 02204H ; Function compile flags: /Ogtpy ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgShqrpGraphic\mat3.c ; COMDAT det_mat3 _TEXT SEGMENT mat$ = 8 det_mat3 PROC ; COMDAT ; 70 : return det_mat3_internal( 00000 0f 10 59 10 movups xmm3, XMMWORD PTR [rcx+16] 00004 0f 10 51 20 movups xmm2, XMMWORD PTR [rcx+32] ; 43 : __m128 addc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 0, 2, 1)); 00008 0f 28 e3 movaps xmm4, xmm3 0000b 0f c6 e3 c9 shufps xmm4, xmm3, 201 ; 000000c9H ; 44 : __m128 addc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 1, 0, 2)); 0000f 0f 28 c2 movaps xmm0, xmm2 ; 45 : ; 46 : //let sub row aligned ; 47 : __m128 subc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 1, 0, 2)); ; 48 : __m128 subc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 0, 2, 1)); ; 49 : ; 50 : //multple all add row ; 51 : __m128 cache = _mm_mul_ps(c0,addc1); 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 ; 52 : cache = _mm_mul_ps(cache,addc2); ; 53 : ; 54 : //multiple all sub row ; 55 : __m128 sub = _mm_mul_ps(c0, subc1); 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 ; 56 : sub = _mm_mul_ps(sub, subc2); 00027 0f 59 da mulps xmm3, xmm2 ; 57 : ; 58 : //main-corner sub sub-corner ; 59 : cache = _mm_sub_ps(cache,sub); 0002a 0f 5c e3 subps xmm4, xmm3 ; 60 : ; 61 : __m128 ret = _mm_hadd_ps(cache,cache); //element 1 add element 2 0002d 0f 28 c4 movaps xmm0, xmm4 00030 f2 0f 7c c4 haddps xmm0, xmm4 ; 62 : ret = _mm_add_ps(ret, cache); //(e1 add e2) add element 3 00034 0f 58 c4 addps xmm0, xmm4 ; 70 : return det_mat3_internal( 00037 0f c6 c0 aa shufps xmm0, xmm0, 170 ; 000000aaH ; 71 : mat->colum[0], ; 72 : mat->colum[1], ; 73 : mat->colum[2] ; 74 : ); ; 75 : } 0003b c3 ret 0 det_mat3 ENDP _TEXT ENDS END