4991 lines
161 KiB
Plaintext
4991 lines
161 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
|
|
__31D20E98_m@fma_tile@x86@c DB 01H
|
|
msvcjmc ENDS
|
|
CONST SEGMENT
|
|
?b01_shift_source@?1??float_kernel_tile_fma_avx@@9@9 DD 00H ; `float_kernel_tile_fma_avx'::`2'::b01_shift_source
|
|
DD 01H
|
|
DD 02H
|
|
DD 03H
|
|
DD 05H
|
|
DD 06H
|
|
DD 07H
|
|
DD 04H
|
|
?b23_shift_source@?1??float_kernel_tile_fma_avx@@9@9 DD 02H ; `float_kernel_tile_fma_avx'::`2'::b23_shift_source
|
|
DD 03H
|
|
DD 00H
|
|
DD 01H
|
|
DD 07H
|
|
DD 04H
|
|
DD 05H
|
|
DD 06H
|
|
?b01_shift_source@?1??float_kernel_tile_fma_avx_fma@@9@9 DD 00H ; `float_kernel_tile_fma_avx_fma'::`2'::b01_shift_source
|
|
DD 01H
|
|
DD 02H
|
|
DD 03H
|
|
DD 05H
|
|
DD 06H
|
|
DD 07H
|
|
DD 04H
|
|
?b23_shift_source@?1??float_kernel_tile_fma_avx_fma@@9@9 DD 02H ; `float_kernel_tile_fma_avx_fma'::`2'::b23_shift_source
|
|
DD 03H
|
|
DD 00H
|
|
DD 01H
|
|
DD 07H
|
|
DD 04H
|
|
DD 05H
|
|
DD 06H
|
|
?b_shift_source@?1??float_kernel_tile_fma_512@@9@9 DD 00H ; `float_kernel_tile_fma_512'::`2'::b_shift_source
|
|
DD 01H
|
|
DD 02H
|
|
DD 03H
|
|
DD 05H
|
|
DD 06H
|
|
DD 07H
|
|
DD 04H
|
|
DD 0aH
|
|
DD 0bH
|
|
DD 08H
|
|
DD 09H
|
|
DD 0fH
|
|
DD 0cH
|
|
DD 0dH
|
|
DD 0eH
|
|
?b01_shift_source@?1??double_kernel_tile_fma_512@@9@9 DQ 0000000000000000H ; `double_kernel_tile_fma_512'::`2'::b01_shift_source
|
|
DQ 0000000000000001H
|
|
DQ 0000000000000002H
|
|
DQ 0000000000000003H
|
|
DQ 0000000000000005H
|
|
DQ 0000000000000006H
|
|
DQ 0000000000000007H
|
|
DQ 0000000000000004H
|
|
?b23_shift_source@?1??double_kernel_tile_fma_512@@9@9 DQ 0000000000000002H ; `double_kernel_tile_fma_512'::`2'::b23_shift_source
|
|
DQ 0000000000000003H
|
|
DQ 0000000000000000H
|
|
DQ 0000000000000001H
|
|
DQ 0000000000000007H
|
|
DQ 0000000000000004H
|
|
DQ 0000000000000005H
|
|
DQ 0000000000000006H
|
|
CONST ENDS
|
|
PUBLIC float_kernel_tile_fma_sse
|
|
PUBLIC float_kernel_tile_fma_avx
|
|
PUBLIC float_kernel_tile_fma_avx_fma
|
|
PUBLIC float_kernel_tile_fma_512
|
|
PUBLIC double_kernel_tile_fma_sse
|
|
PUBLIC double_kernel_tile_fma_avx
|
|
PUBLIC double_kernel_tile_fma_avx_fma
|
|
PUBLIC double_kernel_tile_fma_512
|
|
PUBLIC __JustMyCode_Default
|
|
EXTRN _RTC_InitBase:PROC
|
|
EXTRN _RTC_Shutdown:PROC
|
|
EXTRN __CheckForDebuggerJustMyCode:PROC
|
|
; COMDAT pdata
|
|
pdata SEGMENT
|
|
$pdata$float_kernel_tile_fma_sse DD imagerel $LN6
|
|
DD imagerel $LN6+1596
|
|
DD imagerel $unwind$float_kernel_tile_fma_sse
|
|
pdata ENDS
|
|
; COMDAT pdata
|
|
pdata SEGMENT
|
|
$pdata$float_kernel_tile_fma_avx DD imagerel $LN6
|
|
DD imagerel $LN6+1188
|
|
DD imagerel $unwind$float_kernel_tile_fma_avx
|
|
pdata ENDS
|
|
; COMDAT pdata
|
|
pdata SEGMENT
|
|
$pdata$float_kernel_tile_fma_avx_fma DD imagerel $LN6
|
|
DD imagerel $LN6+1199
|
|
DD imagerel $unwind$float_kernel_tile_fma_avx_fma
|
|
pdata ENDS
|
|
; COMDAT pdata
|
|
pdata SEGMENT
|
|
$pdata$float_kernel_tile_fma_512 DD imagerel $LN6
|
|
DD imagerel $LN6+715
|
|
DD imagerel $unwind$float_kernel_tile_fma_512
|
|
pdata ENDS
|
|
; COMDAT pdata
|
|
pdata SEGMENT
|
|
$pdata$double_kernel_tile_fma_sse DD imagerel $LN18
|
|
DD imagerel $LN18+3061
|
|
DD imagerel $unwind$double_kernel_tile_fma_sse
|
|
pdata ENDS
|
|
; COMDAT pdata
|
|
pdata SEGMENT
|
|
$pdata$double_kernel_tile_fma_avx DD imagerel $LN6
|
|
DD imagerel $LN6+1554
|
|
DD imagerel $unwind$double_kernel_tile_fma_avx
|
|
pdata ENDS
|
|
; COMDAT pdata
|
|
pdata SEGMENT
|
|
$pdata$double_kernel_tile_fma_avx_fma DD imagerel $LN6
|
|
DD imagerel $LN6+1506
|
|
DD imagerel $unwind$double_kernel_tile_fma_avx_fma
|
|
pdata ENDS
|
|
; COMDAT pdata
|
|
pdata SEGMENT
|
|
$pdata$double_kernel_tile_fma_512 DD imagerel $LN6
|
|
DD imagerel $LN6+1135
|
|
DD imagerel $unwind$double_kernel_tile_fma_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 xdata
|
|
xdata SEGMENT
|
|
$unwind$double_kernel_tile_fma_512 DD 02d062d01H
|
|
DD 011f2324H
|
|
DD 070180146H
|
|
DD 0d0165017H
|
|
xdata ENDS
|
|
; COMDAT xdata
|
|
xdata SEGMENT
|
|
$unwind$double_kernel_tile_fma_avx_fma DD 02d062d01H
|
|
DD 011f2324H
|
|
DD 0701800a2H
|
|
DD 0d0165017H
|
|
xdata ENDS
|
|
; COMDAT xdata
|
|
xdata SEGMENT
|
|
$unwind$double_kernel_tile_fma_avx DD 02d062d01H
|
|
DD 011f2324H
|
|
DD 0701800a2H
|
|
DD 0d0165017H
|
|
xdata ENDS
|
|
; COMDAT xdata
|
|
xdata SEGMENT
|
|
$unwind$double_kernel_tile_fma_sse DD 025052201H
|
|
DD 011d2322H
|
|
DD 070160129H
|
|
DD 05015H
|
|
xdata ENDS
|
|
; COMDAT xdata
|
|
xdata SEGMENT
|
|
$unwind$float_kernel_tile_fma_512 DD 02d062d01H
|
|
DD 011f2324H
|
|
DD 0701800b6H
|
|
DD 0d0165017H
|
|
xdata ENDS
|
|
; COMDAT xdata
|
|
xdata SEGMENT
|
|
$unwind$float_kernel_tile_fma_avx_fma DD 02d062d01H
|
|
DD 011f2324H
|
|
DD 0701800d2H
|
|
DD 0d0165017H
|
|
xdata ENDS
|
|
; COMDAT xdata
|
|
xdata SEGMENT
|
|
$unwind$float_kernel_tile_fma_avx DD 02d062d01H
|
|
DD 011f2324H
|
|
DD 0701800d2H
|
|
DD 0d0165017H
|
|
xdata ENDS
|
|
; COMDAT xdata
|
|
xdata SEGMENT
|
|
$unwind$float_kernel_tile_fma_sse DD 025052201H
|
|
DD 011d2322H
|
|
DD 07016008bH
|
|
DD 05015H
|
|
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.fma_tile.x86.c
|
|
; COMDAT double_kernel_tile_fma_512
|
|
_TEXT SEGMENT
|
|
i$ = 4
|
|
j$ = 36
|
|
commonK$ = 68
|
|
ansHeight$ = 100
|
|
ans_cur$ = 136
|
|
c01$ = 192
|
|
c23$ = 320
|
|
b01_shift$ = 448
|
|
b23_shift$ = 576
|
|
k$1 = 664
|
|
left_cur$2 = 696
|
|
right_cur$3 = 728
|
|
a01$4 = 768
|
|
a23$5 = 896
|
|
b01$6 = 1024
|
|
b23$7 = 1152
|
|
b01_perm$8 = 1280
|
|
b23_perm$9 = 1408
|
|
a12$10 = 1536
|
|
a30$11 = 1664
|
|
left$ = 2608
|
|
right$ = 2616
|
|
ans$ = 2624
|
|
enumeration$ = 2632
|
|
double_kernel_tile_fma_512 PROC ; COMDAT
|
|
|
|
; 463 : {
|
|
|
|
$LN6:
|
|
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 30 0a
|
|
00 00 sub rsp, 2608 ; 00000a30H
|
|
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 0d 00 00
|
|
00 00 lea rcx, OFFSET FLAT:__31D20E98_m@fma_tile@x86@c
|
|
00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
|
|
00039 90 npad 1
|
|
|
|
; 464 : static const __m512i b01_shift_source = { .m512i_i64 = { 0, 1, 2, 3, 5, 6, 7, 4 } };
|
|
; 465 : static const __m512i b23_shift_source = { .m512i_i64 = { 2, 3, 0, 1, 7, 4, 5, 6 } };
|
|
; 466 :
|
|
; 467 : int i = enumeration->m128_i32[0];
|
|
|
|
0003a b8 04 00 00 00 mov eax, 4
|
|
0003f 48 6b c0 00 imul rax, rax, 0
|
|
00043 49 8b 8d 48 0a
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
0004a 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
0004d 89 45 04 mov DWORD PTR i$[rbp], eax
|
|
|
|
; 468 : int j = enumeration->m128_i32[1];
|
|
|
|
00050 b8 04 00 00 00 mov eax, 4
|
|
00055 48 6b c0 01 imul rax, rax, 1
|
|
00059 49 8b 8d 48 0a
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
00060 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
00063 89 45 24 mov DWORD PTR j$[rbp], eax
|
|
|
|
; 469 : int commonK = enumeration->m128_i32[2];
|
|
|
|
00066 b8 04 00 00 00 mov eax, 4
|
|
0006b 48 6b c0 02 imul rax, rax, 2
|
|
0006f 49 8b 8d 48 0a
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
00076 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
00079 89 45 44 mov DWORD PTR commonK$[rbp], eax
|
|
|
|
; 470 : int ansHeight = enumeration->m128_i32[3];
|
|
|
|
0007c b8 04 00 00 00 mov eax, 4
|
|
00081 48 6b c0 03 imul rax, rax, 3
|
|
00085 49 8b 8d 48 0a
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
0008c 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
0008f 89 45 64 mov DWORD PTR ansHeight$[rbp], eax
|
|
|
|
; 471 :
|
|
; 472 : MAT_KERNEL(double)
|
|
; 473 : const *ans_cur = ans + GET_INDEX(ansHeight, i, j); // GetKernelAddressUnsafe
|
|
|
|
00092 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
|
|
00095 0f af 45 04 imul eax, DWORD PTR i$[rbp]
|
|
00099 03 45 24 add eax, DWORD PTR j$[rbp]
|
|
0009c 48 98 cdqe
|
|
0009e 48 69 c0 80 00
|
|
00 00 imul rax, rax, 128 ; 00000080H
|
|
000a5 49 8b 8d 40 0a
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
000ac 48 03 c8 add rcx, rax
|
|
000af 48 8b c1 mov rax, rcx
|
|
000b2 48 89 85 88 00
|
|
00 00 mov QWORD PTR ans_cur$[rbp], rax
|
|
|
|
; 474 :
|
|
; 475 : register __m512d c01 = _mm512_load_pd((double *)&ans->f64_z[0]);
|
|
|
|
000b9 b8 40 00 00 00 mov eax, 64 ; 00000040H
|
|
000be 48 6b c0 00 imul rax, rax, 0
|
|
000c2 49 8b 8d 40 0a
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
000c9 48 03 c8 add rcx, rax
|
|
000cc 48 8b c1 mov rax, rcx
|
|
000cf 62 f1 fd 48 10
|
|
00 vmovupd zmm0, ZMMWORD PTR [rax]
|
|
000d5 62 f1 fd 48 11
|
|
45 03 vmovupd ZMMWORD PTR c01$[rbp], zmm0
|
|
|
|
; 476 : register __m512d c23 = _mm512_load_pd((double *)&ans->f64_z[1]);
|
|
|
|
000dc b8 40 00 00 00 mov eax, 64 ; 00000040H
|
|
000e1 48 6b c0 01 imul rax, rax, 1
|
|
000e5 49 8b 8d 40 0a
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
000ec 48 03 c8 add rcx, rax
|
|
000ef 48 8b c1 mov rax, rcx
|
|
000f2 62 f1 fd 48 10
|
|
00 vmovupd zmm0, ZMMWORD PTR [rax]
|
|
000f8 62 f1 fd 48 11
|
|
45 05 vmovupd ZMMWORD PTR c23$[rbp], zmm0
|
|
|
|
; 477 :
|
|
; 478 : register __m512i b01_shift = _mm512_load_si512(&b01_shift_source);
|
|
|
|
000ff 62 f1 7d 48 6f
|
|
05 00 00 00 00 vmovdqa32 zmm0, ZMMWORD PTR ?b01_shift_source@?1??double_kernel_tile_fma_512@@9@9
|
|
00109 62 f1 7e 48 7f
|
|
45 07 vmovdqu32 ZMMWORD PTR b01_shift$[rbp], zmm0
|
|
|
|
; 479 : register __m512i b23_shift = _mm512_load_si512(&b23_shift_source);
|
|
|
|
00110 62 f1 7d 48 6f
|
|
05 00 00 00 00 vmovdqa32 zmm0, ZMMWORD PTR ?b23_shift_source@?1??double_kernel_tile_fma_512@@9@9
|
|
0011a 62 f1 7e 48 7f
|
|
45 09 vmovdqu32 ZMMWORD PTR b23_shift$[rbp], zmm0
|
|
|
|
; 480 :
|
|
; 481 : for (size_t k = 0; k < commonK; k++) {
|
|
|
|
00121 48 c7 85 98 02
|
|
00 00 00 00 00
|
|
00 mov QWORD PTR k$1[rbp], 0
|
|
0012c eb 11 jmp SHORT $LN4@double_ker
|
|
$LN2@double_ker:
|
|
0012e 48 8b 85 98 02
|
|
00 00 mov rax, QWORD PTR k$1[rbp]
|
|
00135 48 ff c0 inc rax
|
|
00138 48 89 85 98 02
|
|
00 00 mov QWORD PTR k$1[rbp], rax
|
|
$LN4@double_ker:
|
|
0013f 48 63 45 44 movsxd rax, DWORD PTR commonK$[rbp]
|
|
00143 48 39 85 98 02
|
|
00 00 cmp QWORD PTR k$1[rbp], rax
|
|
0014a 0f 83 cd 02 00
|
|
00 jae $LN3@double_ker
|
|
|
|
; 482 : MAT_KERNEL(double)
|
|
; 483 : const *left_cur = left + GET_INDEX(ansHeight, i, k), // GetKernelAddressUnsafe
|
|
|
|
00150 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
|
|
00153 0f af 45 04 imul eax, DWORD PTR i$[rbp]
|
|
00157 48 98 cdqe
|
|
00159 48 03 85 98 02
|
|
00 00 add rax, QWORD PTR k$1[rbp]
|
|
00160 48 69 c0 80 00
|
|
00 00 imul rax, rax, 128 ; 00000080H
|
|
00167 49 8b 8d 30 0a
|
|
00 00 mov rcx, QWORD PTR left$[r13]
|
|
0016e 48 03 c8 add rcx, rax
|
|
00171 48 8b c1 mov rax, rcx
|
|
00174 48 89 85 b8 02
|
|
00 00 mov QWORD PTR left_cur$2[rbp], rax
|
|
|
|
; 484 : const *right_cur =
|
|
|
|
0017b 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
|
|
0017e 0f af 45 24 imul eax, DWORD PTR j$[rbp]
|
|
00182 48 98 cdqe
|
|
00184 48 03 85 98 02
|
|
00 00 add rax, QWORD PTR k$1[rbp]
|
|
0018b 48 69 c0 80 00
|
|
00 00 imul rax, rax, 128 ; 00000080H
|
|
00192 49 8b 8d 38 0a
|
|
00 00 mov rcx, QWORD PTR right$[r13]
|
|
00199 48 03 c8 add rcx, rax
|
|
0019c 48 8b c1 mov rax, rcx
|
|
0019f 48 89 85 d8 02
|
|
00 00 mov QWORD PTR right_cur$3[rbp], rax
|
|
|
|
; 485 : right + GET_INDEX(ansHeight, j, k); // GetKernelAddressUnsafe
|
|
; 486 :
|
|
; 487 : register __m512d a01 = _mm512_load_pd((double *)&left_cur->f64_z[0]);
|
|
|
|
001a6 b8 40 00 00 00 mov eax, 64 ; 00000040H
|
|
001ab 48 6b c0 00 imul rax, rax, 0
|
|
001af 48 8b 8d b8 02
|
|
00 00 mov rcx, QWORD PTR left_cur$2[rbp]
|
|
001b6 48 03 c8 add rcx, rax
|
|
001b9 48 8b c1 mov rax, rcx
|
|
001bc 62 f1 fd 48 10
|
|
00 vmovupd zmm0, ZMMWORD PTR [rax]
|
|
001c2 62 f1 fd 48 11
|
|
45 0c vmovupd ZMMWORD PTR a01$4[rbp], zmm0
|
|
|
|
; 488 : register __m512d a23 = _mm512_load_pd((double *)&left_cur->f64_z[1]);
|
|
|
|
001c9 b8 40 00 00 00 mov eax, 64 ; 00000040H
|
|
001ce 48 6b c0 01 imul rax, rax, 1
|
|
001d2 48 8b 8d b8 02
|
|
00 00 mov rcx, QWORD PTR left_cur$2[rbp]
|
|
001d9 48 03 c8 add rcx, rax
|
|
001dc 48 8b c1 mov rax, rcx
|
|
001df 62 f1 fd 48 10
|
|
00 vmovupd zmm0, ZMMWORD PTR [rax]
|
|
001e5 62 f1 fd 48 11
|
|
45 0e vmovupd ZMMWORD PTR a23$5[rbp], zmm0
|
|
|
|
; 489 :
|
|
; 490 : register __m512d b01 = _mm512_load_pd((double *)&right_cur->f64_z[0]);
|
|
|
|
001ec b8 40 00 00 00 mov eax, 64 ; 00000040H
|
|
001f1 48 6b c0 00 imul rax, rax, 0
|
|
001f5 48 8b 8d d8 02
|
|
00 00 mov rcx, QWORD PTR right_cur$3[rbp]
|
|
001fc 48 03 c8 add rcx, rax
|
|
001ff 48 8b c1 mov rax, rcx
|
|
00202 62 f1 fd 48 10
|
|
00 vmovupd zmm0, ZMMWORD PTR [rax]
|
|
00208 62 f1 fd 48 11
|
|
45 10 vmovupd ZMMWORD PTR b01$6[rbp], zmm0
|
|
|
|
; 491 : register __m512d b23 = _mm512_load_pd((double *)&right_cur->f64_z[1]);
|
|
|
|
0020f b8 40 00 00 00 mov eax, 64 ; 00000040H
|
|
00214 48 6b c0 01 imul rax, rax, 1
|
|
00218 48 8b 8d d8 02
|
|
00 00 mov rcx, QWORD PTR right_cur$3[rbp]
|
|
0021f 48 03 c8 add rcx, rax
|
|
00222 48 8b c1 mov rax, rcx
|
|
00225 62 f1 fd 48 10
|
|
00 vmovupd zmm0, ZMMWORD PTR [rax]
|
|
0022b 62 f1 fd 48 11
|
|
45 12 vmovupd ZMMWORD PTR b23$7[rbp], zmm0
|
|
|
|
; 492 : b01 = _mm512_permutexvar_pd(b01_shift, b01);
|
|
|
|
00232 62 f1 7e 48 6f
|
|
45 07 vmovdqu32 zmm0, ZMMWORD PTR b01_shift$[rbp]
|
|
00239 62 f2 fd 48 16
|
|
45 10 vpermpd zmm0, zmm0, ZMMWORD PTR b01$6[rbp]
|
|
00240 62 f1 fd 48 11
|
|
45 10 vmovupd ZMMWORD PTR b01$6[rbp], zmm0
|
|
|
|
; 493 : b23 = _mm512_permutexvar_pd(b23_shift, b23);
|
|
|
|
00247 62 f1 7e 48 6f
|
|
45 09 vmovdqu32 zmm0, ZMMWORD PTR b23_shift$[rbp]
|
|
0024e 62 f2 fd 48 16
|
|
45 12 vpermpd zmm0, zmm0, ZMMWORD PTR b23$7[rbp]
|
|
00255 62 f1 fd 48 11
|
|
45 12 vmovupd ZMMWORD PTR b23$7[rbp], zmm0
|
|
|
|
; 494 :
|
|
; 495 : //group 0
|
|
; 496 : register __m512d b01_perm = _mm512_shuffle_pd(b01, b01, _FMA_SELECT(0));
|
|
|
|
0025c 62 f1 fd 48 10
|
|
45 10 vmovupd zmm0, ZMMWORD PTR b01$6[rbp]
|
|
00263 62 f1 fd 48 c6
|
|
45 10 00 vshufpd zmm0, zmm0, ZMMWORD PTR b01$6[rbp], 0
|
|
0026b 62 f1 fd 48 11
|
|
45 14 vmovupd ZMMWORD PTR b01_perm$8[rbp], zmm0
|
|
|
|
; 497 : register __m512d b23_perm = _mm512_shuffle_pd(b23, b23, _FMA_SELECT(0));
|
|
|
|
00272 62 f1 fd 48 10
|
|
45 12 vmovupd zmm0, ZMMWORD PTR b23$7[rbp]
|
|
00279 62 f1 fd 48 c6
|
|
45 12 00 vshufpd zmm0, zmm0, ZMMWORD PTR b23$7[rbp], 0
|
|
00281 62 f1 fd 48 11
|
|
45 16 vmovupd ZMMWORD PTR b23_perm$9[rbp], zmm0
|
|
|
|
; 498 : c01 = _mm512_fmadd_pd(a01, b01_perm, c01);
|
|
|
|
00288 62 f1 fd 48 10
|
|
45 0c vmovupd zmm0, ZMMWORD PTR a01$4[rbp]
|
|
0028f 62 f1 fd 48 10
|
|
4d 14 vmovupd zmm1, ZMMWORD PTR b01_perm$8[rbp]
|
|
00296 62 f2 f5 48 a8
|
|
45 03 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c01$[rbp]
|
|
0029d 62 f1 fd 48 11
|
|
45 03 vmovupd ZMMWORD PTR c01$[rbp], zmm0
|
|
|
|
; 499 : c23 = _mm512_fmadd_pd(a23, b23_perm, c23);
|
|
|
|
002a4 62 f1 fd 48 10
|
|
45 0e vmovupd zmm0, ZMMWORD PTR a23$5[rbp]
|
|
002ab 62 f1 fd 48 10
|
|
4d 16 vmovupd zmm1, ZMMWORD PTR b23_perm$9[rbp]
|
|
002b2 62 f2 f5 48 a8
|
|
45 05 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c23$[rbp]
|
|
002b9 62 f1 fd 48 11
|
|
45 05 vmovupd ZMMWORD PTR c23$[rbp], zmm0
|
|
|
|
; 500 :
|
|
; 501 : //group 2
|
|
; 502 : b01_perm = _mm512_shuffle_pd(b01, b01, _FMA_SELECT(2));
|
|
|
|
002c0 62 f1 fd 48 10
|
|
45 10 vmovupd zmm0, ZMMWORD PTR b01$6[rbp]
|
|
002c7 62 f1 fd 48 c6
|
|
45 10 aa vshufpd zmm0, zmm0, ZMMWORD PTR b01$6[rbp], 170 ; 000000aaH
|
|
002cf 62 f1 fd 48 11
|
|
45 14 vmovupd ZMMWORD PTR b01_perm$8[rbp], zmm0
|
|
|
|
; 503 : b23_perm = _mm512_shuffle_pd(b23, b23, _FMA_SELECT(2));
|
|
|
|
002d6 62 f1 fd 48 10
|
|
45 12 vmovupd zmm0, ZMMWORD PTR b23$7[rbp]
|
|
002dd 62 f1 fd 48 c6
|
|
45 12 aa vshufpd zmm0, zmm0, ZMMWORD PTR b23$7[rbp], 170 ; 000000aaH
|
|
002e5 62 f1 fd 48 11
|
|
45 16 vmovupd ZMMWORD PTR b23_perm$9[rbp], zmm0
|
|
|
|
; 504 : c01 = _mm512_fmadd_pd(a23, b01_perm, c01);
|
|
|
|
002ec 62 f1 fd 48 10
|
|
45 0e vmovupd zmm0, ZMMWORD PTR a23$5[rbp]
|
|
002f3 62 f1 fd 48 10
|
|
4d 14 vmovupd zmm1, ZMMWORD PTR b01_perm$8[rbp]
|
|
002fa 62 f2 f5 48 a8
|
|
45 03 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c01$[rbp]
|
|
00301 62 f1 fd 48 11
|
|
45 03 vmovupd ZMMWORD PTR c01$[rbp], zmm0
|
|
|
|
; 505 : c23 = _mm512_fmadd_pd(a01, b23_perm, c23);
|
|
|
|
00308 62 f1 fd 48 10
|
|
45 0c vmovupd zmm0, ZMMWORD PTR a01$4[rbp]
|
|
0030f 62 f1 fd 48 10
|
|
4d 16 vmovupd zmm1, ZMMWORD PTR b23_perm$9[rbp]
|
|
00316 62 f2 f5 48 a8
|
|
45 05 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c23$[rbp]
|
|
0031d 62 f1 fd 48 11
|
|
45 05 vmovupd ZMMWORD PTR c23$[rbp], zmm0
|
|
|
|
; 506 :
|
|
; 507 : //group 1
|
|
; 508 : register __m512d a12 = _mm512_shuffle_f64x2(a01, a23, 0x21);
|
|
|
|
00324 62 f1 fd 48 10
|
|
45 0c vmovupd zmm0, ZMMWORD PTR a01$4[rbp]
|
|
0032b 62 f3 fd 48 23
|
|
45 0e 21 vshuff64x2 zmm0, zmm0, ZMMWORD PTR a23$5[rbp], 33 ; 00000021H
|
|
00333 62 f1 fd 48 11
|
|
45 18 vmovupd ZMMWORD PTR a12$10[rbp], zmm0
|
|
|
|
; 509 : register __m512d a30 = _mm512_shuffle_f64x2(a01, a23, 0x30);
|
|
|
|
0033a 62 f1 fd 48 10
|
|
45 0c vmovupd zmm0, ZMMWORD PTR a01$4[rbp]
|
|
00341 62 f3 fd 48 23
|
|
45 0e 30 vshuff64x2 zmm0, zmm0, ZMMWORD PTR a23$5[rbp], 48 ; 00000030H
|
|
00349 62 f1 fd 48 11
|
|
45 1a vmovupd ZMMWORD PTR a30$11[rbp], zmm0
|
|
|
|
; 510 : b01_perm = _mm512_shuffle_pd(b01, b01, _FMA_SELECT(1));
|
|
|
|
00350 62 f1 fd 48 10
|
|
45 10 vmovupd zmm0, ZMMWORD PTR b01$6[rbp]
|
|
00357 62 f1 fd 48 c6
|
|
45 10 55 vshufpd zmm0, zmm0, ZMMWORD PTR b01$6[rbp], 85 ; 00000055H
|
|
0035f 62 f1 fd 48 11
|
|
45 14 vmovupd ZMMWORD PTR b01_perm$8[rbp], zmm0
|
|
|
|
; 511 : b23_perm = _mm512_shuffle_pd(b23, b23, _FMA_SELECT(1));
|
|
|
|
00366 62 f1 fd 48 10
|
|
45 12 vmovupd zmm0, ZMMWORD PTR b23$7[rbp]
|
|
0036d 62 f1 fd 48 c6
|
|
45 12 55 vshufpd zmm0, zmm0, ZMMWORD PTR b23$7[rbp], 85 ; 00000055H
|
|
00375 62 f1 fd 48 11
|
|
45 16 vmovupd ZMMWORD PTR b23_perm$9[rbp], zmm0
|
|
|
|
; 512 : c01 = _mm512_fmadd_pd(a12, b01_perm, c01);
|
|
|
|
0037c 62 f1 fd 48 10
|
|
45 18 vmovupd zmm0, ZMMWORD PTR a12$10[rbp]
|
|
00383 62 f1 fd 48 10
|
|
4d 14 vmovupd zmm1, ZMMWORD PTR b01_perm$8[rbp]
|
|
0038a 62 f2 f5 48 a8
|
|
45 03 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c01$[rbp]
|
|
00391 62 f1 fd 48 11
|
|
45 03 vmovupd ZMMWORD PTR c01$[rbp], zmm0
|
|
|
|
; 513 : c23 = _mm512_fmadd_pd(a30, b23_perm, c23);
|
|
|
|
00398 62 f1 fd 48 10
|
|
45 1a vmovupd zmm0, ZMMWORD PTR a30$11[rbp]
|
|
0039f 62 f1 fd 48 10
|
|
4d 16 vmovupd zmm1, ZMMWORD PTR b23_perm$9[rbp]
|
|
003a6 62 f2 f5 48 a8
|
|
45 05 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c23$[rbp]
|
|
003ad 62 f1 fd 48 11
|
|
45 05 vmovupd ZMMWORD PTR c23$[rbp], zmm0
|
|
|
|
; 514 :
|
|
; 515 : //group 3
|
|
; 516 : b01_perm = _mm512_shuffle_pd(b01, b01, _FMA_SELECT(3));
|
|
|
|
003b4 62 f1 fd 48 10
|
|
45 10 vmovupd zmm0, ZMMWORD PTR b01$6[rbp]
|
|
003bb 62 f1 fd 48 c6
|
|
45 10 ff vshufpd zmm0, zmm0, ZMMWORD PTR b01$6[rbp], 255 ; 000000ffH
|
|
003c3 62 f1 fd 48 11
|
|
45 14 vmovupd ZMMWORD PTR b01_perm$8[rbp], zmm0
|
|
|
|
; 517 : b23_perm = _mm512_shuffle_pd(b23, b23, _FMA_SELECT(3));
|
|
|
|
003ca 62 f1 fd 48 10
|
|
45 12 vmovupd zmm0, ZMMWORD PTR b23$7[rbp]
|
|
003d1 62 f1 fd 48 c6
|
|
45 12 ff vshufpd zmm0, zmm0, ZMMWORD PTR b23$7[rbp], 255 ; 000000ffH
|
|
003d9 62 f1 fd 48 11
|
|
45 16 vmovupd ZMMWORD PTR b23_perm$9[rbp], zmm0
|
|
|
|
; 518 : c01 = _mm512_fmadd_pd(a30, b01_perm, c01);
|
|
|
|
003e0 62 f1 fd 48 10
|
|
45 1a vmovupd zmm0, ZMMWORD PTR a30$11[rbp]
|
|
003e7 62 f1 fd 48 10
|
|
4d 14 vmovupd zmm1, ZMMWORD PTR b01_perm$8[rbp]
|
|
003ee 62 f2 f5 48 a8
|
|
45 03 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c01$[rbp]
|
|
003f5 62 f1 fd 48 11
|
|
45 03 vmovupd ZMMWORD PTR c01$[rbp], zmm0
|
|
|
|
; 519 : c23 = _mm512_fmadd_pd(a12, b23_perm, c23);
|
|
|
|
003fc 62 f1 fd 48 10
|
|
45 18 vmovupd zmm0, ZMMWORD PTR a12$10[rbp]
|
|
00403 62 f1 fd 48 10
|
|
4d 16 vmovupd zmm1, ZMMWORD PTR b23_perm$9[rbp]
|
|
0040a 62 f2 f5 48 a8
|
|
45 05 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c23$[rbp]
|
|
00411 62 f1 fd 48 11
|
|
45 05 vmovupd ZMMWORD PTR c23$[rbp], zmm0
|
|
|
|
; 520 : }
|
|
|
|
00418 e9 11 fd ff ff jmp $LN2@double_ker
|
|
$LN3@double_ker:
|
|
|
|
; 521 : _mm512_store_pd((double *)&ans_cur->f64_z[0], c01);
|
|
|
|
0041d b8 40 00 00 00 mov eax, 64 ; 00000040H
|
|
00422 48 6b c0 00 imul rax, rax, 0
|
|
00426 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
0042d 48 03 c8 add rcx, rax
|
|
00430 48 8b c1 mov rax, rcx
|
|
00433 62 f1 fd 48 10
|
|
45 03 vmovupd zmm0, ZMMWORD PTR c01$[rbp]
|
|
0043a 62 f1 fd 48 11
|
|
00 vmovupd ZMMWORD PTR [rax], zmm0
|
|
|
|
; 522 : _mm512_store_pd((double *)&ans_cur->f64_z[1], c23);
|
|
|
|
00440 b8 40 00 00 00 mov eax, 64 ; 00000040H
|
|
00445 48 6b c0 01 imul rax, rax, 1
|
|
00449 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
00450 48 03 c8 add rcx, rax
|
|
00453 48 8b c1 mov rax, rcx
|
|
00456 62 f1 fd 48 10
|
|
45 05 vmovupd zmm0, ZMMWORD PTR c23$[rbp]
|
|
0045d 62 f1 fd 48 11
|
|
00 vmovupd ZMMWORD PTR [rax], zmm0
|
|
|
|
; 523 : }
|
|
|
|
00463 49 8d a5 10 0a
|
|
00 00 lea rsp, QWORD PTR [r13+2576]
|
|
0046a 5f pop rdi
|
|
0046b 5d pop rbp
|
|
0046c 41 5d pop r13
|
|
0046e c3 ret 0
|
|
double_kernel_tile_fma_512 ENDP
|
|
_TEXT ENDS
|
|
; Function compile flags: /Odtp /RTCsu /ZI
|
|
; File D:\platform-dev\StgSharp.Native\sn-src\m.fma_tile.x86.c
|
|
; COMDAT double_kernel_tile_fma_avx_fma
|
|
_TEXT SEGMENT
|
|
i$ = 4
|
|
j$ = 36
|
|
commonK$ = 68
|
|
ansHeight$ = 100
|
|
ans_cur$ = 136
|
|
c0$ = 192
|
|
c1$ = 256
|
|
c2$ = 320
|
|
c3$ = 384
|
|
bcol$ = 448
|
|
k$1 = 504
|
|
right_cur$2 = 536
|
|
left_cur$3 = 568
|
|
a0$4 = 608
|
|
a1$5 = 672
|
|
a2$6 = 736
|
|
a3$7 = 800
|
|
left$ = 1296
|
|
right$ = 1304
|
|
ans$ = 1312
|
|
enumeration$ = 1320
|
|
double_kernel_tile_fma_avx_fma PROC ; COMDAT
|
|
|
|
; 401 : {
|
|
|
|
$LN6:
|
|
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 10 05
|
|
00 00 sub rsp, 1296 ; 00000510H
|
|
0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
|
|
00024 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
|
|
00029 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
|
|
0002d 48 8d 0d 00 00
|
|
00 00 lea rcx, OFFSET FLAT:__31D20E98_m@fma_tile@x86@c
|
|
00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
|
|
00039 90 npad 1
|
|
|
|
; 402 : int i = enumeration->m128_i32[0];
|
|
|
|
0003a b8 04 00 00 00 mov eax, 4
|
|
0003f 48 6b c0 00 imul rax, rax, 0
|
|
00043 49 8b 8d 28 05
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
0004a 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
0004d 89 45 04 mov DWORD PTR i$[rbp], eax
|
|
|
|
; 403 : int j = enumeration->m128_i32[1];
|
|
|
|
00050 b8 04 00 00 00 mov eax, 4
|
|
00055 48 6b c0 01 imul rax, rax, 1
|
|
00059 49 8b 8d 28 05
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
00060 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
00063 89 45 24 mov DWORD PTR j$[rbp], eax
|
|
|
|
; 404 : int commonK = enumeration->m128_i32[2];
|
|
|
|
00066 b8 04 00 00 00 mov eax, 4
|
|
0006b 48 6b c0 02 imul rax, rax, 2
|
|
0006f 49 8b 8d 28 05
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
00076 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
00079 89 45 44 mov DWORD PTR commonK$[rbp], eax
|
|
|
|
; 405 : int ansHeight = enumeration->m128_i32[3];
|
|
|
|
0007c b8 04 00 00 00 mov eax, 4
|
|
00081 48 6b c0 03 imul rax, rax, 3
|
|
00085 49 8b 8d 28 05
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
0008c 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
0008f 89 45 64 mov DWORD PTR ansHeight$[rbp], eax
|
|
|
|
; 406 :
|
|
; 407 : MAT_KERNEL(double)
|
|
; 408 : const *ans_cur = ans + GET_INDEX(ansHeight, i, j); // GetKernelAddressUnsafe
|
|
|
|
00092 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
|
|
00095 0f af 45 04 imul eax, DWORD PTR i$[rbp]
|
|
00099 03 45 24 add eax, DWORD PTR j$[rbp]
|
|
0009c 48 98 cdqe
|
|
0009e 48 69 c0 80 00
|
|
00 00 imul rax, rax, 128 ; 00000080H
|
|
000a5 49 8b 8d 20 05
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
000ac 48 03 c8 add rcx, rax
|
|
000af 48 8b c1 mov rax, rcx
|
|
000b2 48 89 85 88 00
|
|
00 00 mov QWORD PTR ans_cur$[rbp], rax
|
|
|
|
; 409 :
|
|
; 410 : register __m256d c0 = _mm256_load_pd((double *)&ans_cur->f64_y[0]);
|
|
|
|
000b9 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
000be 48 6b c0 00 imul rax, rax, 0
|
|
000c2 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
000c9 48 03 c8 add rcx, rax
|
|
000cc 48 8b c1 mov rax, rcx
|
|
000cf c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
000d3 c5 fd 11 85 c0
|
|
00 00 00 vmovupd YMMWORD PTR c0$[rbp], ymm0
|
|
|
|
; 411 : register __m256d c1 = _mm256_load_pd((double *)&ans_cur->f64_y[1]);
|
|
|
|
000db b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
000e0 48 6b c0 01 imul rax, rax, 1
|
|
000e4 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
000eb 48 03 c8 add rcx, rax
|
|
000ee 48 8b c1 mov rax, rcx
|
|
000f1 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
000f5 c5 fd 11 85 00
|
|
01 00 00 vmovupd YMMWORD PTR c1$[rbp], ymm0
|
|
|
|
; 412 : register __m256d c2 = _mm256_load_pd((double *)&ans_cur->f64_y[2]);
|
|
|
|
000fd b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00102 48 6b c0 02 imul rax, rax, 2
|
|
00106 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
0010d 48 03 c8 add rcx, rax
|
|
00110 48 8b c1 mov rax, rcx
|
|
00113 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
00117 c5 fd 11 85 40
|
|
01 00 00 vmovupd YMMWORD PTR c2$[rbp], ymm0
|
|
|
|
; 413 : register __m256d c3 = _mm256_load_pd((double *)&ans_cur->f64_y[3]);
|
|
|
|
0011f b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00124 48 6b c0 03 imul rax, rax, 3
|
|
00128 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
0012f 48 03 c8 add rcx, rax
|
|
00132 48 8b c1 mov rax, rcx
|
|
00135 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
00139 c5 fd 11 85 80
|
|
01 00 00 vmovupd YMMWORD PTR c3$[rbp], ymm0
|
|
|
|
; 414 : register __m256d bcol;
|
|
; 415 :
|
|
; 416 : for (size_t k = 0; k < commonK; k++) {
|
|
|
|
00141 48 c7 85 f8 01
|
|
00 00 00 00 00
|
|
00 mov QWORD PTR k$1[rbp], 0
|
|
0014c eb 11 jmp SHORT $LN4@double_ker
|
|
$LN2@double_ker:
|
|
0014e 48 8b 85 f8 01
|
|
00 00 mov rax, QWORD PTR k$1[rbp]
|
|
00155 48 ff c0 inc rax
|
|
00158 48 89 85 f8 01
|
|
00 00 mov QWORD PTR k$1[rbp], rax
|
|
$LN4@double_ker:
|
|
0015f 48 63 45 44 movsxd rax, DWORD PTR commonK$[rbp]
|
|
00163 48 39 85 f8 01
|
|
00 00 cmp QWORD PTR k$1[rbp], rax
|
|
0016a 0f 83 de 03 00
|
|
00 jae $LN3@double_ker
|
|
|
|
; 417 : MAT_KERNEL(double)
|
|
; 418 : const *right_cur = right + GET_INDEX(commonK, i, k), // GetKernelAddressUnsafe
|
|
|
|
00170 8b 45 44 mov eax, DWORD PTR commonK$[rbp]
|
|
00173 0f af 45 04 imul eax, DWORD PTR i$[rbp]
|
|
00177 48 98 cdqe
|
|
00179 48 03 85 f8 01
|
|
00 00 add rax, QWORD PTR k$1[rbp]
|
|
00180 48 69 c0 80 00
|
|
00 00 imul rax, rax, 128 ; 00000080H
|
|
00187 49 8b 8d 18 05
|
|
00 00 mov rcx, QWORD PTR right$[r13]
|
|
0018e 48 03 c8 add rcx, rax
|
|
00191 48 8b c1 mov rax, rcx
|
|
00194 48 89 85 18 02
|
|
00 00 mov QWORD PTR right_cur$2[rbp], rax
|
|
|
|
; 419 : const *left_cur =
|
|
|
|
0019b 48 63 45 64 movsxd rax, DWORD PTR ansHeight$[rbp]
|
|
0019f 48 0f af 85 f8
|
|
01 00 00 imul rax, QWORD PTR k$1[rbp]
|
|
001a7 48 63 4d 24 movsxd rcx, DWORD PTR j$[rbp]
|
|
001ab 48 03 c1 add rax, rcx
|
|
001ae 48 69 c0 80 00
|
|
00 00 imul rax, rax, 128 ; 00000080H
|
|
001b5 49 8b 8d 10 05
|
|
00 00 mov rcx, QWORD PTR left$[r13]
|
|
001bc 48 03 c8 add rcx, rax
|
|
001bf 48 8b c1 mov rax, rcx
|
|
001c2 48 89 85 38 02
|
|
00 00 mov QWORD PTR left_cur$3[rbp], rax
|
|
|
|
; 420 : left + GET_INDEX(ansHeight, k, j); // GetKernelAddressUnsafe
|
|
; 421 :
|
|
; 422 : const __m256d a0 = _mm256_load_pd((double *)&left_cur->f64_y[0]);
|
|
|
|
001c9 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
001ce 48 6b c0 00 imul rax, rax, 0
|
|
001d2 48 8b 8d 38 02
|
|
00 00 mov rcx, QWORD PTR left_cur$3[rbp]
|
|
001d9 48 03 c8 add rcx, rax
|
|
001dc 48 8b c1 mov rax, rcx
|
|
001df c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
001e3 c5 fd 11 85 60
|
|
02 00 00 vmovupd YMMWORD PTR a0$4[rbp], ymm0
|
|
|
|
; 423 : const __m256d a1 = _mm256_load_pd((double *)&left_cur->f64_y[1]);
|
|
|
|
001eb b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
001f0 48 6b c0 01 imul rax, rax, 1
|
|
001f4 48 8b 8d 38 02
|
|
00 00 mov rcx, QWORD PTR left_cur$3[rbp]
|
|
001fb 48 03 c8 add rcx, rax
|
|
001fe 48 8b c1 mov rax, rcx
|
|
00201 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
00205 c5 fd 11 85 a0
|
|
02 00 00 vmovupd YMMWORD PTR a1$5[rbp], ymm0
|
|
|
|
; 424 : const __m256d a2 = _mm256_load_pd((double *)&left_cur->f64_y[2]);
|
|
|
|
0020d b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00212 48 6b c0 02 imul rax, rax, 2
|
|
00216 48 8b 8d 38 02
|
|
00 00 mov rcx, QWORD PTR left_cur$3[rbp]
|
|
0021d 48 03 c8 add rcx, rax
|
|
00220 48 8b c1 mov rax, rcx
|
|
00223 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
00227 c5 fd 11 85 e0
|
|
02 00 00 vmovupd YMMWORD PTR a2$6[rbp], ymm0
|
|
|
|
; 425 : const __m256d a3 = _mm256_load_pd((double *)&left_cur->f64_y[3]);
|
|
|
|
0022f b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00234 48 6b c0 03 imul rax, rax, 3
|
|
00238 48 8b 8d 38 02
|
|
00 00 mov rcx, QWORD PTR left_cur$3[rbp]
|
|
0023f 48 03 c8 add rcx, rax
|
|
00242 48 8b c1 mov rax, rcx
|
|
00245 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
00249 c5 fd 11 85 20
|
|
03 00 00 vmovupd YMMWORD PTR a3$7[rbp], ymm0
|
|
|
|
; 426 :
|
|
; 427 : /* Column 0 */
|
|
; 428 : bcol = _mm256_load_pd((double *)&right_cur->f64_y[0]);
|
|
|
|
00251 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00256 48 6b c0 00 imul rax, rax, 0
|
|
0025a 48 8b 8d 18 02
|
|
00 00 mov rcx, QWORD PTR right_cur$2[rbp]
|
|
00261 48 03 c8 add rcx, rax
|
|
00264 48 8b c1 mov rax, rcx
|
|
00267 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
0026b c5 fd 11 85 c0
|
|
01 00 00 vmovupd YMMWORD PTR bcol$[rbp], ymm0
|
|
|
|
; 429 : c0 = _mm256_fmadd_pd(a0, _mm256_permute4x64_pd(bcol, _FMA_SELECT(0)), c0);
|
|
|
|
00273 c4 e3 fd 01 85
|
|
c0 01 00 00 00 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 0
|
|
0027d c5 fd 10 8d 60
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a0$4[rbp]
|
|
00285 c4 e2 fd a8 8d
|
|
c0 00 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c0$[rbp]
|
|
0028e c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
00292 c5 fd 11 85 c0
|
|
00 00 00 vmovupd YMMWORD PTR c0$[rbp], ymm0
|
|
|
|
; 430 : c0 = _mm256_fmadd_pd(a1, _mm256_permute4x64_pd(bcol, _FMA_SELECT(1)), c0);
|
|
|
|
0029a c4 e3 fd 01 85
|
|
c0 01 00 00 55 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 85 ; 00000055H
|
|
002a4 c5 fd 10 8d a0
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a1$5[rbp]
|
|
002ac c4 e2 fd a8 8d
|
|
c0 00 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c0$[rbp]
|
|
002b5 c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
002b9 c5 fd 11 85 c0
|
|
00 00 00 vmovupd YMMWORD PTR c0$[rbp], ymm0
|
|
|
|
; 431 : c0 = _mm256_fmadd_pd(a2, _mm256_permute4x64_pd(bcol, _FMA_SELECT(2)), c0);
|
|
|
|
002c1 c4 e3 fd 01 85
|
|
c0 01 00 00 aa vpermpd ymm0, YMMWORD PTR bcol$[rbp], 170 ; 000000aaH
|
|
002cb c5 fd 10 8d e0
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a2$6[rbp]
|
|
002d3 c4 e2 fd a8 8d
|
|
c0 00 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c0$[rbp]
|
|
002dc c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
002e0 c5 fd 11 85 c0
|
|
00 00 00 vmovupd YMMWORD PTR c0$[rbp], ymm0
|
|
|
|
; 432 : c0 = _mm256_fmadd_pd(a3, _mm256_permute4x64_pd(bcol, _FMA_SELECT(3)), c0);
|
|
|
|
002e8 c4 e3 fd 01 85
|
|
c0 01 00 00 ff vpermpd ymm0, YMMWORD PTR bcol$[rbp], 255 ; 000000ffH
|
|
002f2 c5 fd 10 8d 20
|
|
03 00 00 vmovupd ymm1, YMMWORD PTR a3$7[rbp]
|
|
002fa c4 e2 fd a8 8d
|
|
c0 00 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c0$[rbp]
|
|
00303 c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
00307 c5 fd 11 85 c0
|
|
00 00 00 vmovupd YMMWORD PTR c0$[rbp], ymm0
|
|
|
|
; 433 :
|
|
; 434 : /* Column 1 */
|
|
; 435 : bcol = _mm256_load_pd((double *)&right_cur->f64_y[1]);
|
|
|
|
0030f b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00314 48 6b c0 01 imul rax, rax, 1
|
|
00318 48 8b 8d 18 02
|
|
00 00 mov rcx, QWORD PTR right_cur$2[rbp]
|
|
0031f 48 03 c8 add rcx, rax
|
|
00322 48 8b c1 mov rax, rcx
|
|
00325 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
00329 c5 fd 11 85 c0
|
|
01 00 00 vmovupd YMMWORD PTR bcol$[rbp], ymm0
|
|
|
|
; 436 : c1 = _mm256_fmadd_pd(a0, _mm256_permute4x64_pd(bcol, _FMA_SELECT(0)), c1);
|
|
|
|
00331 c4 e3 fd 01 85
|
|
c0 01 00 00 00 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 0
|
|
0033b c5 fd 10 8d 60
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a0$4[rbp]
|
|
00343 c4 e2 fd a8 8d
|
|
00 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c1$[rbp]
|
|
0034c c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
00350 c5 fd 11 85 00
|
|
01 00 00 vmovupd YMMWORD PTR c1$[rbp], ymm0
|
|
|
|
; 437 : c1 = _mm256_fmadd_pd(a1, _mm256_permute4x64_pd(bcol, _FMA_SELECT(1)), c1);
|
|
|
|
00358 c4 e3 fd 01 85
|
|
c0 01 00 00 55 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 85 ; 00000055H
|
|
00362 c5 fd 10 8d a0
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a1$5[rbp]
|
|
0036a c4 e2 fd a8 8d
|
|
00 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c1$[rbp]
|
|
00373 c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
00377 c5 fd 11 85 00
|
|
01 00 00 vmovupd YMMWORD PTR c1$[rbp], ymm0
|
|
|
|
; 438 : c1 = _mm256_fmadd_pd(a2, _mm256_permute4x64_pd(bcol, _FMA_SELECT(2)), c1);
|
|
|
|
0037f c4 e3 fd 01 85
|
|
c0 01 00 00 aa vpermpd ymm0, YMMWORD PTR bcol$[rbp], 170 ; 000000aaH
|
|
00389 c5 fd 10 8d e0
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a2$6[rbp]
|
|
00391 c4 e2 fd a8 8d
|
|
00 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c1$[rbp]
|
|
0039a c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
0039e c5 fd 11 85 00
|
|
01 00 00 vmovupd YMMWORD PTR c1$[rbp], ymm0
|
|
|
|
; 439 : c1 = _mm256_fmadd_pd(a3, _mm256_permute4x64_pd(bcol, _FMA_SELECT(3)), c1);
|
|
|
|
003a6 c4 e3 fd 01 85
|
|
c0 01 00 00 ff vpermpd ymm0, YMMWORD PTR bcol$[rbp], 255 ; 000000ffH
|
|
003b0 c5 fd 10 8d 20
|
|
03 00 00 vmovupd ymm1, YMMWORD PTR a3$7[rbp]
|
|
003b8 c4 e2 fd a8 8d
|
|
00 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c1$[rbp]
|
|
003c1 c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
003c5 c5 fd 11 85 00
|
|
01 00 00 vmovupd YMMWORD PTR c1$[rbp], ymm0
|
|
|
|
; 440 :
|
|
; 441 : /* Column 2 */
|
|
; 442 : bcol = _mm256_load_pd((double *)&right_cur->f64_y[2]);
|
|
|
|
003cd b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
003d2 48 6b c0 02 imul rax, rax, 2
|
|
003d6 48 8b 8d 18 02
|
|
00 00 mov rcx, QWORD PTR right_cur$2[rbp]
|
|
003dd 48 03 c8 add rcx, rax
|
|
003e0 48 8b c1 mov rax, rcx
|
|
003e3 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
003e7 c5 fd 11 85 c0
|
|
01 00 00 vmovupd YMMWORD PTR bcol$[rbp], ymm0
|
|
|
|
; 443 : c2 = _mm256_fmadd_pd(a0, _mm256_permute4x64_pd(bcol, _FMA_SELECT(0)), c2);
|
|
|
|
003ef c4 e3 fd 01 85
|
|
c0 01 00 00 00 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 0
|
|
003f9 c5 fd 10 8d 60
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a0$4[rbp]
|
|
00401 c4 e2 fd a8 8d
|
|
40 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c2$[rbp]
|
|
0040a c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
0040e c5 fd 11 85 40
|
|
01 00 00 vmovupd YMMWORD PTR c2$[rbp], ymm0
|
|
|
|
; 444 : c2 = _mm256_fmadd_pd(a1, _mm256_permute4x64_pd(bcol, _FMA_SELECT(1)), c2);
|
|
|
|
00416 c4 e3 fd 01 85
|
|
c0 01 00 00 55 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 85 ; 00000055H
|
|
00420 c5 fd 10 8d a0
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a1$5[rbp]
|
|
00428 c4 e2 fd a8 8d
|
|
40 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c2$[rbp]
|
|
00431 c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
00435 c5 fd 11 85 40
|
|
01 00 00 vmovupd YMMWORD PTR c2$[rbp], ymm0
|
|
|
|
; 445 : c2 = _mm256_fmadd_pd(a2, _mm256_permute4x64_pd(bcol, _FMA_SELECT(2)), c2);
|
|
|
|
0043d c4 e3 fd 01 85
|
|
c0 01 00 00 aa vpermpd ymm0, YMMWORD PTR bcol$[rbp], 170 ; 000000aaH
|
|
00447 c5 fd 10 8d e0
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a2$6[rbp]
|
|
0044f c4 e2 fd a8 8d
|
|
40 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c2$[rbp]
|
|
00458 c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
0045c c5 fd 11 85 40
|
|
01 00 00 vmovupd YMMWORD PTR c2$[rbp], ymm0
|
|
|
|
; 446 : c2 = _mm256_fmadd_pd(a3, _mm256_permute4x64_pd(bcol, _FMA_SELECT(3)), c2);
|
|
|
|
00464 c4 e3 fd 01 85
|
|
c0 01 00 00 ff vpermpd ymm0, YMMWORD PTR bcol$[rbp], 255 ; 000000ffH
|
|
0046e c5 fd 10 8d 20
|
|
03 00 00 vmovupd ymm1, YMMWORD PTR a3$7[rbp]
|
|
00476 c4 e2 fd a8 8d
|
|
40 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c2$[rbp]
|
|
0047f c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
00483 c5 fd 11 85 40
|
|
01 00 00 vmovupd YMMWORD PTR c2$[rbp], ymm0
|
|
|
|
; 447 :
|
|
; 448 : /* Column 3 */
|
|
; 449 : bcol = _mm256_load_pd((double *)&right_cur->f64_y[3]);
|
|
|
|
0048b b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00490 48 6b c0 03 imul rax, rax, 3
|
|
00494 48 8b 8d 18 02
|
|
00 00 mov rcx, QWORD PTR right_cur$2[rbp]
|
|
0049b 48 03 c8 add rcx, rax
|
|
0049e 48 8b c1 mov rax, rcx
|
|
004a1 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
004a5 c5 fd 11 85 c0
|
|
01 00 00 vmovupd YMMWORD PTR bcol$[rbp], ymm0
|
|
|
|
; 450 : c3 = _mm256_fmadd_pd(a0, _mm256_permute4x64_pd(bcol, _FMA_SELECT(0)), c3);
|
|
|
|
004ad c4 e3 fd 01 85
|
|
c0 01 00 00 00 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 0
|
|
004b7 c5 fd 10 8d 60
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a0$4[rbp]
|
|
004bf c4 e2 fd a8 8d
|
|
80 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c3$[rbp]
|
|
004c8 c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
004cc c5 fd 11 85 80
|
|
01 00 00 vmovupd YMMWORD PTR c3$[rbp], ymm0
|
|
|
|
; 451 : c3 = _mm256_fmadd_pd(a1, _mm256_permute4x64_pd(bcol, _FMA_SELECT(1)), c3);
|
|
|
|
004d4 c4 e3 fd 01 85
|
|
c0 01 00 00 55 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 85 ; 00000055H
|
|
004de c5 fd 10 8d a0
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a1$5[rbp]
|
|
004e6 c4 e2 fd a8 8d
|
|
80 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c3$[rbp]
|
|
004ef c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
004f3 c5 fd 11 85 80
|
|
01 00 00 vmovupd YMMWORD PTR c3$[rbp], ymm0
|
|
|
|
; 452 : c3 = _mm256_fmadd_pd(a2, _mm256_permute4x64_pd(bcol, _FMA_SELECT(2)), c3);
|
|
|
|
004fb c4 e3 fd 01 85
|
|
c0 01 00 00 aa vpermpd ymm0, YMMWORD PTR bcol$[rbp], 170 ; 000000aaH
|
|
00505 c5 fd 10 8d e0
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a2$6[rbp]
|
|
0050d c4 e2 fd a8 8d
|
|
80 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c3$[rbp]
|
|
00516 c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
0051a c5 fd 11 85 80
|
|
01 00 00 vmovupd YMMWORD PTR c3$[rbp], ymm0
|
|
|
|
; 453 : c3 = _mm256_fmadd_pd(a3, _mm256_permute4x64_pd(bcol, _FMA_SELECT(3)), c3);
|
|
|
|
00522 c4 e3 fd 01 85
|
|
c0 01 00 00 ff vpermpd ymm0, YMMWORD PTR bcol$[rbp], 255 ; 000000ffH
|
|
0052c c5 fd 10 8d 20
|
|
03 00 00 vmovupd ymm1, YMMWORD PTR a3$7[rbp]
|
|
00534 c4 e2 fd a8 8d
|
|
80 01 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR c3$[rbp]
|
|
0053d c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
00541 c5 fd 11 85 80
|
|
01 00 00 vmovupd YMMWORD PTR c3$[rbp], ymm0
|
|
|
|
; 454 : }
|
|
|
|
00549 e9 00 fc ff ff jmp $LN2@double_ker
|
|
$LN3@double_ker:
|
|
|
|
; 455 :
|
|
; 456 : _mm256_store_pd((double *)&ans_cur->f64_y[0], c0);
|
|
|
|
0054e b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00553 48 6b c0 00 imul rax, rax, 0
|
|
00557 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
0055e 48 03 c8 add rcx, rax
|
|
00561 48 8b c1 mov rax, rcx
|
|
00564 c5 fd 10 85 c0
|
|
00 00 00 vmovupd ymm0, YMMWORD PTR c0$[rbp]
|
|
0056c c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
|
|
|
|
; 457 : _mm256_store_pd((double *)&ans_cur->f64_y[1], c1);
|
|
|
|
00570 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00575 48 6b c0 01 imul rax, rax, 1
|
|
00579 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
00580 48 03 c8 add rcx, rax
|
|
00583 48 8b c1 mov rax, rcx
|
|
00586 c5 fd 10 85 00
|
|
01 00 00 vmovupd ymm0, YMMWORD PTR c1$[rbp]
|
|
0058e c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
|
|
|
|
; 458 : _mm256_store_pd((double *)&ans_cur->f64_y[2], c2);
|
|
|
|
00592 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00597 48 6b c0 02 imul rax, rax, 2
|
|
0059b 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
005a2 48 03 c8 add rcx, rax
|
|
005a5 48 8b c1 mov rax, rcx
|
|
005a8 c5 fd 10 85 40
|
|
01 00 00 vmovupd ymm0, YMMWORD PTR c2$[rbp]
|
|
005b0 c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
|
|
|
|
; 459 : _mm256_store_pd((double *)&ans_cur->f64_y[3], c3);
|
|
|
|
005b4 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
005b9 48 6b c0 03 imul rax, rax, 3
|
|
005bd 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
005c4 48 03 c8 add rcx, rax
|
|
005c7 48 8b c1 mov rax, rcx
|
|
005ca c5 fd 10 85 80
|
|
01 00 00 vmovupd ymm0, YMMWORD PTR c3$[rbp]
|
|
005d2 c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
|
|
|
|
; 460 : }
|
|
|
|
005d6 49 8d a5 f0 04
|
|
00 00 lea rsp, QWORD PTR [r13+1264]
|
|
005dd 5f pop rdi
|
|
005de 5d pop rbp
|
|
005df 41 5d pop r13
|
|
005e1 c3 ret 0
|
|
double_kernel_tile_fma_avx_fma ENDP
|
|
_TEXT ENDS
|
|
; Function compile flags: /Odtp /RTCsu /ZI
|
|
; File D:\platform-dev\StgSharp.Native\sn-src\m.fma_tile.x86.c
|
|
; COMDAT double_kernel_tile_fma_avx
|
|
_TEXT SEGMENT
|
|
i$ = 4
|
|
j$ = 36
|
|
commonK$ = 68
|
|
ansHeight$ = 100
|
|
ans_cur$ = 136
|
|
c0$ = 192
|
|
c1$ = 256
|
|
c2$ = 320
|
|
c3$ = 384
|
|
bcol$ = 448
|
|
k$1 = 504
|
|
right_cur$2 = 536
|
|
left_cur$3 = 568
|
|
a0$4 = 608
|
|
a1$5 = 672
|
|
a2$6 = 736
|
|
a3$7 = 800
|
|
left$ = 1296
|
|
right$ = 1304
|
|
ans$ = 1312
|
|
enumeration$ = 1320
|
|
double_kernel_tile_fma_avx PROC ; COMDAT
|
|
|
|
; 323 : {
|
|
|
|
$LN6:
|
|
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 10 05
|
|
00 00 sub rsp, 1296 ; 00000510H
|
|
0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
|
|
00024 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
|
|
00029 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
|
|
0002d 48 8d 0d 00 00
|
|
00 00 lea rcx, OFFSET FLAT:__31D20E98_m@fma_tile@x86@c
|
|
00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
|
|
00039 90 npad 1
|
|
|
|
; 324 : int i = enumeration->m128_i32[0];
|
|
|
|
0003a b8 04 00 00 00 mov eax, 4
|
|
0003f 48 6b c0 00 imul rax, rax, 0
|
|
00043 49 8b 8d 28 05
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
0004a 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
0004d 89 45 04 mov DWORD PTR i$[rbp], eax
|
|
|
|
; 325 : int j = enumeration->m128_i32[1];
|
|
|
|
00050 b8 04 00 00 00 mov eax, 4
|
|
00055 48 6b c0 01 imul rax, rax, 1
|
|
00059 49 8b 8d 28 05
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
00060 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
00063 89 45 24 mov DWORD PTR j$[rbp], eax
|
|
|
|
; 326 : int commonK = enumeration->m128_i32[2];
|
|
|
|
00066 b8 04 00 00 00 mov eax, 4
|
|
0006b 48 6b c0 02 imul rax, rax, 2
|
|
0006f 49 8b 8d 28 05
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
00076 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
00079 89 45 44 mov DWORD PTR commonK$[rbp], eax
|
|
|
|
; 327 : int ansHeight = enumeration->m128_i32[3];
|
|
|
|
0007c b8 04 00 00 00 mov eax, 4
|
|
00081 48 6b c0 03 imul rax, rax, 3
|
|
00085 49 8b 8d 28 05
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
0008c 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
0008f 89 45 64 mov DWORD PTR ansHeight$[rbp], eax
|
|
|
|
; 328 :
|
|
; 329 : MAT_KERNEL(double)
|
|
; 330 : const *ans_cur = ans + GET_INDEX(ansHeight, i, j); // GetKernelAddressUnsafe
|
|
|
|
00092 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
|
|
00095 0f af 45 04 imul eax, DWORD PTR i$[rbp]
|
|
00099 03 45 24 add eax, DWORD PTR j$[rbp]
|
|
0009c 48 98 cdqe
|
|
0009e 48 69 c0 80 00
|
|
00 00 imul rax, rax, 128 ; 00000080H
|
|
000a5 49 8b 8d 20 05
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
000ac 48 03 c8 add rcx, rax
|
|
000af 48 8b c1 mov rax, rcx
|
|
000b2 48 89 85 88 00
|
|
00 00 mov QWORD PTR ans_cur$[rbp], rax
|
|
|
|
; 331 :
|
|
; 332 : register __m256d c0 = _mm256_load_pd((double *)&ans_cur->f64_y[0]);
|
|
|
|
000b9 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
000be 48 6b c0 00 imul rax, rax, 0
|
|
000c2 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
000c9 48 03 c8 add rcx, rax
|
|
000cc 48 8b c1 mov rax, rcx
|
|
000cf c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
000d3 c5 fd 11 85 c0
|
|
00 00 00 vmovupd YMMWORD PTR c0$[rbp], ymm0
|
|
|
|
; 333 : register __m256d c1 = _mm256_load_pd((double *)&ans_cur->f64_y[1]);
|
|
|
|
000db b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
000e0 48 6b c0 01 imul rax, rax, 1
|
|
000e4 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
000eb 48 03 c8 add rcx, rax
|
|
000ee 48 8b c1 mov rax, rcx
|
|
000f1 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
000f5 c5 fd 11 85 00
|
|
01 00 00 vmovupd YMMWORD PTR c1$[rbp], ymm0
|
|
|
|
; 334 : register __m256d c2 = _mm256_load_pd((double *)&ans_cur->f64_y[2]);
|
|
|
|
000fd b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00102 48 6b c0 02 imul rax, rax, 2
|
|
00106 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
0010d 48 03 c8 add rcx, rax
|
|
00110 48 8b c1 mov rax, rcx
|
|
00113 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
00117 c5 fd 11 85 40
|
|
01 00 00 vmovupd YMMWORD PTR c2$[rbp], ymm0
|
|
|
|
; 335 : register __m256d c3 = _mm256_load_pd((double *)&ans_cur->f64_y[3]);
|
|
|
|
0011f b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00124 48 6b c0 03 imul rax, rax, 3
|
|
00128 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
0012f 48 03 c8 add rcx, rax
|
|
00132 48 8b c1 mov rax, rcx
|
|
00135 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
00139 c5 fd 11 85 80
|
|
01 00 00 vmovupd YMMWORD PTR c3$[rbp], ymm0
|
|
|
|
; 336 : register __m256d bcol;
|
|
; 337 :
|
|
; 338 : for (size_t k = 0; k < commonK; k++) {
|
|
|
|
00141 48 c7 85 f8 01
|
|
00 00 00 00 00
|
|
00 mov QWORD PTR k$1[rbp], 0
|
|
0014c eb 11 jmp SHORT $LN4@double_ker
|
|
$LN2@double_ker:
|
|
0014e 48 8b 85 f8 01
|
|
00 00 mov rax, QWORD PTR k$1[rbp]
|
|
00155 48 ff c0 inc rax
|
|
00158 48 89 85 f8 01
|
|
00 00 mov QWORD PTR k$1[rbp], rax
|
|
$LN4@double_ker:
|
|
0015f 48 63 45 44 movsxd rax, DWORD PTR commonK$[rbp]
|
|
00163 48 39 85 f8 01
|
|
00 00 cmp QWORD PTR k$1[rbp], rax
|
|
0016a 0f 83 0e 04 00
|
|
00 jae $LN3@double_ker
|
|
|
|
; 339 : MAT_KERNEL(double)
|
|
; 340 : const *right_cur = right + GET_INDEX(commonK, i, k), // GetKernelAddressUnsafe
|
|
|
|
00170 8b 45 44 mov eax, DWORD PTR commonK$[rbp]
|
|
00173 0f af 45 04 imul eax, DWORD PTR i$[rbp]
|
|
00177 48 98 cdqe
|
|
00179 48 03 85 f8 01
|
|
00 00 add rax, QWORD PTR k$1[rbp]
|
|
00180 48 69 c0 80 00
|
|
00 00 imul rax, rax, 128 ; 00000080H
|
|
00187 49 8b 8d 18 05
|
|
00 00 mov rcx, QWORD PTR right$[r13]
|
|
0018e 48 03 c8 add rcx, rax
|
|
00191 48 8b c1 mov rax, rcx
|
|
00194 48 89 85 18 02
|
|
00 00 mov QWORD PTR right_cur$2[rbp], rax
|
|
|
|
; 341 : const *left_cur =
|
|
|
|
0019b 48 63 45 64 movsxd rax, DWORD PTR ansHeight$[rbp]
|
|
0019f 48 0f af 85 f8
|
|
01 00 00 imul rax, QWORD PTR k$1[rbp]
|
|
001a7 48 63 4d 24 movsxd rcx, DWORD PTR j$[rbp]
|
|
001ab 48 03 c1 add rax, rcx
|
|
001ae 48 69 c0 80 00
|
|
00 00 imul rax, rax, 128 ; 00000080H
|
|
001b5 49 8b 8d 10 05
|
|
00 00 mov rcx, QWORD PTR left$[r13]
|
|
001bc 48 03 c8 add rcx, rax
|
|
001bf 48 8b c1 mov rax, rcx
|
|
001c2 48 89 85 38 02
|
|
00 00 mov QWORD PTR left_cur$3[rbp], rax
|
|
|
|
; 342 : left + GET_INDEX(ansHeight, k, j); // GetKernelAddressUnsafe
|
|
; 343 :
|
|
; 344 : const __m256d a0 = _mm256_load_pd((double *)&left_cur->f64_y[0]);
|
|
|
|
001c9 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
001ce 48 6b c0 00 imul rax, rax, 0
|
|
001d2 48 8b 8d 38 02
|
|
00 00 mov rcx, QWORD PTR left_cur$3[rbp]
|
|
001d9 48 03 c8 add rcx, rax
|
|
001dc 48 8b c1 mov rax, rcx
|
|
001df c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
001e3 c5 fd 11 85 60
|
|
02 00 00 vmovupd YMMWORD PTR a0$4[rbp], ymm0
|
|
|
|
; 345 : const __m256d a1 = _mm256_load_pd((double *)&left_cur->f64_y[1]);
|
|
|
|
001eb b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
001f0 48 6b c0 01 imul rax, rax, 1
|
|
001f4 48 8b 8d 38 02
|
|
00 00 mov rcx, QWORD PTR left_cur$3[rbp]
|
|
001fb 48 03 c8 add rcx, rax
|
|
001fe 48 8b c1 mov rax, rcx
|
|
00201 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
00205 c5 fd 11 85 a0
|
|
02 00 00 vmovupd YMMWORD PTR a1$5[rbp], ymm0
|
|
|
|
; 346 : const __m256d a2 = _mm256_load_pd((double *)&left_cur->f64_y[2]);
|
|
|
|
0020d b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00212 48 6b c0 02 imul rax, rax, 2
|
|
00216 48 8b 8d 38 02
|
|
00 00 mov rcx, QWORD PTR left_cur$3[rbp]
|
|
0021d 48 03 c8 add rcx, rax
|
|
00220 48 8b c1 mov rax, rcx
|
|
00223 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
00227 c5 fd 11 85 e0
|
|
02 00 00 vmovupd YMMWORD PTR a2$6[rbp], ymm0
|
|
|
|
; 347 : const __m256d a3 = _mm256_load_pd((double *)&left_cur->f64_y[3]);
|
|
|
|
0022f b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00234 48 6b c0 03 imul rax, rax, 3
|
|
00238 48 8b 8d 38 02
|
|
00 00 mov rcx, QWORD PTR left_cur$3[rbp]
|
|
0023f 48 03 c8 add rcx, rax
|
|
00242 48 8b c1 mov rax, rcx
|
|
00245 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
00249 c5 fd 11 85 20
|
|
03 00 00 vmovupd YMMWORD PTR a3$7[rbp], ymm0
|
|
|
|
; 348 :
|
|
; 349 : /* Column 0 */
|
|
; 350 : bcol = _mm256_load_pd((double *)&right_cur->f64_y[0]);
|
|
|
|
00251 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00256 48 6b c0 00 imul rax, rax, 0
|
|
0025a 48 8b 8d 18 02
|
|
00 00 mov rcx, QWORD PTR right_cur$2[rbp]
|
|
00261 48 03 c8 add rcx, rax
|
|
00264 48 8b c1 mov rax, rcx
|
|
00267 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
0026b c5 fd 11 85 c0
|
|
01 00 00 vmovupd YMMWORD PTR bcol$[rbp], ymm0
|
|
|
|
; 351 : c0 = _mm256_add_pd(c0,
|
|
|
|
00273 c4 e3 fd 01 85
|
|
c0 01 00 00 00 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 0
|
|
0027d c5 fd 10 8d 60
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a0$4[rbp]
|
|
00285 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
00289 c5 fd 10 8d c0
|
|
00 00 00 vmovupd ymm1, YMMWORD PTR c0$[rbp]
|
|
00291 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
00295 c5 fd 11 85 c0
|
|
00 00 00 vmovupd YMMWORD PTR c0$[rbp], ymm0
|
|
|
|
; 352 : _mm256_mul_pd(a0, _mm256_permute4x64_pd(bcol, _FMA_SELECT(0))));
|
|
; 353 : c0 = _mm256_add_pd(c0,
|
|
|
|
0029d c4 e3 fd 01 85
|
|
c0 01 00 00 55 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 85 ; 00000055H
|
|
002a7 c5 fd 10 8d a0
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a1$5[rbp]
|
|
002af c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
002b3 c5 fd 10 8d c0
|
|
00 00 00 vmovupd ymm1, YMMWORD PTR c0$[rbp]
|
|
002bb c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
002bf c5 fd 11 85 c0
|
|
00 00 00 vmovupd YMMWORD PTR c0$[rbp], ymm0
|
|
|
|
; 354 : _mm256_mul_pd(a1, _mm256_permute4x64_pd(bcol, _FMA_SELECT(1))));
|
|
; 355 : c0 = _mm256_add_pd(c0,
|
|
|
|
002c7 c4 e3 fd 01 85
|
|
c0 01 00 00 aa vpermpd ymm0, YMMWORD PTR bcol$[rbp], 170 ; 000000aaH
|
|
002d1 c5 fd 10 8d e0
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a2$6[rbp]
|
|
002d9 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
002dd c5 fd 10 8d c0
|
|
00 00 00 vmovupd ymm1, YMMWORD PTR c0$[rbp]
|
|
002e5 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
002e9 c5 fd 11 85 c0
|
|
00 00 00 vmovupd YMMWORD PTR c0$[rbp], ymm0
|
|
|
|
; 356 : _mm256_mul_pd(a2, _mm256_permute4x64_pd(bcol, _FMA_SELECT(2))));
|
|
; 357 : c0 = _mm256_add_pd(c0,
|
|
|
|
002f1 c4 e3 fd 01 85
|
|
c0 01 00 00 ff vpermpd ymm0, YMMWORD PTR bcol$[rbp], 255 ; 000000ffH
|
|
002fb c5 fd 10 8d 20
|
|
03 00 00 vmovupd ymm1, YMMWORD PTR a3$7[rbp]
|
|
00303 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
00307 c5 fd 10 8d c0
|
|
00 00 00 vmovupd ymm1, YMMWORD PTR c0$[rbp]
|
|
0030f c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
00313 c5 fd 11 85 c0
|
|
00 00 00 vmovupd YMMWORD PTR c0$[rbp], ymm0
|
|
|
|
; 358 : _mm256_mul_pd(a3, _mm256_permute4x64_pd(bcol, _FMA_SELECT(3))));
|
|
; 359 :
|
|
; 360 : /* Column 1 */
|
|
; 361 : bcol = _mm256_load_pd((double *)&right_cur->f64_y[1]);
|
|
|
|
0031b b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00320 48 6b c0 01 imul rax, rax, 1
|
|
00324 48 8b 8d 18 02
|
|
00 00 mov rcx, QWORD PTR right_cur$2[rbp]
|
|
0032b 48 03 c8 add rcx, rax
|
|
0032e 48 8b c1 mov rax, rcx
|
|
00331 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
00335 c5 fd 11 85 c0
|
|
01 00 00 vmovupd YMMWORD PTR bcol$[rbp], ymm0
|
|
|
|
; 362 : c1 = _mm256_add_pd(c1,
|
|
|
|
0033d c4 e3 fd 01 85
|
|
c0 01 00 00 00 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 0
|
|
00347 c5 fd 10 8d 60
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a0$4[rbp]
|
|
0034f c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
00353 c5 fd 10 8d 00
|
|
01 00 00 vmovupd ymm1, YMMWORD PTR c1$[rbp]
|
|
0035b c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
0035f c5 fd 11 85 00
|
|
01 00 00 vmovupd YMMWORD PTR c1$[rbp], ymm0
|
|
|
|
; 363 : _mm256_mul_pd(a0, _mm256_permute4x64_pd(bcol, _FMA_SELECT(0))));
|
|
; 364 : c1 = _mm256_add_pd(c1,
|
|
|
|
00367 c4 e3 fd 01 85
|
|
c0 01 00 00 55 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 85 ; 00000055H
|
|
00371 c5 fd 10 8d a0
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a1$5[rbp]
|
|
00379 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
0037d c5 fd 10 8d 00
|
|
01 00 00 vmovupd ymm1, YMMWORD PTR c1$[rbp]
|
|
00385 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
00389 c5 fd 11 85 00
|
|
01 00 00 vmovupd YMMWORD PTR c1$[rbp], ymm0
|
|
|
|
; 365 : _mm256_mul_pd(a1, _mm256_permute4x64_pd(bcol, _FMA_SELECT(1))));
|
|
; 366 : c1 = _mm256_add_pd(c1,
|
|
|
|
00391 c4 e3 fd 01 85
|
|
c0 01 00 00 aa vpermpd ymm0, YMMWORD PTR bcol$[rbp], 170 ; 000000aaH
|
|
0039b c5 fd 10 8d e0
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a2$6[rbp]
|
|
003a3 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
003a7 c5 fd 10 8d 00
|
|
01 00 00 vmovupd ymm1, YMMWORD PTR c1$[rbp]
|
|
003af c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
003b3 c5 fd 11 85 00
|
|
01 00 00 vmovupd YMMWORD PTR c1$[rbp], ymm0
|
|
|
|
; 367 : _mm256_mul_pd(a2, _mm256_permute4x64_pd(bcol, _FMA_SELECT(2))));
|
|
; 368 : c1 = _mm256_add_pd(c1,
|
|
|
|
003bb c4 e3 fd 01 85
|
|
c0 01 00 00 ff vpermpd ymm0, YMMWORD PTR bcol$[rbp], 255 ; 000000ffH
|
|
003c5 c5 fd 10 8d 20
|
|
03 00 00 vmovupd ymm1, YMMWORD PTR a3$7[rbp]
|
|
003cd c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
003d1 c5 fd 10 8d 00
|
|
01 00 00 vmovupd ymm1, YMMWORD PTR c1$[rbp]
|
|
003d9 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
003dd c5 fd 11 85 00
|
|
01 00 00 vmovupd YMMWORD PTR c1$[rbp], ymm0
|
|
|
|
; 369 : _mm256_mul_pd(a3, _mm256_permute4x64_pd(bcol, _FMA_SELECT(3))));
|
|
; 370 :
|
|
; 371 : /* Column 2 */
|
|
; 372 : bcol = _mm256_load_pd((double *)&right_cur->f64_y[2]);
|
|
|
|
003e5 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
003ea 48 6b c0 02 imul rax, rax, 2
|
|
003ee 48 8b 8d 18 02
|
|
00 00 mov rcx, QWORD PTR right_cur$2[rbp]
|
|
003f5 48 03 c8 add rcx, rax
|
|
003f8 48 8b c1 mov rax, rcx
|
|
003fb c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
003ff c5 fd 11 85 c0
|
|
01 00 00 vmovupd YMMWORD PTR bcol$[rbp], ymm0
|
|
|
|
; 373 : c2 = _mm256_add_pd(c2,
|
|
|
|
00407 c4 e3 fd 01 85
|
|
c0 01 00 00 00 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 0
|
|
00411 c5 fd 10 8d 60
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a0$4[rbp]
|
|
00419 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
0041d c5 fd 10 8d 40
|
|
01 00 00 vmovupd ymm1, YMMWORD PTR c2$[rbp]
|
|
00425 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
00429 c5 fd 11 85 40
|
|
01 00 00 vmovupd YMMWORD PTR c2$[rbp], ymm0
|
|
|
|
; 374 : _mm256_mul_pd(a0, _mm256_permute4x64_pd(bcol, _FMA_SELECT(0))));
|
|
; 375 : c2 = _mm256_add_pd(c2,
|
|
|
|
00431 c4 e3 fd 01 85
|
|
c0 01 00 00 55 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 85 ; 00000055H
|
|
0043b c5 fd 10 8d a0
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a1$5[rbp]
|
|
00443 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
00447 c5 fd 10 8d 40
|
|
01 00 00 vmovupd ymm1, YMMWORD PTR c2$[rbp]
|
|
0044f c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
00453 c5 fd 11 85 40
|
|
01 00 00 vmovupd YMMWORD PTR c2$[rbp], ymm0
|
|
|
|
; 376 : _mm256_mul_pd(a1, _mm256_permute4x64_pd(bcol, _FMA_SELECT(1))));
|
|
; 377 : c2 = _mm256_add_pd(c2,
|
|
|
|
0045b c4 e3 fd 01 85
|
|
c0 01 00 00 aa vpermpd ymm0, YMMWORD PTR bcol$[rbp], 170 ; 000000aaH
|
|
00465 c5 fd 10 8d e0
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a2$6[rbp]
|
|
0046d c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
00471 c5 fd 10 8d 40
|
|
01 00 00 vmovupd ymm1, YMMWORD PTR c2$[rbp]
|
|
00479 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
0047d c5 fd 11 85 40
|
|
01 00 00 vmovupd YMMWORD PTR c2$[rbp], ymm0
|
|
|
|
; 378 : _mm256_mul_pd(a2, _mm256_permute4x64_pd(bcol, _FMA_SELECT(2))));
|
|
; 379 : c2 = _mm256_add_pd(c2,
|
|
|
|
00485 c4 e3 fd 01 85
|
|
c0 01 00 00 ff vpermpd ymm0, YMMWORD PTR bcol$[rbp], 255 ; 000000ffH
|
|
0048f c5 fd 10 8d 20
|
|
03 00 00 vmovupd ymm1, YMMWORD PTR a3$7[rbp]
|
|
00497 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
0049b c5 fd 10 8d 40
|
|
01 00 00 vmovupd ymm1, YMMWORD PTR c2$[rbp]
|
|
004a3 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
004a7 c5 fd 11 85 40
|
|
01 00 00 vmovupd YMMWORD PTR c2$[rbp], ymm0
|
|
|
|
; 380 : _mm256_mul_pd(a3, _mm256_permute4x64_pd(bcol, _FMA_SELECT(3))));
|
|
; 381 :
|
|
; 382 : /* Column 3 */
|
|
; 383 : bcol = _mm256_load_pd((double *)&right_cur->f64_y[3]);
|
|
|
|
004af b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
004b4 48 6b c0 03 imul rax, rax, 3
|
|
004b8 48 8b 8d 18 02
|
|
00 00 mov rcx, QWORD PTR right_cur$2[rbp]
|
|
004bf 48 03 c8 add rcx, rax
|
|
004c2 48 8b c1 mov rax, rcx
|
|
004c5 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
004c9 c5 fd 11 85 c0
|
|
01 00 00 vmovupd YMMWORD PTR bcol$[rbp], ymm0
|
|
|
|
; 384 : c3 = _mm256_add_pd(c3,
|
|
|
|
004d1 c4 e3 fd 01 85
|
|
c0 01 00 00 00 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 0
|
|
004db c5 fd 10 8d 60
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a0$4[rbp]
|
|
004e3 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
004e7 c5 fd 10 8d 80
|
|
01 00 00 vmovupd ymm1, YMMWORD PTR c3$[rbp]
|
|
004ef c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
004f3 c5 fd 11 85 80
|
|
01 00 00 vmovupd YMMWORD PTR c3$[rbp], ymm0
|
|
|
|
; 385 : _mm256_mul_pd(a0, _mm256_permute4x64_pd(bcol, _FMA_SELECT(0))));
|
|
; 386 : c3 = _mm256_add_pd(c3,
|
|
|
|
004fb c4 e3 fd 01 85
|
|
c0 01 00 00 55 vpermpd ymm0, YMMWORD PTR bcol$[rbp], 85 ; 00000055H
|
|
00505 c5 fd 10 8d a0
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a1$5[rbp]
|
|
0050d c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
00511 c5 fd 10 8d 80
|
|
01 00 00 vmovupd ymm1, YMMWORD PTR c3$[rbp]
|
|
00519 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
0051d c5 fd 11 85 80
|
|
01 00 00 vmovupd YMMWORD PTR c3$[rbp], ymm0
|
|
|
|
; 387 : _mm256_mul_pd(a1, _mm256_permute4x64_pd(bcol, _FMA_SELECT(1))));
|
|
; 388 : c3 = _mm256_add_pd(c3,
|
|
|
|
00525 c4 e3 fd 01 85
|
|
c0 01 00 00 aa vpermpd ymm0, YMMWORD PTR bcol$[rbp], 170 ; 000000aaH
|
|
0052f c5 fd 10 8d e0
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR a2$6[rbp]
|
|
00537 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
0053b c5 fd 10 8d 80
|
|
01 00 00 vmovupd ymm1, YMMWORD PTR c3$[rbp]
|
|
00543 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
00547 c5 fd 11 85 80
|
|
01 00 00 vmovupd YMMWORD PTR c3$[rbp], ymm0
|
|
|
|
; 389 : _mm256_mul_pd(a2, _mm256_permute4x64_pd(bcol, _FMA_SELECT(2))));
|
|
; 390 : c3 = _mm256_add_pd(c3,
|
|
|
|
0054f c4 e3 fd 01 85
|
|
c0 01 00 00 ff vpermpd ymm0, YMMWORD PTR bcol$[rbp], 255 ; 000000ffH
|
|
00559 c5 fd 10 8d 20
|
|
03 00 00 vmovupd ymm1, YMMWORD PTR a3$7[rbp]
|
|
00561 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
00565 c5 fd 10 8d 80
|
|
01 00 00 vmovupd ymm1, YMMWORD PTR c3$[rbp]
|
|
0056d c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
00571 c5 fd 11 85 80
|
|
01 00 00 vmovupd YMMWORD PTR c3$[rbp], ymm0
|
|
|
|
; 391 : _mm256_mul_pd(a3, _mm256_permute4x64_pd(bcol, _FMA_SELECT(3))));
|
|
; 392 : }
|
|
|
|
00579 e9 d0 fb ff ff jmp $LN2@double_ker
|
|
$LN3@double_ker:
|
|
|
|
; 393 :
|
|
; 394 : _mm256_store_pd((double *)&ans_cur->f64_y[0], c0);
|
|
|
|
0057e b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00583 48 6b c0 00 imul rax, rax, 0
|
|
00587 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
0058e 48 03 c8 add rcx, rax
|
|
00591 48 8b c1 mov rax, rcx
|
|
00594 c5 fd 10 85 c0
|
|
00 00 00 vmovupd ymm0, YMMWORD PTR c0$[rbp]
|
|
0059c c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
|
|
|
|
; 395 : _mm256_store_pd((double *)&ans_cur->f64_y[1], c1);
|
|
|
|
005a0 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
005a5 48 6b c0 01 imul rax, rax, 1
|
|
005a9 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
005b0 48 03 c8 add rcx, rax
|
|
005b3 48 8b c1 mov rax, rcx
|
|
005b6 c5 fd 10 85 00
|
|
01 00 00 vmovupd ymm0, YMMWORD PTR c1$[rbp]
|
|
005be c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
|
|
|
|
; 396 : _mm256_store_pd((double *)&ans_cur->f64_y[2], c2);
|
|
|
|
005c2 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
005c7 48 6b c0 02 imul rax, rax, 2
|
|
005cb 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
005d2 48 03 c8 add rcx, rax
|
|
005d5 48 8b c1 mov rax, rcx
|
|
005d8 c5 fd 10 85 40
|
|
01 00 00 vmovupd ymm0, YMMWORD PTR c2$[rbp]
|
|
005e0 c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
|
|
|
|
; 397 : _mm256_store_pd((double *)&ans_cur->f64_y[3], c3);
|
|
|
|
005e4 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
005e9 48 6b c0 03 imul rax, rax, 3
|
|
005ed 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
005f4 48 03 c8 add rcx, rax
|
|
005f7 48 8b c1 mov rax, rcx
|
|
005fa c5 fd 10 85 80
|
|
01 00 00 vmovupd ymm0, YMMWORD PTR c3$[rbp]
|
|
00602 c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
|
|
|
|
; 398 : }
|
|
|
|
00606 49 8d a5 f0 04
|
|
00 00 lea rsp, QWORD PTR [r13+1264]
|
|
0060d 5f pop rdi
|
|
0060e 5d pop rbp
|
|
0060f 41 5d pop r13
|
|
00611 c3 ret 0
|
|
double_kernel_tile_fma_avx ENDP
|
|
_TEXT ENDS
|
|
; Function compile flags: /Odtp /RTCsu /ZI
|
|
; File D:\platform-dev\StgSharp.Native\sn-src\m.fma_tile.x86.c
|
|
; COMDAT double_kernel_tile_fma_sse
|
|
_TEXT SEGMENT
|
|
i$ = 4
|
|
j$ = 36
|
|
commonK$ = 68
|
|
ansHeight$ = 100
|
|
c0_lo$ = 144
|
|
c0_hi$ = 192
|
|
c1_lo$ = 240
|
|
c1_hi$ = 288
|
|
c2_lo$ = 336
|
|
c2_hi$ = 384
|
|
c3_lo$ = 432
|
|
c3_hi$ = 480
|
|
k$1 = 520
|
|
left_cur$2 = 552
|
|
right_cur$3 = 584
|
|
b_lo$4 = 624
|
|
b_hi$5 = 672
|
|
a_lo$6 = 720
|
|
a_hi$7 = 768
|
|
b$8 = 816
|
|
b_lo$9 = 864
|
|
b_hi$10 = 912
|
|
a_lo$11 = 960
|
|
a_hi$12 = 1008
|
|
b$13 = 1056
|
|
b_lo$14 = 1104
|
|
b_hi$15 = 1152
|
|
a_lo$16 = 1200
|
|
a_hi$17 = 1248
|
|
b$18 = 1296
|
|
b_lo$19 = 1344
|
|
b_hi$20 = 1392
|
|
a_lo$21 = 1440
|
|
a_hi$22 = 1488
|
|
b$23 = 1536
|
|
left$ = 2368
|
|
right$ = 2376
|
|
ans$ = 2384
|
|
enumeration$ = 2392
|
|
double_kernel_tile_fma_sse PROC ; COMDAT
|
|
|
|
; 283 : {
|
|
|
|
$LN18:
|
|
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 55 push rbp
|
|
00015 57 push rdi
|
|
00016 48 81 ec 48 09
|
|
00 00 sub rsp, 2376 ; 00000948H
|
|
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
|
00022 48 8d 0d 00 00
|
|
00 00 lea rcx, OFFSET FLAT:__31D20E98_m@fma_tile@x86@c
|
|
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
|
|
0002e 90 npad 1
|
|
|
|
; 284 : int i = enumeration->m128_i32[0];
|
|
|
|
0002f b8 04 00 00 00 mov eax, 4
|
|
00034 48 6b c0 00 imul rax, rax, 0
|
|
00038 48 8b 8d 58 09
|
|
00 00 mov rcx, QWORD PTR enumeration$[rbp]
|
|
0003f 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
00042 89 45 04 mov DWORD PTR i$[rbp], eax
|
|
|
|
; 285 : int j = enumeration->m128_i32[1];
|
|
|
|
00045 b8 04 00 00 00 mov eax, 4
|
|
0004a 48 6b c0 01 imul rax, rax, 1
|
|
0004e 48 8b 8d 58 09
|
|
00 00 mov rcx, QWORD PTR enumeration$[rbp]
|
|
00055 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
00058 89 45 24 mov DWORD PTR j$[rbp], eax
|
|
|
|
; 286 : int commonK = enumeration->m128_i32[2];
|
|
|
|
0005b b8 04 00 00 00 mov eax, 4
|
|
00060 48 6b c0 02 imul rax, rax, 2
|
|
00064 48 8b 8d 58 09
|
|
00 00 mov rcx, QWORD PTR enumeration$[rbp]
|
|
0006b 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
0006e 89 45 44 mov DWORD PTR commonK$[rbp], eax
|
|
|
|
; 287 : int ansHeight = enumeration->m128_i32[3];
|
|
|
|
00071 b8 04 00 00 00 mov eax, 4
|
|
00076 48 6b c0 03 imul rax, rax, 3
|
|
0007a 48 8b 8d 58 09
|
|
00 00 mov rcx, QWORD PTR enumeration$[rbp]
|
|
00081 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
00084 89 45 64 mov DWORD PTR ansHeight$[rbp], eax
|
|
|
|
; 288 :
|
|
; 289 : register __m128d c0_lo = _mm_load_pd(ans->f64_x + (0 * 2 + 0));
|
|
|
|
00087 48 8b 85 50 09
|
|
00 00 mov rax, QWORD PTR ans$[rbp]
|
|
0008e 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00091 0f 29 85 90 00
|
|
00 00 movaps XMMWORD PTR c0_lo$[rbp], xmm0
|
|
|
|
; 290 : register __m128d c0_hi = _mm_load_pd(ans->f64_x + (0 * 2 + 1));
|
|
|
|
00098 48 8b 85 50 09
|
|
00 00 mov rax, QWORD PTR ans$[rbp]
|
|
0009f 48 83 c0 10 add rax, 16
|
|
000a3 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
000a6 0f 29 85 c0 00
|
|
00 00 movaps XMMWORD PTR c0_hi$[rbp], xmm0
|
|
|
|
; 291 : register __m128d c1_lo = _mm_load_pd(ans->f64_x + (1 * 2 + 0));
|
|
|
|
000ad 48 8b 85 50 09
|
|
00 00 mov rax, QWORD PTR ans$[rbp]
|
|
000b4 48 83 c0 20 add rax, 32 ; 00000020H
|
|
000b8 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
000bb 0f 29 85 f0 00
|
|
00 00 movaps XMMWORD PTR c1_lo$[rbp], xmm0
|
|
|
|
; 292 : register __m128d c1_hi = _mm_load_pd(ans->f64_x + (1 * 2 + 1));
|
|
|
|
000c2 48 8b 85 50 09
|
|
00 00 mov rax, QWORD PTR ans$[rbp]
|
|
000c9 48 83 c0 30 add rax, 48 ; 00000030H
|
|
000cd 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
000d0 0f 29 85 20 01
|
|
00 00 movaps XMMWORD PTR c1_hi$[rbp], xmm0
|
|
|
|
; 293 : register __m128d c2_lo = _mm_load_pd(ans->f64_x + (2 * 2 + 0));
|
|
|
|
000d7 48 8b 85 50 09
|
|
00 00 mov rax, QWORD PTR ans$[rbp]
|
|
000de 48 83 c0 40 add rax, 64 ; 00000040H
|
|
000e2 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
000e5 0f 29 85 50 01
|
|
00 00 movaps XMMWORD PTR c2_lo$[rbp], xmm0
|
|
|
|
; 294 : register __m128d c2_hi = _mm_load_pd(ans->f64_x + (2 * 2 + 1));
|
|
|
|
000ec 48 8b 85 50 09
|
|
00 00 mov rax, QWORD PTR ans$[rbp]
|
|
000f3 48 83 c0 50 add rax, 80 ; 00000050H
|
|
000f7 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
000fa 0f 29 85 80 01
|
|
00 00 movaps XMMWORD PTR c2_hi$[rbp], xmm0
|
|
|
|
; 295 : register __m128d c3_lo = _mm_load_pd(ans->f64_x + (3 * 2 + 0));
|
|
|
|
00101 48 8b 85 50 09
|
|
00 00 mov rax, QWORD PTR ans$[rbp]
|
|
00108 48 83 c0 60 add rax, 96 ; 00000060H
|
|
0010c 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
0010f 0f 29 85 b0 01
|
|
00 00 movaps XMMWORD PTR c3_lo$[rbp], xmm0
|
|
|
|
; 296 : register __m128d c3_hi = _mm_load_pd(ans->f64_x + (3 * 2 + 1));
|
|
|
|
00116 48 8b 85 50 09
|
|
00 00 mov rax, QWORD PTR ans$[rbp]
|
|
0011d 48 83 c0 70 add rax, 112 ; 00000070H
|
|
00121 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00124 0f 29 85 e0 01
|
|
00 00 movaps XMMWORD PTR c3_hi$[rbp], xmm0
|
|
|
|
; 297 :
|
|
; 298 : for (size_t k = 0; k < commonK; k++) {
|
|
|
|
0012b 48 c7 85 08 02
|
|
00 00 00 00 00
|
|
00 mov QWORD PTR k$1[rbp], 0
|
|
00136 eb 11 jmp SHORT $LN4@double_ker
|
|
$LN2@double_ker:
|
|
00138 48 8b 85 08 02
|
|
00 00 mov rax, QWORD PTR k$1[rbp]
|
|
0013f 48 ff c0 inc rax
|
|
00142 48 89 85 08 02
|
|
00 00 mov QWORD PTR k$1[rbp], rax
|
|
$LN4@double_ker:
|
|
00149 48 63 45 44 movsxd rax, DWORD PTR commonK$[rbp]
|
|
0014d 48 39 85 08 02
|
|
00 00 cmp QWORD PTR k$1[rbp], rax
|
|
00154 0f 83 ed 09 00
|
|
00 jae $LN3@double_ker
|
|
|
|
; 299 : MAT_KERNEL(double)
|
|
; 300 : const *left_cur = left + GET_INDEX(ansHeight, i, k),
|
|
|
|
0015a 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
|
|
0015d 0f af 45 04 imul eax, DWORD PTR i$[rbp]
|
|
00161 48 98 cdqe
|
|
00163 48 03 85 08 02
|
|
00 00 add rax, QWORD PTR k$1[rbp]
|
|
0016a 48 69 c0 80 00
|
|
00 00 imul rax, rax, 128 ; 00000080H
|
|
00171 48 8b 8d 40 09
|
|
00 00 mov rcx, QWORD PTR left$[rbp]
|
|
00178 48 03 c8 add rcx, rax
|
|
0017b 48 8b c1 mov rax, rcx
|
|
0017e 48 89 85 28 02
|
|
00 00 mov QWORD PTR left_cur$2[rbp], rax
|
|
|
|
; 301 : const *right_cur = right + GET_INDEX(commonK, j, k); // GetKernelAddressUnsafe
|
|
|
|
00185 8b 45 44 mov eax, DWORD PTR commonK$[rbp]
|
|
00188 0f af 45 24 imul eax, DWORD PTR j$[rbp]
|
|
0018c 48 98 cdqe
|
|
0018e 48 03 85 08 02
|
|
00 00 add rax, QWORD PTR k$1[rbp]
|
|
00195 48 69 c0 80 00
|
|
00 00 imul rax, rax, 128 ; 00000080H
|
|
0019c 48 8b 8d 48 09
|
|
00 00 mov rcx, QWORD PTR right$[rbp]
|
|
001a3 48 03 c8 add rcx, rax
|
|
001a6 48 8b c1 mov rax, rcx
|
|
001a9 48 89 85 48 02
|
|
00 00 mov QWORD PTR right_cur$3[rbp], rax
|
|
$LN7@double_ker:
|
|
|
|
; 302 :
|
|
; 303 : DOUBLE_KERNEL_FMA_CYCLE(0);
|
|
|
|
001b0 48 8b 85 48 02
|
|
00 00 mov rax, QWORD PTR right_cur$3[rbp]
|
|
001b7 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
001ba 0f 29 85 70 02
|
|
00 00 movaps XMMWORD PTR b_lo$4[rbp], xmm0
|
|
001c1 48 8b 85 48 02
|
|
00 00 mov rax, QWORD PTR right_cur$3[rbp]
|
|
001c8 48 05 80 00 00
|
|
00 add rax, 128 ; 00000080H
|
|
001ce 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
001d1 0f 29 85 a0 02
|
|
00 00 movaps XMMWORD PTR b_hi$5[rbp], xmm0
|
|
001d8 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
001df 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
001e2 0f 29 85 d0 02
|
|
00 00 movaps XMMWORD PTR a_lo$6[rbp], xmm0
|
|
001e9 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
001f0 48 05 80 00 00
|
|
00 add rax, 128 ; 00000080H
|
|
001f6 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
001f9 0f 29 85 00 03
|
|
00 00 movaps XMMWORD PTR a_hi$7[rbp], xmm0
|
|
00200 0f 28 85 70 02
|
|
00 00 movaps xmm0, XMMWORD PTR b_lo$4[rbp]
|
|
00207 66 0f c6 85 70
|
|
02 00 00 00 shufpd xmm0, XMMWORD PTR b_lo$4[rbp], 0
|
|
00210 0f 29 85 30 03
|
|
00 00 movaps XMMWORD PTR b$8[rbp], xmm0
|
|
00217 0f 28 85 d0 02
|
|
00 00 movaps xmm0, XMMWORD PTR a_lo$6[rbp]
|
|
0021e 66 0f 59 85 30
|
|
03 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
|
|
00226 0f 28 8d 90 00
|
|
00 00 movaps xmm1, XMMWORD PTR c0_lo$[rbp]
|
|
0022d 66 0f 58 c8 addpd xmm1, xmm0
|
|
00231 0f 28 c1 movaps xmm0, xmm1
|
|
00234 0f 29 85 90 00
|
|
00 00 movaps XMMWORD PTR c0_lo$[rbp], xmm0
|
|
0023b 0f 28 85 00 03
|
|
00 00 movaps xmm0, XMMWORD PTR a_hi$7[rbp]
|
|
00242 66 0f 59 85 30
|
|
03 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
|
|
0024a 0f 28 8d c0 00
|
|
00 00 movaps xmm1, XMMWORD PTR c0_hi$[rbp]
|
|
00251 66 0f 58 c8 addpd xmm1, xmm0
|
|
00255 0f 28 c1 movaps xmm0, xmm1
|
|
00258 0f 29 85 c0 00
|
|
00 00 movaps XMMWORD PTR c0_hi$[rbp], xmm0
|
|
0025f 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
00266 48 05 00 01 00
|
|
00 add rax, 256 ; 00000100H
|
|
0026c 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
0026f 0f 29 85 d0 02
|
|
00 00 movaps XMMWORD PTR a_lo$6[rbp], xmm0
|
|
00276 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
0027d 48 05 80 01 00
|
|
00 add rax, 384 ; 00000180H
|
|
00283 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00286 0f 29 85 00 03
|
|
00 00 movaps XMMWORD PTR a_hi$7[rbp], xmm0
|
|
0028d 0f 28 85 70 02
|
|
00 00 movaps xmm0, XMMWORD PTR b_lo$4[rbp]
|
|
00294 66 0f c6 85 70
|
|
02 00 00 03 shufpd xmm0, XMMWORD PTR b_lo$4[rbp], 3
|
|
0029d 0f 29 85 30 03
|
|
00 00 movaps XMMWORD PTR b$8[rbp], xmm0
|
|
002a4 0f 28 85 d0 02
|
|
00 00 movaps xmm0, XMMWORD PTR a_lo$6[rbp]
|
|
002ab 66 0f 59 85 30
|
|
03 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
|
|
002b3 0f 28 8d 90 00
|
|
00 00 movaps xmm1, XMMWORD PTR c0_lo$[rbp]
|
|
002ba 66 0f 58 c8 addpd xmm1, xmm0
|
|
002be 0f 28 c1 movaps xmm0, xmm1
|
|
002c1 0f 29 85 90 00
|
|
00 00 movaps XMMWORD PTR c0_lo$[rbp], xmm0
|
|
002c8 0f 28 85 00 03
|
|
00 00 movaps xmm0, XMMWORD PTR a_hi$7[rbp]
|
|
002cf 66 0f 59 85 30
|
|
03 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
|
|
002d7 0f 28 8d c0 00
|
|
00 00 movaps xmm1, XMMWORD PTR c0_hi$[rbp]
|
|
002de 66 0f 58 c8 addpd xmm1, xmm0
|
|
002e2 0f 28 c1 movaps xmm0, xmm1
|
|
002e5 0f 29 85 c0 00
|
|
00 00 movaps XMMWORD PTR c0_hi$[rbp], xmm0
|
|
002ec 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
002f3 48 05 00 02 00
|
|
00 add rax, 512 ; 00000200H
|
|
002f9 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
002fc 0f 29 85 d0 02
|
|
00 00 movaps XMMWORD PTR a_lo$6[rbp], xmm0
|
|
00303 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
0030a 48 05 80 02 00
|
|
00 add rax, 640 ; 00000280H
|
|
00310 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00313 0f 29 85 00 03
|
|
00 00 movaps XMMWORD PTR a_hi$7[rbp], xmm0
|
|
0031a 0f 28 85 a0 02
|
|
00 00 movaps xmm0, XMMWORD PTR b_hi$5[rbp]
|
|
00321 66 0f c6 85 a0
|
|
02 00 00 00 shufpd xmm0, XMMWORD PTR b_hi$5[rbp], 0
|
|
0032a 0f 29 85 30 03
|
|
00 00 movaps XMMWORD PTR b$8[rbp], xmm0
|
|
00331 0f 28 85 d0 02
|
|
00 00 movaps xmm0, XMMWORD PTR a_lo$6[rbp]
|
|
00338 66 0f 59 85 30
|
|
03 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
|
|
00340 0f 28 8d 90 00
|
|
00 00 movaps xmm1, XMMWORD PTR c0_lo$[rbp]
|
|
00347 66 0f 58 c8 addpd xmm1, xmm0
|
|
0034b 0f 28 c1 movaps xmm0, xmm1
|
|
0034e 0f 29 85 90 00
|
|
00 00 movaps XMMWORD PTR c0_lo$[rbp], xmm0
|
|
00355 0f 28 85 00 03
|
|
00 00 movaps xmm0, XMMWORD PTR a_hi$7[rbp]
|
|
0035c 66 0f 59 85 30
|
|
03 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
|
|
00364 0f 28 8d c0 00
|
|
00 00 movaps xmm1, XMMWORD PTR c0_hi$[rbp]
|
|
0036b 66 0f 58 c8 addpd xmm1, xmm0
|
|
0036f 0f 28 c1 movaps xmm0, xmm1
|
|
00372 0f 29 85 c0 00
|
|
00 00 movaps XMMWORD PTR c0_hi$[rbp], xmm0
|
|
00379 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
00380 48 05 00 03 00
|
|
00 add rax, 768 ; 00000300H
|
|
00386 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00389 0f 29 85 d0 02
|
|
00 00 movaps XMMWORD PTR a_lo$6[rbp], xmm0
|
|
00390 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
00397 48 05 80 03 00
|
|
00 add rax, 896 ; 00000380H
|
|
0039d 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
003a0 0f 29 85 00 03
|
|
00 00 movaps XMMWORD PTR a_hi$7[rbp], xmm0
|
|
003a7 0f 28 85 a0 02
|
|
00 00 movaps xmm0, XMMWORD PTR b_hi$5[rbp]
|
|
003ae 66 0f c6 85 a0
|
|
02 00 00 03 shufpd xmm0, XMMWORD PTR b_hi$5[rbp], 3
|
|
003b7 0f 29 85 30 03
|
|
00 00 movaps XMMWORD PTR b$8[rbp], xmm0
|
|
003be 0f 28 85 d0 02
|
|
00 00 movaps xmm0, XMMWORD PTR a_lo$6[rbp]
|
|
003c5 66 0f 59 85 30
|
|
03 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
|
|
003cd 0f 28 8d 90 00
|
|
00 00 movaps xmm1, XMMWORD PTR c0_lo$[rbp]
|
|
003d4 66 0f 58 c8 addpd xmm1, xmm0
|
|
003d8 0f 28 c1 movaps xmm0, xmm1
|
|
003db 0f 29 85 90 00
|
|
00 00 movaps XMMWORD PTR c0_lo$[rbp], xmm0
|
|
003e2 0f 28 85 00 03
|
|
00 00 movaps xmm0, XMMWORD PTR a_hi$7[rbp]
|
|
003e9 66 0f 59 85 30
|
|
03 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
|
|
003f1 0f 28 8d c0 00
|
|
00 00 movaps xmm1, XMMWORD PTR c0_hi$[rbp]
|
|
003f8 66 0f 58 c8 addpd xmm1, xmm0
|
|
003fc 0f 28 c1 movaps xmm0, xmm1
|
|
003ff 0f 29 85 c0 00
|
|
00 00 movaps XMMWORD PTR c0_hi$[rbp], xmm0
|
|
00406 33 c0 xor eax, eax
|
|
00408 85 c0 test eax, eax
|
|
0040a 0f 85 a0 fd ff
|
|
ff jne $LN7@double_ker
|
|
$LN10@double_ker:
|
|
|
|
; 304 :
|
|
; 305 : DOUBLE_KERNEL_FMA_CYCLE(1);
|
|
|
|
00410 48 8b 85 48 02
|
|
00 00 mov rax, QWORD PTR right_cur$3[rbp]
|
|
00417 48 05 00 01 00
|
|
00 add rax, 256 ; 00000100H
|
|
0041d 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00420 0f 29 85 60 03
|
|
00 00 movaps XMMWORD PTR b_lo$9[rbp], xmm0
|
|
00427 48 8b 85 48 02
|
|
00 00 mov rax, QWORD PTR right_cur$3[rbp]
|
|
0042e 48 05 80 01 00
|
|
00 add rax, 384 ; 00000180H
|
|
00434 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00437 0f 29 85 90 03
|
|
00 00 movaps XMMWORD PTR b_hi$10[rbp], xmm0
|
|
0043e 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
00445 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00448 0f 29 85 c0 03
|
|
00 00 movaps XMMWORD PTR a_lo$11[rbp], xmm0
|
|
0044f 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
00456 48 05 80 00 00
|
|
00 add rax, 128 ; 00000080H
|
|
0045c 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
0045f 0f 29 85 f0 03
|
|
00 00 movaps XMMWORD PTR a_hi$12[rbp], xmm0
|
|
00466 0f 28 85 60 03
|
|
00 00 movaps xmm0, XMMWORD PTR b_lo$9[rbp]
|
|
0046d 66 0f c6 85 60
|
|
03 00 00 00 shufpd xmm0, XMMWORD PTR b_lo$9[rbp], 0
|
|
00476 0f 29 85 20 04
|
|
00 00 movaps XMMWORD PTR b$13[rbp], xmm0
|
|
0047d 0f 28 85 c0 03
|
|
00 00 movaps xmm0, XMMWORD PTR a_lo$11[rbp]
|
|
00484 66 0f 59 85 20
|
|
04 00 00 mulpd xmm0, XMMWORD PTR b$13[rbp]
|
|
0048c 0f 28 8d f0 00
|
|
00 00 movaps xmm1, XMMWORD PTR c1_lo$[rbp]
|
|
00493 66 0f 58 c8 addpd xmm1, xmm0
|
|
00497 0f 28 c1 movaps xmm0, xmm1
|
|
0049a 0f 29 85 f0 00
|
|
00 00 movaps XMMWORD PTR c1_lo$[rbp], xmm0
|
|
004a1 0f 28 85 f0 03
|
|
00 00 movaps xmm0, XMMWORD PTR a_hi$12[rbp]
|
|
004a8 66 0f 59 85 20
|
|
04 00 00 mulpd xmm0, XMMWORD PTR b$13[rbp]
|
|
004b0 0f 28 8d 20 01
|
|
00 00 movaps xmm1, XMMWORD PTR c1_hi$[rbp]
|
|
004b7 66 0f 58 c8 addpd xmm1, xmm0
|
|
004bb 0f 28 c1 movaps xmm0, xmm1
|
|
004be 0f 29 85 20 01
|
|
00 00 movaps XMMWORD PTR c1_hi$[rbp], xmm0
|
|
004c5 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
004cc 48 05 00 01 00
|
|
00 add rax, 256 ; 00000100H
|
|
004d2 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
004d5 0f 29 85 c0 03
|
|
00 00 movaps XMMWORD PTR a_lo$11[rbp], xmm0
|
|
004dc 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
004e3 48 05 80 01 00
|
|
00 add rax, 384 ; 00000180H
|
|
004e9 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
004ec 0f 29 85 f0 03
|
|
00 00 movaps XMMWORD PTR a_hi$12[rbp], xmm0
|
|
004f3 0f 28 85 60 03
|
|
00 00 movaps xmm0, XMMWORD PTR b_lo$9[rbp]
|
|
004fa 66 0f c6 85 60
|
|
03 00 00 03 shufpd xmm0, XMMWORD PTR b_lo$9[rbp], 3
|
|
00503 0f 29 85 20 04
|
|
00 00 movaps XMMWORD PTR b$13[rbp], xmm0
|
|
0050a 0f 28 85 c0 03
|
|
00 00 movaps xmm0, XMMWORD PTR a_lo$11[rbp]
|
|
00511 66 0f 59 85 20
|
|
04 00 00 mulpd xmm0, XMMWORD PTR b$13[rbp]
|
|
00519 0f 28 8d f0 00
|
|
00 00 movaps xmm1, XMMWORD PTR c1_lo$[rbp]
|
|
00520 66 0f 58 c8 addpd xmm1, xmm0
|
|
00524 0f 28 c1 movaps xmm0, xmm1
|
|
00527 0f 29 85 f0 00
|
|
00 00 movaps XMMWORD PTR c1_lo$[rbp], xmm0
|
|
0052e 0f 28 85 f0 03
|
|
00 00 movaps xmm0, XMMWORD PTR a_hi$12[rbp]
|
|
00535 66 0f 59 85 20
|
|
04 00 00 mulpd xmm0, XMMWORD PTR b$13[rbp]
|
|
0053d 0f 28 8d 20 01
|
|
00 00 movaps xmm1, XMMWORD PTR c1_hi$[rbp]
|
|
00544 66 0f 58 c8 addpd xmm1, xmm0
|
|
00548 0f 28 c1 movaps xmm0, xmm1
|
|
0054b 0f 29 85 20 01
|
|
00 00 movaps XMMWORD PTR c1_hi$[rbp], xmm0
|
|
00552 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
00559 48 05 00 02 00
|
|
00 add rax, 512 ; 00000200H
|
|
0055f 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00562 0f 29 85 c0 03
|
|
00 00 movaps XMMWORD PTR a_lo$11[rbp], xmm0
|
|
00569 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
00570 48 05 80 02 00
|
|
00 add rax, 640 ; 00000280H
|
|
00576 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00579 0f 29 85 f0 03
|
|
00 00 movaps XMMWORD PTR a_hi$12[rbp], xmm0
|
|
00580 0f 28 85 90 03
|
|
00 00 movaps xmm0, XMMWORD PTR b_hi$10[rbp]
|
|
00587 66 0f c6 85 90
|
|
03 00 00 00 shufpd xmm0, XMMWORD PTR b_hi$10[rbp], 0
|
|
00590 0f 29 85 20 04
|
|
00 00 movaps XMMWORD PTR b$13[rbp], xmm0
|
|
00597 0f 28 85 c0 03
|
|
00 00 movaps xmm0, XMMWORD PTR a_lo$11[rbp]
|
|
0059e 66 0f 59 85 20
|
|
04 00 00 mulpd xmm0, XMMWORD PTR b$13[rbp]
|
|
005a6 0f 28 8d f0 00
|
|
00 00 movaps xmm1, XMMWORD PTR c1_lo$[rbp]
|
|
005ad 66 0f 58 c8 addpd xmm1, xmm0
|
|
005b1 0f 28 c1 movaps xmm0, xmm1
|
|
005b4 0f 29 85 f0 00
|
|
00 00 movaps XMMWORD PTR c1_lo$[rbp], xmm0
|
|
005bb 0f 28 85 f0 03
|
|
00 00 movaps xmm0, XMMWORD PTR a_hi$12[rbp]
|
|
005c2 66 0f 59 85 20
|
|
04 00 00 mulpd xmm0, XMMWORD PTR b$13[rbp]
|
|
005ca 0f 28 8d 20 01
|
|
00 00 movaps xmm1, XMMWORD PTR c1_hi$[rbp]
|
|
005d1 66 0f 58 c8 addpd xmm1, xmm0
|
|
005d5 0f 28 c1 movaps xmm0, xmm1
|
|
005d8 0f 29 85 20 01
|
|
00 00 movaps XMMWORD PTR c1_hi$[rbp], xmm0
|
|
005df 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
005e6 48 05 00 03 00
|
|
00 add rax, 768 ; 00000300H
|
|
005ec 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
005ef 0f 29 85 c0 03
|
|
00 00 movaps XMMWORD PTR a_lo$11[rbp], xmm0
|
|
005f6 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
005fd 48 05 80 03 00
|
|
00 add rax, 896 ; 00000380H
|
|
00603 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00606 0f 29 85 f0 03
|
|
00 00 movaps XMMWORD PTR a_hi$12[rbp], xmm0
|
|
0060d 0f 28 85 90 03
|
|
00 00 movaps xmm0, XMMWORD PTR b_hi$10[rbp]
|
|
00614 66 0f c6 85 90
|
|
03 00 00 03 shufpd xmm0, XMMWORD PTR b_hi$10[rbp], 3
|
|
0061d 0f 29 85 20 04
|
|
00 00 movaps XMMWORD PTR b$13[rbp], xmm0
|
|
00624 0f 28 85 c0 03
|
|
00 00 movaps xmm0, XMMWORD PTR a_lo$11[rbp]
|
|
0062b 66 0f 59 85 20
|
|
04 00 00 mulpd xmm0, XMMWORD PTR b$13[rbp]
|
|
00633 0f 28 8d f0 00
|
|
00 00 movaps xmm1, XMMWORD PTR c1_lo$[rbp]
|
|
0063a 66 0f 58 c8 addpd xmm1, xmm0
|
|
0063e 0f 28 c1 movaps xmm0, xmm1
|
|
00641 0f 29 85 f0 00
|
|
00 00 movaps XMMWORD PTR c1_lo$[rbp], xmm0
|
|
00648 0f 28 85 f0 03
|
|
00 00 movaps xmm0, XMMWORD PTR a_hi$12[rbp]
|
|
0064f 66 0f 59 85 20
|
|
04 00 00 mulpd xmm0, XMMWORD PTR b$13[rbp]
|
|
00657 0f 28 8d 20 01
|
|
00 00 movaps xmm1, XMMWORD PTR c1_hi$[rbp]
|
|
0065e 66 0f 58 c8 addpd xmm1, xmm0
|
|
00662 0f 28 c1 movaps xmm0, xmm1
|
|
00665 0f 29 85 20 01
|
|
00 00 movaps XMMWORD PTR c1_hi$[rbp], xmm0
|
|
0066c 33 c0 xor eax, eax
|
|
0066e 85 c0 test eax, eax
|
|
00670 0f 85 9a fd ff
|
|
ff jne $LN10@double_ker
|
|
$LN13@double_ker:
|
|
|
|
; 306 :
|
|
; 307 : DOUBLE_KERNEL_FMA_CYCLE(2);
|
|
|
|
00676 48 8b 85 48 02
|
|
00 00 mov rax, QWORD PTR right_cur$3[rbp]
|
|
0067d 48 05 00 02 00
|
|
00 add rax, 512 ; 00000200H
|
|
00683 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00686 0f 29 85 50 04
|
|
00 00 movaps XMMWORD PTR b_lo$14[rbp], xmm0
|
|
0068d 48 8b 85 48 02
|
|
00 00 mov rax, QWORD PTR right_cur$3[rbp]
|
|
00694 48 05 80 02 00
|
|
00 add rax, 640 ; 00000280H
|
|
0069a 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
0069d 0f 29 85 80 04
|
|
00 00 movaps XMMWORD PTR b_hi$15[rbp], xmm0
|
|
006a4 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
006ab 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
006ae 0f 29 85 b0 04
|
|
00 00 movaps XMMWORD PTR a_lo$16[rbp], xmm0
|
|
006b5 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
006bc 48 05 80 00 00
|
|
00 add rax, 128 ; 00000080H
|
|
006c2 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
006c5 0f 29 85 e0 04
|
|
00 00 movaps XMMWORD PTR a_hi$17[rbp], xmm0
|
|
006cc 0f 28 85 50 04
|
|
00 00 movaps xmm0, XMMWORD PTR b_lo$14[rbp]
|
|
006d3 66 0f c6 85 50
|
|
04 00 00 00 shufpd xmm0, XMMWORD PTR b_lo$14[rbp], 0
|
|
006dc 0f 29 85 10 05
|
|
00 00 movaps XMMWORD PTR b$18[rbp], xmm0
|
|
006e3 0f 28 85 b0 04
|
|
00 00 movaps xmm0, XMMWORD PTR a_lo$16[rbp]
|
|
006ea 66 0f 59 85 10
|
|
05 00 00 mulpd xmm0, XMMWORD PTR b$18[rbp]
|
|
006f2 0f 28 8d 50 01
|
|
00 00 movaps xmm1, XMMWORD PTR c2_lo$[rbp]
|
|
006f9 66 0f 58 c8 addpd xmm1, xmm0
|
|
006fd 0f 28 c1 movaps xmm0, xmm1
|
|
00700 0f 29 85 50 01
|
|
00 00 movaps XMMWORD PTR c2_lo$[rbp], xmm0
|
|
00707 0f 28 85 e0 04
|
|
00 00 movaps xmm0, XMMWORD PTR a_hi$17[rbp]
|
|
0070e 66 0f 59 85 10
|
|
05 00 00 mulpd xmm0, XMMWORD PTR b$18[rbp]
|
|
00716 0f 28 8d 80 01
|
|
00 00 movaps xmm1, XMMWORD PTR c2_hi$[rbp]
|
|
0071d 66 0f 58 c8 addpd xmm1, xmm0
|
|
00721 0f 28 c1 movaps xmm0, xmm1
|
|
00724 0f 29 85 80 01
|
|
00 00 movaps XMMWORD PTR c2_hi$[rbp], xmm0
|
|
0072b 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
00732 48 05 00 01 00
|
|
00 add rax, 256 ; 00000100H
|
|
00738 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
0073b 0f 29 85 b0 04
|
|
00 00 movaps XMMWORD PTR a_lo$16[rbp], xmm0
|
|
00742 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
00749 48 05 80 01 00
|
|
00 add rax, 384 ; 00000180H
|
|
0074f 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00752 0f 29 85 e0 04
|
|
00 00 movaps XMMWORD PTR a_hi$17[rbp], xmm0
|
|
00759 0f 28 85 50 04
|
|
00 00 movaps xmm0, XMMWORD PTR b_lo$14[rbp]
|
|
00760 66 0f c6 85 50
|
|
04 00 00 03 shufpd xmm0, XMMWORD PTR b_lo$14[rbp], 3
|
|
00769 0f 29 85 10 05
|
|
00 00 movaps XMMWORD PTR b$18[rbp], xmm0
|
|
00770 0f 28 85 b0 04
|
|
00 00 movaps xmm0, XMMWORD PTR a_lo$16[rbp]
|
|
00777 66 0f 59 85 10
|
|
05 00 00 mulpd xmm0, XMMWORD PTR b$18[rbp]
|
|
0077f 0f 28 8d 50 01
|
|
00 00 movaps xmm1, XMMWORD PTR c2_lo$[rbp]
|
|
00786 66 0f 58 c8 addpd xmm1, xmm0
|
|
0078a 0f 28 c1 movaps xmm0, xmm1
|
|
0078d 0f 29 85 50 01
|
|
00 00 movaps XMMWORD PTR c2_lo$[rbp], xmm0
|
|
00794 0f 28 85 e0 04
|
|
00 00 movaps xmm0, XMMWORD PTR a_hi$17[rbp]
|
|
0079b 66 0f 59 85 10
|
|
05 00 00 mulpd xmm0, XMMWORD PTR b$18[rbp]
|
|
007a3 0f 28 8d 80 01
|
|
00 00 movaps xmm1, XMMWORD PTR c2_hi$[rbp]
|
|
007aa 66 0f 58 c8 addpd xmm1, xmm0
|
|
007ae 0f 28 c1 movaps xmm0, xmm1
|
|
007b1 0f 29 85 80 01
|
|
00 00 movaps XMMWORD PTR c2_hi$[rbp], xmm0
|
|
007b8 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
007bf 48 05 00 02 00
|
|
00 add rax, 512 ; 00000200H
|
|
007c5 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
007c8 0f 29 85 b0 04
|
|
00 00 movaps XMMWORD PTR a_lo$16[rbp], xmm0
|
|
007cf 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
007d6 48 05 80 02 00
|
|
00 add rax, 640 ; 00000280H
|
|
007dc 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
007df 0f 29 85 e0 04
|
|
00 00 movaps XMMWORD PTR a_hi$17[rbp], xmm0
|
|
007e6 0f 28 85 80 04
|
|
00 00 movaps xmm0, XMMWORD PTR b_hi$15[rbp]
|
|
007ed 66 0f c6 85 80
|
|
04 00 00 00 shufpd xmm0, XMMWORD PTR b_hi$15[rbp], 0
|
|
007f6 0f 29 85 10 05
|
|
00 00 movaps XMMWORD PTR b$18[rbp], xmm0
|
|
007fd 0f 28 85 b0 04
|
|
00 00 movaps xmm0, XMMWORD PTR a_lo$16[rbp]
|
|
00804 66 0f 59 85 10
|
|
05 00 00 mulpd xmm0, XMMWORD PTR b$18[rbp]
|
|
0080c 0f 28 8d 50 01
|
|
00 00 movaps xmm1, XMMWORD PTR c2_lo$[rbp]
|
|
00813 66 0f 58 c8 addpd xmm1, xmm0
|
|
00817 0f 28 c1 movaps xmm0, xmm1
|
|
0081a 0f 29 85 50 01
|
|
00 00 movaps XMMWORD PTR c2_lo$[rbp], xmm0
|
|
00821 0f 28 85 e0 04
|
|
00 00 movaps xmm0, XMMWORD PTR a_hi$17[rbp]
|
|
00828 66 0f 59 85 10
|
|
05 00 00 mulpd xmm0, XMMWORD PTR b$18[rbp]
|
|
00830 0f 28 8d 80 01
|
|
00 00 movaps xmm1, XMMWORD PTR c2_hi$[rbp]
|
|
00837 66 0f 58 c8 addpd xmm1, xmm0
|
|
0083b 0f 28 c1 movaps xmm0, xmm1
|
|
0083e 0f 29 85 80 01
|
|
00 00 movaps XMMWORD PTR c2_hi$[rbp], xmm0
|
|
00845 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
0084c 48 05 00 03 00
|
|
00 add rax, 768 ; 00000300H
|
|
00852 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00855 0f 29 85 b0 04
|
|
00 00 movaps XMMWORD PTR a_lo$16[rbp], xmm0
|
|
0085c 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
00863 48 05 80 03 00
|
|
00 add rax, 896 ; 00000380H
|
|
00869 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
0086c 0f 29 85 e0 04
|
|
00 00 movaps XMMWORD PTR a_hi$17[rbp], xmm0
|
|
00873 0f 28 85 80 04
|
|
00 00 movaps xmm0, XMMWORD PTR b_hi$15[rbp]
|
|
0087a 66 0f c6 85 80
|
|
04 00 00 03 shufpd xmm0, XMMWORD PTR b_hi$15[rbp], 3
|
|
00883 0f 29 85 10 05
|
|
00 00 movaps XMMWORD PTR b$18[rbp], xmm0
|
|
0088a 0f 28 85 b0 04
|
|
00 00 movaps xmm0, XMMWORD PTR a_lo$16[rbp]
|
|
00891 66 0f 59 85 10
|
|
05 00 00 mulpd xmm0, XMMWORD PTR b$18[rbp]
|
|
00899 0f 28 8d 50 01
|
|
00 00 movaps xmm1, XMMWORD PTR c2_lo$[rbp]
|
|
008a0 66 0f 58 c8 addpd xmm1, xmm0
|
|
008a4 0f 28 c1 movaps xmm0, xmm1
|
|
008a7 0f 29 85 50 01
|
|
00 00 movaps XMMWORD PTR c2_lo$[rbp], xmm0
|
|
008ae 0f 28 85 e0 04
|
|
00 00 movaps xmm0, XMMWORD PTR a_hi$17[rbp]
|
|
008b5 66 0f 59 85 10
|
|
05 00 00 mulpd xmm0, XMMWORD PTR b$18[rbp]
|
|
008bd 0f 28 8d 80 01
|
|
00 00 movaps xmm1, XMMWORD PTR c2_hi$[rbp]
|
|
008c4 66 0f 58 c8 addpd xmm1, xmm0
|
|
008c8 0f 28 c1 movaps xmm0, xmm1
|
|
008cb 0f 29 85 80 01
|
|
00 00 movaps XMMWORD PTR c2_hi$[rbp], xmm0
|
|
008d2 33 c0 xor eax, eax
|
|
008d4 85 c0 test eax, eax
|
|
008d6 0f 85 9a fd ff
|
|
ff jne $LN13@double_ker
|
|
$LN16@double_ker:
|
|
|
|
; 308 :
|
|
; 309 : DOUBLE_KERNEL_FMA_CYCLE(3);
|
|
|
|
008dc 48 8b 85 48 02
|
|
00 00 mov rax, QWORD PTR right_cur$3[rbp]
|
|
008e3 48 05 00 03 00
|
|
00 add rax, 768 ; 00000300H
|
|
008e9 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
008ec 0f 29 85 40 05
|
|
00 00 movaps XMMWORD PTR b_lo$19[rbp], xmm0
|
|
008f3 48 8b 85 48 02
|
|
00 00 mov rax, QWORD PTR right_cur$3[rbp]
|
|
008fa 48 05 80 03 00
|
|
00 add rax, 896 ; 00000380H
|
|
00900 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00903 0f 29 85 70 05
|
|
00 00 movaps XMMWORD PTR b_hi$20[rbp], xmm0
|
|
0090a 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
00911 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00914 0f 29 85 a0 05
|
|
00 00 movaps XMMWORD PTR a_lo$21[rbp], xmm0
|
|
0091b 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
00922 48 05 80 00 00
|
|
00 add rax, 128 ; 00000080H
|
|
00928 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
0092b 0f 29 85 d0 05
|
|
00 00 movaps XMMWORD PTR a_hi$22[rbp], xmm0
|
|
00932 0f 28 85 40 05
|
|
00 00 movaps xmm0, XMMWORD PTR b_lo$19[rbp]
|
|
00939 66 0f c6 85 40
|
|
05 00 00 00 shufpd xmm0, XMMWORD PTR b_lo$19[rbp], 0
|
|
00942 0f 29 85 00 06
|
|
00 00 movaps XMMWORD PTR b$23[rbp], xmm0
|
|
00949 0f 28 85 a0 05
|
|
00 00 movaps xmm0, XMMWORD PTR a_lo$21[rbp]
|
|
00950 66 0f 59 85 00
|
|
06 00 00 mulpd xmm0, XMMWORD PTR b$23[rbp]
|
|
00958 0f 28 8d b0 01
|
|
00 00 movaps xmm1, XMMWORD PTR c3_lo$[rbp]
|
|
0095f 66 0f 58 c8 addpd xmm1, xmm0
|
|
00963 0f 28 c1 movaps xmm0, xmm1
|
|
00966 0f 29 85 b0 01
|
|
00 00 movaps XMMWORD PTR c3_lo$[rbp], xmm0
|
|
0096d 0f 28 85 d0 05
|
|
00 00 movaps xmm0, XMMWORD PTR a_hi$22[rbp]
|
|
00974 66 0f 59 85 00
|
|
06 00 00 mulpd xmm0, XMMWORD PTR b$23[rbp]
|
|
0097c 0f 28 8d e0 01
|
|
00 00 movaps xmm1, XMMWORD PTR c3_hi$[rbp]
|
|
00983 66 0f 58 c8 addpd xmm1, xmm0
|
|
00987 0f 28 c1 movaps xmm0, xmm1
|
|
0098a 0f 29 85 e0 01
|
|
00 00 movaps XMMWORD PTR c3_hi$[rbp], xmm0
|
|
00991 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
00998 48 05 00 01 00
|
|
00 add rax, 256 ; 00000100H
|
|
0099e 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
009a1 0f 29 85 a0 05
|
|
00 00 movaps XMMWORD PTR a_lo$21[rbp], xmm0
|
|
009a8 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
009af 48 05 80 01 00
|
|
00 add rax, 384 ; 00000180H
|
|
009b5 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
009b8 0f 29 85 d0 05
|
|
00 00 movaps XMMWORD PTR a_hi$22[rbp], xmm0
|
|
009bf 0f 28 85 40 05
|
|
00 00 movaps xmm0, XMMWORD PTR b_lo$19[rbp]
|
|
009c6 66 0f c6 85 40
|
|
05 00 00 03 shufpd xmm0, XMMWORD PTR b_lo$19[rbp], 3
|
|
009cf 0f 29 85 00 06
|
|
00 00 movaps XMMWORD PTR b$23[rbp], xmm0
|
|
009d6 0f 28 85 a0 05
|
|
00 00 movaps xmm0, XMMWORD PTR a_lo$21[rbp]
|
|
009dd 66 0f 59 85 00
|
|
06 00 00 mulpd xmm0, XMMWORD PTR b$23[rbp]
|
|
009e5 0f 28 8d b0 01
|
|
00 00 movaps xmm1, XMMWORD PTR c3_lo$[rbp]
|
|
009ec 66 0f 58 c8 addpd xmm1, xmm0
|
|
009f0 0f 28 c1 movaps xmm0, xmm1
|
|
009f3 0f 29 85 b0 01
|
|
00 00 movaps XMMWORD PTR c3_lo$[rbp], xmm0
|
|
009fa 0f 28 85 d0 05
|
|
00 00 movaps xmm0, XMMWORD PTR a_hi$22[rbp]
|
|
00a01 66 0f 59 85 00
|
|
06 00 00 mulpd xmm0, XMMWORD PTR b$23[rbp]
|
|
00a09 0f 28 8d e0 01
|
|
00 00 movaps xmm1, XMMWORD PTR c3_hi$[rbp]
|
|
00a10 66 0f 58 c8 addpd xmm1, xmm0
|
|
00a14 0f 28 c1 movaps xmm0, xmm1
|
|
00a17 0f 29 85 e0 01
|
|
00 00 movaps XMMWORD PTR c3_hi$[rbp], xmm0
|
|
00a1e 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
00a25 48 05 00 02 00
|
|
00 add rax, 512 ; 00000200H
|
|
00a2b 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00a2e 0f 29 85 a0 05
|
|
00 00 movaps XMMWORD PTR a_lo$21[rbp], xmm0
|
|
00a35 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
00a3c 48 05 80 02 00
|
|
00 add rax, 640 ; 00000280H
|
|
00a42 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00a45 0f 29 85 d0 05
|
|
00 00 movaps XMMWORD PTR a_hi$22[rbp], xmm0
|
|
00a4c 0f 28 85 70 05
|
|
00 00 movaps xmm0, XMMWORD PTR b_hi$20[rbp]
|
|
00a53 66 0f c6 85 70
|
|
05 00 00 00 shufpd xmm0, XMMWORD PTR b_hi$20[rbp], 0
|
|
00a5c 0f 29 85 00 06
|
|
00 00 movaps XMMWORD PTR b$23[rbp], xmm0
|
|
00a63 0f 28 85 a0 05
|
|
00 00 movaps xmm0, XMMWORD PTR a_lo$21[rbp]
|
|
00a6a 66 0f 59 85 00
|
|
06 00 00 mulpd xmm0, XMMWORD PTR b$23[rbp]
|
|
00a72 0f 28 8d b0 01
|
|
00 00 movaps xmm1, XMMWORD PTR c3_lo$[rbp]
|
|
00a79 66 0f 58 c8 addpd xmm1, xmm0
|
|
00a7d 0f 28 c1 movaps xmm0, xmm1
|
|
00a80 0f 29 85 b0 01
|
|
00 00 movaps XMMWORD PTR c3_lo$[rbp], xmm0
|
|
00a87 0f 28 85 d0 05
|
|
00 00 movaps xmm0, XMMWORD PTR a_hi$22[rbp]
|
|
00a8e 66 0f 59 85 00
|
|
06 00 00 mulpd xmm0, XMMWORD PTR b$23[rbp]
|
|
00a96 0f 28 8d e0 01
|
|
00 00 movaps xmm1, XMMWORD PTR c3_hi$[rbp]
|
|
00a9d 66 0f 58 c8 addpd xmm1, xmm0
|
|
00aa1 0f 28 c1 movaps xmm0, xmm1
|
|
00aa4 0f 29 85 e0 01
|
|
00 00 movaps XMMWORD PTR c3_hi$[rbp], xmm0
|
|
00aab 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
00ab2 48 05 00 03 00
|
|
00 add rax, 768 ; 00000300H
|
|
00ab8 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00abb 0f 29 85 a0 05
|
|
00 00 movaps XMMWORD PTR a_lo$21[rbp], xmm0
|
|
00ac2 48 8b 85 28 02
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
00ac9 48 05 80 03 00
|
|
00 add rax, 896 ; 00000380H
|
|
00acf 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00ad2 0f 29 85 d0 05
|
|
00 00 movaps XMMWORD PTR a_hi$22[rbp], xmm0
|
|
00ad9 0f 28 85 70 05
|
|
00 00 movaps xmm0, XMMWORD PTR b_hi$20[rbp]
|
|
00ae0 66 0f c6 85 70
|
|
05 00 00 03 shufpd xmm0, XMMWORD PTR b_hi$20[rbp], 3
|
|
00ae9 0f 29 85 00 06
|
|
00 00 movaps XMMWORD PTR b$23[rbp], xmm0
|
|
00af0 0f 28 85 a0 05
|
|
00 00 movaps xmm0, XMMWORD PTR a_lo$21[rbp]
|
|
00af7 66 0f 59 85 00
|
|
06 00 00 mulpd xmm0, XMMWORD PTR b$23[rbp]
|
|
00aff 0f 28 8d b0 01
|
|
00 00 movaps xmm1, XMMWORD PTR c3_lo$[rbp]
|
|
00b06 66 0f 58 c8 addpd xmm1, xmm0
|
|
00b0a 0f 28 c1 movaps xmm0, xmm1
|
|
00b0d 0f 29 85 b0 01
|
|
00 00 movaps XMMWORD PTR c3_lo$[rbp], xmm0
|
|
00b14 0f 28 85 d0 05
|
|
00 00 movaps xmm0, XMMWORD PTR a_hi$22[rbp]
|
|
00b1b 66 0f 59 85 00
|
|
06 00 00 mulpd xmm0, XMMWORD PTR b$23[rbp]
|
|
00b23 0f 28 8d e0 01
|
|
00 00 movaps xmm1, XMMWORD PTR c3_hi$[rbp]
|
|
00b2a 66 0f 58 c8 addpd xmm1, xmm0
|
|
00b2e 0f 28 c1 movaps xmm0, xmm1
|
|
00b31 0f 29 85 e0 01
|
|
00 00 movaps XMMWORD PTR c3_hi$[rbp], xmm0
|
|
00b38 33 c0 xor eax, eax
|
|
00b3a 85 c0 test eax, eax
|
|
00b3c 0f 85 9a fd ff
|
|
ff jne $LN16@double_ker
|
|
|
|
; 310 : }
|
|
|
|
00b42 e9 f1 f5 ff ff jmp $LN2@double_ker
|
|
$LN3@double_ker:
|
|
|
|
; 311 :
|
|
; 312 : _mm_store_pd(ans->f64_x + (0 * 2 + 0), c0_lo);
|
|
|
|
00b47 48 8b 85 50 09
|
|
00 00 mov rax, QWORD PTR ans$[rbp]
|
|
00b4e 0f 28 85 90 00
|
|
00 00 movaps xmm0, XMMWORD PTR c0_lo$[rbp]
|
|
00b55 0f 11 00 movups XMMWORD PTR [rax], xmm0
|
|
|
|
; 313 : _mm_store_pd(ans->f64_x + (0 * 2 + 1), c0_hi);
|
|
|
|
00b58 48 8b 85 50 09
|
|
00 00 mov rax, QWORD PTR ans$[rbp]
|
|
00b5f 48 83 c0 10 add rax, 16
|
|
00b63 0f 28 85 c0 00
|
|
00 00 movaps xmm0, XMMWORD PTR c0_hi$[rbp]
|
|
00b6a 0f 11 00 movups XMMWORD PTR [rax], xmm0
|
|
|
|
; 314 : _mm_store_pd(ans->f64_x + (1 * 2 + 0), c1_lo);
|
|
|
|
00b6d 48 8b 85 50 09
|
|
00 00 mov rax, QWORD PTR ans$[rbp]
|
|
00b74 48 83 c0 20 add rax, 32 ; 00000020H
|
|
00b78 0f 28 85 f0 00
|
|
00 00 movaps xmm0, XMMWORD PTR c1_lo$[rbp]
|
|
00b7f 0f 11 00 movups XMMWORD PTR [rax], xmm0
|
|
|
|
; 315 : _mm_store_pd(ans->f64_x + (1 * 2 + 1), c1_hi);
|
|
|
|
00b82 48 8b 85 50 09
|
|
00 00 mov rax, QWORD PTR ans$[rbp]
|
|
00b89 48 83 c0 30 add rax, 48 ; 00000030H
|
|
00b8d 0f 28 85 20 01
|
|
00 00 movaps xmm0, XMMWORD PTR c1_hi$[rbp]
|
|
00b94 0f 11 00 movups XMMWORD PTR [rax], xmm0
|
|
|
|
; 316 : _mm_store_pd(ans->f64_x + (2 * 2 + 0), c2_lo);
|
|
|
|
00b97 48 8b 85 50 09
|
|
00 00 mov rax, QWORD PTR ans$[rbp]
|
|
00b9e 48 83 c0 40 add rax, 64 ; 00000040H
|
|
00ba2 0f 28 85 50 01
|
|
00 00 movaps xmm0, XMMWORD PTR c2_lo$[rbp]
|
|
00ba9 0f 11 00 movups XMMWORD PTR [rax], xmm0
|
|
|
|
; 317 : _mm_store_pd(ans->f64_x + (2 * 2 + 1), c2_hi);
|
|
|
|
00bac 48 8b 85 50 09
|
|
00 00 mov rax, QWORD PTR ans$[rbp]
|
|
00bb3 48 83 c0 50 add rax, 80 ; 00000050H
|
|
00bb7 0f 28 85 80 01
|
|
00 00 movaps xmm0, XMMWORD PTR c2_hi$[rbp]
|
|
00bbe 0f 11 00 movups XMMWORD PTR [rax], xmm0
|
|
|
|
; 318 : _mm_store_pd(ans->f64_x + (3 * 2 + 0), c3_lo);
|
|
|
|
00bc1 48 8b 85 50 09
|
|
00 00 mov rax, QWORD PTR ans$[rbp]
|
|
00bc8 48 83 c0 60 add rax, 96 ; 00000060H
|
|
00bcc 0f 28 85 b0 01
|
|
00 00 movaps xmm0, XMMWORD PTR c3_lo$[rbp]
|
|
00bd3 0f 11 00 movups XMMWORD PTR [rax], xmm0
|
|
|
|
; 319 : _mm_store_pd(ans->f64_x + (3 * 2 + 1), c3_hi);
|
|
|
|
00bd6 48 8b 85 50 09
|
|
00 00 mov rax, QWORD PTR ans$[rbp]
|
|
00bdd 48 83 c0 70 add rax, 112 ; 00000070H
|
|
00be1 0f 28 85 e0 01
|
|
00 00 movaps xmm0, XMMWORD PTR c3_hi$[rbp]
|
|
00be8 0f 11 00 movups XMMWORD PTR [rax], xmm0
|
|
|
|
; 320 : }
|
|
|
|
00beb 48 8d a5 28 09
|
|
00 00 lea rsp, QWORD PTR [rbp+2344]
|
|
00bf2 5f pop rdi
|
|
00bf3 5d pop rbp
|
|
00bf4 c3 ret 0
|
|
double_kernel_tile_fma_sse ENDP
|
|
_TEXT ENDS
|
|
; Function compile flags: /Odtp /RTCsu /ZI
|
|
; File D:\platform-dev\StgSharp.Native\sn-src\m.fma_tile.x86.c
|
|
; COMDAT float_kernel_tile_fma_512
|
|
_TEXT SEGMENT
|
|
i$ = 4
|
|
j$ = 36
|
|
commonK$ = 68
|
|
ansHeight$ = 100
|
|
b_shift$ = 192
|
|
c$ = 320
|
|
k$1 = 408
|
|
left_cur$2 = 440
|
|
right_cur$3 = 472
|
|
a$4 = 512
|
|
b$5 = 640
|
|
a_perm$6 = 768
|
|
b_perm$7 = 896
|
|
left$ = 1456
|
|
right$ = 1464
|
|
ans$ = 1472
|
|
enumeration$ = 1480
|
|
float_kernel_tile_fma_512 PROC ; COMDAT
|
|
|
|
; 203 : {
|
|
|
|
$LN6:
|
|
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 b0 05
|
|
00 00 sub rsp, 1456 ; 000005b0H
|
|
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 0d 00 00
|
|
00 00 lea rcx, OFFSET FLAT:__31D20E98_m@fma_tile@x86@c
|
|
00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
|
|
00039 90 npad 1
|
|
|
|
; 204 : static const __m512i b_shift_source = { .m512i_i32 = {
|
|
; 205 : // shuff order
|
|
; 206 : 0, 1, 2, 3, // col0
|
|
; 207 : 5, 6, 7, 4, //col1
|
|
; 208 : 10, 11, 8, 9, //col2
|
|
; 209 : 15, 12, 13, 14 //col3
|
|
; 210 : } };
|
|
; 211 : int i = enumeration->m128_i32[0];
|
|
|
|
0003a b8 04 00 00 00 mov eax, 4
|
|
0003f 48 6b c0 00 imul rax, rax, 0
|
|
00043 49 8b 8d c8 05
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
0004a 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
0004d 89 45 04 mov DWORD PTR i$[rbp], eax
|
|
|
|
; 212 : int j = enumeration->m128_i32[1];
|
|
|
|
00050 b8 04 00 00 00 mov eax, 4
|
|
00055 48 6b c0 01 imul rax, rax, 1
|
|
00059 49 8b 8d c8 05
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
00060 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
00063 89 45 24 mov DWORD PTR j$[rbp], eax
|
|
|
|
; 213 : int commonK = enumeration->m128_i32[2];
|
|
|
|
00066 b8 04 00 00 00 mov eax, 4
|
|
0006b 48 6b c0 02 imul rax, rax, 2
|
|
0006f 49 8b 8d c8 05
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
00076 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
00079 89 45 44 mov DWORD PTR commonK$[rbp], eax
|
|
|
|
; 214 : int ansHeight = enumeration->m128_i32[3];
|
|
|
|
0007c b8 04 00 00 00 mov eax, 4
|
|
00081 48 6b c0 03 imul rax, rax, 3
|
|
00085 49 8b 8d c8 05
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
0008c 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
0008f 89 45 64 mov DWORD PTR ansHeight$[rbp], eax
|
|
|
|
; 215 :
|
|
; 216 : register __m512i b_shift = _mm512_load_si512(&b_shift_source);
|
|
|
|
00092 62 f1 7d 48 6f
|
|
05 00 00 00 00 vmovdqa32 zmm0, ZMMWORD PTR ?b_shift_source@?1??float_kernel_tile_fma_512@@9@9
|
|
0009c 62 f1 7e 48 7f
|
|
45 03 vmovdqu32 ZMMWORD PTR b_shift$[rbp], zmm0
|
|
|
|
; 217 : register __m512 c = _mm512_load_ps((float *)(ans + GET_INDEX(ansHeight, i, j)));
|
|
|
|
000a3 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
|
|
000a6 0f af 45 04 imul eax, DWORD PTR i$[rbp]
|
|
000aa 03 45 24 add eax, DWORD PTR j$[rbp]
|
|
000ad 48 98 cdqe
|
|
000af 48 6b c0 40 imul rax, rax, 64 ; 00000040H
|
|
000b3 49 8b 8d c0 05
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
000ba 48 03 c8 add rcx, rax
|
|
000bd 48 8b c1 mov rax, rcx
|
|
000c0 62 f1 7c 48 10
|
|
00 vmovups zmm0, ZMMWORD PTR [rax]
|
|
000c6 62 f1 7c 48 11
|
|
45 05 vmovups ZMMWORD PTR c$[rbp], zmm0
|
|
|
|
; 218 : for (size_t k = 0; k < commonK; k++) {
|
|
|
|
000cd 48 c7 85 98 01
|
|
00 00 00 00 00
|
|
00 mov QWORD PTR k$1[rbp], 0
|
|
000d8 eb 11 jmp SHORT $LN4@float_kern
|
|
$LN2@float_kern:
|
|
000da 48 8b 85 98 01
|
|
00 00 mov rax, QWORD PTR k$1[rbp]
|
|
000e1 48 ff c0 inc rax
|
|
000e4 48 89 85 98 01
|
|
00 00 mov QWORD PTR k$1[rbp], rax
|
|
$LN4@float_kern:
|
|
000eb 48 63 45 44 movsxd rax, DWORD PTR commonK$[rbp]
|
|
000ef 48 39 85 98 01
|
|
00 00 cmp QWORD PTR k$1[rbp], rax
|
|
000f6 0f 83 99 01 00
|
|
00 jae $LN3@float_kern
|
|
|
|
; 219 : MAT_KERNEL(double) *const left_cur = left + GET_INDEX(ansHeight, k, j),
|
|
|
|
000fc 48 63 45 64 movsxd rax, DWORD PTR ansHeight$[rbp]
|
|
00100 48 0f af 85 98
|
|
01 00 00 imul rax, QWORD PTR k$1[rbp]
|
|
00108 48 63 4d 24 movsxd rcx, DWORD PTR j$[rbp]
|
|
0010c 48 03 c1 add rax, rcx
|
|
0010f 48 6b c0 40 imul rax, rax, 64 ; 00000040H
|
|
00113 49 8b 8d b0 05
|
|
00 00 mov rcx, QWORD PTR left$[r13]
|
|
0011a 48 03 c8 add rcx, rax
|
|
0011d 48 8b c1 mov rax, rcx
|
|
00120 48 89 85 b8 01
|
|
00 00 mov QWORD PTR left_cur$2[rbp], rax
|
|
|
|
; 220 : const *right_cur =
|
|
|
|
00127 8b 45 44 mov eax, DWORD PTR commonK$[rbp]
|
|
0012a 0f af 45 04 imul eax, DWORD PTR i$[rbp]
|
|
0012e 48 98 cdqe
|
|
00130 48 03 85 98 01
|
|
00 00 add rax, QWORD PTR k$1[rbp]
|
|
00137 48 6b c0 40 imul rax, rax, 64 ; 00000040H
|
|
0013b 49 8b 8d b8 05
|
|
00 00 mov rcx, QWORD PTR right$[r13]
|
|
00142 48 03 c8 add rcx, rax
|
|
00145 48 8b c1 mov rax, rcx
|
|
00148 48 89 85 d8 01
|
|
00 00 mov QWORD PTR right_cur$3[rbp], rax
|
|
|
|
; 221 : right + GET_INDEX(commonK, i,
|
|
; 222 : k); // GetKernelAddressUnsafe
|
|
; 223 :
|
|
; 224 : register __m512 a = _mm512_load_ps((float *)left_cur);
|
|
|
|
0014f 48 8b 85 b8 01
|
|
00 00 mov rax, QWORD PTR left_cur$2[rbp]
|
|
00156 62 f1 7c 48 10
|
|
00 vmovups zmm0, ZMMWORD PTR [rax]
|
|
0015c 62 f1 7c 48 11
|
|
45 08 vmovups ZMMWORD PTR a$4[rbp], zmm0
|
|
|
|
; 225 : register __m512 b = _mm512_load_ps((float *)right_cur);
|
|
|
|
00163 48 8b 85 d8 01
|
|
00 00 mov rax, QWORD PTR right_cur$3[rbp]
|
|
0016a 62 f1 7c 48 10
|
|
00 vmovups zmm0, ZMMWORD PTR [rax]
|
|
00170 62 f1 7c 48 11
|
|
45 0a vmovups ZMMWORD PTR b$5[rbp], zmm0
|
|
|
|
; 226 :
|
|
; 227 : b = _mm512_permutexvar_ps(b_shift, b);
|
|
|
|
00177 62 f1 7e 48 6f
|
|
45 03 vmovdqu32 zmm0, ZMMWORD PTR b_shift$[rbp]
|
|
0017e 62 f2 7d 48 16
|
|
45 0a vpermps zmm0, zmm0, ZMMWORD PTR b$5[rbp]
|
|
00185 62 f1 7c 48 11
|
|
45 0a vmovups ZMMWORD PTR b$5[rbp], zmm0
|
|
|
|
; 228 : register __m512 a_perm = _mm512_shuffle_f32x4(a, a, _MM_SHUFFLE(3, 2, 1, 0));
|
|
|
|
0018c 62 f1 7c 48 10
|
|
45 08 vmovups zmm0, ZMMWORD PTR a$4[rbp]
|
|
00193 62 f3 7d 48 23
|
|
45 08 e4 vshuff32x4 zmm0, zmm0, ZMMWORD PTR a$4[rbp], 228 ; 000000e4H
|
|
0019b 62 f1 7c 48 11
|
|
45 0c vmovups ZMMWORD PTR a_perm$6[rbp], zmm0
|
|
|
|
; 229 : register __m512 b_perm = _mm512_permute_ps(b, _FMA_SELECT(0));
|
|
|
|
001a2 62 f3 7d 48 04
|
|
45 0a 00 vpermilps zmm0, ZMMWORD PTR b$5[rbp], 0
|
|
001aa 62 f1 7c 48 11
|
|
45 0e vmovups ZMMWORD PTR b_perm$7[rbp], zmm0
|
|
|
|
; 230 : c = _mm512_fmadd_ps(a_perm, b_perm, c);
|
|
|
|
001b1 62 f1 7c 48 10
|
|
45 0c vmovups zmm0, ZMMWORD PTR a_perm$6[rbp]
|
|
001b8 62 f1 7c 48 10
|
|
4d 0e vmovups zmm1, ZMMWORD PTR b_perm$7[rbp]
|
|
001bf 62 f2 75 48 a8
|
|
45 05 vfmadd213ps zmm0, zmm1, ZMMWORD PTR c$[rbp]
|
|
001c6 62 f1 7c 48 11
|
|
45 05 vmovups ZMMWORD PTR c$[rbp], zmm0
|
|
|
|
; 231 :
|
|
; 232 : a_perm = _mm512_shuffle_f32x4(a, a, _MM_SHUFFLE(2, 1, 0, 3));
|
|
|
|
001cd 62 f1 7c 48 10
|
|
45 08 vmovups zmm0, ZMMWORD PTR a$4[rbp]
|
|
001d4 62 f3 7d 48 23
|
|
45 08 93 vshuff32x4 zmm0, zmm0, ZMMWORD PTR a$4[rbp], 147 ; 00000093H
|
|
001dc 62 f1 7c 48 11
|
|
45 0c vmovups ZMMWORD PTR a_perm$6[rbp], zmm0
|
|
|
|
; 233 : b_perm = _mm512_permute_ps(b, _FMA_SELECT(1));
|
|
|
|
001e3 62 f3 7d 48 04
|
|
45 0a 55 vpermilps zmm0, ZMMWORD PTR b$5[rbp], 85 ; 00000055H
|
|
001eb 62 f1 7c 48 11
|
|
45 0e vmovups ZMMWORD PTR b_perm$7[rbp], zmm0
|
|
|
|
; 234 : c = _mm512_fmadd_ps(a_perm, b_perm, c);
|
|
|
|
001f2 62 f1 7c 48 10
|
|
45 0c vmovups zmm0, ZMMWORD PTR a_perm$6[rbp]
|
|
001f9 62 f1 7c 48 10
|
|
4d 0e vmovups zmm1, ZMMWORD PTR b_perm$7[rbp]
|
|
00200 62 f2 75 48 a8
|
|
45 05 vfmadd213ps zmm0, zmm1, ZMMWORD PTR c$[rbp]
|
|
00207 62 f1 7c 48 11
|
|
45 05 vmovups ZMMWORD PTR c$[rbp], zmm0
|
|
|
|
; 235 :
|
|
; 236 : a_perm = _mm512_shuffle_f32x4(a, a, _MM_SHUFFLE(1, 0, 3, 2));
|
|
|
|
0020e 62 f1 7c 48 10
|
|
45 08 vmovups zmm0, ZMMWORD PTR a$4[rbp]
|
|
00215 62 f3 7d 48 23
|
|
45 08 4e vshuff32x4 zmm0, zmm0, ZMMWORD PTR a$4[rbp], 78 ; 0000004eH
|
|
0021d 62 f1 7c 48 11
|
|
45 0c vmovups ZMMWORD PTR a_perm$6[rbp], zmm0
|
|
|
|
; 237 : b_perm = _mm512_permute_ps(b, _FMA_SELECT(2));
|
|
|
|
00224 62 f3 7d 48 04
|
|
45 0a aa vpermilps zmm0, ZMMWORD PTR b$5[rbp], 170 ; 000000aaH
|
|
0022c 62 f1 7c 48 11
|
|
45 0e vmovups ZMMWORD PTR b_perm$7[rbp], zmm0
|
|
|
|
; 238 : c = _mm512_fmadd_ps(a_perm, b_perm, c);
|
|
|
|
00233 62 f1 7c 48 10
|
|
45 0c vmovups zmm0, ZMMWORD PTR a_perm$6[rbp]
|
|
0023a 62 f1 7c 48 10
|
|
4d 0e vmovups zmm1, ZMMWORD PTR b_perm$7[rbp]
|
|
00241 62 f2 75 48 a8
|
|
45 05 vfmadd213ps zmm0, zmm1, ZMMWORD PTR c$[rbp]
|
|
00248 62 f1 7c 48 11
|
|
45 05 vmovups ZMMWORD PTR c$[rbp], zmm0
|
|
|
|
; 239 :
|
|
; 240 : a_perm = _mm512_shuffle_f32x4(a, a, _MM_SHUFFLE(0, 3, 2, 1));
|
|
|
|
0024f 62 f1 7c 48 10
|
|
45 08 vmovups zmm0, ZMMWORD PTR a$4[rbp]
|
|
00256 62 f3 7d 48 23
|
|
45 08 39 vshuff32x4 zmm0, zmm0, ZMMWORD PTR a$4[rbp], 57 ; 00000039H
|
|
0025e 62 f1 7c 48 11
|
|
45 0c vmovups ZMMWORD PTR a_perm$6[rbp], zmm0
|
|
|
|
; 241 : b_perm = _mm512_permute_ps(b, _FMA_SELECT(3));
|
|
|
|
00265 62 f3 7d 48 04
|
|
45 0a ff vpermilps zmm0, ZMMWORD PTR b$5[rbp], 255 ; 000000ffH
|
|
0026d 62 f1 7c 48 11
|
|
45 0e vmovups ZMMWORD PTR b_perm$7[rbp], zmm0
|
|
|
|
; 242 : c = _mm512_fmadd_ps(a_perm, b_perm, c);
|
|
|
|
00274 62 f1 7c 48 10
|
|
45 0c vmovups zmm0, ZMMWORD PTR a_perm$6[rbp]
|
|
0027b 62 f1 7c 48 10
|
|
4d 0e vmovups zmm1, ZMMWORD PTR b_perm$7[rbp]
|
|
00282 62 f2 75 48 a8
|
|
45 05 vfmadd213ps zmm0, zmm1, ZMMWORD PTR c$[rbp]
|
|
00289 62 f1 7c 48 11
|
|
45 05 vmovups ZMMWORD PTR c$[rbp], zmm0
|
|
|
|
; 243 : }
|
|
|
|
00290 e9 45 fe ff ff jmp $LN2@float_kern
|
|
$LN3@float_kern:
|
|
|
|
; 244 :
|
|
; 245 : _mm512_store_ps((float *)(ans + GET_INDEX(ansHeight, i, j)), c);
|
|
|
|
00295 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
|
|
00298 0f af 45 04 imul eax, DWORD PTR i$[rbp]
|
|
0029c 03 45 24 add eax, DWORD PTR j$[rbp]
|
|
0029f 48 98 cdqe
|
|
002a1 48 6b c0 40 imul rax, rax, 64 ; 00000040H
|
|
002a5 49 8b 8d c0 05
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
002ac 48 03 c8 add rcx, rax
|
|
002af 48 8b c1 mov rax, rcx
|
|
002b2 62 f1 7c 48 10
|
|
45 05 vmovups zmm0, ZMMWORD PTR c$[rbp]
|
|
002b9 62 f1 7c 48 11
|
|
00 vmovups ZMMWORD PTR [rax], zmm0
|
|
|
|
; 246 : }
|
|
|
|
002bf 49 8d a5 90 05
|
|
00 00 lea rsp, QWORD PTR [r13+1424]
|
|
002c6 5f pop rdi
|
|
002c7 5d pop rbp
|
|
002c8 41 5d pop r13
|
|
002ca c3 ret 0
|
|
float_kernel_tile_fma_512 ENDP
|
|
_TEXT ENDS
|
|
; Function compile flags: /Odtp /RTCsu /ZI
|
|
; File D:\platform-dev\StgSharp.Native\sn-src\m.fma_tile.x86.c
|
|
; COMDAT float_kernel_tile_fma_avx_fma
|
|
_TEXT SEGMENT
|
|
i$ = 4
|
|
j$ = 36
|
|
commonK$ = 68
|
|
ansHeight$ = 100
|
|
ans_cur$ = 136
|
|
c01$ = 192
|
|
c23$ = 256
|
|
b01_shift$ = 320
|
|
b23_shift$ = 384
|
|
k$1 = 440
|
|
left_cur$2 = 472
|
|
right_cur$3 = 504
|
|
a01$4 = 544
|
|
a23$5 = 608
|
|
b01$6 = 672
|
|
b23$7 = 736
|
|
b01_perm$8 = 800
|
|
b23_perm$9 = 864
|
|
a12$10 = 928
|
|
a30$11 = 992
|
|
left$ = 1680
|
|
right$ = 1688
|
|
ans$ = 1696
|
|
enumeration$ = 1704
|
|
float_kernel_tile_fma_avx_fma PROC ; COMDAT
|
|
|
|
; 140 : {
|
|
|
|
$LN6:
|
|
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 90 06
|
|
00 00 sub rsp, 1680 ; 00000690H
|
|
0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
|
|
00024 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
|
|
00029 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
|
|
0002d 48 8d 0d 00 00
|
|
00 00 lea rcx, OFFSET FLAT:__31D20E98_m@fma_tile@x86@c
|
|
00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
|
|
00039 90 npad 1
|
|
|
|
; 141 : static const __m256i b01_shift_source = { .m256i_i32 = { 0, 1, 2, 3, 5, 6, 7, 4 } };
|
|
; 142 : static const __m256i b23_shift_source = { .m256i_i32 = { 2, 3, 0, 1, 7, 4, 5, 6 } };
|
|
; 143 :
|
|
; 144 : int i = enumeration->m128_i32[0];
|
|
|
|
0003a b8 04 00 00 00 mov eax, 4
|
|
0003f 48 6b c0 00 imul rax, rax, 0
|
|
00043 49 8b 8d a8 06
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
0004a 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
0004d 89 45 04 mov DWORD PTR i$[rbp], eax
|
|
|
|
; 145 : int j = enumeration->m128_i32[1];
|
|
|
|
00050 b8 04 00 00 00 mov eax, 4
|
|
00055 48 6b c0 01 imul rax, rax, 1
|
|
00059 49 8b 8d a8 06
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
00060 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
00063 89 45 24 mov DWORD PTR j$[rbp], eax
|
|
|
|
; 146 : int commonK = enumeration->m128_i32[2];
|
|
|
|
00066 b8 04 00 00 00 mov eax, 4
|
|
0006b 48 6b c0 02 imul rax, rax, 2
|
|
0006f 49 8b 8d a8 06
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
00076 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
00079 89 45 44 mov DWORD PTR commonK$[rbp], eax
|
|
|
|
; 147 : int ansHeight = enumeration->m128_i32[3];
|
|
|
|
0007c b8 04 00 00 00 mov eax, 4
|
|
00081 48 6b c0 03 imul rax, rax, 3
|
|
00085 49 8b 8d a8 06
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
0008c 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
0008f 89 45 64 mov DWORD PTR ansHeight$[rbp], eax
|
|
|
|
; 148 :
|
|
; 149 : MAT_KERNEL(float)
|
|
; 150 : const *ans_cur = ans + GET_INDEX(ansHeight, i, j); // GetKernelAddressUnsafe
|
|
|
|
00092 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
|
|
00095 0f af 45 04 imul eax, DWORD PTR i$[rbp]
|
|
00099 03 45 24 add eax, DWORD PTR j$[rbp]
|
|
0009c 48 98 cdqe
|
|
0009e 48 6b c0 40 imul rax, rax, 64 ; 00000040H
|
|
000a2 49 8b 8d a0 06
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
000a9 48 03 c8 add rcx, rax
|
|
000ac 48 8b c1 mov rax, rcx
|
|
000af 48 89 85 88 00
|
|
00 00 mov QWORD PTR ans_cur$[rbp], rax
|
|
|
|
; 151 :
|
|
; 152 : register __m256 c01 = _mm256_load_ps((float *)&ans_cur->f32_y[0]);
|
|
|
|
000b6 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
000bb 48 6b c0 00 imul rax, rax, 0
|
|
000bf 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
000c6 48 03 c8 add rcx, rax
|
|
000c9 48 8b c1 mov rax, rcx
|
|
000cc c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
000d0 c5 fc 11 85 c0
|
|
00 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
|
|
|
|
; 153 : register __m256 c23 = _mm256_load_ps((float *)&ans_cur->f32_y[1]);
|
|
|
|
000d8 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
000dd 48 6b c0 01 imul rax, rax, 1
|
|
000e1 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
000e8 48 03 c8 add rcx, rax
|
|
000eb 48 8b c1 mov rax, rcx
|
|
000ee c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
000f2 c5 fc 11 85 00
|
|
01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
|
|
|
|
; 154 :
|
|
; 155 : register __m256i b01_shift = _mm256_load_si256(&b01_shift_source);
|
|
|
|
000fa c5 fd 6f 05 00
|
|
00 00 00 vmovdqa ymm0, YMMWORD PTR ?b01_shift_source@?1??float_kernel_tile_fma_avx_fma@@9@9
|
|
00102 c5 fe 7f 85 40
|
|
01 00 00 vmovdqu YMMWORD PTR b01_shift$[rbp], ymm0
|
|
|
|
; 156 : register __m256i b23_shift = _mm256_load_si256(&b23_shift_source);
|
|
|
|
0010a c5 fd 6f 05 00
|
|
00 00 00 vmovdqa ymm0, YMMWORD PTR ?b23_shift_source@?1??float_kernel_tile_fma_avx_fma@@9@9
|
|
00112 c5 fe 7f 85 80
|
|
01 00 00 vmovdqu YMMWORD PTR b23_shift$[rbp], ymm0
|
|
|
|
; 157 :
|
|
; 158 : for (size_t k = 0; k < commonK; k++) {
|
|
|
|
0011a 48 c7 85 b8 01
|
|
00 00 00 00 00
|
|
00 mov QWORD PTR k$1[rbp], 0
|
|
00125 eb 11 jmp SHORT $LN4@float_kern
|
|
$LN2@float_kern:
|
|
00127 48 8b 85 b8 01
|
|
00 00 mov rax, QWORD PTR k$1[rbp]
|
|
0012e 48 ff c0 inc rax
|
|
00131 48 89 85 b8 01
|
|
00 00 mov QWORD PTR k$1[rbp], rax
|
|
$LN4@float_kern:
|
|
00138 48 63 45 44 movsxd rax, DWORD PTR commonK$[rbp]
|
|
0013c 48 39 85 b8 01
|
|
00 00 cmp QWORD PTR k$1[rbp], rax
|
|
00143 0f 83 16 03 00
|
|
00 jae $LN3@float_kern
|
|
|
|
; 159 : MAT_KERNEL(float)
|
|
; 160 : const *left_cur = left + GET_INDEX(ansHeight, k, j), // GetKernelAddressUnsafe
|
|
|
|
00149 48 63 45 64 movsxd rax, DWORD PTR ansHeight$[rbp]
|
|
0014d 48 0f af 85 b8
|
|
01 00 00 imul rax, QWORD PTR k$1[rbp]
|
|
00155 48 63 4d 24 movsxd rcx, DWORD PTR j$[rbp]
|
|
00159 48 03 c1 add rax, rcx
|
|
0015c 48 6b c0 40 imul rax, rax, 64 ; 00000040H
|
|
00160 49 8b 8d 90 06
|
|
00 00 mov rcx, QWORD PTR left$[r13]
|
|
00167 48 03 c8 add rcx, rax
|
|
0016a 48 8b c1 mov rax, rcx
|
|
0016d 48 89 85 d8 01
|
|
00 00 mov QWORD PTR left_cur$2[rbp], rax
|
|
|
|
; 161 : const *right_cur =
|
|
|
|
00174 8b 45 44 mov eax, DWORD PTR commonK$[rbp]
|
|
00177 0f af 45 04 imul eax, DWORD PTR i$[rbp]
|
|
0017b 48 98 cdqe
|
|
0017d 48 03 85 b8 01
|
|
00 00 add rax, QWORD PTR k$1[rbp]
|
|
00184 48 6b c0 40 imul rax, rax, 64 ; 00000040H
|
|
00188 49 8b 8d 98 06
|
|
00 00 mov rcx, QWORD PTR right$[r13]
|
|
0018f 48 03 c8 add rcx, rax
|
|
00192 48 8b c1 mov rax, rcx
|
|
00195 48 89 85 f8 01
|
|
00 00 mov QWORD PTR right_cur$3[rbp], rax
|
|
|
|
; 162 : right + GET_INDEX(commonK, i, k); // GetKernelAddressUnsafe
|
|
; 163 :
|
|
; 164 : register __m256 a01 = _mm256_load_ps((float *)&left_cur->f32_y[0]);
|
|
|
|
0019c b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
001a1 48 6b c0 00 imul rax, rax, 0
|
|
001a5 48 8b 8d d8 01
|
|
00 00 mov rcx, QWORD PTR left_cur$2[rbp]
|
|
001ac 48 03 c8 add rcx, rax
|
|
001af 48 8b c1 mov rax, rcx
|
|
001b2 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
001b6 c5 fc 11 85 20
|
|
02 00 00 vmovups YMMWORD PTR a01$4[rbp], ymm0
|
|
|
|
; 165 : register __m256 a23 = _mm256_load_ps((float *)&left_cur->f32_y[1]);
|
|
|
|
001be b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
001c3 48 6b c0 01 imul rax, rax, 1
|
|
001c7 48 8b 8d d8 01
|
|
00 00 mov rcx, QWORD PTR left_cur$2[rbp]
|
|
001ce 48 03 c8 add rcx, rax
|
|
001d1 48 8b c1 mov rax, rcx
|
|
001d4 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
001d8 c5 fc 11 85 60
|
|
02 00 00 vmovups YMMWORD PTR a23$5[rbp], ymm0
|
|
|
|
; 166 :
|
|
; 167 : register __m256 b01 = _mm256_load_ps((float *)&right_cur->f32_y[0]);
|
|
|
|
001e0 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
001e5 48 6b c0 00 imul rax, rax, 0
|
|
001e9 48 8b 8d f8 01
|
|
00 00 mov rcx, QWORD PTR right_cur$3[rbp]
|
|
001f0 48 03 c8 add rcx, rax
|
|
001f3 48 8b c1 mov rax, rcx
|
|
001f6 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
001fa c5 fc 11 85 a0
|
|
02 00 00 vmovups YMMWORD PTR b01$6[rbp], ymm0
|
|
|
|
; 168 : register __m256 b23 = _mm256_load_ps((float *)&right_cur->f32_y[1]);
|
|
|
|
00202 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00207 48 6b c0 01 imul rax, rax, 1
|
|
0020b 48 8b 8d f8 01
|
|
00 00 mov rcx, QWORD PTR right_cur$3[rbp]
|
|
00212 48 03 c8 add rcx, rax
|
|
00215 48 8b c1 mov rax, rcx
|
|
00218 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
0021c c5 fc 11 85 e0
|
|
02 00 00 vmovups YMMWORD PTR b23$7[rbp], ymm0
|
|
|
|
; 169 : b01 = _mm256_permutevar_ps(b01, b01_shift);
|
|
|
|
00224 c5 fc 10 85 a0
|
|
02 00 00 vmovups ymm0, YMMWORD PTR b01$6[rbp]
|
|
0022c c4 e2 7d 0c 85
|
|
40 01 00 00 vpermilps ymm0, ymm0, YMMWORD PTR b01_shift$[rbp]
|
|
00235 c5 fc 11 85 a0
|
|
02 00 00 vmovups YMMWORD PTR b01$6[rbp], ymm0
|
|
|
|
; 170 : b23 = _mm256_permutevar_ps(b23, b23_shift);
|
|
|
|
0023d c5 fc 10 85 e0
|
|
02 00 00 vmovups ymm0, YMMWORD PTR b23$7[rbp]
|
|
00245 c4 e2 7d 0c 85
|
|
80 01 00 00 vpermilps ymm0, ymm0, YMMWORD PTR b23_shift$[rbp]
|
|
0024e c5 fc 11 85 e0
|
|
02 00 00 vmovups YMMWORD PTR b23$7[rbp], ymm0
|
|
|
|
; 171 :
|
|
; 172 : //group 0
|
|
; 173 : register __m256 b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(0));
|
|
|
|
00256 c5 fc 10 85 a0
|
|
02 00 00 vmovups ymm0, YMMWORD PTR b01$6[rbp]
|
|
0025e c5 fc c6 85 a0
|
|
02 00 00 00 vshufps ymm0, ymm0, YMMWORD PTR b01$6[rbp], 0
|
|
00267 c5 fc 11 85 20
|
|
03 00 00 vmovups YMMWORD PTR b01_perm$8[rbp], ymm0
|
|
|
|
; 174 : register __m256 b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(0));
|
|
|
|
0026f c5 fc 10 85 e0
|
|
02 00 00 vmovups ymm0, YMMWORD PTR b23$7[rbp]
|
|
00277 c5 fc c6 85 e0
|
|
02 00 00 00 vshufps ymm0, ymm0, YMMWORD PTR b23$7[rbp], 0
|
|
00280 c5 fc 11 85 60
|
|
03 00 00 vmovups YMMWORD PTR b23_perm$9[rbp], ymm0
|
|
|
|
; 175 : c01 = _mm256_fmadd_ps(a01, b01_perm, c01);
|
|
|
|
00288 c5 fc 10 85 20
|
|
02 00 00 vmovups ymm0, YMMWORD PTR a01$4[rbp]
|
|
00290 c5 fc 10 8d 20
|
|
03 00 00 vmovups ymm1, YMMWORD PTR b01_perm$8[rbp]
|
|
00298 c4 e2 75 a8 85
|
|
c0 00 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c01$[rbp]
|
|
002a1 c5 fc 11 85 c0
|
|
00 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
|
|
|
|
; 176 : c23 = _mm256_fmadd_ps(a23, b23_perm, c23);
|
|
|
|
002a9 c5 fc 10 85 60
|
|
02 00 00 vmovups ymm0, YMMWORD PTR a23$5[rbp]
|
|
002b1 c5 fc 10 8d 60
|
|
03 00 00 vmovups ymm1, YMMWORD PTR b23_perm$9[rbp]
|
|
002b9 c4 e2 75 a8 85
|
|
00 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c23$[rbp]
|
|
002c2 c5 fc 11 85 00
|
|
01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
|
|
|
|
; 177 :
|
|
; 178 : //group 2
|
|
; 179 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(2));
|
|
|
|
002ca c5 fc 10 85 a0
|
|
02 00 00 vmovups ymm0, YMMWORD PTR b01$6[rbp]
|
|
002d2 c5 fc c6 85 a0
|
|
02 00 00 aa vshufps ymm0, ymm0, YMMWORD PTR b01$6[rbp], 170 ; 000000aaH
|
|
002db c5 fc 11 85 20
|
|
03 00 00 vmovups YMMWORD PTR b01_perm$8[rbp], ymm0
|
|
|
|
; 180 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(2));
|
|
|
|
002e3 c5 fc 10 85 e0
|
|
02 00 00 vmovups ymm0, YMMWORD PTR b23$7[rbp]
|
|
002eb c5 fc c6 85 e0
|
|
02 00 00 aa vshufps ymm0, ymm0, YMMWORD PTR b23$7[rbp], 170 ; 000000aaH
|
|
002f4 c5 fc 11 85 60
|
|
03 00 00 vmovups YMMWORD PTR b23_perm$9[rbp], ymm0
|
|
|
|
; 181 : c01 = _mm256_fmadd_ps(a23, b01_perm, c01);
|
|
|
|
002fc c5 fc 10 85 60
|
|
02 00 00 vmovups ymm0, YMMWORD PTR a23$5[rbp]
|
|
00304 c5 fc 10 8d 20
|
|
03 00 00 vmovups ymm1, YMMWORD PTR b01_perm$8[rbp]
|
|
0030c c4 e2 75 a8 85
|
|
c0 00 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c01$[rbp]
|
|
00315 c5 fc 11 85 c0
|
|
00 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
|
|
|
|
; 182 : c23 = _mm256_fmadd_ps(a01, b23_perm, c23);
|
|
|
|
0031d c5 fc 10 85 20
|
|
02 00 00 vmovups ymm0, YMMWORD PTR a01$4[rbp]
|
|
00325 c5 fc 10 8d 60
|
|
03 00 00 vmovups ymm1, YMMWORD PTR b23_perm$9[rbp]
|
|
0032d c4 e2 75 a8 85
|
|
00 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c23$[rbp]
|
|
00336 c5 fc 11 85 00
|
|
01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
|
|
|
|
; 183 :
|
|
; 184 : //group 1
|
|
; 185 : register __m256 a12 = _mm256_permute2f128_ps(a01, a23, 0x21);
|
|
|
|
0033e c5 fc 10 85 20
|
|
02 00 00 vmovups ymm0, YMMWORD PTR a01$4[rbp]
|
|
00346 c4 e3 7d 06 85
|
|
60 02 00 00 21 vperm2f128 ymm0, ymm0, YMMWORD PTR a23$5[rbp], 33 ; 00000021H
|
|
00350 c5 fc 11 85 a0
|
|
03 00 00 vmovups YMMWORD PTR a12$10[rbp], ymm0
|
|
|
|
; 186 : register __m256 a30 = _mm256_permute2f128_ps(a01, a23, 0x30);
|
|
|
|
00358 c5 fc 10 85 20
|
|
02 00 00 vmovups ymm0, YMMWORD PTR a01$4[rbp]
|
|
00360 c4 e3 7d 06 85
|
|
60 02 00 00 30 vperm2f128 ymm0, ymm0, YMMWORD PTR a23$5[rbp], 48 ; 00000030H
|
|
0036a c5 fc 11 85 e0
|
|
03 00 00 vmovups YMMWORD PTR a30$11[rbp], ymm0
|
|
|
|
; 187 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(1));
|
|
|
|
00372 c5 fc 10 85 a0
|
|
02 00 00 vmovups ymm0, YMMWORD PTR b01$6[rbp]
|
|
0037a c5 fc c6 85 a0
|
|
02 00 00 55 vshufps ymm0, ymm0, YMMWORD PTR b01$6[rbp], 85 ; 00000055H
|
|
00383 c5 fc 11 85 20
|
|
03 00 00 vmovups YMMWORD PTR b01_perm$8[rbp], ymm0
|
|
|
|
; 188 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(1));
|
|
|
|
0038b c5 fc 10 85 e0
|
|
02 00 00 vmovups ymm0, YMMWORD PTR b23$7[rbp]
|
|
00393 c5 fc c6 85 e0
|
|
02 00 00 55 vshufps ymm0, ymm0, YMMWORD PTR b23$7[rbp], 85 ; 00000055H
|
|
0039c c5 fc 11 85 60
|
|
03 00 00 vmovups YMMWORD PTR b23_perm$9[rbp], ymm0
|
|
|
|
; 189 : c01 = _mm256_fmadd_ps(a12, b01_perm, c01);
|
|
|
|
003a4 c5 fc 10 85 a0
|
|
03 00 00 vmovups ymm0, YMMWORD PTR a12$10[rbp]
|
|
003ac c5 fc 10 8d 20
|
|
03 00 00 vmovups ymm1, YMMWORD PTR b01_perm$8[rbp]
|
|
003b4 c4 e2 75 a8 85
|
|
c0 00 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c01$[rbp]
|
|
003bd c5 fc 11 85 c0
|
|
00 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
|
|
|
|
; 190 : c23 = _mm256_fmadd_ps(a30, b23_perm, c23);
|
|
|
|
003c5 c5 fc 10 85 e0
|
|
03 00 00 vmovups ymm0, YMMWORD PTR a30$11[rbp]
|
|
003cd c5 fc 10 8d 60
|
|
03 00 00 vmovups ymm1, YMMWORD PTR b23_perm$9[rbp]
|
|
003d5 c4 e2 75 a8 85
|
|
00 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c23$[rbp]
|
|
003de c5 fc 11 85 00
|
|
01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
|
|
|
|
; 191 :
|
|
; 192 : //group 3
|
|
; 193 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(3));
|
|
|
|
003e6 c5 fc 10 85 a0
|
|
02 00 00 vmovups ymm0, YMMWORD PTR b01$6[rbp]
|
|
003ee c5 fc c6 85 a0
|
|
02 00 00 ff vshufps ymm0, ymm0, YMMWORD PTR b01$6[rbp], 255 ; 000000ffH
|
|
003f7 c5 fc 11 85 20
|
|
03 00 00 vmovups YMMWORD PTR b01_perm$8[rbp], ymm0
|
|
|
|
; 194 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(3));
|
|
|
|
003ff c5 fc 10 85 e0
|
|
02 00 00 vmovups ymm0, YMMWORD PTR b23$7[rbp]
|
|
00407 c5 fc c6 85 e0
|
|
02 00 00 ff vshufps ymm0, ymm0, YMMWORD PTR b23$7[rbp], 255 ; 000000ffH
|
|
00410 c5 fc 11 85 60
|
|
03 00 00 vmovups YMMWORD PTR b23_perm$9[rbp], ymm0
|
|
|
|
; 195 : c01 = _mm256_fmadd_ps(a30, b01_perm, c01);
|
|
|
|
00418 c5 fc 10 85 e0
|
|
03 00 00 vmovups ymm0, YMMWORD PTR a30$11[rbp]
|
|
00420 c5 fc 10 8d 20
|
|
03 00 00 vmovups ymm1, YMMWORD PTR b01_perm$8[rbp]
|
|
00428 c4 e2 75 a8 85
|
|
c0 00 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c01$[rbp]
|
|
00431 c5 fc 11 85 c0
|
|
00 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
|
|
|
|
; 196 : c23 = _mm256_fmadd_ps(a12, b23_perm, c23);
|
|
|
|
00439 c5 fc 10 85 a0
|
|
03 00 00 vmovups ymm0, YMMWORD PTR a12$10[rbp]
|
|
00441 c5 fc 10 8d 60
|
|
03 00 00 vmovups ymm1, YMMWORD PTR b23_perm$9[rbp]
|
|
00449 c4 e2 75 a8 85
|
|
00 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c23$[rbp]
|
|
00452 c5 fc 11 85 00
|
|
01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
|
|
|
|
; 197 : }
|
|
|
|
0045a e9 c8 fc ff ff jmp $LN2@float_kern
|
|
$LN3@float_kern:
|
|
|
|
; 198 : _mm256_store_ps((float *)&ans_cur->f32_y[0], c01);
|
|
|
|
0045f b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00464 48 6b c0 00 imul rax, rax, 0
|
|
00468 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
0046f 48 03 c8 add rcx, rax
|
|
00472 48 8b c1 mov rax, rcx
|
|
00475 c5 fc 10 85 c0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR c01$[rbp]
|
|
0047d c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0
|
|
|
|
; 199 : _mm256_store_ps((float *)&ans_cur->f32_y[1], c23);
|
|
|
|
00481 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00486 48 6b c0 01 imul rax, rax, 1
|
|
0048a 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
00491 48 03 c8 add rcx, rax
|
|
00494 48 8b c1 mov rax, rcx
|
|
00497 c5 fc 10 85 00
|
|
01 00 00 vmovups ymm0, YMMWORD PTR c23$[rbp]
|
|
0049f c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0
|
|
|
|
; 200 : }
|
|
|
|
004a3 49 8d a5 70 06
|
|
00 00 lea rsp, QWORD PTR [r13+1648]
|
|
004aa 5f pop rdi
|
|
004ab 5d pop rbp
|
|
004ac 41 5d pop r13
|
|
004ae c3 ret 0
|
|
float_kernel_tile_fma_avx_fma ENDP
|
|
_TEXT ENDS
|
|
; Function compile flags: /Odtp /RTCsu /ZI
|
|
; File D:\platform-dev\StgSharp.Native\sn-src\m.fma_tile.x86.c
|
|
; COMDAT float_kernel_tile_fma_avx
|
|
_TEXT SEGMENT
|
|
i$ = 4
|
|
j$ = 36
|
|
commonK$ = 68
|
|
ansHeight$ = 100
|
|
ans_cur$ = 136
|
|
c01$ = 192
|
|
c23$ = 256
|
|
b01_shift$ = 320
|
|
b23_shift$ = 384
|
|
k$1 = 440
|
|
left_cur$2 = 472
|
|
right_cur$3 = 504
|
|
a01$4 = 544
|
|
a23$5 = 608
|
|
b01$6 = 672
|
|
b23$7 = 736
|
|
b01_perm$8 = 800
|
|
b23_perm$9 = 864
|
|
a12$10 = 928
|
|
a30$11 = 992
|
|
left$ = 1680
|
|
right$ = 1688
|
|
ans$ = 1696
|
|
enumeration$ = 1704
|
|
float_kernel_tile_fma_avx PROC ; COMDAT
|
|
|
|
; 77 : {
|
|
|
|
$LN6:
|
|
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 90 06
|
|
00 00 sub rsp, 1680 ; 00000690H
|
|
0001f 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
|
|
00024 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
|
|
00029 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
|
|
0002d 48 8d 0d 00 00
|
|
00 00 lea rcx, OFFSET FLAT:__31D20E98_m@fma_tile@x86@c
|
|
00034 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
|
|
00039 90 npad 1
|
|
|
|
; 78 : static const __m256i b01_shift_source = { .m256i_i32 = { 0, 1, 2, 3, 5, 6, 7, 4 } };
|
|
; 79 : static const __m256i b23_shift_source = { .m256i_i32 = { 2, 3, 0, 1, 7, 4, 5, 6 } };
|
|
; 80 :
|
|
; 81 : int i = enumeration->m128_i32[0];
|
|
|
|
0003a b8 04 00 00 00 mov eax, 4
|
|
0003f 48 6b c0 00 imul rax, rax, 0
|
|
00043 49 8b 8d a8 06
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
0004a 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
0004d 89 45 04 mov DWORD PTR i$[rbp], eax
|
|
|
|
; 82 : int j = enumeration->m128_i32[1];
|
|
|
|
00050 b8 04 00 00 00 mov eax, 4
|
|
00055 48 6b c0 01 imul rax, rax, 1
|
|
00059 49 8b 8d a8 06
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
00060 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
00063 89 45 24 mov DWORD PTR j$[rbp], eax
|
|
|
|
; 83 : int commonK = enumeration->m128_i32[2];
|
|
|
|
00066 b8 04 00 00 00 mov eax, 4
|
|
0006b 48 6b c0 02 imul rax, rax, 2
|
|
0006f 49 8b 8d a8 06
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
00076 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
00079 89 45 44 mov DWORD PTR commonK$[rbp], eax
|
|
|
|
; 84 : int ansHeight = enumeration->m128_i32[3];
|
|
|
|
0007c b8 04 00 00 00 mov eax, 4
|
|
00081 48 6b c0 03 imul rax, rax, 3
|
|
00085 49 8b 8d a8 06
|
|
00 00 mov rcx, QWORD PTR enumeration$[r13]
|
|
0008c 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
0008f 89 45 64 mov DWORD PTR ansHeight$[rbp], eax
|
|
|
|
; 85 :
|
|
; 86 : MAT_KERNEL(float)
|
|
; 87 : const *ans_cur = ans + GET_INDEX(ansHeight, i, j); // GetKernelAddressUnsafe
|
|
|
|
00092 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
|
|
00095 0f af 45 04 imul eax, DWORD PTR i$[rbp]
|
|
00099 03 45 24 add eax, DWORD PTR j$[rbp]
|
|
0009c 48 98 cdqe
|
|
0009e 48 6b c0 40 imul rax, rax, 64 ; 00000040H
|
|
000a2 49 8b 8d a0 06
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
000a9 48 03 c8 add rcx, rax
|
|
000ac 48 8b c1 mov rax, rcx
|
|
000af 48 89 85 88 00
|
|
00 00 mov QWORD PTR ans_cur$[rbp], rax
|
|
|
|
; 88 :
|
|
; 89 : register __m256 c01 = _mm256_load_ps((float *)&ans->f32_y[0]);
|
|
|
|
000b6 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
000bb 48 6b c0 00 imul rax, rax, 0
|
|
000bf 49 8b 8d a0 06
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
000c6 48 03 c8 add rcx, rax
|
|
000c9 48 8b c1 mov rax, rcx
|
|
000cc c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
000d0 c5 fc 11 85 c0
|
|
00 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
|
|
|
|
; 90 : register __m256 c23 = _mm256_load_ps((float *)&ans->f32_y[1]);
|
|
|
|
000d8 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
000dd 48 6b c0 01 imul rax, rax, 1
|
|
000e1 49 8b 8d a0 06
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
000e8 48 03 c8 add rcx, rax
|
|
000eb 48 8b c1 mov rax, rcx
|
|
000ee c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
000f2 c5 fc 11 85 00
|
|
01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
|
|
|
|
; 91 :
|
|
; 92 : register __m256i b01_shift = _mm256_load_si256(&b01_shift_source);
|
|
|
|
000fa c5 fd 6f 05 00
|
|
00 00 00 vmovdqa ymm0, YMMWORD PTR ?b01_shift_source@?1??float_kernel_tile_fma_avx@@9@9
|
|
00102 c5 fe 7f 85 40
|
|
01 00 00 vmovdqu YMMWORD PTR b01_shift$[rbp], ymm0
|
|
|
|
; 93 : register __m256i b23_shift = _mm256_load_si256(&b23_shift_source);
|
|
|
|
0010a c5 fd 6f 05 00
|
|
00 00 00 vmovdqa ymm0, YMMWORD PTR ?b23_shift_source@?1??float_kernel_tile_fma_avx@@9@9
|
|
00112 c5 fe 7f 85 80
|
|
01 00 00 vmovdqu YMMWORD PTR b23_shift$[rbp], ymm0
|
|
|
|
; 94 :
|
|
; 95 : for (size_t k = 0; k < commonK; k++) {
|
|
|
|
0011a 48 c7 85 b8 01
|
|
00 00 00 00 00
|
|
00 mov QWORD PTR k$1[rbp], 0
|
|
00125 eb 11 jmp SHORT $LN4@float_kern
|
|
$LN2@float_kern:
|
|
00127 48 8b 85 b8 01
|
|
00 00 mov rax, QWORD PTR k$1[rbp]
|
|
0012e 48 ff c0 inc rax
|
|
00131 48 89 85 b8 01
|
|
00 00 mov QWORD PTR k$1[rbp], rax
|
|
$LN4@float_kern:
|
|
00138 48 63 45 44 movsxd rax, DWORD PTR commonK$[rbp]
|
|
0013c 48 39 85 b8 01
|
|
00 00 cmp QWORD PTR k$1[rbp], rax
|
|
00143 0f 83 0b 03 00
|
|
00 jae $LN3@float_kern
|
|
|
|
; 96 : MAT_KERNEL(float)
|
|
; 97 : const *left_cur = left + GET_INDEX(ansHeight, i, k), // GetKernelAddressUnsafe
|
|
|
|
00149 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
|
|
0014c 0f af 45 04 imul eax, DWORD PTR i$[rbp]
|
|
00150 48 98 cdqe
|
|
00152 48 03 85 b8 01
|
|
00 00 add rax, QWORD PTR k$1[rbp]
|
|
00159 48 6b c0 40 imul rax, rax, 64 ; 00000040H
|
|
0015d 49 8b 8d 90 06
|
|
00 00 mov rcx, QWORD PTR left$[r13]
|
|
00164 48 03 c8 add rcx, rax
|
|
00167 48 8b c1 mov rax, rcx
|
|
0016a 48 89 85 d8 01
|
|
00 00 mov QWORD PTR left_cur$2[rbp], rax
|
|
|
|
; 98 : const *right_cur =
|
|
|
|
00171 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
|
|
00174 0f af 45 24 imul eax, DWORD PTR j$[rbp]
|
|
00178 48 98 cdqe
|
|
0017a 48 03 85 b8 01
|
|
00 00 add rax, QWORD PTR k$1[rbp]
|
|
00181 48 6b c0 40 imul rax, rax, 64 ; 00000040H
|
|
00185 49 8b 8d 98 06
|
|
00 00 mov rcx, QWORD PTR right$[r13]
|
|
0018c 48 03 c8 add rcx, rax
|
|
0018f 48 8b c1 mov rax, rcx
|
|
00192 48 89 85 f8 01
|
|
00 00 mov QWORD PTR right_cur$3[rbp], rax
|
|
|
|
; 99 : right + GET_INDEX(ansHeight, j, k); // GetKernelAddressUnsafe
|
|
; 100 :
|
|
; 101 : register __m256 a01 = _mm256_load_ps((float *)&left_cur->f32_y[0]);
|
|
|
|
00199 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
0019e 48 6b c0 00 imul rax, rax, 0
|
|
001a2 48 8b 8d d8 01
|
|
00 00 mov rcx, QWORD PTR left_cur$2[rbp]
|
|
001a9 48 03 c8 add rcx, rax
|
|
001ac 48 8b c1 mov rax, rcx
|
|
001af c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
001b3 c5 fc 11 85 20
|
|
02 00 00 vmovups YMMWORD PTR a01$4[rbp], ymm0
|
|
|
|
; 102 : register __m256 a23 = _mm256_load_ps((float *)&left_cur->f32_y[1]);
|
|
|
|
001bb b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
001c0 48 6b c0 01 imul rax, rax, 1
|
|
001c4 48 8b 8d d8 01
|
|
00 00 mov rcx, QWORD PTR left_cur$2[rbp]
|
|
001cb 48 03 c8 add rcx, rax
|
|
001ce 48 8b c1 mov rax, rcx
|
|
001d1 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
001d5 c5 fc 11 85 60
|
|
02 00 00 vmovups YMMWORD PTR a23$5[rbp], ymm0
|
|
|
|
; 103 :
|
|
; 104 : register __m256 b01 = _mm256_load_ps((float *)&right_cur->f32_y[0]);
|
|
|
|
001dd b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
001e2 48 6b c0 00 imul rax, rax, 0
|
|
001e6 48 8b 8d f8 01
|
|
00 00 mov rcx, QWORD PTR right_cur$3[rbp]
|
|
001ed 48 03 c8 add rcx, rax
|
|
001f0 48 8b c1 mov rax, rcx
|
|
001f3 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
001f7 c5 fc 11 85 a0
|
|
02 00 00 vmovups YMMWORD PTR b01$6[rbp], ymm0
|
|
|
|
; 105 : register __m256 b23 = _mm256_load_ps((float *)&right_cur->f32_y[1]);
|
|
|
|
001ff b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00204 48 6b c0 01 imul rax, rax, 1
|
|
00208 48 8b 8d f8 01
|
|
00 00 mov rcx, QWORD PTR right_cur$3[rbp]
|
|
0020f 48 03 c8 add rcx, rax
|
|
00212 48 8b c1 mov rax, rcx
|
|
00215 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
00219 c5 fc 11 85 e0
|
|
02 00 00 vmovups YMMWORD PTR b23$7[rbp], ymm0
|
|
|
|
; 106 : b01 = _mm256_permutevar_ps(b01, b01_shift);
|
|
|
|
00221 c5 fc 10 85 a0
|
|
02 00 00 vmovups ymm0, YMMWORD PTR b01$6[rbp]
|
|
00229 c4 e2 7d 0c 85
|
|
40 01 00 00 vpermilps ymm0, ymm0, YMMWORD PTR b01_shift$[rbp]
|
|
00232 c5 fc 11 85 a0
|
|
02 00 00 vmovups YMMWORD PTR b01$6[rbp], ymm0
|
|
|
|
; 107 : b23 = _mm256_permutevar_ps(b23, b23_shift);
|
|
|
|
0023a c5 fc 10 85 e0
|
|
02 00 00 vmovups ymm0, YMMWORD PTR b23$7[rbp]
|
|
00242 c4 e2 7d 0c 85
|
|
80 01 00 00 vpermilps ymm0, ymm0, YMMWORD PTR b23_shift$[rbp]
|
|
0024b c5 fc 11 85 e0
|
|
02 00 00 vmovups YMMWORD PTR b23$7[rbp], ymm0
|
|
|
|
; 108 :
|
|
; 109 : //group 0
|
|
; 110 : register __m256 b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(0));
|
|
|
|
00253 c5 fc 10 85 a0
|
|
02 00 00 vmovups ymm0, YMMWORD PTR b01$6[rbp]
|
|
0025b c5 fc c6 85 a0
|
|
02 00 00 00 vshufps ymm0, ymm0, YMMWORD PTR b01$6[rbp], 0
|
|
00264 c5 fc 11 85 20
|
|
03 00 00 vmovups YMMWORD PTR b01_perm$8[rbp], ymm0
|
|
|
|
; 111 : register __m256 b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(0));
|
|
|
|
0026c c5 fc 10 85 e0
|
|
02 00 00 vmovups ymm0, YMMWORD PTR b23$7[rbp]
|
|
00274 c5 fc c6 85 e0
|
|
02 00 00 00 vshufps ymm0, ymm0, YMMWORD PTR b23$7[rbp], 0
|
|
0027d c5 fc 11 85 60
|
|
03 00 00 vmovups YMMWORD PTR b23_perm$9[rbp], ymm0
|
|
|
|
; 112 : c01 = _mm256_add_ps(_mm256_mul_ps(a01, b01_perm), c01);
|
|
|
|
00285 c5 fc 10 85 20
|
|
02 00 00 vmovups ymm0, YMMWORD PTR a01$4[rbp]
|
|
0028d c5 fc 59 85 20
|
|
03 00 00 vmulps ymm0, ymm0, YMMWORD PTR b01_perm$8[rbp]
|
|
00295 c5 fc 58 85 c0
|
|
00 00 00 vaddps ymm0, ymm0, YMMWORD PTR c01$[rbp]
|
|
0029d c5 fc 11 85 c0
|
|
00 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
|
|
|
|
; 113 : c23 = _mm256_add_ps(_mm256_mul_ps(a23, b23_perm), c23);
|
|
|
|
002a5 c5 fc 10 85 60
|
|
02 00 00 vmovups ymm0, YMMWORD PTR a23$5[rbp]
|
|
002ad c5 fc 59 85 60
|
|
03 00 00 vmulps ymm0, ymm0, YMMWORD PTR b23_perm$9[rbp]
|
|
002b5 c5 fc 58 85 00
|
|
01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c23$[rbp]
|
|
002bd c5 fc 11 85 00
|
|
01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
|
|
|
|
; 114 :
|
|
; 115 : //group 2
|
|
; 116 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(2));
|
|
|
|
002c5 c5 fc 10 85 a0
|
|
02 00 00 vmovups ymm0, YMMWORD PTR b01$6[rbp]
|
|
002cd c5 fc c6 85 a0
|
|
02 00 00 aa vshufps ymm0, ymm0, YMMWORD PTR b01$6[rbp], 170 ; 000000aaH
|
|
002d6 c5 fc 11 85 20
|
|
03 00 00 vmovups YMMWORD PTR b01_perm$8[rbp], ymm0
|
|
|
|
; 117 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(2));
|
|
|
|
002de c5 fc 10 85 e0
|
|
02 00 00 vmovups ymm0, YMMWORD PTR b23$7[rbp]
|
|
002e6 c5 fc c6 85 e0
|
|
02 00 00 aa vshufps ymm0, ymm0, YMMWORD PTR b23$7[rbp], 170 ; 000000aaH
|
|
002ef c5 fc 11 85 60
|
|
03 00 00 vmovups YMMWORD PTR b23_perm$9[rbp], ymm0
|
|
|
|
; 118 : c01 = _mm256_add_ps(_mm256_mul_ps(a23, b01_perm), c01);
|
|
|
|
002f7 c5 fc 10 85 60
|
|
02 00 00 vmovups ymm0, YMMWORD PTR a23$5[rbp]
|
|
002ff c5 fc 59 85 20
|
|
03 00 00 vmulps ymm0, ymm0, YMMWORD PTR b01_perm$8[rbp]
|
|
00307 c5 fc 58 85 c0
|
|
00 00 00 vaddps ymm0, ymm0, YMMWORD PTR c01$[rbp]
|
|
0030f c5 fc 11 85 c0
|
|
00 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
|
|
|
|
; 119 : c23 = _mm256_add_ps(_mm256_mul_ps(a01, b23_perm), c23);
|
|
|
|
00317 c5 fc 10 85 20
|
|
02 00 00 vmovups ymm0, YMMWORD PTR a01$4[rbp]
|
|
0031f c5 fc 59 85 60
|
|
03 00 00 vmulps ymm0, ymm0, YMMWORD PTR b23_perm$9[rbp]
|
|
00327 c5 fc 58 85 00
|
|
01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c23$[rbp]
|
|
0032f c5 fc 11 85 00
|
|
01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
|
|
|
|
; 120 :
|
|
; 121 : //group 1
|
|
; 122 : register __m256 a12 = _mm256_permute2f128_ps(a01, a23, 0x21);
|
|
|
|
00337 c5 fc 10 85 20
|
|
02 00 00 vmovups ymm0, YMMWORD PTR a01$4[rbp]
|
|
0033f c4 e3 7d 06 85
|
|
60 02 00 00 21 vperm2f128 ymm0, ymm0, YMMWORD PTR a23$5[rbp], 33 ; 00000021H
|
|
00349 c5 fc 11 85 a0
|
|
03 00 00 vmovups YMMWORD PTR a12$10[rbp], ymm0
|
|
|
|
; 123 : register __m256 a30 = _mm256_permute2f128_ps(a01, a23, 0x30);
|
|
|
|
00351 c5 fc 10 85 20
|
|
02 00 00 vmovups ymm0, YMMWORD PTR a01$4[rbp]
|
|
00359 c4 e3 7d 06 85
|
|
60 02 00 00 30 vperm2f128 ymm0, ymm0, YMMWORD PTR a23$5[rbp], 48 ; 00000030H
|
|
00363 c5 fc 11 85 e0
|
|
03 00 00 vmovups YMMWORD PTR a30$11[rbp], ymm0
|
|
|
|
; 124 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(1));
|
|
|
|
0036b c5 fc 10 85 a0
|
|
02 00 00 vmovups ymm0, YMMWORD PTR b01$6[rbp]
|
|
00373 c5 fc c6 85 a0
|
|
02 00 00 55 vshufps ymm0, ymm0, YMMWORD PTR b01$6[rbp], 85 ; 00000055H
|
|
0037c c5 fc 11 85 20
|
|
03 00 00 vmovups YMMWORD PTR b01_perm$8[rbp], ymm0
|
|
|
|
; 125 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(1));
|
|
|
|
00384 c5 fc 10 85 e0
|
|
02 00 00 vmovups ymm0, YMMWORD PTR b23$7[rbp]
|
|
0038c c5 fc c6 85 e0
|
|
02 00 00 55 vshufps ymm0, ymm0, YMMWORD PTR b23$7[rbp], 85 ; 00000055H
|
|
00395 c5 fc 11 85 60
|
|
03 00 00 vmovups YMMWORD PTR b23_perm$9[rbp], ymm0
|
|
|
|
; 126 : c01 = _mm256_add_ps(_mm256_mul_ps(a12, b01_perm), c01);
|
|
|
|
0039d c5 fc 10 85 a0
|
|
03 00 00 vmovups ymm0, YMMWORD PTR a12$10[rbp]
|
|
003a5 c5 fc 59 85 20
|
|
03 00 00 vmulps ymm0, ymm0, YMMWORD PTR b01_perm$8[rbp]
|
|
003ad c5 fc 58 85 c0
|
|
00 00 00 vaddps ymm0, ymm0, YMMWORD PTR c01$[rbp]
|
|
003b5 c5 fc 11 85 c0
|
|
00 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
|
|
|
|
; 127 : c23 = _mm256_add_ps(_mm256_mul_ps(a30, b23_perm), c23);
|
|
|
|
003bd c5 fc 10 85 e0
|
|
03 00 00 vmovups ymm0, YMMWORD PTR a30$11[rbp]
|
|
003c5 c5 fc 59 85 60
|
|
03 00 00 vmulps ymm0, ymm0, YMMWORD PTR b23_perm$9[rbp]
|
|
003cd c5 fc 58 85 00
|
|
01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c23$[rbp]
|
|
003d5 c5 fc 11 85 00
|
|
01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
|
|
|
|
; 128 :
|
|
; 129 : //group 3
|
|
; 130 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(3));
|
|
|
|
003dd c5 fc 10 85 a0
|
|
02 00 00 vmovups ymm0, YMMWORD PTR b01$6[rbp]
|
|
003e5 c5 fc c6 85 a0
|
|
02 00 00 ff vshufps ymm0, ymm0, YMMWORD PTR b01$6[rbp], 255 ; 000000ffH
|
|
003ee c5 fc 11 85 20
|
|
03 00 00 vmovups YMMWORD PTR b01_perm$8[rbp], ymm0
|
|
|
|
; 131 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(3));
|
|
|
|
003f6 c5 fc 10 85 e0
|
|
02 00 00 vmovups ymm0, YMMWORD PTR b23$7[rbp]
|
|
003fe c5 fc c6 85 e0
|
|
02 00 00 ff vshufps ymm0, ymm0, YMMWORD PTR b23$7[rbp], 255 ; 000000ffH
|
|
00407 c5 fc 11 85 60
|
|
03 00 00 vmovups YMMWORD PTR b23_perm$9[rbp], ymm0
|
|
|
|
; 132 : c01 = _mm256_add_ps(_mm256_mul_ps(a30, b01_perm), c01);
|
|
|
|
0040f c5 fc 10 85 e0
|
|
03 00 00 vmovups ymm0, YMMWORD PTR a30$11[rbp]
|
|
00417 c5 fc 59 85 20
|
|
03 00 00 vmulps ymm0, ymm0, YMMWORD PTR b01_perm$8[rbp]
|
|
0041f c5 fc 58 85 c0
|
|
00 00 00 vaddps ymm0, ymm0, YMMWORD PTR c01$[rbp]
|
|
00427 c5 fc 11 85 c0
|
|
00 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
|
|
|
|
; 133 : c23 = _mm256_add_ps(_mm256_mul_ps(a12, b23_perm), c23);
|
|
|
|
0042f c5 fc 10 85 a0
|
|
03 00 00 vmovups ymm0, YMMWORD PTR a12$10[rbp]
|
|
00437 c5 fc 59 85 60
|
|
03 00 00 vmulps ymm0, ymm0, YMMWORD PTR b23_perm$9[rbp]
|
|
0043f c5 fc 58 85 00
|
|
01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c23$[rbp]
|
|
00447 c5 fc 11 85 00
|
|
01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
|
|
|
|
; 134 : }
|
|
|
|
0044f e9 d3 fc ff ff jmp $LN2@float_kern
|
|
$LN3@float_kern:
|
|
|
|
; 135 : _mm256_store_ps((float *)&ans_cur->f32_y[0], c01);
|
|
|
|
00454 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00459 48 6b c0 00 imul rax, rax, 0
|
|
0045d 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
00464 48 03 c8 add rcx, rax
|
|
00467 48 8b c1 mov rax, rcx
|
|
0046a c5 fc 10 85 c0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR c01$[rbp]
|
|
00472 c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0
|
|
|
|
; 136 : _mm256_store_ps((float *)&ans_cur->f32_y[1], c23);
|
|
|
|
00476 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
0047b 48 6b c0 01 imul rax, rax, 1
|
|
0047f 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
00486 48 03 c8 add rcx, rax
|
|
00489 48 8b c1 mov rax, rcx
|
|
0048c c5 fc 10 85 00
|
|
01 00 00 vmovups ymm0, YMMWORD PTR c23$[rbp]
|
|
00494 c5 fc 11 00 vmovups YMMWORD PTR [rax], ymm0
|
|
|
|
; 137 : }
|
|
|
|
00498 49 8d a5 70 06
|
|
00 00 lea rsp, QWORD PTR [r13+1648]
|
|
0049f 5f pop rdi
|
|
004a0 5d pop rbp
|
|
004a1 41 5d pop r13
|
|
004a3 c3 ret 0
|
|
float_kernel_tile_fma_avx ENDP
|
|
_TEXT ENDS
|
|
; Function compile flags: /Odtp /RTCsu /ZI
|
|
; File D:\platform-dev\StgSharp.Native\sn-src\m.fma_tile.x86.c
|
|
; COMDAT float_kernel_tile_fma_sse
|
|
_TEXT SEGMENT
|
|
i$ = 4
|
|
j$ = 36
|
|
commonK$ = 68
|
|
ansHeight$ = 100
|
|
ans_cur$ = 136
|
|
c0$ = 176
|
|
c1$ = 224
|
|
c2$ = 272
|
|
c3$ = 320
|
|
bcol$ = 368
|
|
k$1 = 408
|
|
right_cur$2 = 440
|
|
left_cur$3 = 472
|
|
a0$4 = 512
|
|
a1$5 = 560
|
|
a2$6 = 608
|
|
a3$7 = 656
|
|
left$ = 1104
|
|
right$ = 1112
|
|
ans$ = 1120
|
|
enumeration$ = 1128
|
|
float_kernel_tile_fma_sse PROC ; COMDAT
|
|
|
|
; 15 : {
|
|
|
|
$LN6:
|
|
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 55 push rbp
|
|
00015 57 push rdi
|
|
00016 48 81 ec 58 04
|
|
00 00 sub rsp, 1112 ; 00000458H
|
|
0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
|
00022 48 8d 0d 00 00
|
|
00 00 lea rcx, OFFSET FLAT:__31D20E98_m@fma_tile@x86@c
|
|
00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
|
|
0002e 90 npad 1
|
|
|
|
; 16 : int i = enumeration->m128_i32[0];
|
|
|
|
0002f b8 04 00 00 00 mov eax, 4
|
|
00034 48 6b c0 00 imul rax, rax, 0
|
|
00038 48 8b 8d 68 04
|
|
00 00 mov rcx, QWORD PTR enumeration$[rbp]
|
|
0003f 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
00042 89 45 04 mov DWORD PTR i$[rbp], eax
|
|
|
|
; 17 : int j = enumeration->m128_i32[1];
|
|
|
|
00045 b8 04 00 00 00 mov eax, 4
|
|
0004a 48 6b c0 01 imul rax, rax, 1
|
|
0004e 48 8b 8d 68 04
|
|
00 00 mov rcx, QWORD PTR enumeration$[rbp]
|
|
00055 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
00058 89 45 24 mov DWORD PTR j$[rbp], eax
|
|
|
|
; 18 : int commonK = enumeration->m128_i32[2];
|
|
|
|
0005b b8 04 00 00 00 mov eax, 4
|
|
00060 48 6b c0 02 imul rax, rax, 2
|
|
00064 48 8b 8d 68 04
|
|
00 00 mov rcx, QWORD PTR enumeration$[rbp]
|
|
0006b 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
0006e 89 45 44 mov DWORD PTR commonK$[rbp], eax
|
|
|
|
; 19 : int ansHeight = enumeration->m128_i32[3];
|
|
|
|
00071 b8 04 00 00 00 mov eax, 4
|
|
00076 48 6b c0 03 imul rax, rax, 3
|
|
0007a 48 8b 8d 68 04
|
|
00 00 mov rcx, QWORD PTR enumeration$[rbp]
|
|
00081 8b 04 01 mov eax, DWORD PTR [rcx+rax]
|
|
00084 89 45 64 mov DWORD PTR ansHeight$[rbp], eax
|
|
|
|
; 20 :
|
|
; 21 : MAT_KERNEL(float)
|
|
; 22 : const *ans_cur = ans + GET_INDEX(ansHeight, i, j); // GetKernelAddressUnsafe
|
|
|
|
00087 8b 45 64 mov eax, DWORD PTR ansHeight$[rbp]
|
|
0008a 0f af 45 04 imul eax, DWORD PTR i$[rbp]
|
|
0008e 03 45 24 add eax, DWORD PTR j$[rbp]
|
|
00091 48 98 cdqe
|
|
00093 48 6b c0 40 imul rax, rax, 64 ; 00000040H
|
|
00097 48 8b 8d 60 04
|
|
00 00 mov rcx, QWORD PTR ans$[rbp]
|
|
0009e 48 03 c8 add rcx, rax
|
|
000a1 48 8b c1 mov rax, rcx
|
|
000a4 48 89 85 88 00
|
|
00 00 mov QWORD PTR ans_cur$[rbp], rax
|
|
|
|
; 23 :
|
|
; 24 : register __m128 c0 = _mm_load_ps((float *)&ans_cur->f32_x[0]);
|
|
|
|
000ab b8 10 00 00 00 mov eax, 16
|
|
000b0 48 6b c0 00 imul rax, rax, 0
|
|
000b4 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
000bb 48 03 c8 add rcx, rax
|
|
000be 48 8b c1 mov rax, rcx
|
|
000c1 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
000c4 0f 29 85 b0 00
|
|
00 00 movaps XMMWORD PTR c0$[rbp], xmm0
|
|
|
|
; 25 : register __m128 c1 = _mm_load_ps((float *)&ans_cur->f32_x[1]);
|
|
|
|
000cb b8 10 00 00 00 mov eax, 16
|
|
000d0 48 6b c0 01 imul rax, rax, 1
|
|
000d4 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
000db 48 03 c8 add rcx, rax
|
|
000de 48 8b c1 mov rax, rcx
|
|
000e1 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
000e4 0f 29 85 e0 00
|
|
00 00 movaps XMMWORD PTR c1$[rbp], xmm0
|
|
|
|
; 26 : register __m128 c2 = _mm_load_ps((float *)&ans_cur->f32_x[2]);
|
|
|
|
000eb b8 10 00 00 00 mov eax, 16
|
|
000f0 48 6b c0 02 imul rax, rax, 2
|
|
000f4 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
000fb 48 03 c8 add rcx, rax
|
|
000fe 48 8b c1 mov rax, rcx
|
|
00101 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00104 0f 29 85 10 01
|
|
00 00 movaps XMMWORD PTR c2$[rbp], xmm0
|
|
|
|
; 27 : register __m128 c3 = _mm_load_ps((float *)&ans_cur->f32_x[3]);
|
|
|
|
0010b b8 10 00 00 00 mov eax, 16
|
|
00110 48 6b c0 03 imul rax, rax, 3
|
|
00114 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
0011b 48 03 c8 add rcx, rax
|
|
0011e 48 8b c1 mov rax, rcx
|
|
00121 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00124 0f 29 85 40 01
|
|
00 00 movaps XMMWORD PTR c3$[rbp], xmm0
|
|
|
|
; 28 : register __m128 bcol;
|
|
; 29 :
|
|
; 30 : for (size_t k = 0; k < commonK; k++) {
|
|
|
|
0012b 48 c7 85 98 01
|
|
00 00 00 00 00
|
|
00 mov QWORD PTR k$1[rbp], 0
|
|
00136 eb 11 jmp SHORT $LN4@float_kern
|
|
$LN2@float_kern:
|
|
00138 48 8b 85 98 01
|
|
00 00 mov rax, QWORD PTR k$1[rbp]
|
|
0013f 48 ff c0 inc rax
|
|
00142 48 89 85 98 01
|
|
00 00 mov QWORD PTR k$1[rbp], rax
|
|
$LN4@float_kern:
|
|
00149 48 63 45 44 movsxd rax, DWORD PTR commonK$[rbp]
|
|
0014d 48 39 85 98 01
|
|
00 00 cmp QWORD PTR k$1[rbp], rax
|
|
00154 0f 83 58 04 00
|
|
00 jae $LN3@float_kern
|
|
|
|
; 31 : MAT_KERNEL(float)
|
|
; 32 : const *right_cur = right + GET_INDEX(commonK, i, k), // GetKernelAddressUnsafe
|
|
|
|
0015a 8b 45 44 mov eax, DWORD PTR commonK$[rbp]
|
|
0015d 0f af 45 04 imul eax, DWORD PTR i$[rbp]
|
|
00161 48 98 cdqe
|
|
00163 48 03 85 98 01
|
|
00 00 add rax, QWORD PTR k$1[rbp]
|
|
0016a 48 6b c0 40 imul rax, rax, 64 ; 00000040H
|
|
0016e 48 8b 8d 58 04
|
|
00 00 mov rcx, QWORD PTR right$[rbp]
|
|
00175 48 03 c8 add rcx, rax
|
|
00178 48 8b c1 mov rax, rcx
|
|
0017b 48 89 85 b8 01
|
|
00 00 mov QWORD PTR right_cur$2[rbp], rax
|
|
|
|
; 33 : const *left_cur =
|
|
|
|
00182 48 63 45 64 movsxd rax, DWORD PTR ansHeight$[rbp]
|
|
00186 48 0f af 85 98
|
|
01 00 00 imul rax, QWORD PTR k$1[rbp]
|
|
0018e 48 63 4d 24 movsxd rcx, DWORD PTR j$[rbp]
|
|
00192 48 03 c1 add rax, rcx
|
|
00195 48 6b c0 40 imul rax, rax, 64 ; 00000040H
|
|
00199 48 8b 8d 50 04
|
|
00 00 mov rcx, QWORD PTR left$[rbp]
|
|
001a0 48 03 c8 add rcx, rax
|
|
001a3 48 8b c1 mov rax, rcx
|
|
001a6 48 89 85 d8 01
|
|
00 00 mov QWORD PTR left_cur$3[rbp], rax
|
|
|
|
; 34 : left + GET_INDEX(ansHeight, k, j); // GetKernelAddressUnsafe
|
|
; 35 :
|
|
; 36 : const __m128 a0 = _mm_load_ps((float *)&left_cur->f32_x[0]);
|
|
|
|
001ad b8 10 00 00 00 mov eax, 16
|
|
001b2 48 6b c0 00 imul rax, rax, 0
|
|
001b6 48 8b 8d d8 01
|
|
00 00 mov rcx, QWORD PTR left_cur$3[rbp]
|
|
001bd 48 03 c8 add rcx, rax
|
|
001c0 48 8b c1 mov rax, rcx
|
|
001c3 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
001c6 0f 29 85 00 02
|
|
00 00 movaps XMMWORD PTR a0$4[rbp], xmm0
|
|
|
|
; 37 : const __m128 a1 = _mm_load_ps((float *)&left_cur->f32_x[1]);
|
|
|
|
001cd b8 10 00 00 00 mov eax, 16
|
|
001d2 48 6b c0 01 imul rax, rax, 1
|
|
001d6 48 8b 8d d8 01
|
|
00 00 mov rcx, QWORD PTR left_cur$3[rbp]
|
|
001dd 48 03 c8 add rcx, rax
|
|
001e0 48 8b c1 mov rax, rcx
|
|
001e3 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
001e6 0f 29 85 30 02
|
|
00 00 movaps XMMWORD PTR a1$5[rbp], xmm0
|
|
|
|
; 38 : const __m128 a2 = _mm_load_ps((float *)&left_cur->f32_x[2]);
|
|
|
|
001ed b8 10 00 00 00 mov eax, 16
|
|
001f2 48 6b c0 02 imul rax, rax, 2
|
|
001f6 48 8b 8d d8 01
|
|
00 00 mov rcx, QWORD PTR left_cur$3[rbp]
|
|
001fd 48 03 c8 add rcx, rax
|
|
00200 48 8b c1 mov rax, rcx
|
|
00203 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00206 0f 29 85 60 02
|
|
00 00 movaps XMMWORD PTR a2$6[rbp], xmm0
|
|
|
|
; 39 : const __m128 a3 = _mm_load_ps((float *)&left_cur->f32_x[3]);
|
|
|
|
0020d b8 10 00 00 00 mov eax, 16
|
|
00212 48 6b c0 03 imul rax, rax, 3
|
|
00216 48 8b 8d d8 01
|
|
00 00 mov rcx, QWORD PTR left_cur$3[rbp]
|
|
0021d 48 03 c8 add rcx, rax
|
|
00220 48 8b c1 mov rax, rcx
|
|
00223 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00226 0f 29 85 90 02
|
|
00 00 movaps XMMWORD PTR a3$7[rbp], xmm0
|
|
|
|
; 40 :
|
|
; 41 : /* Column 0 */
|
|
; 42 : bcol = _mm_load_ps((float *)&right_cur->f32_x[0]);
|
|
|
|
0022d b8 10 00 00 00 mov eax, 16
|
|
00232 48 6b c0 00 imul rax, rax, 0
|
|
00236 48 8b 8d b8 01
|
|
00 00 mov rcx, QWORD PTR right_cur$2[rbp]
|
|
0023d 48 03 c8 add rcx, rax
|
|
00240 48 8b c1 mov rax, rcx
|
|
00243 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00246 0f 29 85 70 01
|
|
00 00 movaps XMMWORD PTR bcol$[rbp], xmm0
|
|
|
|
; 43 : c0 = _mm_add_ps(c0, _mm_mul_ps(a0, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(0))));
|
|
|
|
0024d 0f 28 85 70 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
00254 0f c6 85 70 01
|
|
00 00 00 shufps xmm0, XMMWORD PTR bcol$[rbp], 0
|
|
0025c 0f 28 8d 00 02
|
|
00 00 movaps xmm1, XMMWORD PTR a0$4[rbp]
|
|
00263 0f 59 c8 mulps xmm1, xmm0
|
|
00266 0f 28 c1 movaps xmm0, xmm1
|
|
00269 0f 28 8d b0 00
|
|
00 00 movaps xmm1, XMMWORD PTR c0$[rbp]
|
|
00270 0f 58 c8 addps xmm1, xmm0
|
|
00273 0f 28 c1 movaps xmm0, xmm1
|
|
00276 0f 29 85 b0 00
|
|
00 00 movaps XMMWORD PTR c0$[rbp], xmm0
|
|
|
|
; 44 : c0 = _mm_add_ps(c0, _mm_mul_ps(a1, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(1))));
|
|
|
|
0027d 0f 28 85 70 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
00284 0f c6 85 70 01
|
|
00 00 55 shufps xmm0, XMMWORD PTR bcol$[rbp], 85 ; 00000055H
|
|
0028c 0f 28 8d 30 02
|
|
00 00 movaps xmm1, XMMWORD PTR a1$5[rbp]
|
|
00293 0f 59 c8 mulps xmm1, xmm0
|
|
00296 0f 28 c1 movaps xmm0, xmm1
|
|
00299 0f 28 8d b0 00
|
|
00 00 movaps xmm1, XMMWORD PTR c0$[rbp]
|
|
002a0 0f 58 c8 addps xmm1, xmm0
|
|
002a3 0f 28 c1 movaps xmm0, xmm1
|
|
002a6 0f 29 85 b0 00
|
|
00 00 movaps XMMWORD PTR c0$[rbp], xmm0
|
|
|
|
; 45 : c0 = _mm_add_ps(c0, _mm_mul_ps(a2, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(2))));
|
|
|
|
002ad 0f 28 85 70 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
002b4 0f c6 85 70 01
|
|
00 00 aa shufps xmm0, XMMWORD PTR bcol$[rbp], 170 ; 000000aaH
|
|
002bc 0f 28 8d 60 02
|
|
00 00 movaps xmm1, XMMWORD PTR a2$6[rbp]
|
|
002c3 0f 59 c8 mulps xmm1, xmm0
|
|
002c6 0f 28 c1 movaps xmm0, xmm1
|
|
002c9 0f 28 8d b0 00
|
|
00 00 movaps xmm1, XMMWORD PTR c0$[rbp]
|
|
002d0 0f 58 c8 addps xmm1, xmm0
|
|
002d3 0f 28 c1 movaps xmm0, xmm1
|
|
002d6 0f 29 85 b0 00
|
|
00 00 movaps XMMWORD PTR c0$[rbp], xmm0
|
|
|
|
; 46 : c0 = _mm_add_ps(c0, _mm_mul_ps(a3, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(3))));
|
|
|
|
002dd 0f 28 85 70 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
002e4 0f c6 85 70 01
|
|
00 00 ff shufps xmm0, XMMWORD PTR bcol$[rbp], 255 ; 000000ffH
|
|
002ec 0f 28 8d 90 02
|
|
00 00 movaps xmm1, XMMWORD PTR a3$7[rbp]
|
|
002f3 0f 59 c8 mulps xmm1, xmm0
|
|
002f6 0f 28 c1 movaps xmm0, xmm1
|
|
002f9 0f 28 8d b0 00
|
|
00 00 movaps xmm1, XMMWORD PTR c0$[rbp]
|
|
00300 0f 58 c8 addps xmm1, xmm0
|
|
00303 0f 28 c1 movaps xmm0, xmm1
|
|
00306 0f 29 85 b0 00
|
|
00 00 movaps XMMWORD PTR c0$[rbp], xmm0
|
|
|
|
; 47 :
|
|
; 48 : /* Column 1 */
|
|
; 49 : bcol = _mm_load_ps((float *)&right_cur->f32_x[1]);
|
|
|
|
0030d b8 10 00 00 00 mov eax, 16
|
|
00312 48 6b c0 01 imul rax, rax, 1
|
|
00316 48 8b 8d b8 01
|
|
00 00 mov rcx, QWORD PTR right_cur$2[rbp]
|
|
0031d 48 03 c8 add rcx, rax
|
|
00320 48 8b c1 mov rax, rcx
|
|
00323 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00326 0f 29 85 70 01
|
|
00 00 movaps XMMWORD PTR bcol$[rbp], xmm0
|
|
|
|
; 50 : c1 = _mm_add_ps(c1, _mm_mul_ps(a0, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(0))));
|
|
|
|
0032d 0f 28 85 70 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
00334 0f c6 85 70 01
|
|
00 00 00 shufps xmm0, XMMWORD PTR bcol$[rbp], 0
|
|
0033c 0f 28 8d 00 02
|
|
00 00 movaps xmm1, XMMWORD PTR a0$4[rbp]
|
|
00343 0f 59 c8 mulps xmm1, xmm0
|
|
00346 0f 28 c1 movaps xmm0, xmm1
|
|
00349 0f 28 8d e0 00
|
|
00 00 movaps xmm1, XMMWORD PTR c1$[rbp]
|
|
00350 0f 58 c8 addps xmm1, xmm0
|
|
00353 0f 28 c1 movaps xmm0, xmm1
|
|
00356 0f 29 85 e0 00
|
|
00 00 movaps XMMWORD PTR c1$[rbp], xmm0
|
|
|
|
; 51 : c1 = _mm_add_ps(c1, _mm_mul_ps(a1, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(1))));
|
|
|
|
0035d 0f 28 85 70 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
00364 0f c6 85 70 01
|
|
00 00 55 shufps xmm0, XMMWORD PTR bcol$[rbp], 85 ; 00000055H
|
|
0036c 0f 28 8d 30 02
|
|
00 00 movaps xmm1, XMMWORD PTR a1$5[rbp]
|
|
00373 0f 59 c8 mulps xmm1, xmm0
|
|
00376 0f 28 c1 movaps xmm0, xmm1
|
|
00379 0f 28 8d e0 00
|
|
00 00 movaps xmm1, XMMWORD PTR c1$[rbp]
|
|
00380 0f 58 c8 addps xmm1, xmm0
|
|
00383 0f 28 c1 movaps xmm0, xmm1
|
|
00386 0f 29 85 e0 00
|
|
00 00 movaps XMMWORD PTR c1$[rbp], xmm0
|
|
|
|
; 52 : c1 = _mm_add_ps(c1, _mm_mul_ps(a2, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(2))));
|
|
|
|
0038d 0f 28 85 70 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
00394 0f c6 85 70 01
|
|
00 00 aa shufps xmm0, XMMWORD PTR bcol$[rbp], 170 ; 000000aaH
|
|
0039c 0f 28 8d 60 02
|
|
00 00 movaps xmm1, XMMWORD PTR a2$6[rbp]
|
|
003a3 0f 59 c8 mulps xmm1, xmm0
|
|
003a6 0f 28 c1 movaps xmm0, xmm1
|
|
003a9 0f 28 8d e0 00
|
|
00 00 movaps xmm1, XMMWORD PTR c1$[rbp]
|
|
003b0 0f 58 c8 addps xmm1, xmm0
|
|
003b3 0f 28 c1 movaps xmm0, xmm1
|
|
003b6 0f 29 85 e0 00
|
|
00 00 movaps XMMWORD PTR c1$[rbp], xmm0
|
|
|
|
; 53 : c1 = _mm_add_ps(c1, _mm_mul_ps(a3, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(3))));
|
|
|
|
003bd 0f 28 85 70 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
003c4 0f c6 85 70 01
|
|
00 00 ff shufps xmm0, XMMWORD PTR bcol$[rbp], 255 ; 000000ffH
|
|
003cc 0f 28 8d 90 02
|
|
00 00 movaps xmm1, XMMWORD PTR a3$7[rbp]
|
|
003d3 0f 59 c8 mulps xmm1, xmm0
|
|
003d6 0f 28 c1 movaps xmm0, xmm1
|
|
003d9 0f 28 8d e0 00
|
|
00 00 movaps xmm1, XMMWORD PTR c1$[rbp]
|
|
003e0 0f 58 c8 addps xmm1, xmm0
|
|
003e3 0f 28 c1 movaps xmm0, xmm1
|
|
003e6 0f 29 85 e0 00
|
|
00 00 movaps XMMWORD PTR c1$[rbp], xmm0
|
|
|
|
; 54 :
|
|
; 55 : /* Column 2 */
|
|
; 56 : bcol = _mm_load_ps((float *)&right_cur->f32_x[2]);
|
|
|
|
003ed b8 10 00 00 00 mov eax, 16
|
|
003f2 48 6b c0 02 imul rax, rax, 2
|
|
003f6 48 8b 8d b8 01
|
|
00 00 mov rcx, QWORD PTR right_cur$2[rbp]
|
|
003fd 48 03 c8 add rcx, rax
|
|
00400 48 8b c1 mov rax, rcx
|
|
00403 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00406 0f 29 85 70 01
|
|
00 00 movaps XMMWORD PTR bcol$[rbp], xmm0
|
|
|
|
; 57 : c2 = _mm_add_ps(c2, _mm_mul_ps(a0, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(0))));
|
|
|
|
0040d 0f 28 85 70 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
00414 0f c6 85 70 01
|
|
00 00 00 shufps xmm0, XMMWORD PTR bcol$[rbp], 0
|
|
0041c 0f 28 8d 00 02
|
|
00 00 movaps xmm1, XMMWORD PTR a0$4[rbp]
|
|
00423 0f 59 c8 mulps xmm1, xmm0
|
|
00426 0f 28 c1 movaps xmm0, xmm1
|
|
00429 0f 28 8d 10 01
|
|
00 00 movaps xmm1, XMMWORD PTR c2$[rbp]
|
|
00430 0f 58 c8 addps xmm1, xmm0
|
|
00433 0f 28 c1 movaps xmm0, xmm1
|
|
00436 0f 29 85 10 01
|
|
00 00 movaps XMMWORD PTR c2$[rbp], xmm0
|
|
|
|
; 58 : c2 = _mm_add_ps(c2, _mm_mul_ps(a1, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(1))));
|
|
|
|
0043d 0f 28 85 70 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
00444 0f c6 85 70 01
|
|
00 00 55 shufps xmm0, XMMWORD PTR bcol$[rbp], 85 ; 00000055H
|
|
0044c 0f 28 8d 30 02
|
|
00 00 movaps xmm1, XMMWORD PTR a1$5[rbp]
|
|
00453 0f 59 c8 mulps xmm1, xmm0
|
|
00456 0f 28 c1 movaps xmm0, xmm1
|
|
00459 0f 28 8d 10 01
|
|
00 00 movaps xmm1, XMMWORD PTR c2$[rbp]
|
|
00460 0f 58 c8 addps xmm1, xmm0
|
|
00463 0f 28 c1 movaps xmm0, xmm1
|
|
00466 0f 29 85 10 01
|
|
00 00 movaps XMMWORD PTR c2$[rbp], xmm0
|
|
|
|
; 59 : c2 = _mm_add_ps(c2, _mm_mul_ps(a2, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(2))));
|
|
|
|
0046d 0f 28 85 70 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
00474 0f c6 85 70 01
|
|
00 00 aa shufps xmm0, XMMWORD PTR bcol$[rbp], 170 ; 000000aaH
|
|
0047c 0f 28 8d 60 02
|
|
00 00 movaps xmm1, XMMWORD PTR a2$6[rbp]
|
|
00483 0f 59 c8 mulps xmm1, xmm0
|
|
00486 0f 28 c1 movaps xmm0, xmm1
|
|
00489 0f 28 8d 10 01
|
|
00 00 movaps xmm1, XMMWORD PTR c2$[rbp]
|
|
00490 0f 58 c8 addps xmm1, xmm0
|
|
00493 0f 28 c1 movaps xmm0, xmm1
|
|
00496 0f 29 85 10 01
|
|
00 00 movaps XMMWORD PTR c2$[rbp], xmm0
|
|
|
|
; 60 : c2 = _mm_add_ps(c2, _mm_mul_ps(a3, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(3))));
|
|
|
|
0049d 0f 28 85 70 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
004a4 0f c6 85 70 01
|
|
00 00 ff shufps xmm0, XMMWORD PTR bcol$[rbp], 255 ; 000000ffH
|
|
004ac 0f 28 8d 90 02
|
|
00 00 movaps xmm1, XMMWORD PTR a3$7[rbp]
|
|
004b3 0f 59 c8 mulps xmm1, xmm0
|
|
004b6 0f 28 c1 movaps xmm0, xmm1
|
|
004b9 0f 28 8d 10 01
|
|
00 00 movaps xmm1, XMMWORD PTR c2$[rbp]
|
|
004c0 0f 58 c8 addps xmm1, xmm0
|
|
004c3 0f 28 c1 movaps xmm0, xmm1
|
|
004c6 0f 29 85 10 01
|
|
00 00 movaps XMMWORD PTR c2$[rbp], xmm0
|
|
|
|
; 61 :
|
|
; 62 : /* Column 3 */
|
|
; 63 : bcol = _mm_load_ps((float *)&right_cur->f32_x[3]);
|
|
|
|
004cd b8 10 00 00 00 mov eax, 16
|
|
004d2 48 6b c0 03 imul rax, rax, 3
|
|
004d6 48 8b 8d b8 01
|
|
00 00 mov rcx, QWORD PTR right_cur$2[rbp]
|
|
004dd 48 03 c8 add rcx, rax
|
|
004e0 48 8b c1 mov rax, rcx
|
|
004e3 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
004e6 0f 29 85 70 01
|
|
00 00 movaps XMMWORD PTR bcol$[rbp], xmm0
|
|
|
|
; 64 : c3 = _mm_add_ps(c3, _mm_mul_ps(a0, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(0))));
|
|
|
|
004ed 0f 28 85 70 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
004f4 0f c6 85 70 01
|
|
00 00 00 shufps xmm0, XMMWORD PTR bcol$[rbp], 0
|
|
004fc 0f 28 8d 00 02
|
|
00 00 movaps xmm1, XMMWORD PTR a0$4[rbp]
|
|
00503 0f 59 c8 mulps xmm1, xmm0
|
|
00506 0f 28 c1 movaps xmm0, xmm1
|
|
00509 0f 28 8d 40 01
|
|
00 00 movaps xmm1, XMMWORD PTR c3$[rbp]
|
|
00510 0f 58 c8 addps xmm1, xmm0
|
|
00513 0f 28 c1 movaps xmm0, xmm1
|
|
00516 0f 29 85 40 01
|
|
00 00 movaps XMMWORD PTR c3$[rbp], xmm0
|
|
|
|
; 65 : c3 = _mm_add_ps(c3, _mm_mul_ps(a1, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(1))));
|
|
|
|
0051d 0f 28 85 70 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
00524 0f c6 85 70 01
|
|
00 00 55 shufps xmm0, XMMWORD PTR bcol$[rbp], 85 ; 00000055H
|
|
0052c 0f 28 8d 30 02
|
|
00 00 movaps xmm1, XMMWORD PTR a1$5[rbp]
|
|
00533 0f 59 c8 mulps xmm1, xmm0
|
|
00536 0f 28 c1 movaps xmm0, xmm1
|
|
00539 0f 28 8d 40 01
|
|
00 00 movaps xmm1, XMMWORD PTR c3$[rbp]
|
|
00540 0f 58 c8 addps xmm1, xmm0
|
|
00543 0f 28 c1 movaps xmm0, xmm1
|
|
00546 0f 29 85 40 01
|
|
00 00 movaps XMMWORD PTR c3$[rbp], xmm0
|
|
|
|
; 66 : c3 = _mm_add_ps(c3, _mm_mul_ps(a2, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(2))));
|
|
|
|
0054d 0f 28 85 70 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
00554 0f c6 85 70 01
|
|
00 00 aa shufps xmm0, XMMWORD PTR bcol$[rbp], 170 ; 000000aaH
|
|
0055c 0f 28 8d 60 02
|
|
00 00 movaps xmm1, XMMWORD PTR a2$6[rbp]
|
|
00563 0f 59 c8 mulps xmm1, xmm0
|
|
00566 0f 28 c1 movaps xmm0, xmm1
|
|
00569 0f 28 8d 40 01
|
|
00 00 movaps xmm1, XMMWORD PTR c3$[rbp]
|
|
00570 0f 58 c8 addps xmm1, xmm0
|
|
00573 0f 28 c1 movaps xmm0, xmm1
|
|
00576 0f 29 85 40 01
|
|
00 00 movaps XMMWORD PTR c3$[rbp], xmm0
|
|
|
|
; 67 : c3 = _mm_add_ps(c3, _mm_mul_ps(a3, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(3))));
|
|
|
|
0057d 0f 28 85 70 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
00584 0f c6 85 70 01
|
|
00 00 ff shufps xmm0, XMMWORD PTR bcol$[rbp], 255 ; 000000ffH
|
|
0058c 0f 28 8d 90 02
|
|
00 00 movaps xmm1, XMMWORD PTR a3$7[rbp]
|
|
00593 0f 59 c8 mulps xmm1, xmm0
|
|
00596 0f 28 c1 movaps xmm0, xmm1
|
|
00599 0f 28 8d 40 01
|
|
00 00 movaps xmm1, XMMWORD PTR c3$[rbp]
|
|
005a0 0f 58 c8 addps xmm1, xmm0
|
|
005a3 0f 28 c1 movaps xmm0, xmm1
|
|
005a6 0f 29 85 40 01
|
|
00 00 movaps XMMWORD PTR c3$[rbp], xmm0
|
|
|
|
; 68 : }
|
|
|
|
005ad e9 86 fb ff ff jmp $LN2@float_kern
|
|
$LN3@float_kern:
|
|
|
|
; 69 :
|
|
; 70 : _mm_store_ps((float *)&ans_cur->f32_x[0], c0);
|
|
|
|
005b2 b8 10 00 00 00 mov eax, 16
|
|
005b7 48 6b c0 00 imul rax, rax, 0
|
|
005bb 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
005c2 48 03 c8 add rcx, rax
|
|
005c5 48 8b c1 mov rax, rcx
|
|
005c8 0f 28 85 b0 00
|
|
00 00 movaps xmm0, XMMWORD PTR c0$[rbp]
|
|
005cf 0f 11 00 movups XMMWORD PTR [rax], xmm0
|
|
|
|
; 71 : _mm_store_ps((float *)&ans_cur->f32_x[1], c1);
|
|
|
|
005d2 b8 10 00 00 00 mov eax, 16
|
|
005d7 48 6b c0 01 imul rax, rax, 1
|
|
005db 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
005e2 48 03 c8 add rcx, rax
|
|
005e5 48 8b c1 mov rax, rcx
|
|
005e8 0f 28 85 e0 00
|
|
00 00 movaps xmm0, XMMWORD PTR c1$[rbp]
|
|
005ef 0f 11 00 movups XMMWORD PTR [rax], xmm0
|
|
|
|
; 72 : _mm_store_ps((float *)&ans_cur->f32_x[2], c2);
|
|
|
|
005f2 b8 10 00 00 00 mov eax, 16
|
|
005f7 48 6b c0 02 imul rax, rax, 2
|
|
005fb 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
00602 48 03 c8 add rcx, rax
|
|
00605 48 8b c1 mov rax, rcx
|
|
00608 0f 28 85 10 01
|
|
00 00 movaps xmm0, XMMWORD PTR c2$[rbp]
|
|
0060f 0f 11 00 movups XMMWORD PTR [rax], xmm0
|
|
|
|
; 73 : _mm_store_ps((float *)&ans_cur->f32_x[3], c3);
|
|
|
|
00612 b8 10 00 00 00 mov eax, 16
|
|
00617 48 6b c0 03 imul rax, rax, 3
|
|
0061b 48 8b 8d 88 00
|
|
00 00 mov rcx, QWORD PTR ans_cur$[rbp]
|
|
00622 48 03 c8 add rcx, rax
|
|
00625 48 8b c1 mov rax, rcx
|
|
00628 0f 28 85 40 01
|
|
00 00 movaps xmm0, XMMWORD PTR c3$[rbp]
|
|
0062f 0f 11 00 movups XMMWORD PTR [rax], xmm0
|
|
|
|
; 74 : }
|
|
|
|
00632 48 8d a5 38 04
|
|
00 00 lea rsp, QWORD PTR [rbp+1080]
|
|
00639 5f pop rdi
|
|
0063a 5d pop rbp
|
|
0063b c3 ret 0
|
|
float_kernel_tile_fma_sse ENDP
|
|
_TEXT ENDS
|
|
END
|