Files
stgsharp/obj/StgSharp.Native/Debug/x64/load_intrinsic.x86.cod
T
2026-02-28 18:08:26 +08:00

1321 lines
42 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
__CE29950A_sn_intrincontext@x86@h DB 01H
__518EAA70_load_intrinsic@x86@c DB 01H
msvcjmc ENDS
PUBLIC load_intrinsic_function
PUBLIC __JustMyCode_Default
PUBLIC ??_C@_1HI@EDBAMNGI@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@ ; `string'
PUBLIC ??_C@_1DE@BIMGEDNO@?$AAi?$AAn?$AAt?$AAr?$AAi?$AAn?$AAs?$AAi?$AAc?$AA_?$AAc?$AAo?$AAn?$AAt?$AAe@ ; `string'
EXTRN __imp__wassert:PROC
EXTRN sn_get_simd_level_global:PROC
EXTRN f32_normalize:PROC
EXTRN float_buf_add_sse:PROC
EXTRN float_buf_add_avx:PROC
EXTRN float_buf_add_512:PROC
EXTRN double_buf_add_sse:PROC
EXTRN double_buf_add_avx:PROC
EXTRN double_buf_add_512:PROC
EXTRN float_buf_sub_sse:PROC
EXTRN float_buf_sub_avx:PROC
EXTRN float_buf_sub_512:PROC
EXTRN double_buf_sub_sse:PROC
EXTRN double_buf_sub_avx:PROC
EXTRN double_buf_sub_512:PROC
EXTRN float_kernel_transpose_sse:PROC
EXTRN float_kernel_transpose_avx:PROC
EXTRN float_kernel_transpose_512:PROC
EXTRN float_buf_scalar_mul_sse:PROC
EXTRN float_buf_scalar_mul_avx:PROC
EXTRN float_buf_scalar_mul_512:PROC
EXTRN double_buf_scalar_mul_sse:PROC
EXTRN double_buf_scalar_mul_avx:PROC
EXTRN double_buf_scalar_mul_512:PROC
EXTRN float_buf_fill_sse:PROC
EXTRN float_buf_fill_avx:PROC
EXTRN float_buf_fill_512:PROC
EXTRN double_buf_fill_sse:PROC
EXTRN double_buf_fill_avx:PROC
EXTRN double_buf_fill_512:PROC
EXTRN float_pnl_clear_sse:PROC
EXTRN float_pnl_clear_avx:PROC
EXTRN float_pnl_clear_512:PROC
EXTRN double_pnl_clear_sse:PROC
EXTRN double_pnl_clear_avx:PROC
EXTRN double_pnl_clear_512:PROC
EXTRN float_kernel_fma_sse:PROC
EXTRN float_kernel_fma_avx:PROC
EXTRN float_kernel_fma_avx_fma:PROC
EXTRN float_kernel_fma_512:PROC
EXTRN double_kernel_fma_sse:PROC
EXTRN double_kernel_fma_avx:PROC
EXTRN double_kernel_fma_avx_fma:PROC
EXTRN double_kernel_fma_512:PROC
EXTRN float_kernel_tile_fma_sse:PROC
EXTRN float_kernel_tile_fma_avx:PROC
EXTRN float_kernel_tile_fma_avx_fma:PROC
EXTRN float_kernel_tile_fma_512:PROC
EXTRN double_kernel_tile_fma_sse:PROC
EXTRN double_kernel_tile_fma_avx:PROC
EXTRN double_kernel_tile_fma_avx_fma:PROC
EXTRN double_kernel_tile_fma_512:PROC
EXTRN factorial_simd_sse:PROC
EXTRN city_hash_simplify_sse:PROC
EXTRN index_pair_sse:PROC
EXTRN _RTC_CheckStackVars:PROC
EXTRN _RTC_InitBase:PROC
EXTRN _RTC_Shutdown:PROC
EXTRN __CheckForDebuggerJustMyCode:PROC
; COMDAT pdata
pdata SEGMENT
$pdata$load_intrinsic_function DD imagerel $LN13
DD imagerel $LN13+282
DD imagerel $unwind$load_intrinsic_function
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$load_intrinsic_sse DD imagerel load_intrinsic_sse
DD imagerel load_intrinsic_sse+613
DD imagerel $unwind$load_intrinsic_sse
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$load_intrinsic_avx DD imagerel load_intrinsic_avx
DD imagerel load_intrinsic_avx+871
DD imagerel $unwind$load_intrinsic_avx
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$load_intrinsic_512 DD imagerel load_intrinsic_512
DD imagerel load_intrinsic_512+613
DD imagerel $unwind$load_intrinsic_512
pdata 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 ??_C@_1DE@BIMGEDNO@?$AAi?$AAn?$AAt?$AAr?$AAi?$AAn?$AAs?$AAi?$AAc?$AA_?$AAc?$AAo?$AAn?$AAt?$AAe@
CONST SEGMENT
??_C@_1DE@BIMGEDNO@?$AAi?$AAn?$AAt?$AAr?$AAi?$AAn?$AAs?$AAi?$AAc?$AA_?$AAc?$AAo?$AAn?$AAt?$AAe@ DB 'i'
DB 00H, 'n', 00H, 't', 00H, 'r', 00H, 'i', 00H, 'n', 00H, 's', 00H
DB 'i', 00H, 'c', 00H, '_', 00H, 'c', 00H, 'o', 00H, 'n', 00H, 't'
DB 00H, 'e', 00H, 'x', 00H, 't', 00H, ' ', 00H, '!', 00H, '=', 00H
DB ' ', 00H, 'N', 00H, 'U', 00H, 'L', 00H, 'L', 00H, 00H, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_1HI@EDBAMNGI@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
CONST SEGMENT
??_C@_1HI@EDBAMNGI@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@ DB 'D'
DB 00H, ':', 00H, '\', 00H, 'p', 00H, 'l', 00H, 'a', 00H, 't', 00H
DB 'f', 00H, 'o', 00H, 'r', 00H, 'm', 00H, '-', 00H, 'd', 00H, 'e'
DB 00H, 'v', 00H, '\', 00H, 'S', 00H, 't', 00H, 'g', 00H, 'S', 00H
DB 'h', 00H, 'a', 00H, 'r', 00H, 'p', 00H, '.', 00H, 'N', 00H, 'a'
DB 00H, 't', 00H, 'i', 00H, 'v', 00H, 'e', 00H, '\', 00H, 's', 00H
DB 'n', 00H, '-', 00H, 's', 00H, 'r', 00H, 'c', 00H, '\', 00H, 'l'
DB 00H, 'o', 00H, 'a', 00H, 'd', 00H, '_', 00H, 'i', 00H, 'n', 00H
DB 't', 00H, 'r', 00H, 'i', 00H, 'n', 00H, 's', 00H, 'i', 00H, 'c'
DB 00H, '.', 00H, 'x', 00H, '8', 00H, '6', 00H, '.', 00H, 'c', 00H
DB 00H, 00H ; `string'
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$load_intrinsic_512 DD 025051801H
DD 01132318H
DD 0700c001dH
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$load_intrinsic_avx DD 025051801H
DD 01132318H
DD 0700c0029H
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$load_intrinsic_sse DD 025051801H
DD 01132318H
DD 0700c001dH
DD 0500bH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$load_intrinsic_function DD 025053101H
DD 01132318H
DD 0700c0025H
DD 0500bH
xdata ENDS
; COMDAT CONST
CONST SEGMENT
load_intrinsic_function$rtcName$0 DB 073H
DB 069H
DB 06dH
DB 064H
DB 069H
DB 064H
DB 00H
ORG $+9
load_intrinsic_function$rtcVarDesc DD 028H
DD 08H
DQ FLAT:load_intrinsic_function$rtcName$0
ORG $+48
load_intrinsic_function$rtcFrameData DD 01H
DD 00H
DQ FLAT:load_intrinsic_function$rtcVarDesc
CONST 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\load_intrinsic.x86.c
; COMDAT load_intrinsic_512
_TEXT SEGMENT
context$ = 224
id$ = 232
load_intrinsic_512 PROC ; COMDAT
; 115 : {
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 e8 00
00 00 sub rsp, 232 ; 000000e8H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__518EAA70_load_intrinsic@x86@c
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00024 90 npad 1
; 116 : context->city_hash_simplify = city_hash_simplify_sse;
00025 48 8b 85 e0 00
00 00 mov rax, QWORD PTR context$[rbp]
0002c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:city_hash_simplify_sse
00033 48 89 08 mov QWORD PTR [rax], rcx
; 117 : context->factorial_simd = factorial_simd_sse;
00036 48 8b 85 e0 00
00 00 mov rax, QWORD PTR context$[rbp]
0003d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:factorial_simd_sse
00044 48 89 48 08 mov QWORD PTR [rax+8], rcx
; 118 : context->index_pair = index_pair_sse;
00048 48 8b 85 e0 00
00 00 mov rax, QWORD PTR context$[rbp]
0004f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:index_pair_sse
00056 48 89 48 10 mov QWORD PTR [rax+16], rcx
; 119 :
; 120 : context->mat[F32].buffer_add = BUF_PROC(float, 512, , add);
0005a b8 48 00 00 00 mov eax, 72 ; 00000048H
0005f 48 6b c0 00 imul rax, rax, 0
00063 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
0006a 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_buf_add_512
00071 48 89 54 01 20 mov QWORD PTR [rcx+rax+32], rdx
; 121 : context->mat[F32].buffer_fill = BUF_PROC(float, 512, , fill);
00076 b8 48 00 00 00 mov eax, 72 ; 00000048H
0007b 48 6b c0 00 imul rax, rax, 0
0007f 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
00086 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_buf_fill_512
0008d 48 89 54 01 28 mov QWORD PTR [rcx+rax+40], rdx
; 122 : context->mat[F32].buffer_scalar_mul = BUF_PROC(float, 512, , scalar_mul);
00092 b8 48 00 00 00 mov eax, 72 ; 00000048H
00097 48 6b c0 00 imul rax, rax, 0
0009b 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
000a2 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_buf_scalar_mul_512
000a9 48 89 54 01 30 mov QWORD PTR [rcx+rax+48], rdx
; 123 : context->mat[F32].buffer_sub = BUF_PROC(float, 512, , sub);
000ae b8 48 00 00 00 mov eax, 72 ; 00000048H
000b3 48 6b c0 00 imul rax, rax, 0
000b7 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
000be 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_buf_sub_512
000c5 48 89 54 01 38 mov QWORD PTR [rcx+rax+56], rdx
; 124 : context->mat[F32].buffer_transpose = KER_PROC(float, 512, , transpose);
000ca b8 48 00 00 00 mov eax, 72 ; 00000048H
000cf 48 6b c0 00 imul rax, rax, 0
000d3 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
000da 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_kernel_transpose_512
000e1 48 89 54 01 40 mov QWORD PTR [rcx+rax+64], rdx
; 125 : context->mat[F32].clear_panel = PNL_PROC(float, 512, , clear);
000e6 b8 48 00 00 00 mov eax, 72 ; 00000048H
000eb 48 6b c0 00 imul rax, rax, 0
000ef 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
000f6 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_pnl_clear_512
000fd 48 89 54 01 48 mov QWORD PTR [rcx+rax+72], rdx
; 126 : context->mat[F32].ker_fma = KER_PROC(float, 512, , fma);
00102 b8 48 00 00 00 mov eax, 72 ; 00000048H
00107 48 6b c0 00 imul rax, rax, 0
0010b 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
00112 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_kernel_fma_512
00119 48 89 54 01 50 mov QWORD PTR [rcx+rax+80], rdx
; 127 : context->mat[F32].ker_tile_fma = KERTILE_PROC(float, 512, , fma);
0011e b8 48 00 00 00 mov eax, 72 ; 00000048H
00123 48 6b c0 00 imul rax, rax, 0
00127 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
0012e 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_kernel_tile_fma_512
00135 48 89 54 01 58 mov QWORD PTR [rcx+rax+88], rdx
; 128 : context->mat[F32].pivot = NULL;
0013a b8 48 00 00 00 mov eax, 72 ; 00000048H
0013f 48 6b c0 00 imul rax, rax, 0
00143 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
0014a 48 c7 44 01 60
00 00 00 00 mov QWORD PTR [rcx+rax+96], 0
; 129 :
; 130 : context->mat[F64].buffer_add = BUF_PROC(double, 512, , add);
00153 b8 48 00 00 00 mov eax, 72 ; 00000048H
00158 48 6b c0 01 imul rax, rax, 1
0015c 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
00163 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:double_buf_add_512
0016a 48 89 54 01 20 mov QWORD PTR [rcx+rax+32], rdx
; 131 : context->mat[F64].buffer_fill = BUF_PROC(double, 512, , fill);
0016f b8 48 00 00 00 mov eax, 72 ; 00000048H
00174 48 6b c0 01 imul rax, rax, 1
00178 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
0017f 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:double_buf_fill_512
00186 48 89 54 01 28 mov QWORD PTR [rcx+rax+40], rdx
; 132 : context->mat[F64].buffer_scalar_mul = BUF_PROC(double, 512, , scalar_mul);
0018b b8 48 00 00 00 mov eax, 72 ; 00000048H
00190 48 6b c0 01 imul rax, rax, 1
00194 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
0019b 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:double_buf_scalar_mul_512
001a2 48 89 54 01 30 mov QWORD PTR [rcx+rax+48], rdx
; 133 : context->mat[F64].buffer_sub = BUF_PROC(double, 512, , sub);
001a7 b8 48 00 00 00 mov eax, 72 ; 00000048H
001ac 48 6b c0 01 imul rax, rax, 1
001b0 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
001b7 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:double_buf_sub_512
001be 48 89 54 01 38 mov QWORD PTR [rcx+rax+56], rdx
; 134 : context->mat[F64].buffer_transpose = NULL;
001c3 b8 48 00 00 00 mov eax, 72 ; 00000048H
001c8 48 6b c0 01 imul rax, rax, 1
001cc 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
001d3 48 c7 44 01 40
00 00 00 00 mov QWORD PTR [rcx+rax+64], 0
; 135 : context->mat[F64].clear_panel = PNL_PROC(double, 512, , clear);
001dc b8 48 00 00 00 mov eax, 72 ; 00000048H
001e1 48 6b c0 01 imul rax, rax, 1
001e5 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
001ec 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:double_pnl_clear_512
001f3 48 89 54 01 48 mov QWORD PTR [rcx+rax+72], rdx
; 136 : context->mat[F64].ker_fma = KER_PROC(double, 512, , fma);
001f8 b8 48 00 00 00 mov eax, 72 ; 00000048H
001fd 48 6b c0 01 imul rax, rax, 1
00201 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
00208 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:double_kernel_fma_512
0020f 48 89 54 01 50 mov QWORD PTR [rcx+rax+80], rdx
; 137 : context->mat[F64].ker_tile_fma = KERTILE_PROC(double, 512, , fma);
00214 b8 48 00 00 00 mov eax, 72 ; 00000048H
00219 48 6b c0 01 imul rax, rax, 1
0021d 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
00224 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:double_kernel_tile_fma_512
0022b 48 89 54 01 58 mov QWORD PTR [rcx+rax+88], rdx
; 138 : context->mat[F64].pivot = NULL;
00230 b8 48 00 00 00 mov eax, 72 ; 00000048H
00235 48 6b c0 01 imul rax, rax, 1
00239 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
00240 48 c7 44 01 60
00 00 00 00 mov QWORD PTR [rcx+rax+96], 0
; 139 :
; 140 : context->vec_f32_normalize_3 = f32_normalize;
00249 48 8b 85 e0 00
00 00 mov rax, QWORD PTR context$[rbp]
00250 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:f32_normalize
00257 48 89 48 18 mov QWORD PTR [rax+24], rcx
; 141 : }
0025b 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00262 5f pop rdi
00263 5d pop rbp
00264 c3 ret 0
load_intrinsic_512 ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\sn-src\load_intrinsic.x86.c
; COMDAT load_intrinsic_avx
_TEXT SEGMENT
avx_seg$ = 4
is_fma$ = 36
is_f16c$ = 68
tv69 = 276
tv74 = 276
tv141 = 280
tv148 = 280
tv183 = 280
tv190 = 280
context$ = 320
id$ = 328
load_intrinsic_avx PROC ; COMDAT
; 78 : {
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 48 01
00 00 sub rsp, 328 ; 00000148H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__518EAA70_load_intrinsic@x86@c
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00024 90 npad 1
; 79 : char avx_seg = id.make_byte[5];
00025 b8 01 00 00 00 mov eax, 1
0002a 48 6b c0 05 imul rax, rax, 5
0002e 0f b6 84 05 48
01 00 00 movzx eax, BYTE PTR id$[rbp+rax]
00036 88 45 04 mov BYTE PTR avx_seg$[rbp], al
; 80 : char is_fma = (avx_seg & SIMDID_AVX_FMA) != 0;
00039 0f be 45 04 movsx eax, BYTE PTR avx_seg$[rbp]
0003d 83 e0 04 and eax, 4
00040 85 c0 test eax, eax
00042 74 0c je SHORT $LN3@load_intri
00044 c7 85 14 01 00
00 01 00 00 00 mov DWORD PTR tv69[rbp], 1
0004e eb 0a jmp SHORT $LN4@load_intri
$LN3@load_intri:
00050 c7 85 14 01 00
00 00 00 00 00 mov DWORD PTR tv69[rbp], 0
$LN4@load_intri:
0005a 0f b6 85 14 01
00 00 movzx eax, BYTE PTR tv69[rbp]
00061 88 45 24 mov BYTE PTR is_fma$[rbp], al
; 81 : char is_f16c = (avx_seg & SIMDID_AVX_F16C) != 0;
00064 0f be 45 04 movsx eax, BYTE PTR avx_seg$[rbp]
00068 83 e0 08 and eax, 8
0006b 85 c0 test eax, eax
0006d 74 0c je SHORT $LN5@load_intri
0006f c7 85 14 01 00
00 01 00 00 00 mov DWORD PTR tv74[rbp], 1
00079 eb 0a jmp SHORT $LN6@load_intri
$LN5@load_intri:
0007b c7 85 14 01 00
00 00 00 00 00 mov DWORD PTR tv74[rbp], 0
$LN6@load_intri:
00085 0f b6 85 14 01
00 00 movzx eax, BYTE PTR tv74[rbp]
0008c 88 45 44 mov BYTE PTR is_f16c$[rbp], al
; 82 :
; 83 : context->city_hash_simplify = city_hash_simplify_sse;
0008f 48 8b 85 40 01
00 00 mov rax, QWORD PTR context$[rbp]
00096 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:city_hash_simplify_sse
0009d 48 89 08 mov QWORD PTR [rax], rcx
; 84 : context->factorial_simd = factorial_simd_sse;
000a0 48 8b 85 40 01
00 00 mov rax, QWORD PTR context$[rbp]
000a7 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:factorial_simd_sse
000ae 48 89 48 08 mov QWORD PTR [rax+8], rcx
; 85 : context->index_pair = index_pair_sse;
000b2 48 8b 85 40 01
00 00 mov rax, QWORD PTR context$[rbp]
000b9 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:index_pair_sse
000c0 48 89 48 10 mov QWORD PTR [rax+16], rcx
; 86 :
; 87 : context->mat[F32].buffer_add = BUF_PROC(float, avx, , add);
000c4 b8 48 00 00 00 mov eax, 72 ; 00000048H
000c9 48 6b c0 00 imul rax, rax, 0
000cd 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR context$[rbp]
000d4 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_buf_add_avx
000db 48 89 54 01 20 mov QWORD PTR [rcx+rax+32], rdx
; 88 : context->mat[F32].buffer_fill = BUF_PROC(float, avx, , fill);
000e0 b8 48 00 00 00 mov eax, 72 ; 00000048H
000e5 48 6b c0 00 imul rax, rax, 0
000e9 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR context$[rbp]
000f0 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_buf_fill_avx
000f7 48 89 54 01 28 mov QWORD PTR [rcx+rax+40], rdx
; 89 : context->mat[F32].buffer_scalar_mul = BUF_PROC(float, avx, , scalar_mul);
000fc b8 48 00 00 00 mov eax, 72 ; 00000048H
00101 48 6b c0 00 imul rax, rax, 0
00105 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR context$[rbp]
0010c 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_buf_scalar_mul_avx
00113 48 89 54 01 30 mov QWORD PTR [rcx+rax+48], rdx
; 90 : context->mat[F32].buffer_sub = BUF_PROC(float, avx, , sub);
00118 b8 48 00 00 00 mov eax, 72 ; 00000048H
0011d 48 6b c0 00 imul rax, rax, 0
00121 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR context$[rbp]
00128 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_buf_sub_avx
0012f 48 89 54 01 38 mov QWORD PTR [rcx+rax+56], rdx
; 91 : context->mat[F32].buffer_transpose = KER_PROC(float, avx, , transpose);
00134 b8 48 00 00 00 mov eax, 72 ; 00000048H
00139 48 6b c0 00 imul rax, rax, 0
0013d 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR context$[rbp]
00144 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_kernel_transpose_avx
0014b 48 89 54 01 40 mov QWORD PTR [rcx+rax+64], rdx
; 92 : context->mat[F32].clear_panel = PNL_PROC(float, avx, , clear);
00150 b8 48 00 00 00 mov eax, 72 ; 00000048H
00155 48 6b c0 00 imul rax, rax, 0
00159 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR context$[rbp]
00160 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_pnl_clear_avx
00167 48 89 54 01 48 mov QWORD PTR [rcx+rax+72], rdx
; 93 : context->mat[F32].ker_fma = is_fma ? KER_PROC(float, avx, , fma) :
0016c 0f be 45 24 movsx eax, BYTE PTR is_fma$[rbp]
00170 85 c0 test eax, eax
00172 74 10 je SHORT $LN7@load_intri
00174 48 8d 05 00 00
00 00 lea rax, OFFSET FLAT:float_kernel_fma_avx
0017b 48 89 85 18 01
00 00 mov QWORD PTR tv141[rbp], rax
00182 eb 0e jmp SHORT $LN8@load_intri
$LN7@load_intri:
00184 48 8d 05 00 00
00 00 lea rax, OFFSET FLAT:float_kernel_fma_avx_fma
0018b 48 89 85 18 01
00 00 mov QWORD PTR tv141[rbp], rax
$LN8@load_intri:
00192 b8 48 00 00 00 mov eax, 72 ; 00000048H
00197 48 6b c0 00 imul rax, rax, 0
0019b 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR context$[rbp]
001a2 48 8b 95 18 01
00 00 mov rdx, QWORD PTR tv141[rbp]
001a9 48 89 54 01 50 mov QWORD PTR [rcx+rax+80], rdx
; 94 : KER_PROC(float, avx, _fma, fma);
; 95 : context->mat[F32].ker_tile_fma = is_fma ? KERTILE_PROC(float, avx, , fma) :
001ae 0f be 45 24 movsx eax, BYTE PTR is_fma$[rbp]
001b2 85 c0 test eax, eax
001b4 74 10 je SHORT $LN9@load_intri
001b6 48 8d 05 00 00
00 00 lea rax, OFFSET FLAT:float_kernel_tile_fma_avx
001bd 48 89 85 18 01
00 00 mov QWORD PTR tv148[rbp], rax
001c4 eb 0e jmp SHORT $LN10@load_intri
$LN9@load_intri:
001c6 48 8d 05 00 00
00 00 lea rax, OFFSET FLAT:float_kernel_tile_fma_avx_fma
001cd 48 89 85 18 01
00 00 mov QWORD PTR tv148[rbp], rax
$LN10@load_intri:
001d4 b8 48 00 00 00 mov eax, 72 ; 00000048H
001d9 48 6b c0 00 imul rax, rax, 0
001dd 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR context$[rbp]
001e4 48 8b 95 18 01
00 00 mov rdx, QWORD PTR tv148[rbp]
001eb 48 89 54 01 58 mov QWORD PTR [rcx+rax+88], rdx
; 96 : KERTILE_PROC(float, avx, _fma, fma);
; 97 : context->mat[F32].pivot = NULL;
001f0 b8 48 00 00 00 mov eax, 72 ; 00000048H
001f5 48 6b c0 00 imul rax, rax, 0
001f9 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR context$[rbp]
00200 48 c7 44 01 60
00 00 00 00 mov QWORD PTR [rcx+rax+96], 0
; 98 :
; 99 : context->mat[F64].buffer_add = BUF_PROC(double, avx, , add);
00209 b8 48 00 00 00 mov eax, 72 ; 00000048H
0020e 48 6b c0 01 imul rax, rax, 1
00212 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR context$[rbp]
00219 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:double_buf_add_avx
00220 48 89 54 01 20 mov QWORD PTR [rcx+rax+32], rdx
; 100 : context->mat[F64].buffer_fill = BUF_PROC(double, avx, , fill);
00225 b8 48 00 00 00 mov eax, 72 ; 00000048H
0022a 48 6b c0 01 imul rax, rax, 1
0022e 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR context$[rbp]
00235 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:double_buf_fill_avx
0023c 48 89 54 01 28 mov QWORD PTR [rcx+rax+40], rdx
; 101 : context->mat[F64].buffer_scalar_mul = BUF_PROC(double, avx, , scalar_mul);
00241 b8 48 00 00 00 mov eax, 72 ; 00000048H
00246 48 6b c0 01 imul rax, rax, 1
0024a 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR context$[rbp]
00251 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:double_buf_scalar_mul_avx
00258 48 89 54 01 30 mov QWORD PTR [rcx+rax+48], rdx
; 102 : context->mat[F64].buffer_sub = BUF_PROC(double, avx, , sub);
0025d b8 48 00 00 00 mov eax, 72 ; 00000048H
00262 48 6b c0 01 imul rax, rax, 1
00266 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR context$[rbp]
0026d 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:double_buf_sub_avx
00274 48 89 54 01 38 mov QWORD PTR [rcx+rax+56], rdx
; 103 : context->mat[F64].buffer_transpose = NULL;
00279 b8 48 00 00 00 mov eax, 72 ; 00000048H
0027e 48 6b c0 01 imul rax, rax, 1
00282 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR context$[rbp]
00289 48 c7 44 01 40
00 00 00 00 mov QWORD PTR [rcx+rax+64], 0
; 104 : context->mat[F64].clear_panel = PNL_PROC(double, avx, , clear);
00292 b8 48 00 00 00 mov eax, 72 ; 00000048H
00297 48 6b c0 01 imul rax, rax, 1
0029b 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR context$[rbp]
002a2 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:double_pnl_clear_avx
002a9 48 89 54 01 48 mov QWORD PTR [rcx+rax+72], rdx
; 105 : context->mat[F64].ker_fma = is_fma ? KER_PROC(double, avx, , fma) :
002ae 0f be 45 24 movsx eax, BYTE PTR is_fma$[rbp]
002b2 85 c0 test eax, eax
002b4 74 10 je SHORT $LN11@load_intri
002b6 48 8d 05 00 00
00 00 lea rax, OFFSET FLAT:double_kernel_fma_avx
002bd 48 89 85 18 01
00 00 mov QWORD PTR tv183[rbp], rax
002c4 eb 0e jmp SHORT $LN12@load_intri
$LN11@load_intri:
002c6 48 8d 05 00 00
00 00 lea rax, OFFSET FLAT:double_kernel_fma_avx_fma
002cd 48 89 85 18 01
00 00 mov QWORD PTR tv183[rbp], rax
$LN12@load_intri:
002d4 b8 48 00 00 00 mov eax, 72 ; 00000048H
002d9 48 6b c0 01 imul rax, rax, 1
002dd 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR context$[rbp]
002e4 48 8b 95 18 01
00 00 mov rdx, QWORD PTR tv183[rbp]
002eb 48 89 54 01 50 mov QWORD PTR [rcx+rax+80], rdx
; 106 : KER_PROC(double, avx, _fma, fma);
; 107 : context->mat[F64].ker_tile_fma = is_fma ? KERTILE_PROC(double, avx, , fma) :
002f0 0f be 45 24 movsx eax, BYTE PTR is_fma$[rbp]
002f4 85 c0 test eax, eax
002f6 74 10 je SHORT $LN13@load_intri
002f8 48 8d 05 00 00
00 00 lea rax, OFFSET FLAT:double_kernel_tile_fma_avx
002ff 48 89 85 18 01
00 00 mov QWORD PTR tv190[rbp], rax
00306 eb 0e jmp SHORT $LN14@load_intri
$LN13@load_intri:
00308 48 8d 05 00 00
00 00 lea rax, OFFSET FLAT:double_kernel_tile_fma_avx_fma
0030f 48 89 85 18 01
00 00 mov QWORD PTR tv190[rbp], rax
$LN14@load_intri:
00316 b8 48 00 00 00 mov eax, 72 ; 00000048H
0031b 48 6b c0 01 imul rax, rax, 1
0031f 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR context$[rbp]
00326 48 8b 95 18 01
00 00 mov rdx, QWORD PTR tv190[rbp]
0032d 48 89 54 01 58 mov QWORD PTR [rcx+rax+88], rdx
; 108 : KERTILE_PROC(double, avx, _fma, fma);
; 109 : context->mat[F64].pivot = NULL;
00332 b8 48 00 00 00 mov eax, 72 ; 00000048H
00337 48 6b c0 01 imul rax, rax, 1
0033b 48 8b 8d 40 01
00 00 mov rcx, QWORD PTR context$[rbp]
00342 48 c7 44 01 60
00 00 00 00 mov QWORD PTR [rcx+rax+96], 0
; 110 :
; 111 : context->vec_f32_normalize_3 = f32_normalize;
0034b 48 8b 85 40 01
00 00 mov rax, QWORD PTR context$[rbp]
00352 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:f32_normalize
00359 48 89 48 18 mov QWORD PTR [rax+24], rcx
; 112 : }
0035d 48 8d a5 28 01
00 00 lea rsp, QWORD PTR [rbp+296]
00364 5f pop rdi
00365 5d pop rbp
00366 c3 ret 0
load_intrinsic_avx ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\sn-src\load_intrinsic.x86.c
; COMDAT load_intrinsic_sse
_TEXT SEGMENT
context$ = 224
id$ = 232
load_intrinsic_sse PROC ; COMDAT
; 49 : {
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 e8 00
00 00 sub rsp, 232 ; 000000e8H
00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
00018 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__518EAA70_load_intrinsic@x86@c
0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00024 90 npad 1
; 50 : context->city_hash_simplify = city_hash_simplify_sse;
00025 48 8b 85 e0 00
00 00 mov rax, QWORD PTR context$[rbp]
0002c 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:city_hash_simplify_sse
00033 48 89 08 mov QWORD PTR [rax], rcx
; 51 : context->factorial_simd = factorial_simd_sse;
00036 48 8b 85 e0 00
00 00 mov rax, QWORD PTR context$[rbp]
0003d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:factorial_simd_sse
00044 48 89 48 08 mov QWORD PTR [rax+8], rcx
; 52 : context->index_pair = index_pair_sse;
00048 48 8b 85 e0 00
00 00 mov rax, QWORD PTR context$[rbp]
0004f 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:index_pair_sse
00056 48 89 48 10 mov QWORD PTR [rax+16], rcx
; 53 :
; 54 : context->mat[F32].buffer_add = BUF_PROC(float, sse, , add);
0005a b8 48 00 00 00 mov eax, 72 ; 00000048H
0005f 48 6b c0 00 imul rax, rax, 0
00063 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
0006a 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_buf_add_sse
00071 48 89 54 01 20 mov QWORD PTR [rcx+rax+32], rdx
; 55 : context->mat[F32].buffer_fill = BUF_PROC(float, sse, , fill);
00076 b8 48 00 00 00 mov eax, 72 ; 00000048H
0007b 48 6b c0 00 imul rax, rax, 0
0007f 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
00086 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_buf_fill_sse
0008d 48 89 54 01 28 mov QWORD PTR [rcx+rax+40], rdx
; 56 : context->mat[F32].buffer_scalar_mul = BUF_PROC(float, sse, , scalar_mul);
00092 b8 48 00 00 00 mov eax, 72 ; 00000048H
00097 48 6b c0 00 imul rax, rax, 0
0009b 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
000a2 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_buf_scalar_mul_sse
000a9 48 89 54 01 30 mov QWORD PTR [rcx+rax+48], rdx
; 57 : context->mat[F32].buffer_sub = BUF_PROC(float, sse, , sub);
000ae b8 48 00 00 00 mov eax, 72 ; 00000048H
000b3 48 6b c0 00 imul rax, rax, 0
000b7 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
000be 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_buf_sub_sse
000c5 48 89 54 01 38 mov QWORD PTR [rcx+rax+56], rdx
; 58 : context->mat[F32].buffer_transpose = KER_PROC(float, sse, , transpose);
000ca b8 48 00 00 00 mov eax, 72 ; 00000048H
000cf 48 6b c0 00 imul rax, rax, 0
000d3 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
000da 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_kernel_transpose_sse
000e1 48 89 54 01 40 mov QWORD PTR [rcx+rax+64], rdx
; 59 : context->mat[F32].clear_panel = PNL_PROC(float, sse, , clear);
000e6 b8 48 00 00 00 mov eax, 72 ; 00000048H
000eb 48 6b c0 00 imul rax, rax, 0
000ef 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
000f6 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_pnl_clear_sse
000fd 48 89 54 01 48 mov QWORD PTR [rcx+rax+72], rdx
; 60 : context->mat[F32].ker_fma = KER_PROC(float, sse, , fma);
00102 b8 48 00 00 00 mov eax, 72 ; 00000048H
00107 48 6b c0 00 imul rax, rax, 0
0010b 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
00112 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_kernel_fma_sse
00119 48 89 54 01 50 mov QWORD PTR [rcx+rax+80], rdx
; 61 : context->mat[F32].ker_tile_fma = KERTILE_PROC(float, sse, , fma);
0011e b8 48 00 00 00 mov eax, 72 ; 00000048H
00123 48 6b c0 00 imul rax, rax, 0
00127 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
0012e 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:float_kernel_tile_fma_sse
00135 48 89 54 01 58 mov QWORD PTR [rcx+rax+88], rdx
; 62 : context->mat[F32].pivot = NULL;
0013a b8 48 00 00 00 mov eax, 72 ; 00000048H
0013f 48 6b c0 00 imul rax, rax, 0
00143 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
0014a 48 c7 44 01 60
00 00 00 00 mov QWORD PTR [rcx+rax+96], 0
; 63 :
; 64 : context->mat[F64].buffer_add = BUF_PROC(double, sse, , add);
00153 b8 48 00 00 00 mov eax, 72 ; 00000048H
00158 48 6b c0 01 imul rax, rax, 1
0015c 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
00163 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:double_buf_add_sse
0016a 48 89 54 01 20 mov QWORD PTR [rcx+rax+32], rdx
; 65 : context->mat[F64].buffer_fill = BUF_PROC(double, sse, , fill);
0016f b8 48 00 00 00 mov eax, 72 ; 00000048H
00174 48 6b c0 01 imul rax, rax, 1
00178 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
0017f 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:double_buf_fill_sse
00186 48 89 54 01 28 mov QWORD PTR [rcx+rax+40], rdx
; 66 : context->mat[F64].buffer_scalar_mul = BUF_PROC(double, sse, , scalar_mul);
0018b b8 48 00 00 00 mov eax, 72 ; 00000048H
00190 48 6b c0 01 imul rax, rax, 1
00194 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
0019b 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:double_buf_scalar_mul_sse
001a2 48 89 54 01 30 mov QWORD PTR [rcx+rax+48], rdx
; 67 : context->mat[F64].buffer_sub = BUF_PROC(double, sse, , sub);
001a7 b8 48 00 00 00 mov eax, 72 ; 00000048H
001ac 48 6b c0 01 imul rax, rax, 1
001b0 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
001b7 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:double_buf_sub_sse
001be 48 89 54 01 38 mov QWORD PTR [rcx+rax+56], rdx
; 68 : context->mat[F64].buffer_transpose = NULL;
001c3 b8 48 00 00 00 mov eax, 72 ; 00000048H
001c8 48 6b c0 01 imul rax, rax, 1
001cc 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
001d3 48 c7 44 01 40
00 00 00 00 mov QWORD PTR [rcx+rax+64], 0
; 69 : context->mat[F64].clear_panel = PNL_PROC(double, sse, , clear);
001dc b8 48 00 00 00 mov eax, 72 ; 00000048H
001e1 48 6b c0 01 imul rax, rax, 1
001e5 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
001ec 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:double_pnl_clear_sse
001f3 48 89 54 01 48 mov QWORD PTR [rcx+rax+72], rdx
; 70 : context->mat[F64].ker_fma = KER_PROC(double, sse, , fma);
001f8 b8 48 00 00 00 mov eax, 72 ; 00000048H
001fd 48 6b c0 01 imul rax, rax, 1
00201 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
00208 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:double_kernel_fma_sse
0020f 48 89 54 01 50 mov QWORD PTR [rcx+rax+80], rdx
; 71 : context->mat[F64].ker_tile_fma = KERTILE_PROC(double, sse, , fma);
00214 b8 48 00 00 00 mov eax, 72 ; 00000048H
00219 48 6b c0 01 imul rax, rax, 1
0021d 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
00224 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:double_kernel_tile_fma_sse
0022b 48 89 54 01 58 mov QWORD PTR [rcx+rax+88], rdx
; 72 : context->mat[F64].pivot = NULL;
00230 b8 48 00 00 00 mov eax, 72 ; 00000048H
00235 48 6b c0 01 imul rax, rax, 1
00239 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR context$[rbp]
00240 48 c7 44 01 60
00 00 00 00 mov QWORD PTR [rcx+rax+96], 0
; 73 :
; 74 : context->vec_f32_normalize_3 = f32_normalize;
00249 48 8b 85 e0 00
00 00 mov rax, QWORD PTR context$[rbp]
00250 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:f32_normalize
00257 48 89 48 18 mov QWORD PTR [rax+24], rcx
; 75 : }
0025b 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00262 5f pop rdi
00263 5d pop rbp
00264 c3 ret 0
load_intrinsic_sse ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\sn-src\load_intrinsic.x86.c
; COMDAT load_intrinsic_function
_TEXT SEGMENT
simdid$ = 8
context$ = 40
tv74 = 244
intrinsic_context$ = 288
id$ = 296
load_intrinsic_function PROC ; COMDAT
; 21 : {
$LN13:
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 28 01
00 00 sub rsp, 296 ; 00000128H
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 12 00 00 00 mov ecx, 18
00022 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH
00027 f3 ab rep stosd
00029 48 8b 8c 24 48
01 00 00 mov rcx, QWORD PTR [rsp+328]
00031 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__518EAA70_load_intrinsic@x86@c
00038 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
0003d 90 npad 1
; 22 : sn_null_assert(intrinsic_context);
0003e 48 83 bd 20 01
00 00 00 cmp QWORD PTR intrinsic_context$[rbp], 0
00046 75 1c jne SHORT $LN12@load_intri
00048 41 b8 16 00 00
00 mov r8d, 22
0004e 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:??_C@_1HI@EDBAMNGI@?$AAD?$AA?3?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm?$AA?9?$AAd?$AAe?$AAv@
00055 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:??_C@_1DE@BIMGEDNO@?$AAi?$AAn?$AAt?$AAr?$AAi?$AAn?$AAs?$AAi?$AAc?$AA_?$AAc?$AAo?$AAn?$AAt?$AAe@
0005c ff 15 00 00 00
00 call QWORD PTR __imp__wassert
00062 33 c0 xor eax, eax
$LN12@load_intri:
; 23 :
; 24 : SIMDID simdid;
; 25 : if (id) {
00064 48 83 bd 28 01
00 00 00 cmp QWORD PTR id$[rbp], 0
0006c 74 0d je SHORT $LN4@load_intri
; 26 : simdid.mask = id;
0006e 48 8b 85 28 01
00 00 mov rax, QWORD PTR id$[rbp]
00075 48 89 45 08 mov QWORD PTR simdid$[rbp], rax
; 27 : } else {
00079 eb 09 jmp SHORT $LN5@load_intri
$LN4@load_intri:
; 28 : simdid = sn_get_simd_level_global();
0007b e8 00 00 00 00 call sn_get_simd_level_global
00080 48 89 45 08 mov QWORD PTR simdid$[rbp], rax
$LN5@load_intri:
; 29 : }
; 30 :
; 31 : sn_intrinsic *context = (sn_intrinsic *)intrinsic_context;
00084 48 8b 85 20 01
00 00 mov rax, QWORD PTR intrinsic_context$[rbp]
0008b 48 89 45 28 mov QWORD PTR context$[rbp], rax
; 32 :
; 33 : switch (simdid.make_byte[1]) {
0008f b8 01 00 00 00 mov eax, 1
00094 48 6b c0 01 imul rax, rax, 1
00098 0f b6 44 05 08 movzx eax, BYTE PTR simdid$[rbp+rax]
0009d 88 85 f4 00 00
00 mov BYTE PTR tv74[rbp], al
000a3 80 bd f4 00 00
00 01 cmp BYTE PTR tv74[rbp], 1
000aa 74 26 je SHORT $LN6@load_intri
000ac 80 bd f4 00 00
00 02 cmp BYTE PTR tv74[rbp], 2
000b3 74 2d je SHORT $LN7@load_intri
000b5 80 bd f4 00 00
00 03 cmp BYTE PTR tv74[rbp], 3
000bc 74 34 je SHORT $LN8@load_intri
000be 80 bd f4 00 00
00 04 cmp BYTE PTR tv74[rbp], 4
000c5 74 2b je SHORT $LN9@load_intri
000c7 80 bd f4 00 00
00 05 cmp BYTE PTR tv74[rbp], 5
000ce 74 22 je SHORT $LN10@load_intri
000d0 eb 2e jmp SHORT $LN2@load_intri
$LN6@load_intri:
; 34 : case SIMDID_MAIN_LVL_SSE:
; 35 : load_intrinsic_sse(context, simdid);
000d2 48 8b 55 08 mov rdx, QWORD PTR simdid$[rbp]
000d6 48 8b 4d 28 mov rcx, QWORD PTR context$[rbp]
000da e8 00 00 00 00 call load_intrinsic_sse
000df 90 npad 1
; 36 : break;
000e0 eb 1e jmp SHORT $LN2@load_intri
$LN7@load_intri:
; 37 : case SIMDID_MAIN_LVL_AVX2:
; 38 : load_intrinsic_avx(context, simdid);
000e2 48 8b 55 08 mov rdx, QWORD PTR simdid$[rbp]
000e6 48 8b 4d 28 mov rcx, QWORD PTR context$[rbp]
000ea e8 00 00 00 00 call load_intrinsic_avx
000ef 90 npad 1
; 39 : break;
000f0 eb 0e jmp SHORT $LN2@load_intri
$LN8@load_intri:
$LN9@load_intri:
$LN10@load_intri:
; 40 : case SIMDID_MAIN_LVL_AVX512:
; 41 : case SIMDID_MAIN_LVL_AMX:
; 42 : case SIMDID_MAIN_LVL_AVX10:
; 43 : load_intrinsic_512(context, simdid);
000f2 48 8b 55 08 mov rdx, QWORD PTR simdid$[rbp]
000f6 48 8b 4d 28 mov rcx, QWORD PTR context$[rbp]
000fa e8 00 00 00 00 call load_intrinsic_512
000ff 90 npad 1
$LN2@load_intri:
; 44 : break;
; 45 : }
; 46 : }
00100 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32]
00104 48 8d 15 00 00
00 00 lea rdx, OFFSET FLAT:load_intrinsic_function$rtcFrameData
0010b e8 00 00 00 00 call _RTC_CheckStackVars
00110 48 8d a5 08 01
00 00 lea rsp, QWORD PTR [rbp+264]
00117 5f pop rdi
00118 5d pop rbp
00119 c3 ret 0
load_intrinsic_function ENDP
_TEXT ENDS
END