2013 lines
60 KiB
Plaintext
2013 lines
60 KiB
Plaintext
; Listing generated by Microsoft (R) Optimizing Compiler Version 19.44.35220.0
|
|
|
|
include listing.inc
|
|
|
|
INCLUDELIB MSVCRTD
|
|
INCLUDELIB OLDNAMES
|
|
|
|
_DATA SEGMENT
|
|
COMM infolog:BYTE:0200H
|
|
_DATA ENDS
|
|
msvcjmc SEGMENT
|
|
__5C8CA4D3_mmintrin@h DB 01H
|
|
__8C83BECC_concurrencysal@h DB 01H
|
|
__608E3340_sal@h DB 01H
|
|
__FB67E29A_vadefs@h DB 01H
|
|
__1D1B619C_vcruntime@h DB 01H
|
|
__735960E1_corecrt@h DB 01H
|
|
__211DB995_corecrt_malloc@h DB 01H
|
|
__7CD62D9E_malloc@h DB 01H
|
|
__9DCE0DC8_xmmintrin@h DB 01H
|
|
__4C2AD0C7_winpackagefamily@h DB 01H
|
|
__9DED9ED1_winapifamily@h DB 01H
|
|
__12FEDF4E_sdkddkver@h DB 01H
|
|
__9BAEE128_excpt@h DB 01H
|
|
__B7B53233_stdarg@h DB 01H
|
|
__6B04FCB3_specstrings_undef@h DB 01H
|
|
__F4027AF7_specstrings_strict@h DB 01H
|
|
__B90340D4_sdv_driverspecs@h DB 01H
|
|
__BFFF5AD3_driverspecs@h DB 01H
|
|
__32847078_specstrings@h DB 01H
|
|
__108B2620_corecrt_wctype@h DB 01H
|
|
__6CD6613D_ctype@h DB 01H
|
|
__30902A1F_kernelspecs@h DB 01H
|
|
__376FD5CA_basetsd@h DB 01H
|
|
__13DE2371_errno@h DB 01H
|
|
__8C6AE390_vcruntime_string@h DB 01H
|
|
__8ACB2152_corecrt_memcpy_s@h DB 01H
|
|
__EA6C9D17_corecrt_memory@h DB 01H
|
|
__0DF2AF52_corecrt_wstring@h DB 01H
|
|
__6E889ECC_string@h DB 01H
|
|
__9BEDF4DE_guiddef@h DB 01H
|
|
__51BFD2FE_pshpack4@h DB 01H
|
|
__31652CEA_poppack@h DB 01H
|
|
__5532AE4C_pshpack2@h DB 01H
|
|
__58A52B9A_pshpack8@h DB 01H
|
|
__57741015_pshpack1@h DB 01H
|
|
__CDE68C90_apiset@h DB 01H
|
|
__0BF06E8D_ktmtypes@h DB 01H
|
|
__40C200C0_winnt@h DB 01H
|
|
__9336F789_minwindef@h DB 01H
|
|
__55136115_windef@h DB 01H
|
|
__32205BF0_apisetcconv@h DB 01H
|
|
__B48FDEA0_minwinbase@h DB 01H
|
|
__3551B028_apiquery2@h DB 01H
|
|
__65BE04AA_processenv@h DB 01H
|
|
__4767CA46_fileapi@h DB 01H
|
|
__282E6C4B_fileapifromapp@h DB 01H
|
|
__393AF12C_debugapi@h DB 01H
|
|
__EBC502B8_utilapiset@h DB 01H
|
|
__1EAD8C69_handleapi@h DB 01H
|
|
__D8EF9B29_errhandlingapi@h DB 01H
|
|
__97FC1204_fibersapi@h DB 01H
|
|
__27448220_namedpipeapi@h DB 01H
|
|
__6EA33B2A_profileapi@h DB 01H
|
|
__EAC6F673_heapapi@h DB 01H
|
|
__D64EEA5A_ioapiset@h DB 01H
|
|
__144BD4B6_synchapi@h DB 01H
|
|
__03B1C640_interlockedapi@h DB 01H
|
|
__DC64CB38_processthreadsapi@h DB 01H
|
|
__D719B518_sysinfoapi@h DB 01H
|
|
__410385B1_memoryapi@h DB 01H
|
|
__C1AD45EF_enclaveapi@h DB 01H
|
|
__F4C3AA32_threadpoollegacyapiset@h DB 01H
|
|
__AC5A7A9F_threadpoolapiset@h DB 01H
|
|
__F5254B21_jobapi@h DB 01H
|
|
__BCEA6EE8_jobapi2@h DB 01H
|
|
__D18ACE72_wow64apiset@h DB 01H
|
|
__669B0D4A_libloaderapi@h DB 01H
|
|
__645F7034_securitybaseapi@h DB 01H
|
|
__67E58557_namespaceapi@h DB 01H
|
|
__599D9D3A_systemtopologyapi@h DB 01H
|
|
__2337E373_processtopologyapi@h DB 01H
|
|
__02BFF239_securityappcontainer@h DB 01H
|
|
__9C196272_realtimeapiset@h DB 01H
|
|
__5AB313A4_winerror@h DB 01H
|
|
__B7E7187B_timezoneapi@h DB 01H
|
|
__6DE9EB6F_winbase@h DB 01H
|
|
__56B2AFF2_wingdi@h DB 01H
|
|
__BA1161A9_tvout@h DB 01H
|
|
__0501A018_winuser@h DB 01H
|
|
__EF12FA99_datetimeapi@h DB 01H
|
|
__8FA7C3CA_winnls@h DB 01H
|
|
__390F0C47_stringapiset@h DB 01H
|
|
__28605B0A_wincontypes@h DB 01H
|
|
__BFBDE86D_consoleapi@h DB 01H
|
|
__C3CAFBF0_consoleapi2@h DB 01H
|
|
__C20891C7_consoleapi3@h DB 01H
|
|
__717C98B6_wincon@h DB 01H
|
|
__2884C177_verrsrc@h DB 01H
|
|
__A3FD3A34_winver@h DB 01H
|
|
__6F8AD9F1_reason@h DB 01H
|
|
__4C90FD6F_winreg@h DB 01H
|
|
__68AFEBAD_wnnc@h DB 01H
|
|
__5A7AB086_winnetwk@h DB 01H
|
|
__2FE8A10C_stralign@h DB 01H
|
|
__34558472_winsvc@h DB 01H
|
|
__058845F1_mcx@h DB 01H
|
|
__7F16006B_ime_cmodes@h DB 01H
|
|
__0A3AF599_imm@h DB 01H
|
|
__9349FE86_windows@h DB 01H
|
|
__639A050C_sn_internal@h DB 01H
|
|
__836A8CFC_stdint@h DB 01H
|
|
__714FE6D7_sn_target@h DB 01H
|
|
__60B45B40_corecrt_stdio_config@h DB 01H
|
|
__CFA3741E_corecrt_wstdio@h DB 01H
|
|
__B3FE3303_stdio@h DB 01H
|
|
__955456CD_stddef@h DB 01H
|
|
__99AED4FB_corecrt_search@h DB 01H
|
|
__8B813BF6_corecrt_wstdlib@h DB 01H
|
|
__3D1CA2C3_limits@h DB 01H
|
|
__E8FB0A68_stdlib@h DB 01H
|
|
__F562FA57_stb_image@h DB 01H
|
|
__C95DC661_khrplatform@h DB 01H
|
|
__6C577136_gl@h DB 01H
|
|
__EE638A2C_wgl@h DB 01H
|
|
__8EF9E35C_glfw3@h DB 01H
|
|
__F8AC8404_emmintrin@h DB 01H
|
|
__270DEC8D_pmmintrin@h DB 01H
|
|
__97D49F0F_tmmintrin@h DB 01H
|
|
__BEEF8A8C_smmintrin@h DB 01H
|
|
__DB8D0340_nmmintrin@h DB 01H
|
|
__0E36F90E_wmmintrin@h DB 01H
|
|
__C5A2B409_zmmintrin@h DB 01H
|
|
__F2B616C3_immintrin@h DB 01H
|
|
__9FB25DBE_assert@h DB 01H
|
|
__4E664295_glfw_function@h DB 01H
|
|
__64C0EF11_StgSharpNative@h DB 01H
|
|
__E2EC0CAF_sn_matkernel@h DB 01H
|
|
__47E843D2_intrin0@inl@h DB 01H
|
|
__130964FF_setjmp@h DB 01H
|
|
__4875F786_ammintrin@h DB 01H
|
|
__353FD888_intrin@h DB 01H
|
|
__5FE1E9E3_isa_availability@h DB 01H
|
|
__AA840D82_sn_intrinsic@h DB 01H
|
|
__1D9A7FA2_corecrt_math@h DB 01H
|
|
__2E93F1C0_math@h DB 01H
|
|
__26377312_m@solve@x86@c DB 01H
|
|
msvcjmc ENDS
|
|
CONST SEGMENT
|
|
quality_threshold DD 0358637bdr ; 1e-06
|
|
ORG $+12
|
|
?tiny_source@?1??float_kernel_quality_sse@@9@9 DD 0358637bdr ; 1e-06 ; `float_kernel_quality_sse'::`2'::tiny_source
|
|
DD 0358637bdr ; 1e-06
|
|
DD 0358637bdr ; 1e-06
|
|
DD 0358637bdr ; 1e-06
|
|
CONST ENDS
|
|
PUBLIC fabsf
|
|
PUBLIC float_kernel_try_plu_sse
|
|
PUBLIC float_kernel_quality_sse
|
|
PUBLIC __JustMyCode_Default
|
|
PUBLIC __real@00000000
|
|
PUBLIC __real@2b8cbccc
|
|
PUBLIC __real@3f800000
|
|
EXTRN fabs:PROC
|
|
EXTRN _RTC_CheckStackVars:PROC
|
|
EXTRN _RTC_InitBase:PROC
|
|
EXTRN _RTC_Shutdown:PROC
|
|
EXTRN __CheckForDebuggerJustMyCode:PROC
|
|
EXTRN __GSHandlerCheck:PROC
|
|
EXTRN __security_check_cookie:PROC
|
|
EXTRN __security_cookie:QWORD
|
|
EXTRN _fltused:DWORD
|
|
; COMDAT pdata
|
|
pdata SEGMENT
|
|
$pdata$fabsf DD imagerel $LN3
|
|
DD imagerel $LN3+60
|
|
DD imagerel $unwind$fabsf
|
|
pdata ENDS
|
|
; COMDAT pdata
|
|
pdata SEGMENT
|
|
$pdata$float_kernel_try_plu_sse DD imagerel $LN31
|
|
DD imagerel $LN31+1633
|
|
DD imagerel $unwind$float_kernel_try_plu_sse
|
|
pdata ENDS
|
|
; COMDAT pdata
|
|
pdata SEGMENT
|
|
$pdata$float_kernel_quality_sse DD imagerel $LN40
|
|
DD imagerel $LN40+2560
|
|
DD imagerel $unwind$float_kernel_quality_sse
|
|
pdata ENDS
|
|
; COMDAT __real@3f800000
|
|
CONST SEGMENT
|
|
__real@3f800000 DD 03f800000r ; 1
|
|
CONST ENDS
|
|
; COMDAT __real@2b8cbccc
|
|
CONST SEGMENT
|
|
__real@2b8cbccc DD 02b8cbcccr ; 1e-12
|
|
CONST ENDS
|
|
; COMDAT __real@00000000
|
|
CONST SEGMENT
|
|
__real@00000000 DD 000000000r ; 0
|
|
CONST ENDS
|
|
; COMDAT rtc$TMZ
|
|
rtc$TMZ SEGMENT
|
|
_RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown
|
|
rtc$TMZ ENDS
|
|
; COMDAT rtc$IMZ
|
|
rtc$IMZ SEGMENT
|
|
_RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase
|
|
rtc$IMZ ENDS
|
|
; COMDAT voltbl
|
|
voltbl SEGMENT
|
|
_volmd DW 03bH
|
|
DW 09e7H
|
|
voltbl ENDS
|
|
; COMDAT xdata
|
|
xdata SEGMENT
|
|
$unwind$float_kernel_quality_sse DD 025054219H
|
|
DD 01132318H
|
|
DD 0700c017fH
|
|
DD 0500bH
|
|
DD imagerel __GSHandlerCheck
|
|
DD 0be8H
|
|
xdata ENDS
|
|
; COMDAT CONST
|
|
CONST SEGMENT
|
|
float_kernel_quality_sse$rtcName$0 DB 073H
|
|
DB 065H
|
|
DB 06cH
|
|
DB 066H
|
|
DB 05fH
|
|
DB 064H
|
|
DB 06fH
|
|
DB 074H
|
|
DB 05fH
|
|
DB 073H
|
|
DB 072H
|
|
DB 063H
|
|
DB 00H
|
|
ORG $+3
|
|
float_kernel_quality_sse$rtcName$1 DB 063H
|
|
DB 072H
|
|
DB 06fH
|
|
DB 073H
|
|
DB 073H
|
|
DB 05fH
|
|
DB 064H
|
|
DB 06fH
|
|
DB 074H
|
|
DB 05fH
|
|
DB 073H
|
|
DB 072H
|
|
DB 063H
|
|
DB 00H
|
|
ORG $+2
|
|
float_kernel_quality_sse$rtcVarDesc DD 0470H
|
|
DD 020H
|
|
DQ FLAT:float_kernel_quality_sse$rtcName$1
|
|
DD 0120H
|
|
DD 010H
|
|
DQ FLAT:float_kernel_quality_sse$rtcName$0
|
|
ORG $+96
|
|
float_kernel_quality_sse$rtcFrameData DD 02H
|
|
DD 00H
|
|
DQ FLAT:float_kernel_quality_sse$rtcVarDesc
|
|
CONST ENDS
|
|
; COMDAT voltbl
|
|
voltbl SEGMENT
|
|
_volmd DW 050H
|
|
DW 0646H
|
|
voltbl ENDS
|
|
; COMDAT xdata
|
|
xdata SEGMENT
|
|
$unwind$float_kernel_try_plu_sse DD 02d065719H
|
|
DD 011f2324H
|
|
DD 0701800aaH
|
|
DD 0d0165017H
|
|
DD imagerel __GSHandlerCheck
|
|
DD 04ecH
|
|
DD 060H
|
|
DD 040H
|
|
xdata ENDS
|
|
; COMDAT CONST
|
|
CONST SEGMENT
|
|
float_kernel_try_plu_sse$rtcName$0 DB 061H
|
|
DB 00H
|
|
ORG $+14
|
|
float_kernel_try_plu_sse$rtcVarDesc DD 0e0H
|
|
DD 040H
|
|
DQ FLAT:float_kernel_try_plu_sse$rtcName$0
|
|
ORG $+48
|
|
float_kernel_try_plu_sse$rtcFrameData DD 01H
|
|
DD 00H
|
|
DQ FLAT:float_kernel_try_plu_sse$rtcVarDesc
|
|
CONST ENDS
|
|
; COMDAT xdata
|
|
xdata SEGMENT
|
|
$unwind$fabsf DD 035051401H
|
|
DD 010f3314H
|
|
DD 07008001fH
|
|
DD 05007H
|
|
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: /Odtp /RTCsu /ZI
|
|
; File D:\platform-dev\StgSharp.Native\sn-src\m.solve.x86.c
|
|
; COMDAT float_kernel_quality_sse
|
|
_TEXT SEGMENT
|
|
tiny$ = 16
|
|
col0$ = 64
|
|
col1$ = 112
|
|
col2$ = 160
|
|
col3$ = 208
|
|
self_dot_src$ = 256
|
|
_p$5 = 304
|
|
_t$6 = 352
|
|
_p$7 = 400
|
|
_t$8 = 448
|
|
_p$9 = 496
|
|
_t$10 = 544
|
|
_p$11 = 592
|
|
_t$12 = 640
|
|
self_dot$ = 688
|
|
max$ = 736
|
|
_t$13 = 784
|
|
col_shuff_1$ = 832
|
|
col_shuff_2$ = 880
|
|
col_shuff_3$ = 928
|
|
min$ = 976
|
|
min0$ = 1024
|
|
quality$ = 1060
|
|
cross_dot_src$ = 1104
|
|
_p$14 = 1168
|
|
_t$15 = 1216
|
|
_p$16 = 1264
|
|
_t$17 = 1312
|
|
_p$18 = 1360
|
|
_t$19 = 1408
|
|
_p$20 = 1456
|
|
_t$21 = 1504
|
|
_p$22 = 1552
|
|
_t$23 = 1600
|
|
_p$24 = 1648
|
|
_t$25 = 1696
|
|
cross_dot_0$ = 1744
|
|
cross_dot_1$ = 1792
|
|
base_0$ = 1840
|
|
base_1$ = 1888
|
|
relation_0$ = 1936
|
|
relation_1$ = 1984
|
|
_t$26 = 2032
|
|
tv142 = 3012
|
|
tv164 = 3012
|
|
tv186 = 3012
|
|
tv208 = 3012
|
|
tv255 = 3012
|
|
tv286 = 3012
|
|
tv311 = 3012
|
|
tv368 = 3012
|
|
tv393 = 3012
|
|
tv418 = 3012
|
|
tv443 = 3012
|
|
tv514 = 3012
|
|
__$ArrayPad$ = 3016
|
|
right$ = 3056
|
|
ans$ = 3064
|
|
float_kernel_quality_sse PROC ; COMDAT
|
|
|
|
; 115 : {
|
|
|
|
$LN40:
|
|
00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
|
00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
|
0000a 55 push rbp
|
|
0000b 57 push rdi
|
|
0000c 48 81 ec f8 0b
|
|
00 00 sub rsp, 3064 ; 00000bf8H
|
|
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
|
00018 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
|
|
0001d b9 06 02 00 00 mov ecx, 518 ; 00000206H
|
|
00022 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
|
|
00027 f3 ab rep stosd
|
|
00029 48 8b 8c 24 18
|
|
0c 00 00 mov rcx, QWORD PTR [rsp+3096]
|
|
00031 48 8b 05 00 00
|
|
00 00 mov rax, QWORD PTR __security_cookie
|
|
00038 48 33 c5 xor rax, rbp
|
|
0003b 48 89 85 c8 0b
|
|
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
|
|
00042 48 8d 0d 00 00
|
|
00 00 lea rcx, OFFSET FLAT:__26377312_m@solve@x86@c
|
|
00049 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
|
|
0004e 90 npad 1
|
|
|
|
; 116 : static const __m128 tiny_source = { .m128_f32 = { 1e-6f, 1e-6f, 1e-6f, 1e-6f } };
|
|
; 117 :
|
|
; 118 : register __m128 tiny = _mm_load_ps(tiny_source.m128_f32);
|
|
|
|
0004f 0f 28 05 00 00
|
|
00 00 movaps xmm0, XMMWORD PTR ?tiny_source@?1??float_kernel_quality_sse@@9@9
|
|
00056 0f 29 45 10 movaps XMMWORD PTR tiny$[rbp], xmm0
|
|
|
|
; 119 :
|
|
; 120 : register __m128 col0 = _mm_load_ps((float *)&right->f32_x[0]);
|
|
|
|
0005a b8 10 00 00 00 mov eax, 16
|
|
0005f 48 6b c0 00 imul rax, rax, 0
|
|
00063 48 8b 8d f0 0b
|
|
00 00 mov rcx, QWORD PTR right$[rbp]
|
|
0006a 48 03 c8 add rcx, rax
|
|
0006d 48 8b c1 mov rax, rcx
|
|
00070 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00073 0f 29 45 40 movaps XMMWORD PTR col0$[rbp], xmm0
|
|
|
|
; 121 : register __m128 col1 = _mm_load_ps((float *)&right->f32_x[1]);
|
|
|
|
00077 b8 10 00 00 00 mov eax, 16
|
|
0007c 48 6b c0 01 imul rax, rax, 1
|
|
00080 48 8b 8d f0 0b
|
|
00 00 mov rcx, QWORD PTR right$[rbp]
|
|
00087 48 03 c8 add rcx, rax
|
|
0008a 48 8b c1 mov rax, rcx
|
|
0008d 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00090 0f 29 45 70 movaps XMMWORD PTR col1$[rbp], xmm0
|
|
|
|
; 122 : register __m128 col2 = _mm_load_ps((float *)&right->f32_x[2]);
|
|
|
|
00094 b8 10 00 00 00 mov eax, 16
|
|
00099 48 6b c0 02 imul rax, rax, 2
|
|
0009d 48 8b 8d f0 0b
|
|
00 00 mov rcx, QWORD PTR right$[rbp]
|
|
000a4 48 03 c8 add rcx, rax
|
|
000a7 48 8b c1 mov rax, rcx
|
|
000aa 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
000ad 0f 29 85 a0 00
|
|
00 00 movaps XMMWORD PTR col2$[rbp], xmm0
|
|
|
|
; 123 : register __m128 col3 = _mm_load_ps((float *)&right->f32_x[3]);
|
|
|
|
000b4 b8 10 00 00 00 mov eax, 16
|
|
000b9 48 6b c0 03 imul rax, rax, 3
|
|
000bd 48 8b 8d f0 0b
|
|
00 00 mov rcx, QWORD PTR right$[rbp]
|
|
000c4 48 03 c8 add rcx, rax
|
|
000c7 48 8b c1 mov rax, rcx
|
|
000ca 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
000cd 0f 29 85 d0 00
|
|
00 00 movaps XMMWORD PTR col3$[rbp], xmm0
|
|
|
|
; 124 :
|
|
; 125 : __m128 self_dot_src = { 0 };
|
|
|
|
000d4 48 8d 85 00 01
|
|
00 00 lea rax, QWORD PTR self_dot_src$[rbp]
|
|
000db 48 8b f8 mov rdi, rax
|
|
000de 33 c0 xor eax, eax
|
|
000e0 b9 10 00 00 00 mov ecx, 16
|
|
000e5 f3 aa rep stosb
|
|
$LN4@float_kern:
|
|
|
|
; 126 : // try in reigister mix later
|
|
; 127 : DOT_F32_SSE(col0, col0, self_dot_src.m128_f32[0]);
|
|
|
|
000e7 0f 28 45 40 movaps xmm0, XMMWORD PTR col0$[rbp]
|
|
000eb 0f 59 45 40 mulps xmm0, XMMWORD PTR col0$[rbp]
|
|
000ef 0f 29 85 30 01
|
|
00 00 movaps XMMWORD PTR _p$5[rbp], xmm0
|
|
000f6 0f 28 85 30 01
|
|
00 00 movaps xmm0, XMMWORD PTR _p$5[rbp]
|
|
000fd 0f c6 85 30 01
|
|
00 00 b1 shufps xmm0, XMMWORD PTR _p$5[rbp], 177 ; 000000b1H
|
|
00105 0f 29 85 60 01
|
|
00 00 movaps XMMWORD PTR _t$6[rbp], xmm0
|
|
0010c 0f 28 85 30 01
|
|
00 00 movaps xmm0, XMMWORD PTR _p$5[rbp]
|
|
00113 0f 58 85 60 01
|
|
00 00 addps xmm0, XMMWORD PTR _t$6[rbp]
|
|
0011a 0f 29 85 30 01
|
|
00 00 movaps XMMWORD PTR _p$5[rbp], xmm0
|
|
00121 0f 28 85 30 01
|
|
00 00 movaps xmm0, XMMWORD PTR _p$5[rbp]
|
|
00128 0f 28 8d 60 01
|
|
00 00 movaps xmm1, XMMWORD PTR _t$6[rbp]
|
|
0012f 0f 12 c8 movhlps xmm1, xmm0
|
|
00132 0f 28 c1 movaps xmm0, xmm1
|
|
00135 0f 29 85 60 01
|
|
00 00 movaps XMMWORD PTR _t$6[rbp], xmm0
|
|
0013c 0f 28 85 30 01
|
|
00 00 movaps xmm0, XMMWORD PTR _p$5[rbp]
|
|
00143 f3 0f 58 85 60
|
|
01 00 00 addss xmm0, DWORD PTR _t$6[rbp]
|
|
0014b f3 0f 11 85 c4
|
|
0b 00 00 movss DWORD PTR tv142[rbp], xmm0
|
|
00153 b8 04 00 00 00 mov eax, 4
|
|
00158 48 6b c0 00 imul rax, rax, 0
|
|
0015c f3 0f 10 85 c4
|
|
0b 00 00 movss xmm0, DWORD PTR tv142[rbp]
|
|
00164 f3 0f 11 84 05
|
|
00 01 00 00 movss DWORD PTR self_dot_src$[rbp+rax], xmm0
|
|
0016d 33 c0 xor eax, eax
|
|
0016f 85 c0 test eax, eax
|
|
00171 0f 85 70 ff ff
|
|
ff jne $LN4@float_kern
|
|
$LN7@float_kern:
|
|
|
|
; 128 : DOT_F32_SSE(col1, col1, self_dot_src.m128_f32[1]);
|
|
|
|
00177 0f 28 45 70 movaps xmm0, XMMWORD PTR col1$[rbp]
|
|
0017b 0f 59 45 70 mulps xmm0, XMMWORD PTR col1$[rbp]
|
|
0017f 0f 29 85 90 01
|
|
00 00 movaps XMMWORD PTR _p$7[rbp], xmm0
|
|
00186 0f 28 85 90 01
|
|
00 00 movaps xmm0, XMMWORD PTR _p$7[rbp]
|
|
0018d 0f c6 85 90 01
|
|
00 00 b1 shufps xmm0, XMMWORD PTR _p$7[rbp], 177 ; 000000b1H
|
|
00195 0f 29 85 c0 01
|
|
00 00 movaps XMMWORD PTR _t$8[rbp], xmm0
|
|
0019c 0f 28 85 90 01
|
|
00 00 movaps xmm0, XMMWORD PTR _p$7[rbp]
|
|
001a3 0f 58 85 c0 01
|
|
00 00 addps xmm0, XMMWORD PTR _t$8[rbp]
|
|
001aa 0f 29 85 90 01
|
|
00 00 movaps XMMWORD PTR _p$7[rbp], xmm0
|
|
001b1 0f 28 85 90 01
|
|
00 00 movaps xmm0, XMMWORD PTR _p$7[rbp]
|
|
001b8 0f 28 8d c0 01
|
|
00 00 movaps xmm1, XMMWORD PTR _t$8[rbp]
|
|
001bf 0f 12 c8 movhlps xmm1, xmm0
|
|
001c2 0f 28 c1 movaps xmm0, xmm1
|
|
001c5 0f 29 85 c0 01
|
|
00 00 movaps XMMWORD PTR _t$8[rbp], xmm0
|
|
001cc 0f 28 85 90 01
|
|
00 00 movaps xmm0, XMMWORD PTR _p$7[rbp]
|
|
001d3 f3 0f 58 85 c0
|
|
01 00 00 addss xmm0, DWORD PTR _t$8[rbp]
|
|
001db f3 0f 11 85 c4
|
|
0b 00 00 movss DWORD PTR tv164[rbp], xmm0
|
|
001e3 b8 04 00 00 00 mov eax, 4
|
|
001e8 48 6b c0 01 imul rax, rax, 1
|
|
001ec f3 0f 10 85 c4
|
|
0b 00 00 movss xmm0, DWORD PTR tv164[rbp]
|
|
001f4 f3 0f 11 84 05
|
|
00 01 00 00 movss DWORD PTR self_dot_src$[rbp+rax], xmm0
|
|
001fd 33 c0 xor eax, eax
|
|
001ff 85 c0 test eax, eax
|
|
00201 0f 85 70 ff ff
|
|
ff jne $LN7@float_kern
|
|
$LN10@float_kern:
|
|
|
|
; 129 : DOT_F32_SSE(col2, col2, self_dot_src.m128_f32[2]);
|
|
|
|
00207 0f 28 85 a0 00
|
|
00 00 movaps xmm0, XMMWORD PTR col2$[rbp]
|
|
0020e 0f 59 85 a0 00
|
|
00 00 mulps xmm0, XMMWORD PTR col2$[rbp]
|
|
00215 0f 29 85 f0 01
|
|
00 00 movaps XMMWORD PTR _p$9[rbp], xmm0
|
|
0021c 0f 28 85 f0 01
|
|
00 00 movaps xmm0, XMMWORD PTR _p$9[rbp]
|
|
00223 0f c6 85 f0 01
|
|
00 00 b1 shufps xmm0, XMMWORD PTR _p$9[rbp], 177 ; 000000b1H
|
|
0022b 0f 29 85 20 02
|
|
00 00 movaps XMMWORD PTR _t$10[rbp], xmm0
|
|
00232 0f 28 85 f0 01
|
|
00 00 movaps xmm0, XMMWORD PTR _p$9[rbp]
|
|
00239 0f 58 85 20 02
|
|
00 00 addps xmm0, XMMWORD PTR _t$10[rbp]
|
|
00240 0f 29 85 f0 01
|
|
00 00 movaps XMMWORD PTR _p$9[rbp], xmm0
|
|
00247 0f 28 85 f0 01
|
|
00 00 movaps xmm0, XMMWORD PTR _p$9[rbp]
|
|
0024e 0f 28 8d 20 02
|
|
00 00 movaps xmm1, XMMWORD PTR _t$10[rbp]
|
|
00255 0f 12 c8 movhlps xmm1, xmm0
|
|
00258 0f 28 c1 movaps xmm0, xmm1
|
|
0025b 0f 29 85 20 02
|
|
00 00 movaps XMMWORD PTR _t$10[rbp], xmm0
|
|
00262 0f 28 85 f0 01
|
|
00 00 movaps xmm0, XMMWORD PTR _p$9[rbp]
|
|
00269 f3 0f 58 85 20
|
|
02 00 00 addss xmm0, DWORD PTR _t$10[rbp]
|
|
00271 f3 0f 11 85 c4
|
|
0b 00 00 movss DWORD PTR tv186[rbp], xmm0
|
|
00279 b8 04 00 00 00 mov eax, 4
|
|
0027e 48 6b c0 02 imul rax, rax, 2
|
|
00282 f3 0f 10 85 c4
|
|
0b 00 00 movss xmm0, DWORD PTR tv186[rbp]
|
|
0028a f3 0f 11 84 05
|
|
00 01 00 00 movss DWORD PTR self_dot_src$[rbp+rax], xmm0
|
|
00293 33 c0 xor eax, eax
|
|
00295 85 c0 test eax, eax
|
|
00297 0f 85 6a ff ff
|
|
ff jne $LN10@float_kern
|
|
$LN13@float_kern:
|
|
|
|
; 130 : DOT_F32_SSE(col3, col3, self_dot_src.m128_f32[3]);
|
|
|
|
0029d 0f 28 85 d0 00
|
|
00 00 movaps xmm0, XMMWORD PTR col3$[rbp]
|
|
002a4 0f 59 85 d0 00
|
|
00 00 mulps xmm0, XMMWORD PTR col3$[rbp]
|
|
002ab 0f 29 85 50 02
|
|
00 00 movaps XMMWORD PTR _p$11[rbp], xmm0
|
|
002b2 0f 28 85 50 02
|
|
00 00 movaps xmm0, XMMWORD PTR _p$11[rbp]
|
|
002b9 0f c6 85 50 02
|
|
00 00 b1 shufps xmm0, XMMWORD PTR _p$11[rbp], 177 ; 000000b1H
|
|
002c1 0f 29 85 80 02
|
|
00 00 movaps XMMWORD PTR _t$12[rbp], xmm0
|
|
002c8 0f 28 85 50 02
|
|
00 00 movaps xmm0, XMMWORD PTR _p$11[rbp]
|
|
002cf 0f 58 85 80 02
|
|
00 00 addps xmm0, XMMWORD PTR _t$12[rbp]
|
|
002d6 0f 29 85 50 02
|
|
00 00 movaps XMMWORD PTR _p$11[rbp], xmm0
|
|
002dd 0f 28 85 50 02
|
|
00 00 movaps xmm0, XMMWORD PTR _p$11[rbp]
|
|
002e4 0f 28 8d 80 02
|
|
00 00 movaps xmm1, XMMWORD PTR _t$12[rbp]
|
|
002eb 0f 12 c8 movhlps xmm1, xmm0
|
|
002ee 0f 28 c1 movaps xmm0, xmm1
|
|
002f1 0f 29 85 80 02
|
|
00 00 movaps XMMWORD PTR _t$12[rbp], xmm0
|
|
002f8 0f 28 85 50 02
|
|
00 00 movaps xmm0, XMMWORD PTR _p$11[rbp]
|
|
002ff f3 0f 58 85 80
|
|
02 00 00 addss xmm0, DWORD PTR _t$12[rbp]
|
|
00307 f3 0f 11 85 c4
|
|
0b 00 00 movss DWORD PTR tv208[rbp], xmm0
|
|
0030f b8 04 00 00 00 mov eax, 4
|
|
00314 48 6b c0 03 imul rax, rax, 3
|
|
00318 f3 0f 10 85 c4
|
|
0b 00 00 movss xmm0, DWORD PTR tv208[rbp]
|
|
00320 f3 0f 11 84 05
|
|
00 01 00 00 movss DWORD PTR self_dot_src$[rbp+rax], xmm0
|
|
00329 33 c0 xor eax, eax
|
|
0032b 85 c0 test eax, eax
|
|
0032d 0f 85 6a ff ff
|
|
ff jne $LN13@float_kern
|
|
|
|
; 131 :
|
|
; 132 : register __m128 self_dot = _mm_load_ps(self_dot_src.m128_f32);
|
|
|
|
00333 0f 28 85 00 01
|
|
00 00 movaps xmm0, XMMWORD PTR self_dot_src$[rbp]
|
|
0033a 0f 29 85 b0 02
|
|
00 00 movaps XMMWORD PTR self_dot$[rbp], xmm0
|
|
$LN16@float_kern:
|
|
|
|
; 133 :
|
|
; 134 : register __m128 max;
|
|
; 135 : FIND_MAX_F32_SSE(self_dot, max);
|
|
|
|
00341 0f 28 85 b0 02
|
|
00 00 movaps xmm0, XMMWORD PTR self_dot$[rbp]
|
|
00348 0f 28 8d b0 02
|
|
00 00 movaps xmm1, XMMWORD PTR self_dot$[rbp]
|
|
0034f 0f 12 c8 movhlps xmm1, xmm0
|
|
00352 0f 28 c1 movaps xmm0, xmm1
|
|
00355 0f 29 85 10 03
|
|
00 00 movaps XMMWORD PTR _t$13[rbp], xmm0
|
|
0035c 0f 28 85 b0 02
|
|
00 00 movaps xmm0, XMMWORD PTR self_dot$[rbp]
|
|
00363 0f 5f 85 10 03
|
|
00 00 maxps xmm0, XMMWORD PTR _t$13[rbp]
|
|
0036a 0f 29 85 b0 02
|
|
00 00 movaps XMMWORD PTR self_dot$[rbp], xmm0
|
|
00371 0f 28 85 b0 02
|
|
00 00 movaps xmm0, XMMWORD PTR self_dot$[rbp]
|
|
00378 0f c6 85 b0 02
|
|
00 00 b1 shufps xmm0, XMMWORD PTR self_dot$[rbp], 177 ; 000000b1H
|
|
00380 0f 29 85 10 03
|
|
00 00 movaps XMMWORD PTR _t$13[rbp], xmm0
|
|
00387 0f 28 85 b0 02
|
|
00 00 movaps xmm0, XMMWORD PTR self_dot$[rbp]
|
|
0038e 0f 5f 85 10 03
|
|
00 00 maxps xmm0, XMMWORD PTR _t$13[rbp]
|
|
00395 0f 29 85 e0 02
|
|
00 00 movaps XMMWORD PTR max$[rbp], xmm0
|
|
0039c 33 c0 xor eax, eax
|
|
0039e 85 c0 test eax, eax
|
|
003a0 75 9f jne SHORT $LN16@float_kern
|
|
|
|
; 136 : //float norm = _mm_cvtss_f32(max);
|
|
; 137 :
|
|
; 138 : // min on cross
|
|
; 139 : register __m128 col_shuff_1 = _mm_shuffle_ps(col1, col1, _MM_SHUFFLE(0, 3, 2, 1));
|
|
|
|
003a2 0f 28 45 70 movaps xmm0, XMMWORD PTR col1$[rbp]
|
|
003a6 0f c6 45 70 39 shufps xmm0, XMMWORD PTR col1$[rbp], 57 ; 00000039H
|
|
003ab 0f 29 85 40 03
|
|
00 00 movaps XMMWORD PTR col_shuff_1$[rbp], xmm0
|
|
|
|
; 140 : register __m128 col_shuff_2 = _mm_shuffle_ps(col2, col2, _MM_SHUFFLE(1, 0, 3, 2));
|
|
|
|
003b2 0f 28 85 a0 00
|
|
00 00 movaps xmm0, XMMWORD PTR col2$[rbp]
|
|
003b9 0f c6 85 a0 00
|
|
00 00 4e shufps xmm0, XMMWORD PTR col2$[rbp], 78 ; 0000004eH
|
|
003c1 0f 29 85 70 03
|
|
00 00 movaps XMMWORD PTR col_shuff_2$[rbp], xmm0
|
|
|
|
; 141 : register __m128 col_shuff_3 = _mm_shuffle_ps(col3, col3, _MM_SHUFFLE(2, 1, 0, 3));
|
|
|
|
003c8 0f 28 85 d0 00
|
|
00 00 movaps xmm0, XMMWORD PTR col3$[rbp]
|
|
003cf 0f c6 85 d0 00
|
|
00 00 93 shufps xmm0, XMMWORD PTR col3$[rbp], 147 ; 00000093H
|
|
003d7 0f 29 85 a0 03
|
|
00 00 movaps XMMWORD PTR col_shuff_3$[rbp], xmm0
|
|
|
|
; 142 : register __m128 min = _mm_min_ps(col0, col_shuff_1);
|
|
|
|
003de 0f 28 45 40 movaps xmm0, XMMWORD PTR col0$[rbp]
|
|
003e2 0f 5d 85 40 03
|
|
00 00 minps xmm0, XMMWORD PTR col_shuff_1$[rbp]
|
|
003e9 0f 29 85 d0 03
|
|
00 00 movaps XMMWORD PTR min$[rbp], xmm0
|
|
|
|
; 143 : register __m128 min0 = _mm_min_ps(col_shuff_2, col_shuff_3);
|
|
|
|
003f0 0f 28 85 70 03
|
|
00 00 movaps xmm0, XMMWORD PTR col_shuff_2$[rbp]
|
|
003f7 0f 5d 85 a0 03
|
|
00 00 minps xmm0, XMMWORD PTR col_shuff_3$[rbp]
|
|
003fe 0f 29 85 00 04
|
|
00 00 movaps XMMWORD PTR min0$[rbp], xmm0
|
|
|
|
; 144 : min = _mm_min_ps(min, min0);
|
|
|
|
00405 0f 28 85 d0 03
|
|
00 00 movaps xmm0, XMMWORD PTR min$[rbp]
|
|
0040c 0f 5d 85 00 04
|
|
00 00 minps xmm0, XMMWORD PTR min0$[rbp]
|
|
00413 0f 29 85 d0 03
|
|
00 00 movaps XMMWORD PTR min$[rbp], xmm0
|
|
|
|
; 145 :
|
|
; 146 : float quality = _mm_cvtss_f32(_mm_div_ps(min, _mm_add_ps(max, tiny)));
|
|
|
|
0041a 0f 28 85 e0 02
|
|
00 00 movaps xmm0, XMMWORD PTR max$[rbp]
|
|
00421 0f 58 45 10 addps xmm0, XMMWORD PTR tiny$[rbp]
|
|
00425 0f 28 8d d0 03
|
|
00 00 movaps xmm1, XMMWORD PTR min$[rbp]
|
|
0042c 0f 5e c8 divps xmm1, xmm0
|
|
0042f 0f 28 c1 movaps xmm0, xmm1
|
|
00432 f3 0f 11 85 c4
|
|
0b 00 00 movss DWORD PTR tv255[rbp], xmm0
|
|
0043a f3 0f 10 85 c4
|
|
0b 00 00 movss xmm0, DWORD PTR tv255[rbp]
|
|
00442 f3 0f 11 85 24
|
|
04 00 00 movss DWORD PTR quality$[rbp], xmm0
|
|
|
|
; 147 : ans->f32_x[0].m128_f32[0] = quality;
|
|
|
|
0044a b8 10 00 00 00 mov eax, 16
|
|
0044f 48 6b c0 00 imul rax, rax, 0
|
|
00453 48 8b 8d f8 0b
|
|
00 00 mov rcx, QWORD PTR ans$[rbp]
|
|
0045a 48 03 c8 add rcx, rax
|
|
0045d 48 8b c1 mov rax, rcx
|
|
00460 b9 04 00 00 00 mov ecx, 4
|
|
00465 48 6b c9 00 imul rcx, rcx, 0
|
|
00469 f3 0f 10 85 24
|
|
04 00 00 movss xmm0, DWORD PTR quality$[rbp]
|
|
00471 f3 0f 11 04 08 movss DWORD PTR [rax+rcx], xmm0
|
|
|
|
; 148 : if (quality < quality_threshold) {
|
|
|
|
00476 f3 0f 10 05 00
|
|
00 00 00 movss xmm0, DWORD PTR quality_threshold
|
|
0047e 0f 2f 85 24 04
|
|
00 00 comiss xmm0, DWORD PTR quality$[rbp]
|
|
00485 76 05 jbe SHORT $LN38@float_kern
|
|
|
|
; 149 : return;
|
|
|
|
00487 e9 4b 05 00 00 jmp $LN1@float_kern
|
|
$LN38@float_kern:
|
|
$LN19@float_kern:
|
|
|
|
; 150 : }
|
|
; 151 :
|
|
; 152 : __m128 cross_dot_src[2];
|
|
; 153 : DOT_F32_SSE(col0, col1, cross_dot_src[0].m128_f32[0]);
|
|
|
|
0048c 0f 28 45 40 movaps xmm0, XMMWORD PTR col0$[rbp]
|
|
00490 0f 59 45 70 mulps xmm0, XMMWORD PTR col1$[rbp]
|
|
00494 0f 29 85 90 04
|
|
00 00 movaps XMMWORD PTR _p$14[rbp], xmm0
|
|
0049b 0f 28 85 90 04
|
|
00 00 movaps xmm0, XMMWORD PTR _p$14[rbp]
|
|
004a2 0f c6 85 90 04
|
|
00 00 b1 shufps xmm0, XMMWORD PTR _p$14[rbp], 177 ; 000000b1H
|
|
004aa 0f 29 85 c0 04
|
|
00 00 movaps XMMWORD PTR _t$15[rbp], xmm0
|
|
004b1 0f 28 85 90 04
|
|
00 00 movaps xmm0, XMMWORD PTR _p$14[rbp]
|
|
004b8 0f 58 85 c0 04
|
|
00 00 addps xmm0, XMMWORD PTR _t$15[rbp]
|
|
004bf 0f 29 85 90 04
|
|
00 00 movaps XMMWORD PTR _p$14[rbp], xmm0
|
|
004c6 0f 28 85 90 04
|
|
00 00 movaps xmm0, XMMWORD PTR _p$14[rbp]
|
|
004cd 0f 28 8d c0 04
|
|
00 00 movaps xmm1, XMMWORD PTR _t$15[rbp]
|
|
004d4 0f 12 c8 movhlps xmm1, xmm0
|
|
004d7 0f 28 c1 movaps xmm0, xmm1
|
|
004da 0f 29 85 c0 04
|
|
00 00 movaps XMMWORD PTR _t$15[rbp], xmm0
|
|
004e1 0f 28 85 90 04
|
|
00 00 movaps xmm0, XMMWORD PTR _p$14[rbp]
|
|
004e8 f3 0f 58 85 c0
|
|
04 00 00 addss xmm0, DWORD PTR _t$15[rbp]
|
|
004f0 f3 0f 11 85 c4
|
|
0b 00 00 movss DWORD PTR tv286[rbp], xmm0
|
|
004f8 b8 10 00 00 00 mov eax, 16
|
|
004fd 48 6b c0 00 imul rax, rax, 0
|
|
00501 48 8d 84 05 50
|
|
04 00 00 lea rax, QWORD PTR cross_dot_src$[rbp+rax]
|
|
00509 b9 04 00 00 00 mov ecx, 4
|
|
0050e 48 6b c9 00 imul rcx, rcx, 0
|
|
00512 f3 0f 10 85 c4
|
|
0b 00 00 movss xmm0, DWORD PTR tv286[rbp]
|
|
0051a f3 0f 11 04 08 movss DWORD PTR [rax+rcx], xmm0
|
|
0051f 33 c0 xor eax, eax
|
|
00521 85 c0 test eax, eax
|
|
00523 0f 85 63 ff ff
|
|
ff jne $LN19@float_kern
|
|
$LN22@float_kern:
|
|
|
|
; 154 : DOT_F32_SSE(col0, col2, cross_dot_src[0].m128_f32[1]);
|
|
|
|
00529 0f 28 45 40 movaps xmm0, XMMWORD PTR col0$[rbp]
|
|
0052d 0f 59 85 a0 00
|
|
00 00 mulps xmm0, XMMWORD PTR col2$[rbp]
|
|
00534 0f 29 85 f0 04
|
|
00 00 movaps XMMWORD PTR _p$16[rbp], xmm0
|
|
0053b 0f 28 85 f0 04
|
|
00 00 movaps xmm0, XMMWORD PTR _p$16[rbp]
|
|
00542 0f c6 85 f0 04
|
|
00 00 b1 shufps xmm0, XMMWORD PTR _p$16[rbp], 177 ; 000000b1H
|
|
0054a 0f 29 85 20 05
|
|
00 00 movaps XMMWORD PTR _t$17[rbp], xmm0
|
|
00551 0f 28 85 f0 04
|
|
00 00 movaps xmm0, XMMWORD PTR _p$16[rbp]
|
|
00558 0f 58 85 20 05
|
|
00 00 addps xmm0, XMMWORD PTR _t$17[rbp]
|
|
0055f 0f 29 85 f0 04
|
|
00 00 movaps XMMWORD PTR _p$16[rbp], xmm0
|
|
00566 0f 28 85 f0 04
|
|
00 00 movaps xmm0, XMMWORD PTR _p$16[rbp]
|
|
0056d 0f 28 8d 20 05
|
|
00 00 movaps xmm1, XMMWORD PTR _t$17[rbp]
|
|
00574 0f 12 c8 movhlps xmm1, xmm0
|
|
00577 0f 28 c1 movaps xmm0, xmm1
|
|
0057a 0f 29 85 20 05
|
|
00 00 movaps XMMWORD PTR _t$17[rbp], xmm0
|
|
00581 0f 28 85 f0 04
|
|
00 00 movaps xmm0, XMMWORD PTR _p$16[rbp]
|
|
00588 f3 0f 58 85 20
|
|
05 00 00 addss xmm0, DWORD PTR _t$17[rbp]
|
|
00590 f3 0f 11 85 c4
|
|
0b 00 00 movss DWORD PTR tv311[rbp], xmm0
|
|
00598 b8 10 00 00 00 mov eax, 16
|
|
0059d 48 6b c0 00 imul rax, rax, 0
|
|
005a1 48 8d 84 05 50
|
|
04 00 00 lea rax, QWORD PTR cross_dot_src$[rbp+rax]
|
|
005a9 b9 04 00 00 00 mov ecx, 4
|
|
005ae 48 6b c9 01 imul rcx, rcx, 1
|
|
005b2 f3 0f 10 85 c4
|
|
0b 00 00 movss xmm0, DWORD PTR tv311[rbp]
|
|
005ba f3 0f 11 04 08 movss DWORD PTR [rax+rcx], xmm0
|
|
005bf 33 c0 xor eax, eax
|
|
005c1 85 c0 test eax, eax
|
|
005c3 0f 85 60 ff ff
|
|
ff jne $LN22@float_kern
|
|
$LN25@float_kern:
|
|
|
|
; 155 : DOT_F32_SSE(col0, col3, cross_dot_src[0].m128_f32[2]);
|
|
|
|
005c9 0f 28 45 40 movaps xmm0, XMMWORD PTR col0$[rbp]
|
|
005cd 0f 59 85 d0 00
|
|
00 00 mulps xmm0, XMMWORD PTR col3$[rbp]
|
|
005d4 0f 29 85 50 05
|
|
00 00 movaps XMMWORD PTR _p$18[rbp], xmm0
|
|
005db 0f 28 85 50 05
|
|
00 00 movaps xmm0, XMMWORD PTR _p$18[rbp]
|
|
005e2 0f c6 85 50 05
|
|
00 00 b1 shufps xmm0, XMMWORD PTR _p$18[rbp], 177 ; 000000b1H
|
|
005ea 0f 29 85 80 05
|
|
00 00 movaps XMMWORD PTR _t$19[rbp], xmm0
|
|
005f1 0f 28 85 50 05
|
|
00 00 movaps xmm0, XMMWORD PTR _p$18[rbp]
|
|
005f8 0f 58 85 80 05
|
|
00 00 addps xmm0, XMMWORD PTR _t$19[rbp]
|
|
005ff 0f 29 85 50 05
|
|
00 00 movaps XMMWORD PTR _p$18[rbp], xmm0
|
|
00606 0f 28 85 50 05
|
|
00 00 movaps xmm0, XMMWORD PTR _p$18[rbp]
|
|
0060d 0f 28 8d 80 05
|
|
00 00 movaps xmm1, XMMWORD PTR _t$19[rbp]
|
|
00614 0f 12 c8 movhlps xmm1, xmm0
|
|
00617 0f 28 c1 movaps xmm0, xmm1
|
|
0061a 0f 29 85 80 05
|
|
00 00 movaps XMMWORD PTR _t$19[rbp], xmm0
|
|
00621 0f 28 85 50 05
|
|
00 00 movaps xmm0, XMMWORD PTR _p$18[rbp]
|
|
00628 f3 0f 58 85 80
|
|
05 00 00 addss xmm0, DWORD PTR _t$19[rbp]
|
|
00630 f3 0f 11 85 c4
|
|
0b 00 00 movss DWORD PTR tv368[rbp], xmm0
|
|
00638 b8 10 00 00 00 mov eax, 16
|
|
0063d 48 6b c0 00 imul rax, rax, 0
|
|
00641 48 8d 84 05 50
|
|
04 00 00 lea rax, QWORD PTR cross_dot_src$[rbp+rax]
|
|
00649 b9 04 00 00 00 mov ecx, 4
|
|
0064e 48 6b c9 02 imul rcx, rcx, 2
|
|
00652 f3 0f 10 85 c4
|
|
0b 00 00 movss xmm0, DWORD PTR tv368[rbp]
|
|
0065a f3 0f 11 04 08 movss DWORD PTR [rax+rcx], xmm0
|
|
0065f 33 c0 xor eax, eax
|
|
00661 85 c0 test eax, eax
|
|
00663 0f 85 60 ff ff
|
|
ff jne $LN25@float_kern
|
|
$LN28@float_kern:
|
|
|
|
; 156 : DOT_F32_SSE(col1, col2, cross_dot_src[0].m128_f32[3]);
|
|
|
|
00669 0f 28 45 70 movaps xmm0, XMMWORD PTR col1$[rbp]
|
|
0066d 0f 59 85 a0 00
|
|
00 00 mulps xmm0, XMMWORD PTR col2$[rbp]
|
|
00674 0f 29 85 b0 05
|
|
00 00 movaps XMMWORD PTR _p$20[rbp], xmm0
|
|
0067b 0f 28 85 b0 05
|
|
00 00 movaps xmm0, XMMWORD PTR _p$20[rbp]
|
|
00682 0f c6 85 b0 05
|
|
00 00 b1 shufps xmm0, XMMWORD PTR _p$20[rbp], 177 ; 000000b1H
|
|
0068a 0f 29 85 e0 05
|
|
00 00 movaps XMMWORD PTR _t$21[rbp], xmm0
|
|
00691 0f 28 85 b0 05
|
|
00 00 movaps xmm0, XMMWORD PTR _p$20[rbp]
|
|
00698 0f 58 85 e0 05
|
|
00 00 addps xmm0, XMMWORD PTR _t$21[rbp]
|
|
0069f 0f 29 85 b0 05
|
|
00 00 movaps XMMWORD PTR _p$20[rbp], xmm0
|
|
006a6 0f 28 85 b0 05
|
|
00 00 movaps xmm0, XMMWORD PTR _p$20[rbp]
|
|
006ad 0f 28 8d e0 05
|
|
00 00 movaps xmm1, XMMWORD PTR _t$21[rbp]
|
|
006b4 0f 12 c8 movhlps xmm1, xmm0
|
|
006b7 0f 28 c1 movaps xmm0, xmm1
|
|
006ba 0f 29 85 e0 05
|
|
00 00 movaps XMMWORD PTR _t$21[rbp], xmm0
|
|
006c1 0f 28 85 b0 05
|
|
00 00 movaps xmm0, XMMWORD PTR _p$20[rbp]
|
|
006c8 f3 0f 58 85 e0
|
|
05 00 00 addss xmm0, DWORD PTR _t$21[rbp]
|
|
006d0 f3 0f 11 85 c4
|
|
0b 00 00 movss DWORD PTR tv393[rbp], xmm0
|
|
006d8 b8 10 00 00 00 mov eax, 16
|
|
006dd 48 6b c0 00 imul rax, rax, 0
|
|
006e1 48 8d 84 05 50
|
|
04 00 00 lea rax, QWORD PTR cross_dot_src$[rbp+rax]
|
|
006e9 b9 04 00 00 00 mov ecx, 4
|
|
006ee 48 6b c9 03 imul rcx, rcx, 3
|
|
006f2 f3 0f 10 85 c4
|
|
0b 00 00 movss xmm0, DWORD PTR tv393[rbp]
|
|
006fa f3 0f 11 04 08 movss DWORD PTR [rax+rcx], xmm0
|
|
006ff 33 c0 xor eax, eax
|
|
00701 85 c0 test eax, eax
|
|
00703 0f 85 60 ff ff
|
|
ff jne $LN28@float_kern
|
|
$LN31@float_kern:
|
|
|
|
; 157 : DOT_F32_SSE(col1, col3, cross_dot_src[1].m128_f32[0]);
|
|
|
|
00709 0f 28 45 70 movaps xmm0, XMMWORD PTR col1$[rbp]
|
|
0070d 0f 59 85 d0 00
|
|
00 00 mulps xmm0, XMMWORD PTR col3$[rbp]
|
|
00714 0f 29 85 10 06
|
|
00 00 movaps XMMWORD PTR _p$22[rbp], xmm0
|
|
0071b 0f 28 85 10 06
|
|
00 00 movaps xmm0, XMMWORD PTR _p$22[rbp]
|
|
00722 0f c6 85 10 06
|
|
00 00 b1 shufps xmm0, XMMWORD PTR _p$22[rbp], 177 ; 000000b1H
|
|
0072a 0f 29 85 40 06
|
|
00 00 movaps XMMWORD PTR _t$23[rbp], xmm0
|
|
00731 0f 28 85 10 06
|
|
00 00 movaps xmm0, XMMWORD PTR _p$22[rbp]
|
|
00738 0f 58 85 40 06
|
|
00 00 addps xmm0, XMMWORD PTR _t$23[rbp]
|
|
0073f 0f 29 85 10 06
|
|
00 00 movaps XMMWORD PTR _p$22[rbp], xmm0
|
|
00746 0f 28 85 10 06
|
|
00 00 movaps xmm0, XMMWORD PTR _p$22[rbp]
|
|
0074d 0f 28 8d 40 06
|
|
00 00 movaps xmm1, XMMWORD PTR _t$23[rbp]
|
|
00754 0f 12 c8 movhlps xmm1, xmm0
|
|
00757 0f 28 c1 movaps xmm0, xmm1
|
|
0075a 0f 29 85 40 06
|
|
00 00 movaps XMMWORD PTR _t$23[rbp], xmm0
|
|
00761 0f 28 85 10 06
|
|
00 00 movaps xmm0, XMMWORD PTR _p$22[rbp]
|
|
00768 f3 0f 58 85 40
|
|
06 00 00 addss xmm0, DWORD PTR _t$23[rbp]
|
|
00770 f3 0f 11 85 c4
|
|
0b 00 00 movss DWORD PTR tv418[rbp], xmm0
|
|
00778 b8 10 00 00 00 mov eax, 16
|
|
0077d 48 6b c0 01 imul rax, rax, 1
|
|
00781 48 8d 84 05 50
|
|
04 00 00 lea rax, QWORD PTR cross_dot_src$[rbp+rax]
|
|
00789 b9 04 00 00 00 mov ecx, 4
|
|
0078e 48 6b c9 00 imul rcx, rcx, 0
|
|
00792 f3 0f 10 85 c4
|
|
0b 00 00 movss xmm0, DWORD PTR tv418[rbp]
|
|
0079a f3 0f 11 04 08 movss DWORD PTR [rax+rcx], xmm0
|
|
0079f 33 c0 xor eax, eax
|
|
007a1 85 c0 test eax, eax
|
|
007a3 0f 85 60 ff ff
|
|
ff jne $LN31@float_kern
|
|
$LN34@float_kern:
|
|
|
|
; 158 : DOT_F32_SSE(col2, col3, cross_dot_src[1].m128_f32[1]);
|
|
|
|
007a9 0f 28 85 a0 00
|
|
00 00 movaps xmm0, XMMWORD PTR col2$[rbp]
|
|
007b0 0f 59 85 d0 00
|
|
00 00 mulps xmm0, XMMWORD PTR col3$[rbp]
|
|
007b7 0f 29 85 70 06
|
|
00 00 movaps XMMWORD PTR _p$24[rbp], xmm0
|
|
007be 0f 28 85 70 06
|
|
00 00 movaps xmm0, XMMWORD PTR _p$24[rbp]
|
|
007c5 0f c6 85 70 06
|
|
00 00 b1 shufps xmm0, XMMWORD PTR _p$24[rbp], 177 ; 000000b1H
|
|
007cd 0f 29 85 a0 06
|
|
00 00 movaps XMMWORD PTR _t$25[rbp], xmm0
|
|
007d4 0f 28 85 70 06
|
|
00 00 movaps xmm0, XMMWORD PTR _p$24[rbp]
|
|
007db 0f 58 85 a0 06
|
|
00 00 addps xmm0, XMMWORD PTR _t$25[rbp]
|
|
007e2 0f 29 85 70 06
|
|
00 00 movaps XMMWORD PTR _p$24[rbp], xmm0
|
|
007e9 0f 28 85 70 06
|
|
00 00 movaps xmm0, XMMWORD PTR _p$24[rbp]
|
|
007f0 0f 28 8d a0 06
|
|
00 00 movaps xmm1, XMMWORD PTR _t$25[rbp]
|
|
007f7 0f 12 c8 movhlps xmm1, xmm0
|
|
007fa 0f 28 c1 movaps xmm0, xmm1
|
|
007fd 0f 29 85 a0 06
|
|
00 00 movaps XMMWORD PTR _t$25[rbp], xmm0
|
|
00804 0f 28 85 70 06
|
|
00 00 movaps xmm0, XMMWORD PTR _p$24[rbp]
|
|
0080b f3 0f 58 85 a0
|
|
06 00 00 addss xmm0, DWORD PTR _t$25[rbp]
|
|
00813 f3 0f 11 85 c4
|
|
0b 00 00 movss DWORD PTR tv443[rbp], xmm0
|
|
0081b b8 10 00 00 00 mov eax, 16
|
|
00820 48 6b c0 01 imul rax, rax, 1
|
|
00824 48 8d 84 05 50
|
|
04 00 00 lea rax, QWORD PTR cross_dot_src$[rbp+rax]
|
|
0082c b9 04 00 00 00 mov ecx, 4
|
|
00831 48 6b c9 01 imul rcx, rcx, 1
|
|
00835 f3 0f 10 85 c4
|
|
0b 00 00 movss xmm0, DWORD PTR tv443[rbp]
|
|
0083d f3 0f 11 04 08 movss DWORD PTR [rax+rcx], xmm0
|
|
00842 33 c0 xor eax, eax
|
|
00844 85 c0 test eax, eax
|
|
00846 0f 85 5d ff ff
|
|
ff jne $LN34@float_kern
|
|
|
|
; 159 :
|
|
; 160 : register __m128 cross_dot_0 = _mm_load_ps(cross_dot_src[0].m128_f32);
|
|
|
|
0084c b8 10 00 00 00 mov eax, 16
|
|
00851 48 6b c0 00 imul rax, rax, 0
|
|
00855 48 8d 84 05 50
|
|
04 00 00 lea rax, QWORD PTR cross_dot_src$[rbp+rax]
|
|
0085d 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00860 0f 29 85 d0 06
|
|
00 00 movaps XMMWORD PTR cross_dot_0$[rbp], xmm0
|
|
|
|
; 161 : register __m128 cross_dot_1 = _mm_load_ps(cross_dot_src[1].m128_f32);
|
|
|
|
00867 b8 10 00 00 00 mov eax, 16
|
|
0086c 48 6b c0 01 imul rax, rax, 1
|
|
00870 48 8d 84 05 50
|
|
04 00 00 lea rax, QWORD PTR cross_dot_src$[rbp+rax]
|
|
00878 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
0087b 0f 29 85 00 07
|
|
00 00 movaps XMMWORD PTR cross_dot_1$[rbp], xmm0
|
|
|
|
; 162 :
|
|
; 163 : register __m128 base_0 = _mm_shuffle_ps(self_dot, self_dot, _MM_SHUFFLE(1, 0, 0, 0));
|
|
|
|
00882 0f 28 85 b0 02
|
|
00 00 movaps xmm0, XMMWORD PTR self_dot$[rbp]
|
|
00889 0f c6 85 b0 02
|
|
00 00 40 shufps xmm0, XMMWORD PTR self_dot$[rbp], 64 ; 00000040H
|
|
00891 0f 29 85 30 07
|
|
00 00 movaps XMMWORD PTR base_0$[rbp], xmm0
|
|
|
|
; 164 : register __m128 base_1 = _mm_shuffle_ps(self_dot, self_dot, _MM_SHUFFLE(3, 3, 2, 1));
|
|
|
|
00898 0f 28 85 b0 02
|
|
00 00 movaps xmm0, XMMWORD PTR self_dot$[rbp]
|
|
0089f 0f c6 85 b0 02
|
|
00 00 f9 shufps xmm0, XMMWORD PTR self_dot$[rbp], 249 ; 000000f9H
|
|
008a7 0f 29 85 60 07
|
|
00 00 movaps XMMWORD PTR base_1$[rbp], xmm0
|
|
|
|
; 165 :
|
|
; 166 : register __m128 relation_0 =
|
|
|
|
008ae 0f 28 85 30 07
|
|
00 00 movaps xmm0, XMMWORD PTR base_0$[rbp]
|
|
008b5 0f 59 85 60 07
|
|
00 00 mulps xmm0, XMMWORD PTR base_1$[rbp]
|
|
008bc 0f 58 45 10 addps xmm0, XMMWORD PTR tiny$[rbp]
|
|
008c0 0f 28 8d d0 06
|
|
00 00 movaps xmm1, XMMWORD PTR cross_dot_0$[rbp]
|
|
008c7 0f 5e c8 divps xmm1, xmm0
|
|
008ca 0f 28 c1 movaps xmm0, xmm1
|
|
008cd 0f 29 85 90 07
|
|
00 00 movaps XMMWORD PTR relation_0$[rbp], xmm0
|
|
|
|
; 167 : _mm_div_ps(cross_dot_0, _mm_add_ps(_mm_mul_ps(base_0, base_1), tiny));
|
|
; 168 :
|
|
; 169 : base_0 = _mm_shuffle_ps(self_dot, self_dot, _MM_SHUFFLE(2, 3, 2, 1));
|
|
|
|
008d4 0f 28 85 b0 02
|
|
00 00 movaps xmm0, XMMWORD PTR self_dot$[rbp]
|
|
008db 0f c6 85 b0 02
|
|
00 00 b9 shufps xmm0, XMMWORD PTR self_dot$[rbp], 185 ; 000000b9H
|
|
008e3 0f 29 85 30 07
|
|
00 00 movaps XMMWORD PTR base_0$[rbp], xmm0
|
|
|
|
; 170 : base_1 = _mm_shuffle_ps(self_dot, self_dot, _MM_SHUFFLE(3, 3, 3, 3));
|
|
|
|
008ea 0f 28 85 b0 02
|
|
00 00 movaps xmm0, XMMWORD PTR self_dot$[rbp]
|
|
008f1 0f c6 85 b0 02
|
|
00 00 ff shufps xmm0, XMMWORD PTR self_dot$[rbp], 255 ; 000000ffH
|
|
008f9 0f 29 85 60 07
|
|
00 00 movaps XMMWORD PTR base_1$[rbp], xmm0
|
|
|
|
; 171 :
|
|
; 172 : register __m128 relation_1 =
|
|
|
|
00900 0f 28 85 30 07
|
|
00 00 movaps xmm0, XMMWORD PTR base_0$[rbp]
|
|
00907 0f 59 85 60 07
|
|
00 00 mulps xmm0, XMMWORD PTR base_1$[rbp]
|
|
0090e 0f 58 45 10 addps xmm0, XMMWORD PTR tiny$[rbp]
|
|
00912 0f 28 8d d0 06
|
|
00 00 movaps xmm1, XMMWORD PTR cross_dot_0$[rbp]
|
|
00919 0f 5e c8 divps xmm1, xmm0
|
|
0091c 0f 28 c1 movaps xmm0, xmm1
|
|
0091f 0f 29 85 c0 07
|
|
00 00 movaps XMMWORD PTR relation_1$[rbp], xmm0
|
|
|
|
; 173 : _mm_div_ps(cross_dot_0, _mm_add_ps(_mm_mul_ps(base_0, base_1), tiny));
|
|
; 174 :
|
|
; 175 : relation_0 = _mm_max_ps(relation_0, relation_1);
|
|
|
|
00926 0f 28 85 90 07
|
|
00 00 movaps xmm0, XMMWORD PTR relation_0$[rbp]
|
|
0092d 0f 5f 85 c0 07
|
|
00 00 maxps xmm0, XMMWORD PTR relation_1$[rbp]
|
|
00934 0f 29 85 90 07
|
|
00 00 movaps XMMWORD PTR relation_0$[rbp], xmm0
|
|
$LN37@float_kern:
|
|
|
|
; 176 : FIND_MAX_F32_SSE(relation_0, relation_0);
|
|
|
|
0093b 0f 28 85 90 07
|
|
00 00 movaps xmm0, XMMWORD PTR relation_0$[rbp]
|
|
00942 0f 28 8d 90 07
|
|
00 00 movaps xmm1, XMMWORD PTR relation_0$[rbp]
|
|
00949 0f 12 c8 movhlps xmm1, xmm0
|
|
0094c 0f 28 c1 movaps xmm0, xmm1
|
|
0094f 0f 29 85 f0 07
|
|
00 00 movaps XMMWORD PTR _t$26[rbp], xmm0
|
|
00956 0f 28 85 90 07
|
|
00 00 movaps xmm0, XMMWORD PTR relation_0$[rbp]
|
|
0095d 0f 5f 85 f0 07
|
|
00 00 maxps xmm0, XMMWORD PTR _t$26[rbp]
|
|
00964 0f 29 85 90 07
|
|
00 00 movaps XMMWORD PTR relation_0$[rbp], xmm0
|
|
0096b 0f 28 85 90 07
|
|
00 00 movaps xmm0, XMMWORD PTR relation_0$[rbp]
|
|
00972 0f c6 85 90 07
|
|
00 00 b1 shufps xmm0, XMMWORD PTR relation_0$[rbp], 177 ; 000000b1H
|
|
0097a 0f 29 85 f0 07
|
|
00 00 movaps XMMWORD PTR _t$26[rbp], xmm0
|
|
00981 0f 28 85 90 07
|
|
00 00 movaps xmm0, XMMWORD PTR relation_0$[rbp]
|
|
00988 0f 5f 85 f0 07
|
|
00 00 maxps xmm0, XMMWORD PTR _t$26[rbp]
|
|
0098f 0f 29 85 90 07
|
|
00 00 movaps XMMWORD PTR relation_0$[rbp], xmm0
|
|
00996 33 c0 xor eax, eax
|
|
00998 85 c0 test eax, eax
|
|
0099a 75 9f jne SHORT $LN37@float_kern
|
|
|
|
; 177 : ans->f32_x[0].m128_f32[1] = _mm_cvtss_f32(relation_0);
|
|
|
|
0099c 0f 28 85 90 07
|
|
00 00 movaps xmm0, XMMWORD PTR relation_0$[rbp]
|
|
009a3 f3 0f 11 85 c4
|
|
0b 00 00 movss DWORD PTR tv514[rbp], xmm0
|
|
009ab b8 10 00 00 00 mov eax, 16
|
|
009b0 48 6b c0 00 imul rax, rax, 0
|
|
009b4 48 8b 8d f8 0b
|
|
00 00 mov rcx, QWORD PTR ans$[rbp]
|
|
009bb 48 03 c8 add rcx, rax
|
|
009be 48 8b c1 mov rax, rcx
|
|
009c1 b9 04 00 00 00 mov ecx, 4
|
|
009c6 48 6b c9 01 imul rcx, rcx, 1
|
|
009ca f3 0f 10 85 c4
|
|
0b 00 00 movss xmm0, DWORD PTR tv514[rbp]
|
|
009d2 f3 0f 11 04 08 movss DWORD PTR [rax+rcx], xmm0
|
|
$LN1@float_kern:
|
|
|
|
; 178 : }
|
|
|
|
009d7 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
|
|
009db 48 8d 15 00 00
|
|
00 00 lea rdx, OFFSET FLAT:float_kernel_quality_sse$rtcFrameData
|
|
009e2 e8 00 00 00 00 call _RTC_CheckStackVars
|
|
009e7 48 8b 8d c8 0b
|
|
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
|
|
009ee 48 33 cd xor rcx, rbp
|
|
009f1 e8 00 00 00 00 call __security_check_cookie
|
|
009f6 48 8d a5 d8 0b
|
|
00 00 lea rsp, QWORD PTR [rbp+3032]
|
|
009fd 5f pop rdi
|
|
009fe 5d pop rbp
|
|
009ff c3 ret 0
|
|
float_kernel_quality_sse ENDP
|
|
_TEXT ENDS
|
|
; Function compile flags: /Odtp /RTCsu /ZI
|
|
; File D:\platform-dev\StgSharp.Native\sn-src\m.solve.x86.c
|
|
; COMDAT float_kernel_try_plu_sse
|
|
_TEXT SEGMENT
|
|
upper$ = 8
|
|
lower$ = 40
|
|
source$ = 72
|
|
pivot$ = 104
|
|
success$ = 136
|
|
a$ = 192
|
|
z$ = 288
|
|
c$4 = 324
|
|
col$5 = 368
|
|
eps$ = 404
|
|
k$6 = 436
|
|
p$7 = 468
|
|
maxabs$8 = 500
|
|
r$9 = 532
|
|
v$10 = 564
|
|
c$11 = 596
|
|
tmp$12 = 628
|
|
tmpi$13 = 660
|
|
pivot_val$14 = 692
|
|
r$15 = 724
|
|
factor$16 = 756
|
|
c$17 = 788
|
|
c$18 = 820
|
|
d$19 = 852
|
|
__$ArrayPad$ = 1256
|
|
left$ = 1360
|
|
right$ = 1368
|
|
ans$ = 1376
|
|
scalar$ = 1384
|
|
float_kernel_try_plu_sse PROC ; COMDAT
|
|
|
|
; 11 : {
|
|
|
|
$LN31:
|
|
00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9
|
|
00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
|
|
0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
|
0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
|
00014 41 55 push r13
|
|
00016 55 push rbp
|
|
00017 57 push rdi
|
|
00018 48 81 ec 50 05
|
|
00 00 sub rsp, 1360 ; 00000550H
|
|
0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
|
|
00024 48 8d 6c 24 60 lea rbp, QWORD PTR [rsp+96]
|
|
00029 48 83 e5 c0 and rbp, -64 ; ffffffffffffffc0H
|
|
0002d 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32]
|
|
00032 b9 ec 00 00 00 mov ecx, 236 ; 000000ecH
|
|
00037 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
|
|
0003c f3 ab rep stosd
|
|
0003e 48 8b 8c 24 78
|
|
05 00 00 mov rcx, QWORD PTR [rsp+1400]
|
|
00046 48 8b 05 00 00
|
|
00 00 mov rax, QWORD PTR __security_cookie
|
|
0004d 49 33 c5 xor rax, r13
|
|
00050 48 89 85 e8 04
|
|
00 00 mov QWORD PTR __$ArrayPad$[rbp], rax
|
|
00057 48 8d 0d 00 00
|
|
00 00 lea rcx, OFFSET FLAT:__26377312_m@solve@x86@c
|
|
0005e e8 00 00 00 00 call __CheckForDebuggerJustMyCode
|
|
00063 90 npad 1
|
|
|
|
; 12 : /* Aliases */
|
|
; 13 : MAT_KERNEL(float) *upper = left; /* U */
|
|
|
|
00064 49 8b 85 50 05
|
|
00 00 mov rax, QWORD PTR left$[r13]
|
|
0006b 48 89 45 08 mov QWORD PTR upper$[rbp], rax
|
|
|
|
; 14 : MAT_KERNEL(float) *lower = right; /* L (unit diag) */
|
|
|
|
0006f 49 8b 85 58 05
|
|
00 00 mov rax, QWORD PTR right$[r13]
|
|
00076 48 89 45 28 mov QWORD PTR lower$[rbp], rax
|
|
|
|
; 15 : MAT_KERNEL(float) *source = ans; /* A */
|
|
|
|
0007a 49 8b 85 60 05
|
|
00 00 mov rax, QWORD PTR ans$[r13]
|
|
00081 48 89 45 48 mov QWORD PTR source$[rbp], rax
|
|
|
|
; 16 : unsigned char *pivot = (unsigned char *)&scalar->data[0]; /* length = 4 */
|
|
|
|
00085 b8 08 00 00 00 mov eax, 8
|
|
0008a 48 6b c0 00 imul rax, rax, 0
|
|
0008e 49 8b 8d 68 05
|
|
00 00 mov rcx, QWORD PTR scalar$[r13]
|
|
00095 48 03 c8 add rcx, rax
|
|
00098 48 8b c1 mov rax, rcx
|
|
0009b 48 89 45 68 mov QWORD PTR pivot$[rbp], rax
|
|
|
|
; 17 : int *success = (int *)&scalar->data[1];
|
|
|
|
0009f b8 08 00 00 00 mov eax, 8
|
|
000a4 48 6b c0 01 imul rax, rax, 1
|
|
000a8 49 8b 8d 68 05
|
|
00 00 mov rcx, QWORD PTR scalar$[r13]
|
|
000af 48 03 c8 add rcx, rax
|
|
000b2 48 8b c1 mov rax, rcx
|
|
000b5 48 89 85 88 00
|
|
00 00 mov QWORD PTR success$[rbp], rax
|
|
|
|
; 18 :
|
|
; 19 : /* Init permutation and outputs */
|
|
; 20 : pivot[0] = 0;
|
|
|
|
000bc b8 01 00 00 00 mov eax, 1
|
|
000c1 48 6b c0 00 imul rax, rax, 0
|
|
000c5 48 8b 4d 68 mov rcx, QWORD PTR pivot$[rbp]
|
|
000c9 c6 04 01 00 mov BYTE PTR [rcx+rax], 0
|
|
|
|
; 21 : pivot[1] = 1;
|
|
|
|
000cd b8 01 00 00 00 mov eax, 1
|
|
000d2 48 6b c0 01 imul rax, rax, 1
|
|
000d6 48 8b 4d 68 mov rcx, QWORD PTR pivot$[rbp]
|
|
000da c6 04 01 01 mov BYTE PTR [rcx+rax], 1
|
|
|
|
; 22 : pivot[2] = 2;
|
|
|
|
000de b8 01 00 00 00 mov eax, 1
|
|
000e3 48 6b c0 02 imul rax, rax, 2
|
|
000e7 48 8b 4d 68 mov rcx, QWORD PTR pivot$[rbp]
|
|
000eb c6 04 01 02 mov BYTE PTR [rcx+rax], 2
|
|
|
|
; 23 : pivot[3] = 3;
|
|
|
|
000ef b8 01 00 00 00 mov eax, 1
|
|
000f4 48 6b c0 03 imul rax, rax, 3
|
|
000f8 48 8b 4d 68 mov rcx, QWORD PTR pivot$[rbp]
|
|
000fc c6 04 01 03 mov BYTE PTR [rcx+rax], 3
|
|
|
|
; 24 : *success = 1;
|
|
|
|
00100 48 8b 85 88 00
|
|
00 00 mov rax, QWORD PTR success$[rbp]
|
|
00107 c7 00 01 00 00
|
|
00 mov DWORD PTR [rax], 1
|
|
|
|
; 25 :
|
|
; 26 : /* Working copy of A in column-major a[col][row], load via SIMD view */
|
|
; 27 : MAT_KERNEL(float) a;
|
|
; 28 : const __m128 z = _mm_setzero_ps();
|
|
|
|
0010d 0f 57 c0 xorps xmm0, xmm0
|
|
00110 0f 29 85 20 01
|
|
00 00 movaps XMMWORD PTR z$[rbp], xmm0
|
|
|
|
; 29 : for (int c = 0; c < 4; ++c) {
|
|
|
|
00117 c7 85 44 01 00
|
|
00 00 00 00 00 mov DWORD PTR c$4[rbp], 0
|
|
00121 eb 0e jmp SHORT $LN4@float_kern
|
|
$LN2@float_kern:
|
|
00123 8b 85 44 01 00
|
|
00 mov eax, DWORD PTR c$4[rbp]
|
|
00129 ff c0 inc eax
|
|
0012b 89 85 44 01 00
|
|
00 mov DWORD PTR c$4[rbp], eax
|
|
$LN4@float_kern:
|
|
00131 83 bd 44 01 00
|
|
00 04 cmp DWORD PTR c$4[rbp], 4
|
|
00138 7d 7f jge SHORT $LN3@float_kern
|
|
|
|
; 30 : __m128 col = _mm_load_ps((float *)&source->f32_x[c]);
|
|
|
|
0013a 48 63 85 44 01
|
|
00 00 movsxd rax, DWORD PTR c$4[rbp]
|
|
00141 48 6b c0 10 imul rax, rax, 16
|
|
00145 48 8b 4d 48 mov rcx, QWORD PTR source$[rbp]
|
|
00149 48 03 c8 add rcx, rax
|
|
0014c 48 8b c1 mov rax, rcx
|
|
0014f 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00152 0f 29 85 70 01
|
|
00 00 movaps XMMWORD PTR col$5[rbp], xmm0
|
|
|
|
; 31 : _mm_storeu_ps((float *)&a.f32_x[c], col);
|
|
|
|
00159 48 63 85 44 01
|
|
00 00 movsxd rax, DWORD PTR c$4[rbp]
|
|
00160 48 6b c0 10 imul rax, rax, 16
|
|
00164 48 8d 84 05 c0
|
|
00 00 00 lea rax, QWORD PTR a$[rbp+rax]
|
|
0016c 0f 28 85 70 01
|
|
00 00 movaps xmm0, XMMWORD PTR col$5[rbp]
|
|
00173 0f 11 00 movups XMMWORD PTR [rax], xmm0
|
|
|
|
; 32 : _mm_store_ps((float *)&upper->f32_x[c], z);
|
|
|
|
00176 48 63 85 44 01
|
|
00 00 movsxd rax, DWORD PTR c$4[rbp]
|
|
0017d 48 6b c0 10 imul rax, rax, 16
|
|
00181 48 8b 4d 08 mov rcx, QWORD PTR upper$[rbp]
|
|
00185 48 03 c8 add rcx, rax
|
|
00188 48 8b c1 mov rax, rcx
|
|
0018b 0f 28 85 20 01
|
|
00 00 movaps xmm0, XMMWORD PTR z$[rbp]
|
|
00192 0f 11 00 movups XMMWORD PTR [rax], xmm0
|
|
|
|
; 33 : _mm_store_ps((float *)&lower->f32_x[c], z);
|
|
|
|
00195 48 63 85 44 01
|
|
00 00 movsxd rax, DWORD PTR c$4[rbp]
|
|
0019c 48 6b c0 10 imul rax, rax, 16
|
|
001a0 48 8b 4d 28 mov rcx, QWORD PTR lower$[rbp]
|
|
001a4 48 03 c8 add rcx, rax
|
|
001a7 48 8b c1 mov rax, rcx
|
|
001aa 0f 28 85 20 01
|
|
00 00 movaps xmm0, XMMWORD PTR z$[rbp]
|
|
001b1 0f 11 00 movups XMMWORD PTR [rax], xmm0
|
|
|
|
; 34 : }
|
|
|
|
001b4 e9 6a ff ff ff jmp $LN2@float_kern
|
|
$LN3@float_kern:
|
|
|
|
; 35 :
|
|
; 36 : const float eps = 1e-12f;
|
|
|
|
001b9 f3 0f 10 05 00
|
|
00 00 00 movss xmm0, DWORD PTR __real@2b8cbccc
|
|
001c1 f3 0f 11 85 94
|
|
01 00 00 movss DWORD PTR eps$[rbp], xmm0
|
|
|
|
; 37 :
|
|
; 38 : for (int k = 0; k < 4; ++k) {
|
|
|
|
001c9 c7 85 b4 01 00
|
|
00 00 00 00 00 mov DWORD PTR k$6[rbp], 0
|
|
001d3 eb 0e jmp SHORT $LN7@float_kern
|
|
$LN5@float_kern:
|
|
001d5 8b 85 b4 01 00
|
|
00 mov eax, DWORD PTR k$6[rbp]
|
|
001db ff c0 inc eax
|
|
001dd 89 85 b4 01 00
|
|
00 mov DWORD PTR k$6[rbp], eax
|
|
$LN7@float_kern:
|
|
001e3 83 bd b4 01 00
|
|
00 04 cmp DWORD PTR k$6[rbp], 4
|
|
001ea 0f 8d cc 03 00
|
|
00 jge $LN6@float_kern
|
|
|
|
; 39 : /* Pivot search on column k, rows k..3 */
|
|
; 40 : int p = k;
|
|
|
|
001f0 8b 85 b4 01 00
|
|
00 mov eax, DWORD PTR k$6[rbp]
|
|
001f6 89 85 d4 01 00
|
|
00 mov DWORD PTR p$7[rbp], eax
|
|
|
|
; 41 : float maxabs = fabsf(a.m[k][p]);
|
|
|
|
001fc 48 63 85 b4 01
|
|
00 00 movsxd rax, DWORD PTR k$6[rbp]
|
|
00203 48 6b c0 10 imul rax, rax, 16
|
|
00207 48 8d 84 05 c0
|
|
00 00 00 lea rax, QWORD PTR a$[rbp+rax]
|
|
0020f 48 63 8d d4 01
|
|
00 00 movsxd rcx, DWORD PTR p$7[rbp]
|
|
00216 f3 0f 10 04 88 movss xmm0, DWORD PTR [rax+rcx*4]
|
|
0021b e8 00 00 00 00 call fabsf
|
|
00220 f3 0f 11 85 f4
|
|
01 00 00 movss DWORD PTR maxabs$8[rbp], xmm0
|
|
|
|
; 42 : for (int r = k + 1; r < 4; ++r) {
|
|
|
|
00228 8b 85 b4 01 00
|
|
00 mov eax, DWORD PTR k$6[rbp]
|
|
0022e ff c0 inc eax
|
|
00230 89 85 14 02 00
|
|
00 mov DWORD PTR r$9[rbp], eax
|
|
00236 eb 0e jmp SHORT $LN10@float_kern
|
|
$LN8@float_kern:
|
|
00238 8b 85 14 02 00
|
|
00 mov eax, DWORD PTR r$9[rbp]
|
|
0023e ff c0 inc eax
|
|
00240 89 85 14 02 00
|
|
00 mov DWORD PTR r$9[rbp], eax
|
|
$LN10@float_kern:
|
|
00246 83 bd 14 02 00
|
|
00 04 cmp DWORD PTR r$9[rbp], 4
|
|
0024d 7d 5b jge SHORT $LN9@float_kern
|
|
|
|
; 43 : float v = fabsf(a.m[k][r]);
|
|
|
|
0024f 48 63 85 b4 01
|
|
00 00 movsxd rax, DWORD PTR k$6[rbp]
|
|
00256 48 6b c0 10 imul rax, rax, 16
|
|
0025a 48 8d 84 05 c0
|
|
00 00 00 lea rax, QWORD PTR a$[rbp+rax]
|
|
00262 48 63 8d 14 02
|
|
00 00 movsxd rcx, DWORD PTR r$9[rbp]
|
|
00269 f3 0f 10 04 88 movss xmm0, DWORD PTR [rax+rcx*4]
|
|
0026e e8 00 00 00 00 call fabsf
|
|
00273 f3 0f 11 85 34
|
|
02 00 00 movss DWORD PTR v$10[rbp], xmm0
|
|
|
|
; 44 : if (v > maxabs) {
|
|
|
|
0027b f3 0f 10 85 34
|
|
02 00 00 movss xmm0, DWORD PTR v$10[rbp]
|
|
00283 0f 2f 85 f4 01
|
|
00 00 comiss xmm0, DWORD PTR maxabs$8[rbp]
|
|
0028a 76 1c jbe SHORT $LN26@float_kern
|
|
|
|
; 45 : maxabs = v;
|
|
|
|
0028c f3 0f 10 85 34
|
|
02 00 00 movss xmm0, DWORD PTR v$10[rbp]
|
|
00294 f3 0f 11 85 f4
|
|
01 00 00 movss DWORD PTR maxabs$8[rbp], xmm0
|
|
|
|
; 46 : p = r;
|
|
|
|
0029c 8b 85 14 02 00
|
|
00 mov eax, DWORD PTR r$9[rbp]
|
|
002a2 89 85 d4 01 00
|
|
00 mov DWORD PTR p$7[rbp], eax
|
|
$LN26@float_kern:
|
|
|
|
; 47 : }
|
|
; 48 : }
|
|
|
|
002a8 eb 8e jmp SHORT $LN8@float_kern
|
|
$LN9@float_kern:
|
|
|
|
; 49 :
|
|
; 50 : if (maxabs < eps) {
|
|
|
|
002aa f3 0f 10 85 94
|
|
01 00 00 movss xmm0, DWORD PTR eps$[rbp]
|
|
002b2 0f 2f 85 f4 01
|
|
00 00 comiss xmm0, DWORD PTR maxabs$8[rbp]
|
|
002b9 76 12 jbe SHORT $LN27@float_kern
|
|
|
|
; 51 : *success = 0;
|
|
|
|
002bb 48 8b 85 88 00
|
|
00 00 mov rax, QWORD PTR success$[rbp]
|
|
002c2 c7 00 00 00 00
|
|
00 mov DWORD PTR [rax], 0
|
|
|
|
; 52 : /* leave outputs zeroed */
|
|
; 53 : return;
|
|
|
|
002c8 e9 69 03 00 00 jmp $LN1@float_kern
|
|
$LN27@float_kern:
|
|
|
|
; 54 : }
|
|
; 55 :
|
|
; 56 : /* Swap rows if needed */
|
|
; 57 : if (p != k) {
|
|
|
|
002cd 8b 85 b4 01 00
|
|
00 mov eax, DWORD PTR k$6[rbp]
|
|
002d3 39 85 d4 01 00
|
|
00 cmp DWORD PTR p$7[rbp], eax
|
|
002d9 0f 84 01 01 00
|
|
00 je $LN28@float_kern
|
|
|
|
; 58 : for (int c = 0; c < 4; ++c) {
|
|
|
|
002df c7 85 54 02 00
|
|
00 00 00 00 00 mov DWORD PTR c$11[rbp], 0
|
|
002e9 eb 0e jmp SHORT $LN13@float_kern
|
|
$LN11@float_kern:
|
|
002eb 8b 85 54 02 00
|
|
00 mov eax, DWORD PTR c$11[rbp]
|
|
002f1 ff c0 inc eax
|
|
002f3 89 85 54 02 00
|
|
00 mov DWORD PTR c$11[rbp], eax
|
|
$LN13@float_kern:
|
|
002f9 83 bd 54 02 00
|
|
00 04 cmp DWORD PTR c$11[rbp], 4
|
|
00300 0f 8d 92 00 00
|
|
00 jge $LN12@float_kern
|
|
|
|
; 59 : float tmp = a.m[c][k];
|
|
|
|
00306 48 63 85 54 02
|
|
00 00 movsxd rax, DWORD PTR c$11[rbp]
|
|
0030d 48 6b c0 10 imul rax, rax, 16
|
|
00311 48 8d 84 05 c0
|
|
00 00 00 lea rax, QWORD PTR a$[rbp+rax]
|
|
00319 48 63 8d b4 01
|
|
00 00 movsxd rcx, DWORD PTR k$6[rbp]
|
|
00320 f3 0f 10 04 88 movss xmm0, DWORD PTR [rax+rcx*4]
|
|
00325 f3 0f 11 85 74
|
|
02 00 00 movss DWORD PTR tmp$12[rbp], xmm0
|
|
|
|
; 60 : a.m[c][k] = a.m[c][p];
|
|
|
|
0032d 48 63 85 54 02
|
|
00 00 movsxd rax, DWORD PTR c$11[rbp]
|
|
00334 48 6b c0 10 imul rax, rax, 16
|
|
00338 48 8d 84 05 c0
|
|
00 00 00 lea rax, QWORD PTR a$[rbp+rax]
|
|
00340 48 63 8d d4 01
|
|
00 00 movsxd rcx, DWORD PTR p$7[rbp]
|
|
00347 48 63 95 54 02
|
|
00 00 movsxd rdx, DWORD PTR c$11[rbp]
|
|
0034e 48 6b d2 10 imul rdx, rdx, 16
|
|
00352 48 8d 94 15 c0
|
|
00 00 00 lea rdx, QWORD PTR a$[rbp+rdx]
|
|
0035a 4c 63 85 b4 01
|
|
00 00 movsxd r8, DWORD PTR k$6[rbp]
|
|
00361 f3 0f 10 04 88 movss xmm0, DWORD PTR [rax+rcx*4]
|
|
00366 f3 42 0f 11 04
|
|
82 movss DWORD PTR [rdx+r8*4], xmm0
|
|
|
|
; 61 : a.m[c][p] = tmp;
|
|
|
|
0036c 48 63 85 54 02
|
|
00 00 movsxd rax, DWORD PTR c$11[rbp]
|
|
00373 48 6b c0 10 imul rax, rax, 16
|
|
00377 48 8d 84 05 c0
|
|
00 00 00 lea rax, QWORD PTR a$[rbp+rax]
|
|
0037f 48 63 8d d4 01
|
|
00 00 movsxd rcx, DWORD PTR p$7[rbp]
|
|
00386 f3 0f 10 85 74
|
|
02 00 00 movss xmm0, DWORD PTR tmp$12[rbp]
|
|
0038e f3 0f 11 04 88 movss DWORD PTR [rax+rcx*4], xmm0
|
|
|
|
; 62 : }
|
|
|
|
00393 e9 53 ff ff ff jmp $LN11@float_kern
|
|
$LN12@float_kern:
|
|
|
|
; 63 : unsigned char tmpi = pivot[k];
|
|
|
|
00398 48 63 85 b4 01
|
|
00 00 movsxd rax, DWORD PTR k$6[rbp]
|
|
0039f 48 8b 4d 68 mov rcx, QWORD PTR pivot$[rbp]
|
|
003a3 0f b6 04 01 movzx eax, BYTE PTR [rcx+rax]
|
|
003a7 88 85 94 02 00
|
|
00 mov BYTE PTR tmpi$13[rbp], al
|
|
|
|
; 64 : pivot[k] = pivot[p];
|
|
|
|
003ad 48 63 85 d4 01
|
|
00 00 movsxd rax, DWORD PTR p$7[rbp]
|
|
003b4 48 63 8d b4 01
|
|
00 00 movsxd rcx, DWORD PTR k$6[rbp]
|
|
003bb 48 8b 55 68 mov rdx, QWORD PTR pivot$[rbp]
|
|
003bf 4c 8b 45 68 mov r8, QWORD PTR pivot$[rbp]
|
|
003c3 41 0f b6 04 00 movzx eax, BYTE PTR [r8+rax]
|
|
003c8 88 04 0a mov BYTE PTR [rdx+rcx], al
|
|
|
|
; 65 : pivot[p] = tmpi;
|
|
|
|
003cb 48 63 85 d4 01
|
|
00 00 movsxd rax, DWORD PTR p$7[rbp]
|
|
003d2 48 8b 4d 68 mov rcx, QWORD PTR pivot$[rbp]
|
|
003d6 0f b6 95 94 02
|
|
00 00 movzx edx, BYTE PTR tmpi$13[rbp]
|
|
003dd 88 14 01 mov BYTE PTR [rcx+rax], dl
|
|
$LN28@float_kern:
|
|
|
|
; 66 : }
|
|
; 67 :
|
|
; 68 : float pivot_val = a.m[k][k];
|
|
|
|
003e0 48 63 85 b4 01
|
|
00 00 movsxd rax, DWORD PTR k$6[rbp]
|
|
003e7 48 6b c0 10 imul rax, rax, 16
|
|
003eb 48 8d 84 05 c0
|
|
00 00 00 lea rax, QWORD PTR a$[rbp+rax]
|
|
003f3 48 63 8d b4 01
|
|
00 00 movsxd rcx, DWORD PTR k$6[rbp]
|
|
003fa f3 0f 10 04 88 movss xmm0, DWORD PTR [rax+rcx*4]
|
|
003ff f3 0f 11 85 b4
|
|
02 00 00 movss DWORD PTR pivot_val$14[rbp], xmm0
|
|
|
|
; 69 :
|
|
; 70 : /* Eliminate below pivot: store multipliers in L column k */
|
|
; 71 : for (int r = k + 1; r < 4; ++r) {
|
|
|
|
00407 8b 85 b4 01 00
|
|
00 mov eax, DWORD PTR k$6[rbp]
|
|
0040d ff c0 inc eax
|
|
0040f 89 85 d4 02 00
|
|
00 mov DWORD PTR r$15[rbp], eax
|
|
00415 eb 0e jmp SHORT $LN16@float_kern
|
|
$LN14@float_kern:
|
|
00417 8b 85 d4 02 00
|
|
00 mov eax, DWORD PTR r$15[rbp]
|
|
0041d ff c0 inc eax
|
|
0041f 89 85 d4 02 00
|
|
00 mov DWORD PTR r$15[rbp], eax
|
|
$LN16@float_kern:
|
|
00425 83 bd d4 02 00
|
|
00 04 cmp DWORD PTR r$15[rbp], 4
|
|
0042c 0f 8d f4 00 00
|
|
00 jge $LN15@float_kern
|
|
|
|
; 72 : float factor = a.m[k][r] / pivot_val;
|
|
|
|
00432 48 63 85 b4 01
|
|
00 00 movsxd rax, DWORD PTR k$6[rbp]
|
|
00439 48 6b c0 10 imul rax, rax, 16
|
|
0043d 48 8d 84 05 c0
|
|
00 00 00 lea rax, QWORD PTR a$[rbp+rax]
|
|
00445 48 63 8d d4 02
|
|
00 00 movsxd rcx, DWORD PTR r$15[rbp]
|
|
0044c f3 0f 10 04 88 movss xmm0, DWORD PTR [rax+rcx*4]
|
|
00451 f3 0f 5e 85 b4
|
|
02 00 00 divss xmm0, DWORD PTR pivot_val$14[rbp]
|
|
00459 f3 0f 11 85 f4
|
|
02 00 00 movss DWORD PTR factor$16[rbp], xmm0
|
|
|
|
; 73 : lower->m[k][r] = factor;
|
|
|
|
00461 48 63 85 b4 01
|
|
00 00 movsxd rax, DWORD PTR k$6[rbp]
|
|
00468 48 6b c0 10 imul rax, rax, 16
|
|
0046c 48 8b 4d 28 mov rcx, QWORD PTR lower$[rbp]
|
|
00470 48 03 c8 add rcx, rax
|
|
00473 48 8b c1 mov rax, rcx
|
|
00476 48 63 8d d4 02
|
|
00 00 movsxd rcx, DWORD PTR r$15[rbp]
|
|
0047d f3 0f 10 85 f4
|
|
02 00 00 movss xmm0, DWORD PTR factor$16[rbp]
|
|
00485 f3 0f 11 04 88 movss DWORD PTR [rax+rcx*4], xmm0
|
|
|
|
; 74 : for (int c = k; c < 4; ++c) {
|
|
|
|
0048a 8b 85 b4 01 00
|
|
00 mov eax, DWORD PTR k$6[rbp]
|
|
00490 89 85 14 03 00
|
|
00 mov DWORD PTR c$17[rbp], eax
|
|
00496 eb 0e jmp SHORT $LN19@float_kern
|
|
$LN17@float_kern:
|
|
00498 8b 85 14 03 00
|
|
00 mov eax, DWORD PTR c$17[rbp]
|
|
0049e ff c0 inc eax
|
|
004a0 89 85 14 03 00
|
|
00 mov DWORD PTR c$17[rbp], eax
|
|
$LN19@float_kern:
|
|
004a6 83 bd 14 03 00
|
|
00 04 cmp DWORD PTR c$17[rbp], 4
|
|
004ad 7d 72 jge SHORT $LN18@float_kern
|
|
|
|
; 75 : a.m[c][r] -= factor * a.m[c][k];
|
|
|
|
004af 48 63 85 14 03
|
|
00 00 movsxd rax, DWORD PTR c$17[rbp]
|
|
004b6 48 6b c0 10 imul rax, rax, 16
|
|
004ba 48 8d 84 05 c0
|
|
00 00 00 lea rax, QWORD PTR a$[rbp+rax]
|
|
004c2 48 63 8d d4 02
|
|
00 00 movsxd rcx, DWORD PTR r$15[rbp]
|
|
004c9 48 63 95 14 03
|
|
00 00 movsxd rdx, DWORD PTR c$17[rbp]
|
|
004d0 48 6b d2 10 imul rdx, rdx, 16
|
|
004d4 48 8d 94 15 c0
|
|
00 00 00 lea rdx, QWORD PTR a$[rbp+rdx]
|
|
004dc 4c 63 85 b4 01
|
|
00 00 movsxd r8, DWORD PTR k$6[rbp]
|
|
004e3 f3 0f 10 85 f4
|
|
02 00 00 movss xmm0, DWORD PTR factor$16[rbp]
|
|
004eb f3 42 0f 59 04
|
|
82 mulss xmm0, DWORD PTR [rdx+r8*4]
|
|
004f1 f3 0f 10 0c 88 movss xmm1, DWORD PTR [rax+rcx*4]
|
|
004f6 f3 0f 5c c8 subss xmm1, xmm0
|
|
004fa 0f 28 c1 movaps xmm0, xmm1
|
|
004fd 48 63 85 d4 02
|
|
00 00 movsxd rax, DWORD PTR r$15[rbp]
|
|
00504 48 63 8d 14 03
|
|
00 00 movsxd rcx, DWORD PTR c$17[rbp]
|
|
0050b 48 6b c9 10 imul rcx, rcx, 16
|
|
0050f 48 8d 8c 0d c0
|
|
00 00 00 lea rcx, QWORD PTR a$[rbp+rcx]
|
|
00517 f3 0f 11 04 81 movss DWORD PTR [rcx+rax*4], xmm0
|
|
|
|
; 76 : }
|
|
|
|
0051c e9 77 ff ff ff jmp $LN17@float_kern
|
|
$LN18@float_kern:
|
|
|
|
; 77 : }
|
|
|
|
00521 e9 f1 fe ff ff jmp $LN14@float_kern
|
|
$LN15@float_kern:
|
|
|
|
; 78 :
|
|
; 79 : /* Set U row k (columns k..3) and L diagonal */
|
|
; 80 : lower->m[k][k] = 1.0f;
|
|
|
|
00526 48 63 85 b4 01
|
|
00 00 movsxd rax, DWORD PTR k$6[rbp]
|
|
0052d 48 6b c0 10 imul rax, rax, 16
|
|
00531 48 8b 4d 28 mov rcx, QWORD PTR lower$[rbp]
|
|
00535 48 03 c8 add rcx, rax
|
|
00538 48 8b c1 mov rax, rcx
|
|
0053b 48 63 8d b4 01
|
|
00 00 movsxd rcx, DWORD PTR k$6[rbp]
|
|
00542 f3 0f 10 05 00
|
|
00 00 00 movss xmm0, DWORD PTR __real@3f800000
|
|
0054a f3 0f 11 04 88 movss DWORD PTR [rax+rcx*4], xmm0
|
|
|
|
; 81 : for (int c = k; c < 4; ++c) {
|
|
|
|
0054f 8b 85 b4 01 00
|
|
00 mov eax, DWORD PTR k$6[rbp]
|
|
00555 89 85 34 03 00
|
|
00 mov DWORD PTR c$18[rbp], eax
|
|
0055b eb 0e jmp SHORT $LN22@float_kern
|
|
$LN20@float_kern:
|
|
0055d 8b 85 34 03 00
|
|
00 mov eax, DWORD PTR c$18[rbp]
|
|
00563 ff c0 inc eax
|
|
00565 89 85 34 03 00
|
|
00 mov DWORD PTR c$18[rbp], eax
|
|
$LN22@float_kern:
|
|
0056b 83 bd 34 03 00
|
|
00 04 cmp DWORD PTR c$18[rbp], 4
|
|
00572 7d 43 jge SHORT $LN21@float_kern
|
|
|
|
; 82 : upper->m[c][k] = a.m[c][k];
|
|
|
|
00574 48 63 85 34 03
|
|
00 00 movsxd rax, DWORD PTR c$18[rbp]
|
|
0057b 48 6b c0 10 imul rax, rax, 16
|
|
0057f 48 8d 84 05 c0
|
|
00 00 00 lea rax, QWORD PTR a$[rbp+rax]
|
|
00587 48 63 8d b4 01
|
|
00 00 movsxd rcx, DWORD PTR k$6[rbp]
|
|
0058e 48 63 95 34 03
|
|
00 00 movsxd rdx, DWORD PTR c$18[rbp]
|
|
00595 48 6b d2 10 imul rdx, rdx, 16
|
|
00599 4c 8b 45 08 mov r8, QWORD PTR upper$[rbp]
|
|
0059d 4c 03 c2 add r8, rdx
|
|
005a0 49 8b d0 mov rdx, r8
|
|
005a3 4c 63 85 b4 01
|
|
00 00 movsxd r8, DWORD PTR k$6[rbp]
|
|
005aa f3 0f 10 04 88 movss xmm0, DWORD PTR [rax+rcx*4]
|
|
005af f3 42 0f 11 04
|
|
82 movss DWORD PTR [rdx+r8*4], xmm0
|
|
|
|
; 83 : }
|
|
|
|
005b5 eb a6 jmp SHORT $LN20@float_kern
|
|
$LN21@float_kern:
|
|
|
|
; 84 : }
|
|
|
|
005b7 e9 19 fc ff ff jmp $LN5@float_kern
|
|
$LN6@float_kern:
|
|
|
|
; 85 :
|
|
; 86 : /* Ensure remaining diagonal ones for L */
|
|
; 87 : for (int d = 0; d < 4; ++d) {
|
|
|
|
005bc c7 85 54 03 00
|
|
00 00 00 00 00 mov DWORD PTR d$19[rbp], 0
|
|
005c6 eb 0e jmp SHORT $LN25@float_kern
|
|
$LN23@float_kern:
|
|
005c8 8b 85 54 03 00
|
|
00 mov eax, DWORD PTR d$19[rbp]
|
|
005ce ff c0 inc eax
|
|
005d0 89 85 54 03 00
|
|
00 mov DWORD PTR d$19[rbp], eax
|
|
$LN25@float_kern:
|
|
005d6 83 bd 54 03 00
|
|
00 04 cmp DWORD PTR d$19[rbp], 4
|
|
005dd 7d 57 jge SHORT $LN24@float_kern
|
|
|
|
; 88 : if (lower->m[d][d] == 0.0f)
|
|
|
|
005df 48 63 85 54 03
|
|
00 00 movsxd rax, DWORD PTR d$19[rbp]
|
|
005e6 48 6b c0 10 imul rax, rax, 16
|
|
005ea 48 8b 4d 28 mov rcx, QWORD PTR lower$[rbp]
|
|
005ee 48 03 c8 add rcx, rax
|
|
005f1 48 8b c1 mov rax, rcx
|
|
005f4 48 63 8d 54 03
|
|
00 00 movsxd rcx, DWORD PTR d$19[rbp]
|
|
005fb f3 0f 10 04 88 movss xmm0, DWORD PTR [rax+rcx*4]
|
|
00600 0f 2e 05 00 00
|
|
00 00 ucomiss xmm0, DWORD PTR __real@00000000
|
|
00607 7a 2b jp SHORT $LN29@float_kern
|
|
00609 75 29 jne SHORT $LN29@float_kern
|
|
|
|
; 89 : lower->m[d][d] = 1.0f;
|
|
|
|
0060b 48 63 85 54 03
|
|
00 00 movsxd rax, DWORD PTR d$19[rbp]
|
|
00612 48 6b c0 10 imul rax, rax, 16
|
|
00616 48 8b 4d 28 mov rcx, QWORD PTR lower$[rbp]
|
|
0061a 48 03 c8 add rcx, rax
|
|
0061d 48 8b c1 mov rax, rcx
|
|
00620 48 63 8d 54 03
|
|
00 00 movsxd rcx, DWORD PTR d$19[rbp]
|
|
00627 f3 0f 10 05 00
|
|
00 00 00 movss xmm0, DWORD PTR __real@3f800000
|
|
0062f f3 0f 11 04 88 movss DWORD PTR [rax+rcx*4], xmm0
|
|
$LN29@float_kern:
|
|
|
|
; 90 : }
|
|
|
|
00634 eb 92 jmp SHORT $LN23@float_kern
|
|
$LN24@float_kern:
|
|
$LN1@float_kern:
|
|
|
|
; 91 : }
|
|
|
|
00636 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
|
|
0063a 48 8d 15 00 00
|
|
00 00 lea rdx, OFFSET FLAT:float_kernel_try_plu_sse$rtcFrameData
|
|
00641 e8 00 00 00 00 call _RTC_CheckStackVars
|
|
00646 48 8b 8d e8 04
|
|
00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp]
|
|
0064d 49 33 cd xor rcx, r13
|
|
00650 e8 00 00 00 00 call __security_check_cookie
|
|
00655 49 8d a5 30 05
|
|
00 00 lea rsp, QWORD PTR [r13+1328]
|
|
0065c 5f pop rdi
|
|
0065d 5d pop rbp
|
|
0065e 41 5d pop r13
|
|
00660 c3 ret 0
|
|
float_kernel_try_plu_sse ENDP
|
|
_TEXT ENDS
|
|
; Function compile flags: /Odtp /RTCsu /ZI
|
|
; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt\corecrt_math.h
|
|
; COMDAT fabsf
|
|
_TEXT SEGMENT
|
|
_X$ = 224
|
|
fabsf PROC ; COMDAT
|
|
|
|
; 710 : {
|
|
|
|
$LN3:
|
|
00000 f3 0f 11 44 24
|
|
08 movss DWORD PTR [rsp+8], xmm0
|
|
00006 55 push rbp
|
|
00007 57 push rdi
|
|
00008 48 81 ec f8 00
|
|
00 00 sub rsp, 248 ; 000000f8H
|
|
0000f 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48]
|
|
00014 48 8d 0d 00 00
|
|
00 00 lea rcx, OFFSET FLAT:__1D9A7FA2_corecrt_math@h
|
|
0001b e8 00 00 00 00 call __CheckForDebuggerJustMyCode
|
|
00020 90 npad 1
|
|
|
|
; 711 : return (float)fabs(_X);
|
|
|
|
00021 f3 0f 5a 85 e0
|
|
00 00 00 cvtss2sd xmm0, DWORD PTR _X$[rbp]
|
|
00029 e8 00 00 00 00 call fabs
|
|
0002e f2 0f 5a c0 cvtsd2ss xmm0, xmm0
|
|
|
|
; 712 : }
|
|
|
|
00032 48 8d a5 c8 00
|
|
00 00 lea rsp, QWORD PTR [rbp+200]
|
|
00039 5f pop rdi
|
|
0003a 5d pop rbp
|
|
0003b c3 ret 0
|
|
fabsf ENDP
|
|
_TEXT ENDS
|
|
END
|