3338 lines
106 KiB
Plaintext
3338 lines
106 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
|
|
__F8387F23_m@fma@x86@c DB 01H
|
|
msvcjmc ENDS
|
|
CONST SEGMENT
|
|
?b01_shift@?1??float_kernel_fma_avx@@9@9 DD 00H ; `float_kernel_fma_avx'::`2'::b01_shift
|
|
DD 01H
|
|
DD 02H
|
|
DD 03H
|
|
DD 05H
|
|
DD 06H
|
|
DD 07H
|
|
DD 04H
|
|
?b23_shift@?1??float_kernel_fma_avx@@9@9 DD 02H ; `float_kernel_fma_avx'::`2'::b23_shift
|
|
DD 03H
|
|
DD 00H
|
|
DD 01H
|
|
DD 07H
|
|
DD 04H
|
|
DD 05H
|
|
DD 06H
|
|
?b01_shift@?1??float_kernel_fma_avx_fma@@9@9 DD 00H ; `float_kernel_fma_avx_fma'::`2'::b01_shift
|
|
DD 01H
|
|
DD 02H
|
|
DD 03H
|
|
DD 05H
|
|
DD 06H
|
|
DD 07H
|
|
DD 04H
|
|
?b23_shift@?1??float_kernel_fma_avx_fma@@9@9 DD 02H ; `float_kernel_fma_avx_fma'::`2'::b23_shift
|
|
DD 03H
|
|
DD 00H
|
|
DD 01H
|
|
DD 07H
|
|
DD 04H
|
|
DD 05H
|
|
DD 06H
|
|
?b_shift@?1??float_kernel_fma_512@@9@9 DD 00H ; `float_kernel_fma_512'::`2'::b_shift
|
|
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@?1??double_kernel_fma_512@@9@9 DQ 0000000000000000H ; `double_kernel_fma_512'::`2'::b01_shift
|
|
DQ 0000000000000001H
|
|
DQ 0000000000000002H
|
|
DQ 0000000000000003H
|
|
DQ 0000000000000005H
|
|
DQ 0000000000000006H
|
|
DQ 0000000000000007H
|
|
DQ 0000000000000004H
|
|
?b23_shift@?1??double_kernel_fma_512@@9@9 DQ 0000000000000002H ; `double_kernel_fma_512'::`2'::b23_shift
|
|
DQ 0000000000000003H
|
|
DQ 0000000000000000H
|
|
DQ 0000000000000001H
|
|
DQ 0000000000000007H
|
|
DQ 0000000000000004H
|
|
DQ 0000000000000005H
|
|
DQ 0000000000000006H
|
|
CONST ENDS
|
|
PUBLIC float_kernel_fma_sse
|
|
PUBLIC float_kernel_fma_avx
|
|
PUBLIC float_kernel_fma_avx_fma
|
|
PUBLIC float_kernel_fma_512
|
|
PUBLIC double_kernel_fma_sse
|
|
PUBLIC double_kernel_fma_avx
|
|
PUBLIC double_kernel_fma_avx_fma
|
|
PUBLIC double_kernel_fma_512
|
|
PUBLIC __JustMyCode_Default
|
|
EXTRN _RTC_InitBase:PROC
|
|
EXTRN _RTC_Shutdown:PROC
|
|
EXTRN __CheckForDebuggerJustMyCode:PROC
|
|
; COMDAT pdata
|
|
pdata SEGMENT
|
|
$pdata$float_kernel_fma_sse DD imagerel $LN3
|
|
DD imagerel $LN3+1287
|
|
DD imagerel $unwind$float_kernel_fma_sse
|
|
pdata ENDS
|
|
; COMDAT pdata
|
|
pdata SEGMENT
|
|
$pdata$float_kernel_fma_avx DD imagerel $LN3
|
|
DD imagerel $LN3+855
|
|
DD imagerel $unwind$float_kernel_fma_avx
|
|
pdata ENDS
|
|
; COMDAT pdata
|
|
pdata SEGMENT
|
|
$pdata$float_kernel_fma_avx_fma DD imagerel $LN3
|
|
DD imagerel $LN3+863
|
|
DD imagerel $unwind$float_kernel_fma_avx_fma
|
|
pdata ENDS
|
|
; COMDAT pdata
|
|
pdata SEGMENT
|
|
$pdata$float_kernel_fma_512 DD imagerel $LN3
|
|
DD imagerel $LN3+429
|
|
DD imagerel $unwind$float_kernel_fma_512
|
|
pdata ENDS
|
|
; COMDAT pdata
|
|
pdata SEGMENT
|
|
$pdata$double_kernel_fma_sse DD imagerel $LN6
|
|
DD imagerel $LN6+788
|
|
DD imagerel $unwind$double_kernel_fma_sse
|
|
pdata ENDS
|
|
; COMDAT pdata
|
|
pdata SEGMENT
|
|
$pdata$double_kernel_fma_avx DD imagerel $LN3
|
|
DD imagerel $LN3+1251
|
|
DD imagerel $unwind$double_kernel_fma_avx
|
|
pdata ENDS
|
|
; COMDAT pdata
|
|
pdata SEGMENT
|
|
$pdata$double_kernel_fma_avx_fma DD imagerel $LN3
|
|
DD imagerel $LN3+1203
|
|
DD imagerel $unwind$double_kernel_fma_avx_fma
|
|
pdata ENDS
|
|
; COMDAT pdata
|
|
pdata SEGMENT
|
|
$pdata$double_kernel_fma_512 DD imagerel $LN3
|
|
DD imagerel $LN3+837
|
|
DD imagerel $unwind$double_kernel_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_fma_512 DD 02d062801H
|
|
DD 011a231fH
|
|
DD 0701300f6H
|
|
DD 0d0115012H
|
|
xdata ENDS
|
|
; COMDAT xdata
|
|
xdata SEGMENT
|
|
$unwind$double_kernel_fma_avx_fma DD 02d062801H
|
|
DD 011a231fH
|
|
DD 070130082H
|
|
DD 0d0115012H
|
|
xdata ENDS
|
|
; COMDAT xdata
|
|
xdata SEGMENT
|
|
$unwind$double_kernel_fma_avx DD 02d062801H
|
|
DD 011a231fH
|
|
DD 070130082H
|
|
DD 0d0115012H
|
|
xdata ENDS
|
|
; COMDAT xdata
|
|
xdata SEGMENT
|
|
$unwind$double_kernel_fma_sse DD 025051d01H
|
|
DD 0118231dH
|
|
DD 07011004bH
|
|
DD 05010H
|
|
xdata ENDS
|
|
; COMDAT xdata
|
|
xdata SEGMENT
|
|
$unwind$float_kernel_fma_512 DD 02d062801H
|
|
DD 011a231fH
|
|
DD 070130106H
|
|
DD 0d0115012H
|
|
xdata ENDS
|
|
; COMDAT xdata
|
|
xdata SEGMENT
|
|
$unwind$float_kernel_fma_avx_fma DD 02d062801H
|
|
DD 011a231fH
|
|
DD 07013008aH
|
|
DD 0d0115012H
|
|
xdata ENDS
|
|
; COMDAT xdata
|
|
xdata SEGMENT
|
|
$unwind$float_kernel_fma_avx DD 02d062801H
|
|
DD 011a231fH
|
|
DD 07013008aH
|
|
DD 0d0115012H
|
|
xdata ENDS
|
|
; COMDAT xdata
|
|
xdata SEGMENT
|
|
$unwind$float_kernel_fma_sse DD 025051d01H
|
|
DD 0118231dH
|
|
DD 070110053H
|
|
DD 05010H
|
|
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.x86.c
|
|
; COMDAT double_kernel_fma_512
|
|
_TEXT SEGMENT
|
|
a01$ = 64
|
|
a23$ = 192
|
|
b01$ = 320
|
|
b23$ = 448
|
|
c01$ = 576
|
|
c23$ = 704
|
|
b01_perm$ = 832
|
|
b23_perm$ = 960
|
|
a12$ = 1088
|
|
a30$ = 1216
|
|
left$ = 1968
|
|
right$ = 1976
|
|
ans$ = 1984
|
|
double_kernel_fma_512 PROC ; COMDAT
|
|
|
|
; 321 : {
|
|
|
|
$LN3:
|
|
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
|
|
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
|
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
|
0000f 41 55 push r13
|
|
00011 55 push rbp
|
|
00012 57 push rdi
|
|
00013 48 81 ec b0 07
|
|
00 00 sub rsp, 1968 ; 000007b0H
|
|
0001a 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
|
|
0001f 48 8d 6c 24 60 lea rbp, QWORD PTR [rsp+96]
|
|
00024 48 83 e5 c0 and rbp, -64 ; ffffffffffffffc0H
|
|
00028 48 8d 0d 00 00
|
|
00 00 lea rcx, OFFSET FLAT:__F8387F23_m@fma@x86@c
|
|
0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
|
|
00034 90 npad 1
|
|
|
|
; 322 : static const __m512i b01_shift = { .m512i_i64 = { 0, 1, 2, 3, 5, 6, 7, 4 } };
|
|
; 323 : static const __m512i b23_shift = { .m512i_i64 = { 2, 3, 0, 1, 7, 4, 5, 6 } };
|
|
; 324 :
|
|
; 325 : register __m512d a01 = _mm512_load_pd((double *)&left->f64_z[0]);
|
|
|
|
00035 b8 40 00 00 00 mov eax, 64 ; 00000040H
|
|
0003a 48 6b c0 00 imul rax, rax, 0
|
|
0003e 49 8b 8d b0 07
|
|
00 00 mov rcx, QWORD PTR left$[r13]
|
|
00045 48 03 c8 add rcx, rax
|
|
00048 48 8b c1 mov rax, rcx
|
|
0004b 62 f1 fd 48 10
|
|
00 vmovupd zmm0, ZMMWORD PTR [rax]
|
|
00051 62 f1 fd 48 11
|
|
45 01 vmovupd ZMMWORD PTR a01$[rbp], zmm0
|
|
|
|
; 326 : register __m512d a23 = _mm512_load_pd((double *)&left->f64_z[1]);
|
|
|
|
00058 b8 40 00 00 00 mov eax, 64 ; 00000040H
|
|
0005d 48 6b c0 01 imul rax, rax, 1
|
|
00061 49 8b 8d b0 07
|
|
00 00 mov rcx, QWORD PTR left$[r13]
|
|
00068 48 03 c8 add rcx, rax
|
|
0006b 48 8b c1 mov rax, rcx
|
|
0006e 62 f1 fd 48 10
|
|
00 vmovupd zmm0, ZMMWORD PTR [rax]
|
|
00074 62 f1 fd 48 11
|
|
45 03 vmovupd ZMMWORD PTR a23$[rbp], zmm0
|
|
|
|
; 327 :
|
|
; 328 : register __m512d b01 = _mm512_load_pd((double *)&right->f64_z[0]);
|
|
|
|
0007b b8 40 00 00 00 mov eax, 64 ; 00000040H
|
|
00080 48 6b c0 00 imul rax, rax, 0
|
|
00084 49 8b 8d b8 07
|
|
00 00 mov rcx, QWORD PTR right$[r13]
|
|
0008b 48 03 c8 add rcx, rax
|
|
0008e 48 8b c1 mov rax, rcx
|
|
00091 62 f1 fd 48 10
|
|
00 vmovupd zmm0, ZMMWORD PTR [rax]
|
|
00097 62 f1 fd 48 11
|
|
45 05 vmovupd ZMMWORD PTR b01$[rbp], zmm0
|
|
|
|
; 329 : register __m512d b23 = _mm512_load_pd((double *)&right->f64_z[1]);
|
|
|
|
0009e b8 40 00 00 00 mov eax, 64 ; 00000040H
|
|
000a3 48 6b c0 01 imul rax, rax, 1
|
|
000a7 49 8b 8d b8 07
|
|
00 00 mov rcx, QWORD PTR right$[r13]
|
|
000ae 48 03 c8 add rcx, rax
|
|
000b1 48 8b c1 mov rax, rcx
|
|
000b4 62 f1 fd 48 10
|
|
00 vmovupd zmm0, ZMMWORD PTR [rax]
|
|
000ba 62 f1 fd 48 11
|
|
45 07 vmovupd ZMMWORD PTR b23$[rbp], zmm0
|
|
|
|
; 330 : b01 = _mm512_permutexvar_pd(b01_shift, b01);
|
|
|
|
000c1 62 f1 7e 48 6f
|
|
05 00 00 00 00 vmovdqu32 zmm0, ZMMWORD PTR ?b01_shift@?1??double_kernel_fma_512@@9@9
|
|
000cb 62 f2 fd 48 16
|
|
45 05 vpermpd zmm0, zmm0, ZMMWORD PTR b01$[rbp]
|
|
000d2 62 f1 fd 48 11
|
|
45 05 vmovupd ZMMWORD PTR b01$[rbp], zmm0
|
|
|
|
; 331 : b23 = _mm512_permutexvar_pd(b23_shift, b23);
|
|
|
|
000d9 62 f1 7e 48 6f
|
|
05 00 00 00 00 vmovdqu32 zmm0, ZMMWORD PTR ?b23_shift@?1??double_kernel_fma_512@@9@9
|
|
000e3 62 f2 fd 48 16
|
|
45 07 vpermpd zmm0, zmm0, ZMMWORD PTR b23$[rbp]
|
|
000ea 62 f1 fd 48 11
|
|
45 07 vmovupd ZMMWORD PTR b23$[rbp], zmm0
|
|
|
|
; 332 :
|
|
; 333 : register __m512d c01 = _mm512_load_pd((float *)&ans->f64_z[0]);
|
|
|
|
000f1 b8 40 00 00 00 mov eax, 64 ; 00000040H
|
|
000f6 48 6b c0 00 imul rax, rax, 0
|
|
000fa 49 8b 8d c0 07
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
00101 48 03 c8 add rcx, rax
|
|
00104 48 8b c1 mov rax, rcx
|
|
00107 62 f1 fd 48 10
|
|
00 vmovupd zmm0, ZMMWORD PTR [rax]
|
|
0010d 62 f1 fd 48 11
|
|
45 09 vmovupd ZMMWORD PTR c01$[rbp], zmm0
|
|
|
|
; 334 : register __m512d c23 = _mm512_load_pd((float *)&ans->f64_z[1]);
|
|
|
|
00114 b8 40 00 00 00 mov eax, 64 ; 00000040H
|
|
00119 48 6b c0 01 imul rax, rax, 1
|
|
0011d 49 8b 8d c0 07
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
00124 48 03 c8 add rcx, rax
|
|
00127 48 8b c1 mov rax, rcx
|
|
0012a 62 f1 fd 48 10
|
|
00 vmovupd zmm0, ZMMWORD PTR [rax]
|
|
00130 62 f1 fd 48 11
|
|
45 0b vmovupd ZMMWORD PTR c23$[rbp], zmm0
|
|
|
|
; 335 :
|
|
; 336 : //group 0
|
|
; 337 : register __m512d b01_perm = _mm512_shuffle_pd(b01, b01, _FMA_SELECT(0));
|
|
|
|
00137 62 f1 fd 48 10
|
|
45 05 vmovupd zmm0, ZMMWORD PTR b01$[rbp]
|
|
0013e 62 f1 fd 48 c6
|
|
45 05 00 vshufpd zmm0, zmm0, ZMMWORD PTR b01$[rbp], 0
|
|
00146 62 f1 fd 48 11
|
|
45 0d vmovupd ZMMWORD PTR b01_perm$[rbp], zmm0
|
|
|
|
; 338 : register __m512d b23_perm = _mm512_shuffle_pd(b23, b23, _FMA_SELECT(0));
|
|
|
|
0014d 62 f1 fd 48 10
|
|
45 07 vmovupd zmm0, ZMMWORD PTR b23$[rbp]
|
|
00154 62 f1 fd 48 c6
|
|
45 07 00 vshufpd zmm0, zmm0, ZMMWORD PTR b23$[rbp], 0
|
|
0015c 62 f1 fd 48 11
|
|
45 0f vmovupd ZMMWORD PTR b23_perm$[rbp], zmm0
|
|
|
|
; 339 : c01 = _mm512_fmadd_pd(a01, b01_perm, c01);
|
|
|
|
00163 62 f1 fd 48 10
|
|
45 01 vmovupd zmm0, ZMMWORD PTR a01$[rbp]
|
|
0016a 62 f1 fd 48 10
|
|
4d 0d vmovupd zmm1, ZMMWORD PTR b01_perm$[rbp]
|
|
00171 62 f2 f5 48 a8
|
|
45 09 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c01$[rbp]
|
|
00178 62 f1 fd 48 11
|
|
45 09 vmovupd ZMMWORD PTR c01$[rbp], zmm0
|
|
|
|
; 340 : c23 = _mm512_fmadd_pd(a23, b23_perm, c23);
|
|
|
|
0017f 62 f1 fd 48 10
|
|
45 03 vmovupd zmm0, ZMMWORD PTR a23$[rbp]
|
|
00186 62 f1 fd 48 10
|
|
4d 0f vmovupd zmm1, ZMMWORD PTR b23_perm$[rbp]
|
|
0018d 62 f2 f5 48 a8
|
|
45 0b vfmadd213pd zmm0, zmm1, ZMMWORD PTR c23$[rbp]
|
|
00194 62 f1 fd 48 11
|
|
45 0b vmovupd ZMMWORD PTR c23$[rbp], zmm0
|
|
|
|
; 341 :
|
|
; 342 : //group 2
|
|
; 343 : b01_perm = _mm512_shuffle_pd(b01, b01, _FMA_SELECT(2));
|
|
|
|
0019b 62 f1 fd 48 10
|
|
45 05 vmovupd zmm0, ZMMWORD PTR b01$[rbp]
|
|
001a2 62 f1 fd 48 c6
|
|
45 05 aa vshufpd zmm0, zmm0, ZMMWORD PTR b01$[rbp], 170 ; 000000aaH
|
|
001aa 62 f1 fd 48 11
|
|
45 0d vmovupd ZMMWORD PTR b01_perm$[rbp], zmm0
|
|
|
|
; 344 : b23_perm = _mm512_shuffle_pd(b23, b23, _FMA_SELECT(2));
|
|
|
|
001b1 62 f1 fd 48 10
|
|
45 07 vmovupd zmm0, ZMMWORD PTR b23$[rbp]
|
|
001b8 62 f1 fd 48 c6
|
|
45 07 aa vshufpd zmm0, zmm0, ZMMWORD PTR b23$[rbp], 170 ; 000000aaH
|
|
001c0 62 f1 fd 48 11
|
|
45 0f vmovupd ZMMWORD PTR b23_perm$[rbp], zmm0
|
|
|
|
; 345 : c01 = _mm512_fmadd_pd(a23, b01_perm, c01);
|
|
|
|
001c7 62 f1 fd 48 10
|
|
45 03 vmovupd zmm0, ZMMWORD PTR a23$[rbp]
|
|
001ce 62 f1 fd 48 10
|
|
4d 0d vmovupd zmm1, ZMMWORD PTR b01_perm$[rbp]
|
|
001d5 62 f2 f5 48 a8
|
|
45 09 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c01$[rbp]
|
|
001dc 62 f1 fd 48 11
|
|
45 09 vmovupd ZMMWORD PTR c01$[rbp], zmm0
|
|
|
|
; 346 : c23 = _mm512_fmadd_pd(a01, b23_perm, c23);
|
|
|
|
001e3 62 f1 fd 48 10
|
|
45 01 vmovupd zmm0, ZMMWORD PTR a01$[rbp]
|
|
001ea 62 f1 fd 48 10
|
|
4d 0f vmovupd zmm1, ZMMWORD PTR b23_perm$[rbp]
|
|
001f1 62 f2 f5 48 a8
|
|
45 0b vfmadd213pd zmm0, zmm1, ZMMWORD PTR c23$[rbp]
|
|
001f8 62 f1 fd 48 11
|
|
45 0b vmovupd ZMMWORD PTR c23$[rbp], zmm0
|
|
|
|
; 347 :
|
|
; 348 : //group 1
|
|
; 349 : register __m512d a12 = _mm512_shuffle_f64x2(a01, a23, _MM_SHUFFLE(1, 0, 3, 2));
|
|
|
|
001ff 62 f1 fd 48 10
|
|
45 01 vmovupd zmm0, ZMMWORD PTR a01$[rbp]
|
|
00206 62 f3 fd 48 23
|
|
45 03 4e vshuff64x2 zmm0, zmm0, ZMMWORD PTR a23$[rbp], 78 ; 0000004eH
|
|
0020e 62 f1 fd 48 11
|
|
45 11 vmovupd ZMMWORD PTR a12$[rbp], zmm0
|
|
|
|
; 350 : register __m512d a30 = _mm512_shuffle_f64x2(a23, a01, _MM_SHUFFLE(1, 0, 3, 2));
|
|
|
|
00215 62 f1 fd 48 10
|
|
45 03 vmovupd zmm0, ZMMWORD PTR a23$[rbp]
|
|
0021c 62 f3 fd 48 23
|
|
45 01 4e vshuff64x2 zmm0, zmm0, ZMMWORD PTR a01$[rbp], 78 ; 0000004eH
|
|
00224 62 f1 fd 48 11
|
|
45 13 vmovupd ZMMWORD PTR a30$[rbp], zmm0
|
|
|
|
; 351 : b01_perm = _mm512_shuffle_pd(b01, b01, _FMA_SELECT(1));
|
|
|
|
0022b 62 f1 fd 48 10
|
|
45 05 vmovupd zmm0, ZMMWORD PTR b01$[rbp]
|
|
00232 62 f1 fd 48 c6
|
|
45 05 55 vshufpd zmm0, zmm0, ZMMWORD PTR b01$[rbp], 85 ; 00000055H
|
|
0023a 62 f1 fd 48 11
|
|
45 0d vmovupd ZMMWORD PTR b01_perm$[rbp], zmm0
|
|
|
|
; 352 : b23_perm = _mm512_shuffle_pd(b23, b23, _FMA_SELECT(1));
|
|
|
|
00241 62 f1 fd 48 10
|
|
45 07 vmovupd zmm0, ZMMWORD PTR b23$[rbp]
|
|
00248 62 f1 fd 48 c6
|
|
45 07 55 vshufpd zmm0, zmm0, ZMMWORD PTR b23$[rbp], 85 ; 00000055H
|
|
00250 62 f1 fd 48 11
|
|
45 0f vmovupd ZMMWORD PTR b23_perm$[rbp], zmm0
|
|
|
|
; 353 : c01 = _mm512_fmadd_pd(a12, b01_perm, c01);
|
|
|
|
00257 62 f1 fd 48 10
|
|
45 11 vmovupd zmm0, ZMMWORD PTR a12$[rbp]
|
|
0025e 62 f1 fd 48 10
|
|
4d 0d vmovupd zmm1, ZMMWORD PTR b01_perm$[rbp]
|
|
00265 62 f2 f5 48 a8
|
|
45 09 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c01$[rbp]
|
|
0026c 62 f1 fd 48 11
|
|
45 09 vmovupd ZMMWORD PTR c01$[rbp], zmm0
|
|
|
|
; 354 : c23 = _mm512_fmadd_pd(a30, b23_perm, c23);
|
|
|
|
00273 62 f1 fd 48 10
|
|
45 13 vmovupd zmm0, ZMMWORD PTR a30$[rbp]
|
|
0027a 62 f1 fd 48 10
|
|
4d 0f vmovupd zmm1, ZMMWORD PTR b23_perm$[rbp]
|
|
00281 62 f2 f5 48 a8
|
|
45 0b vfmadd213pd zmm0, zmm1, ZMMWORD PTR c23$[rbp]
|
|
00288 62 f1 fd 48 11
|
|
45 0b vmovupd ZMMWORD PTR c23$[rbp], zmm0
|
|
|
|
; 355 :
|
|
; 356 : //group 3
|
|
; 357 : b01_perm = _mm512_shuffle_pd(b01, b01, _FMA_SELECT(3));
|
|
|
|
0028f 62 f1 fd 48 10
|
|
45 05 vmovupd zmm0, ZMMWORD PTR b01$[rbp]
|
|
00296 62 f1 fd 48 c6
|
|
45 05 ff vshufpd zmm0, zmm0, ZMMWORD PTR b01$[rbp], 255 ; 000000ffH
|
|
0029e 62 f1 fd 48 11
|
|
45 0d vmovupd ZMMWORD PTR b01_perm$[rbp], zmm0
|
|
|
|
; 358 : b23_perm = _mm512_shuffle_pd(b23, b23, _FMA_SELECT(3));
|
|
|
|
002a5 62 f1 fd 48 10
|
|
45 07 vmovupd zmm0, ZMMWORD PTR b23$[rbp]
|
|
002ac 62 f1 fd 48 c6
|
|
45 07 ff vshufpd zmm0, zmm0, ZMMWORD PTR b23$[rbp], 255 ; 000000ffH
|
|
002b4 62 f1 fd 48 11
|
|
45 0f vmovupd ZMMWORD PTR b23_perm$[rbp], zmm0
|
|
|
|
; 359 : c01 = _mm512_fmadd_pd(a30, b01_perm, c01);
|
|
|
|
002bb 62 f1 fd 48 10
|
|
45 13 vmovupd zmm0, ZMMWORD PTR a30$[rbp]
|
|
002c2 62 f1 fd 48 10
|
|
4d 0d vmovupd zmm1, ZMMWORD PTR b01_perm$[rbp]
|
|
002c9 62 f2 f5 48 a8
|
|
45 09 vfmadd213pd zmm0, zmm1, ZMMWORD PTR c01$[rbp]
|
|
002d0 62 f1 fd 48 11
|
|
45 09 vmovupd ZMMWORD PTR c01$[rbp], zmm0
|
|
|
|
; 360 : c23 = _mm512_fmadd_pd(a12, b23_perm, c23);
|
|
|
|
002d7 62 f1 fd 48 10
|
|
45 11 vmovupd zmm0, ZMMWORD PTR a12$[rbp]
|
|
002de 62 f1 fd 48 10
|
|
4d 0f vmovupd zmm1, ZMMWORD PTR b23_perm$[rbp]
|
|
002e5 62 f2 f5 48 a8
|
|
45 0b vfmadd213pd zmm0, zmm1, ZMMWORD PTR c23$[rbp]
|
|
002ec 62 f1 fd 48 11
|
|
45 0b vmovupd ZMMWORD PTR c23$[rbp], zmm0
|
|
|
|
; 361 :
|
|
; 362 : _mm512_store_pd((double *)&ans->f64_z[0], c01);
|
|
|
|
002f3 b8 40 00 00 00 mov eax, 64 ; 00000040H
|
|
002f8 48 6b c0 00 imul rax, rax, 0
|
|
002fc 49 8b 8d c0 07
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
00303 48 03 c8 add rcx, rax
|
|
00306 48 8b c1 mov rax, rcx
|
|
00309 62 f1 fd 48 10
|
|
45 09 vmovupd zmm0, ZMMWORD PTR c01$[rbp]
|
|
00310 62 f1 fd 48 11
|
|
00 vmovupd ZMMWORD PTR [rax], zmm0
|
|
|
|
; 363 : _mm512_store_pd((double *)&ans->f64_z[1], c23);
|
|
|
|
00316 b8 40 00 00 00 mov eax, 64 ; 00000040H
|
|
0031b 48 6b c0 01 imul rax, rax, 1
|
|
0031f 49 8b 8d c0 07
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
00326 48 03 c8 add rcx, rax
|
|
00329 48 8b c1 mov rax, rcx
|
|
0032c 62 f1 fd 48 10
|
|
45 0b vmovupd zmm0, ZMMWORD PTR c23$[rbp]
|
|
00333 62 f1 fd 48 11
|
|
00 vmovupd ZMMWORD PTR [rax], zmm0
|
|
|
|
; 364 : }
|
|
|
|
00339 49 8d a5 90 07
|
|
00 00 lea rsp, QWORD PTR [r13+1936]
|
|
00340 5f pop rdi
|
|
00341 5d pop rbp
|
|
00342 41 5d pop r13
|
|
00344 c3 ret 0
|
|
double_kernel_fma_512 ENDP
|
|
_TEXT ENDS
|
|
; Function compile flags: /Odtp /RTCsu /ZI
|
|
; File D:\platform-dev\StgSharp.Native\sn-src\m.fma.x86.c
|
|
; COMDAT double_kernel_fma_avx_fma
|
|
_TEXT SEGMENT
|
|
a0$ = 32
|
|
a1$ = 96
|
|
a2$ = 160
|
|
a3$ = 224
|
|
b0$ = 288
|
|
b1$ = 352
|
|
b2$ = 416
|
|
b3$ = 480
|
|
ccol$ = 544
|
|
left$ = 1040
|
|
right$ = 1048
|
|
ans$ = 1056
|
|
double_kernel_fma_avx_fma PROC ; COMDAT
|
|
|
|
; 277 : {
|
|
|
|
$LN3:
|
|
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
|
|
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
|
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
|
0000f 41 55 push r13
|
|
00011 55 push rbp
|
|
00012 57 push rdi
|
|
00013 48 81 ec 10 04
|
|
00 00 sub rsp, 1040 ; 00000410H
|
|
0001a 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
|
|
0001f 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
|
|
00024 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
|
|
00028 48 8d 0d 00 00
|
|
00 00 lea rcx, OFFSET FLAT:__F8387F23_m@fma@x86@c
|
|
0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
|
|
00034 90 npad 1
|
|
|
|
; 278 : const __m256d a0 = _mm256_load_pd((double *)&left->f64_y[0]);
|
|
|
|
00035 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
0003a 48 6b c0 00 imul rax, rax, 0
|
|
0003e 49 8b 8d 10 04
|
|
00 00 mov rcx, QWORD PTR left$[r13]
|
|
00045 48 03 c8 add rcx, rax
|
|
00048 48 8b c1 mov rax, rcx
|
|
0004b c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
0004f c5 fd 11 45 20 vmovupd YMMWORD PTR a0$[rbp], ymm0
|
|
|
|
; 279 : const __m256d a1 = _mm256_load_pd((double *)&left->f64_y[1]);
|
|
|
|
00054 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00059 48 6b c0 01 imul rax, rax, 1
|
|
0005d 49 8b 8d 10 04
|
|
00 00 mov rcx, QWORD PTR left$[r13]
|
|
00064 48 03 c8 add rcx, rax
|
|
00067 48 8b c1 mov rax, rcx
|
|
0006a c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
0006e c5 fd 11 45 60 vmovupd YMMWORD PTR a1$[rbp], ymm0
|
|
|
|
; 280 : const __m256d a2 = _mm256_load_pd((double *)&left->f64_y[2]);
|
|
|
|
00073 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00078 48 6b c0 02 imul rax, rax, 2
|
|
0007c 49 8b 8d 10 04
|
|
00 00 mov rcx, QWORD PTR left$[r13]
|
|
00083 48 03 c8 add rcx, rax
|
|
00086 48 8b c1 mov rax, rcx
|
|
00089 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
0008d c5 fd 11 85 a0
|
|
00 00 00 vmovupd YMMWORD PTR a2$[rbp], ymm0
|
|
|
|
; 281 : const __m256d a3 = _mm256_load_pd((double *)&left->f64_y[3]);
|
|
|
|
00095 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
0009a 48 6b c0 03 imul rax, rax, 3
|
|
0009e 49 8b 8d 10 04
|
|
00 00 mov rcx, QWORD PTR left$[r13]
|
|
000a5 48 03 c8 add rcx, rax
|
|
000a8 48 8b c1 mov rax, rcx
|
|
000ab c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
000af c5 fd 11 85 e0
|
|
00 00 00 vmovupd YMMWORD PTR a3$[rbp], ymm0
|
|
|
|
; 282 :
|
|
; 283 : __m256d b0 = _mm256_load_pd((double *)&right->f64_y[0]);
|
|
|
|
000b7 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
000bc 48 6b c0 00 imul rax, rax, 0
|
|
000c0 49 8b 8d 18 04
|
|
00 00 mov rcx, QWORD PTR right$[r13]
|
|
000c7 48 03 c8 add rcx, rax
|
|
000ca 48 8b c1 mov rax, rcx
|
|
000cd c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
000d1 c5 fd 11 85 20
|
|
01 00 00 vmovupd YMMWORD PTR b0$[rbp], ymm0
|
|
|
|
; 284 : __m256d b1 = _mm256_load_pd((double *)&right->f64_y[1]);
|
|
|
|
000d9 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
000de 48 6b c0 01 imul rax, rax, 1
|
|
000e2 49 8b 8d 18 04
|
|
00 00 mov rcx, QWORD PTR right$[r13]
|
|
000e9 48 03 c8 add rcx, rax
|
|
000ec 48 8b c1 mov rax, rcx
|
|
000ef c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
000f3 c5 fd 11 85 60
|
|
01 00 00 vmovupd YMMWORD PTR b1$[rbp], ymm0
|
|
|
|
; 285 : __m256d b2 = _mm256_load_pd((double *)&right->f64_y[2]);
|
|
|
|
000fb b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00100 48 6b c0 02 imul rax, rax, 2
|
|
00104 49 8b 8d 18 04
|
|
00 00 mov rcx, QWORD PTR right$[r13]
|
|
0010b 48 03 c8 add rcx, rax
|
|
0010e 48 8b c1 mov rax, rcx
|
|
00111 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
00115 c5 fd 11 85 a0
|
|
01 00 00 vmovupd YMMWORD PTR b2$[rbp], ymm0
|
|
|
|
; 286 : __m256d b3 = _mm256_load_pd((double *)&right->f64_y[3]);
|
|
|
|
0011d b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00122 48 6b c0 03 imul rax, rax, 3
|
|
00126 49 8b 8d 18 04
|
|
00 00 mov rcx, QWORD PTR right$[r13]
|
|
0012d 48 03 c8 add rcx, rax
|
|
00130 48 8b c1 mov rax, rcx
|
|
00133 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
00137 c5 fd 11 85 e0
|
|
01 00 00 vmovupd YMMWORD PTR b3$[rbp], ymm0
|
|
|
|
; 287 :
|
|
; 288 : register __m256d ccol;
|
|
; 289 :
|
|
; 290 : /* Column 0 */
|
|
; 291 : ccol = _mm256_load_pd((double *)&ans->f64_y[0]);
|
|
|
|
0013f b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00144 48 6b c0 00 imul rax, rax, 0
|
|
00148 49 8b 8d 20 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
0014f 48 03 c8 add rcx, rax
|
|
00152 48 8b c1 mov rax, rcx
|
|
00155 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
00159 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 292 : ccol = _mm256_fmadd_pd(a0, _mm256_permute4x64_pd(b0, _FMA_SELECT(0)), ccol);
|
|
|
|
00161 c4 e3 fd 01 85
|
|
20 01 00 00 00 vpermpd ymm0, YMMWORD PTR b0$[rbp], 0
|
|
0016b c5 fd 10 4d 20 vmovupd ymm1, YMMWORD PTR a0$[rbp]
|
|
00170 c4 e2 fd a8 8d
|
|
20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
|
|
00179 c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
0017d c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 293 : ccol = _mm256_fmadd_pd(a1, _mm256_permute4x64_pd(b0, _FMA_SELECT(1)), ccol);
|
|
|
|
00185 c4 e3 fd 01 85
|
|
20 01 00 00 55 vpermpd ymm0, YMMWORD PTR b0$[rbp], 85 ; 00000055H
|
|
0018f c5 fd 10 4d 60 vmovupd ymm1, YMMWORD PTR a1$[rbp]
|
|
00194 c4 e2 fd a8 8d
|
|
20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
|
|
0019d c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
001a1 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 294 : ccol = _mm256_fmadd_pd(a2, _mm256_permute4x64_pd(b0, _FMA_SELECT(2)), ccol);
|
|
|
|
001a9 c4 e3 fd 01 85
|
|
20 01 00 00 aa vpermpd ymm0, YMMWORD PTR b0$[rbp], 170 ; 000000aaH
|
|
001b3 c5 fd 10 8d a0
|
|
00 00 00 vmovupd ymm1, YMMWORD PTR a2$[rbp]
|
|
001bb c4 e2 fd a8 8d
|
|
20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
|
|
001c4 c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
001c8 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 295 : ccol = _mm256_fmadd_pd(a3, _mm256_permute4x64_pd(b0, _FMA_SELECT(3)), ccol);
|
|
|
|
001d0 c4 e3 fd 01 85
|
|
20 01 00 00 ff vpermpd ymm0, YMMWORD PTR b0$[rbp], 255 ; 000000ffH
|
|
001da c5 fd 10 8d e0
|
|
00 00 00 vmovupd ymm1, YMMWORD PTR a3$[rbp]
|
|
001e2 c4 e2 fd a8 8d
|
|
20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
|
|
001eb c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
001ef c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 296 : _mm256_store_pd((double *)&ans->f64_y[0], ccol);
|
|
|
|
001f7 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
001fc 48 6b c0 00 imul rax, rax, 0
|
|
00200 49 8b 8d 20 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
00207 48 03 c8 add rcx, rax
|
|
0020a 48 8b c1 mov rax, rcx
|
|
0020d c5 fd 10 85 20
|
|
02 00 00 vmovupd ymm0, YMMWORD PTR ccol$[rbp]
|
|
00215 c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
|
|
|
|
; 297 : /* Column 1 */
|
|
; 298 : ccol = _mm256_load_pd((double *)&ans->f64_y[1]);
|
|
|
|
00219 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
0021e 48 6b c0 01 imul rax, rax, 1
|
|
00222 49 8b 8d 20 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
00229 48 03 c8 add rcx, rax
|
|
0022c 48 8b c1 mov rax, rcx
|
|
0022f c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
00233 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 299 : ccol = _mm256_fmadd_pd(a0, _mm256_permute4x64_pd(b1, _FMA_SELECT(0)), ccol);
|
|
|
|
0023b c4 e3 fd 01 85
|
|
60 01 00 00 00 vpermpd ymm0, YMMWORD PTR b1$[rbp], 0
|
|
00245 c5 fd 10 4d 20 vmovupd ymm1, YMMWORD PTR a0$[rbp]
|
|
0024a c4 e2 fd a8 8d
|
|
20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
|
|
00253 c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
00257 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 300 : ccol = _mm256_fmadd_pd(a1, _mm256_permute4x64_pd(b1, _FMA_SELECT(1)), ccol);
|
|
|
|
0025f c4 e3 fd 01 85
|
|
60 01 00 00 55 vpermpd ymm0, YMMWORD PTR b1$[rbp], 85 ; 00000055H
|
|
00269 c5 fd 10 4d 60 vmovupd ymm1, YMMWORD PTR a1$[rbp]
|
|
0026e c4 e2 fd a8 8d
|
|
20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
|
|
00277 c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
0027b c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 301 : ccol = _mm256_fmadd_pd(a2, _mm256_permute4x64_pd(b1, _FMA_SELECT(2)), ccol);
|
|
|
|
00283 c4 e3 fd 01 85
|
|
60 01 00 00 aa vpermpd ymm0, YMMWORD PTR b1$[rbp], 170 ; 000000aaH
|
|
0028d c5 fd 10 8d a0
|
|
00 00 00 vmovupd ymm1, YMMWORD PTR a2$[rbp]
|
|
00295 c4 e2 fd a8 8d
|
|
20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
|
|
0029e c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
002a2 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 302 : ccol = _mm256_fmadd_pd(a3, _mm256_permute4x64_pd(b1, _FMA_SELECT(3)), ccol);
|
|
|
|
002aa c4 e3 fd 01 85
|
|
60 01 00 00 ff vpermpd ymm0, YMMWORD PTR b1$[rbp], 255 ; 000000ffH
|
|
002b4 c5 fd 10 8d e0
|
|
00 00 00 vmovupd ymm1, YMMWORD PTR a3$[rbp]
|
|
002bc c4 e2 fd a8 8d
|
|
20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
|
|
002c5 c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
002c9 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 303 : _mm256_store_pd((double *)&ans->f64_y[1], ccol);
|
|
|
|
002d1 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
002d6 48 6b c0 01 imul rax, rax, 1
|
|
002da 49 8b 8d 20 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
002e1 48 03 c8 add rcx, rax
|
|
002e4 48 8b c1 mov rax, rcx
|
|
002e7 c5 fd 10 85 20
|
|
02 00 00 vmovupd ymm0, YMMWORD PTR ccol$[rbp]
|
|
002ef c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
|
|
|
|
; 304 : /* Column 2 */
|
|
; 305 : ccol = _mm256_load_pd((double *)&ans->f64_y[2]);
|
|
|
|
002f3 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
002f8 48 6b c0 02 imul rax, rax, 2
|
|
002fc 49 8b 8d 20 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
00303 48 03 c8 add rcx, rax
|
|
00306 48 8b c1 mov rax, rcx
|
|
00309 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
0030d c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 306 : ccol = _mm256_fmadd_pd(a0, _mm256_permute4x64_pd(b2, _FMA_SELECT(0)), ccol);
|
|
|
|
00315 c4 e3 fd 01 85
|
|
a0 01 00 00 00 vpermpd ymm0, YMMWORD PTR b2$[rbp], 0
|
|
0031f c5 fd 10 4d 20 vmovupd ymm1, YMMWORD PTR a0$[rbp]
|
|
00324 c4 e2 fd a8 8d
|
|
20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
|
|
0032d c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
00331 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 307 : ccol = _mm256_fmadd_pd(a1, _mm256_permute4x64_pd(b2, _FMA_SELECT(1)), ccol);
|
|
|
|
00339 c4 e3 fd 01 85
|
|
a0 01 00 00 55 vpermpd ymm0, YMMWORD PTR b2$[rbp], 85 ; 00000055H
|
|
00343 c5 fd 10 4d 60 vmovupd ymm1, YMMWORD PTR a1$[rbp]
|
|
00348 c4 e2 fd a8 8d
|
|
20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
|
|
00351 c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
00355 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 308 : ccol = _mm256_fmadd_pd(a2, _mm256_permute4x64_pd(b2, _FMA_SELECT(2)), ccol);
|
|
|
|
0035d c4 e3 fd 01 85
|
|
a0 01 00 00 aa vpermpd ymm0, YMMWORD PTR b2$[rbp], 170 ; 000000aaH
|
|
00367 c5 fd 10 8d a0
|
|
00 00 00 vmovupd ymm1, YMMWORD PTR a2$[rbp]
|
|
0036f c4 e2 fd a8 8d
|
|
20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
|
|
00378 c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
0037c c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 309 : ccol = _mm256_fmadd_pd(a3, _mm256_permute4x64_pd(b2, _FMA_SELECT(3)), ccol);
|
|
|
|
00384 c4 e3 fd 01 85
|
|
a0 01 00 00 ff vpermpd ymm0, YMMWORD PTR b2$[rbp], 255 ; 000000ffH
|
|
0038e c5 fd 10 8d e0
|
|
00 00 00 vmovupd ymm1, YMMWORD PTR a3$[rbp]
|
|
00396 c4 e2 fd a8 8d
|
|
20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
|
|
0039f c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
003a3 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 310 : _mm256_store_pd((double *)&ans->f64_y[2], ccol);
|
|
|
|
003ab b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
003b0 48 6b c0 02 imul rax, rax, 2
|
|
003b4 49 8b 8d 20 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
003bb 48 03 c8 add rcx, rax
|
|
003be 48 8b c1 mov rax, rcx
|
|
003c1 c5 fd 10 85 20
|
|
02 00 00 vmovupd ymm0, YMMWORD PTR ccol$[rbp]
|
|
003c9 c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
|
|
|
|
; 311 : /* Column 3 */
|
|
; 312 : ccol = _mm256_load_pd((double *)&ans->f64_y[3]);
|
|
|
|
003cd b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
003d2 48 6b c0 03 imul rax, rax, 3
|
|
003d6 49 8b 8d 20 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
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 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 313 : ccol = _mm256_fmadd_pd(a0, _mm256_permute4x64_pd(b3, _FMA_SELECT(0)), ccol);
|
|
|
|
003ef c4 e3 fd 01 85
|
|
e0 01 00 00 00 vpermpd ymm0, YMMWORD PTR b3$[rbp], 0
|
|
003f9 c5 fd 10 4d 20 vmovupd ymm1, YMMWORD PTR a0$[rbp]
|
|
003fe c4 e2 fd a8 8d
|
|
20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
|
|
00407 c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
0040b c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 314 : ccol = _mm256_fmadd_pd(a1, _mm256_permute4x64_pd(b3, _FMA_SELECT(1)), ccol);
|
|
|
|
00413 c4 e3 fd 01 85
|
|
e0 01 00 00 55 vpermpd ymm0, YMMWORD PTR b3$[rbp], 85 ; 00000055H
|
|
0041d c5 fd 10 4d 60 vmovupd ymm1, YMMWORD PTR a1$[rbp]
|
|
00422 c4 e2 fd a8 8d
|
|
20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
|
|
0042b c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
0042f c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 315 : ccol = _mm256_fmadd_pd(a2, _mm256_permute4x64_pd(b3, _FMA_SELECT(2)), ccol);
|
|
|
|
00437 c4 e3 fd 01 85
|
|
e0 01 00 00 aa vpermpd ymm0, YMMWORD PTR b3$[rbp], 170 ; 000000aaH
|
|
00441 c5 fd 10 8d a0
|
|
00 00 00 vmovupd ymm1, YMMWORD PTR a2$[rbp]
|
|
00449 c4 e2 fd a8 8d
|
|
20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
|
|
00452 c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
00456 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 316 : ccol = _mm256_fmadd_pd(a3, _mm256_permute4x64_pd(b3, _FMA_SELECT(3)), ccol);
|
|
|
|
0045e c4 e3 fd 01 85
|
|
e0 01 00 00 ff vpermpd ymm0, YMMWORD PTR b3$[rbp], 255 ; 000000ffH
|
|
00468 c5 fd 10 8d e0
|
|
00 00 00 vmovupd ymm1, YMMWORD PTR a3$[rbp]
|
|
00470 c4 e2 fd a8 8d
|
|
20 02 00 00 vfmadd213pd ymm1, ymm0, YMMWORD PTR ccol$[rbp]
|
|
00479 c5 fd 10 c1 vmovupd ymm0, ymm1
|
|
0047d c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 317 : _mm256_store_pd((double *)&ans->f64_y[3], ccol);
|
|
|
|
00485 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
0048a 48 6b c0 03 imul rax, rax, 3
|
|
0048e 49 8b 8d 20 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
00495 48 03 c8 add rcx, rax
|
|
00498 48 8b c1 mov rax, rcx
|
|
0049b c5 fd 10 85 20
|
|
02 00 00 vmovupd ymm0, YMMWORD PTR ccol$[rbp]
|
|
004a3 c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
|
|
|
|
; 318 : }
|
|
|
|
004a7 49 8d a5 f0 03
|
|
00 00 lea rsp, QWORD PTR [r13+1008]
|
|
004ae 5f pop rdi
|
|
004af 5d pop rbp
|
|
004b0 41 5d pop r13
|
|
004b2 c3 ret 0
|
|
double_kernel_fma_avx_fma ENDP
|
|
_TEXT ENDS
|
|
; Function compile flags: /Odtp /RTCsu /ZI
|
|
; File D:\platform-dev\StgSharp.Native\sn-src\m.fma.x86.c
|
|
; COMDAT double_kernel_fma_avx
|
|
_TEXT SEGMENT
|
|
a0$ = 32
|
|
a1$ = 96
|
|
a2$ = 160
|
|
a3$ = 224
|
|
b0$ = 288
|
|
b1$ = 352
|
|
b2$ = 416
|
|
b3$ = 480
|
|
ccol$ = 544
|
|
left$ = 1040
|
|
right$ = 1048
|
|
ans$ = 1056
|
|
double_kernel_fma_avx PROC ; COMDAT
|
|
|
|
; 233 : {
|
|
|
|
$LN3:
|
|
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
|
|
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
|
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
|
0000f 41 55 push r13
|
|
00011 55 push rbp
|
|
00012 57 push rdi
|
|
00013 48 81 ec 10 04
|
|
00 00 sub rsp, 1040 ; 00000410H
|
|
0001a 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
|
|
0001f 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
|
|
00024 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
|
|
00028 48 8d 0d 00 00
|
|
00 00 lea rcx, OFFSET FLAT:__F8387F23_m@fma@x86@c
|
|
0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
|
|
00034 90 npad 1
|
|
|
|
; 234 : const __m256d a0 = _mm256_load_pd((double *)&left->f64_y[0]);
|
|
|
|
00035 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
0003a 48 6b c0 00 imul rax, rax, 0
|
|
0003e 49 8b 8d 10 04
|
|
00 00 mov rcx, QWORD PTR left$[r13]
|
|
00045 48 03 c8 add rcx, rax
|
|
00048 48 8b c1 mov rax, rcx
|
|
0004b c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
0004f c5 fd 11 45 20 vmovupd YMMWORD PTR a0$[rbp], ymm0
|
|
|
|
; 235 : const __m256d a1 = _mm256_load_pd((double *)&left->f64_y[1]);
|
|
|
|
00054 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00059 48 6b c0 01 imul rax, rax, 1
|
|
0005d 49 8b 8d 10 04
|
|
00 00 mov rcx, QWORD PTR left$[r13]
|
|
00064 48 03 c8 add rcx, rax
|
|
00067 48 8b c1 mov rax, rcx
|
|
0006a c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
0006e c5 fd 11 45 60 vmovupd YMMWORD PTR a1$[rbp], ymm0
|
|
|
|
; 236 : const __m256d a2 = _mm256_load_pd((double *)&left->f64_y[2]);
|
|
|
|
00073 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00078 48 6b c0 02 imul rax, rax, 2
|
|
0007c 49 8b 8d 10 04
|
|
00 00 mov rcx, QWORD PTR left$[r13]
|
|
00083 48 03 c8 add rcx, rax
|
|
00086 48 8b c1 mov rax, rcx
|
|
00089 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
0008d c5 fd 11 85 a0
|
|
00 00 00 vmovupd YMMWORD PTR a2$[rbp], ymm0
|
|
|
|
; 237 : const __m256d a3 = _mm256_load_pd((double *)&left->f64_y[3]);
|
|
|
|
00095 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
0009a 48 6b c0 03 imul rax, rax, 3
|
|
0009e 49 8b 8d 10 04
|
|
00 00 mov rcx, QWORD PTR left$[r13]
|
|
000a5 48 03 c8 add rcx, rax
|
|
000a8 48 8b c1 mov rax, rcx
|
|
000ab c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
000af c5 fd 11 85 e0
|
|
00 00 00 vmovupd YMMWORD PTR a3$[rbp], ymm0
|
|
|
|
; 238 :
|
|
; 239 : __m256d b0 = _mm256_load_pd((double *)&right->f64_y[0]);
|
|
|
|
000b7 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
000bc 48 6b c0 00 imul rax, rax, 0
|
|
000c0 49 8b 8d 18 04
|
|
00 00 mov rcx, QWORD PTR right$[r13]
|
|
000c7 48 03 c8 add rcx, rax
|
|
000ca 48 8b c1 mov rax, rcx
|
|
000cd c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
000d1 c5 fd 11 85 20
|
|
01 00 00 vmovupd YMMWORD PTR b0$[rbp], ymm0
|
|
|
|
; 240 : __m256d b1 = _mm256_load_pd((double *)&right->f64_y[1]);
|
|
|
|
000d9 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
000de 48 6b c0 01 imul rax, rax, 1
|
|
000e2 49 8b 8d 18 04
|
|
00 00 mov rcx, QWORD PTR right$[r13]
|
|
000e9 48 03 c8 add rcx, rax
|
|
000ec 48 8b c1 mov rax, rcx
|
|
000ef c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
000f3 c5 fd 11 85 60
|
|
01 00 00 vmovupd YMMWORD PTR b1$[rbp], ymm0
|
|
|
|
; 241 : __m256d b2 = _mm256_load_pd((double *)&right->f64_y[2]);
|
|
|
|
000fb b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00100 48 6b c0 02 imul rax, rax, 2
|
|
00104 49 8b 8d 18 04
|
|
00 00 mov rcx, QWORD PTR right$[r13]
|
|
0010b 48 03 c8 add rcx, rax
|
|
0010e 48 8b c1 mov rax, rcx
|
|
00111 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
00115 c5 fd 11 85 a0
|
|
01 00 00 vmovupd YMMWORD PTR b2$[rbp], ymm0
|
|
|
|
; 242 : __m256d b3 = _mm256_load_pd((double *)&right->f64_y[3]);
|
|
|
|
0011d b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00122 48 6b c0 03 imul rax, rax, 3
|
|
00126 49 8b 8d 18 04
|
|
00 00 mov rcx, QWORD PTR right$[r13]
|
|
0012d 48 03 c8 add rcx, rax
|
|
00130 48 8b c1 mov rax, rcx
|
|
00133 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
00137 c5 fd 11 85 e0
|
|
01 00 00 vmovupd YMMWORD PTR b3$[rbp], ymm0
|
|
|
|
; 243 :
|
|
; 244 : register __m256d ccol;
|
|
; 245 :
|
|
; 246 : /* Column 0 */
|
|
; 247 : ccol = _mm256_load_pd((double *)&ans->f64_y[0]);
|
|
|
|
0013f b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00144 48 6b c0 00 imul rax, rax, 0
|
|
00148 49 8b 8d 20 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
0014f 48 03 c8 add rcx, rax
|
|
00152 48 8b c1 mov rax, rcx
|
|
00155 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
00159 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 248 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a0, _mm256_permute4x64_pd(b0, _FMA_SELECT(0))));
|
|
|
|
00161 c4 e3 fd 01 85
|
|
20 01 00 00 00 vpermpd ymm0, YMMWORD PTR b0$[rbp], 0
|
|
0016b c5 fd 10 4d 20 vmovupd ymm1, YMMWORD PTR a0$[rbp]
|
|
00170 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
00174 c5 fd 10 8d 20
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
|
|
0017c c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
00180 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 249 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a1, _mm256_permute4x64_pd(b0, _FMA_SELECT(1))));
|
|
|
|
00188 c4 e3 fd 01 85
|
|
20 01 00 00 55 vpermpd ymm0, YMMWORD PTR b0$[rbp], 85 ; 00000055H
|
|
00192 c5 fd 10 4d 60 vmovupd ymm1, YMMWORD PTR a1$[rbp]
|
|
00197 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
0019b c5 fd 10 8d 20
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
|
|
001a3 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
001a7 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 250 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a2, _mm256_permute4x64_pd(b0, _FMA_SELECT(2))));
|
|
|
|
001af c4 e3 fd 01 85
|
|
20 01 00 00 aa vpermpd ymm0, YMMWORD PTR b0$[rbp], 170 ; 000000aaH
|
|
001b9 c5 fd 10 8d a0
|
|
00 00 00 vmovupd ymm1, YMMWORD PTR a2$[rbp]
|
|
001c1 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
001c5 c5 fd 10 8d 20
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
|
|
001cd c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
001d1 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 251 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a3, _mm256_permute4x64_pd(b0, _FMA_SELECT(3))));
|
|
|
|
001d9 c4 e3 fd 01 85
|
|
20 01 00 00 ff vpermpd ymm0, YMMWORD PTR b0$[rbp], 255 ; 000000ffH
|
|
001e3 c5 fd 10 8d e0
|
|
00 00 00 vmovupd ymm1, YMMWORD PTR a3$[rbp]
|
|
001eb c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
001ef c5 fd 10 8d 20
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
|
|
001f7 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
001fb c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 252 : _mm256_store_pd((double *)&ans->f64_y[0], ccol);
|
|
|
|
00203 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00208 48 6b c0 00 imul rax, rax, 0
|
|
0020c 49 8b 8d 20 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
00213 48 03 c8 add rcx, rax
|
|
00216 48 8b c1 mov rax, rcx
|
|
00219 c5 fd 10 85 20
|
|
02 00 00 vmovupd ymm0, YMMWORD PTR ccol$[rbp]
|
|
00221 c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
|
|
|
|
; 253 : /* Column 1 */
|
|
; 254 : ccol = _mm256_load_pd((double *)&ans->f64_y[1]);
|
|
|
|
00225 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
0022a 48 6b c0 01 imul rax, rax, 1
|
|
0022e 49 8b 8d 20 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
00235 48 03 c8 add rcx, rax
|
|
00238 48 8b c1 mov rax, rcx
|
|
0023b c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
0023f c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 255 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a0, _mm256_permute4x64_pd(b1, _FMA_SELECT(0))));
|
|
|
|
00247 c4 e3 fd 01 85
|
|
60 01 00 00 00 vpermpd ymm0, YMMWORD PTR b1$[rbp], 0
|
|
00251 c5 fd 10 4d 20 vmovupd ymm1, YMMWORD PTR a0$[rbp]
|
|
00256 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
0025a c5 fd 10 8d 20
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
|
|
00262 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
00266 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 256 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a1, _mm256_permute4x64_pd(b1, _FMA_SELECT(1))));
|
|
|
|
0026e c4 e3 fd 01 85
|
|
60 01 00 00 55 vpermpd ymm0, YMMWORD PTR b1$[rbp], 85 ; 00000055H
|
|
00278 c5 fd 10 4d 60 vmovupd ymm1, YMMWORD PTR a1$[rbp]
|
|
0027d c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
00281 c5 fd 10 8d 20
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
|
|
00289 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
0028d c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 257 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a2, _mm256_permute4x64_pd(b1, _FMA_SELECT(2))));
|
|
|
|
00295 c4 e3 fd 01 85
|
|
60 01 00 00 aa vpermpd ymm0, YMMWORD PTR b1$[rbp], 170 ; 000000aaH
|
|
0029f c5 fd 10 8d a0
|
|
00 00 00 vmovupd ymm1, YMMWORD PTR a2$[rbp]
|
|
002a7 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
002ab c5 fd 10 8d 20
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
|
|
002b3 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
002b7 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 258 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a3, _mm256_permute4x64_pd(b1, _FMA_SELECT(3))));
|
|
|
|
002bf c4 e3 fd 01 85
|
|
60 01 00 00 ff vpermpd ymm0, YMMWORD PTR b1$[rbp], 255 ; 000000ffH
|
|
002c9 c5 fd 10 8d e0
|
|
00 00 00 vmovupd ymm1, YMMWORD PTR a3$[rbp]
|
|
002d1 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
002d5 c5 fd 10 8d 20
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
|
|
002dd c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
002e1 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 259 : _mm256_store_pd((double *)&ans->f64_y[1], ccol);
|
|
|
|
002e9 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
002ee 48 6b c0 01 imul rax, rax, 1
|
|
002f2 49 8b 8d 20 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
002f9 48 03 c8 add rcx, rax
|
|
002fc 48 8b c1 mov rax, rcx
|
|
002ff c5 fd 10 85 20
|
|
02 00 00 vmovupd ymm0, YMMWORD PTR ccol$[rbp]
|
|
00307 c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
|
|
|
|
; 260 : /* Column 2 */
|
|
; 261 : ccol = _mm256_load_pd((double *)&ans->f64_y[2]);
|
|
|
|
0030b b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00310 48 6b c0 02 imul rax, rax, 2
|
|
00314 49 8b 8d 20 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
0031b 48 03 c8 add rcx, rax
|
|
0031e 48 8b c1 mov rax, rcx
|
|
00321 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
00325 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 262 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a0, _mm256_permute4x64_pd(b2, _FMA_SELECT(0))));
|
|
|
|
0032d c4 e3 fd 01 85
|
|
a0 01 00 00 00 vpermpd ymm0, YMMWORD PTR b2$[rbp], 0
|
|
00337 c5 fd 10 4d 20 vmovupd ymm1, YMMWORD PTR a0$[rbp]
|
|
0033c c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
00340 c5 fd 10 8d 20
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
|
|
00348 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
0034c c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 263 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a1, _mm256_permute4x64_pd(b2, _FMA_SELECT(1))));
|
|
|
|
00354 c4 e3 fd 01 85
|
|
a0 01 00 00 55 vpermpd ymm0, YMMWORD PTR b2$[rbp], 85 ; 00000055H
|
|
0035e c5 fd 10 4d 60 vmovupd ymm1, YMMWORD PTR a1$[rbp]
|
|
00363 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
00367 c5 fd 10 8d 20
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
|
|
0036f c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
00373 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 264 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a2, _mm256_permute4x64_pd(b2, _FMA_SELECT(2))));
|
|
|
|
0037b c4 e3 fd 01 85
|
|
a0 01 00 00 aa vpermpd ymm0, YMMWORD PTR b2$[rbp], 170 ; 000000aaH
|
|
00385 c5 fd 10 8d a0
|
|
00 00 00 vmovupd ymm1, YMMWORD PTR a2$[rbp]
|
|
0038d c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
00391 c5 fd 10 8d 20
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
|
|
00399 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
0039d c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 265 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a3, _mm256_permute4x64_pd(b2, _FMA_SELECT(3))));
|
|
|
|
003a5 c4 e3 fd 01 85
|
|
a0 01 00 00 ff vpermpd ymm0, YMMWORD PTR b2$[rbp], 255 ; 000000ffH
|
|
003af c5 fd 10 8d e0
|
|
00 00 00 vmovupd ymm1, YMMWORD PTR a3$[rbp]
|
|
003b7 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
003bb c5 fd 10 8d 20
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
|
|
003c3 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
003c7 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 266 : _mm256_store_pd((double *)&ans->f64_y[2], ccol);
|
|
|
|
003cf b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
003d4 48 6b c0 02 imul rax, rax, 2
|
|
003d8 49 8b 8d 20 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
003df 48 03 c8 add rcx, rax
|
|
003e2 48 8b c1 mov rax, rcx
|
|
003e5 c5 fd 10 85 20
|
|
02 00 00 vmovupd ymm0, YMMWORD PTR ccol$[rbp]
|
|
003ed c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
|
|
|
|
; 267 : /* Column 3 */
|
|
; 268 : ccol = _mm256_load_pd((double *)&ans->f64_y[3]);
|
|
|
|
003f1 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
003f6 48 6b c0 03 imul rax, rax, 3
|
|
003fa 49 8b 8d 20 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
00401 48 03 c8 add rcx, rax
|
|
00404 48 8b c1 mov rax, rcx
|
|
00407 c5 fd 10 00 vmovupd ymm0, YMMWORD PTR [rax]
|
|
0040b c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 269 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a0, _mm256_permute4x64_pd(b3, _FMA_SELECT(0))));
|
|
|
|
00413 c4 e3 fd 01 85
|
|
e0 01 00 00 00 vpermpd ymm0, YMMWORD PTR b3$[rbp], 0
|
|
0041d c5 fd 10 4d 20 vmovupd ymm1, YMMWORD PTR a0$[rbp]
|
|
00422 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
00426 c5 fd 10 8d 20
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
|
|
0042e c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
00432 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 270 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a1, _mm256_permute4x64_pd(b3, _FMA_SELECT(1))));
|
|
|
|
0043a c4 e3 fd 01 85
|
|
e0 01 00 00 55 vpermpd ymm0, YMMWORD PTR b3$[rbp], 85 ; 00000055H
|
|
00444 c5 fd 10 4d 60 vmovupd ymm1, YMMWORD PTR a1$[rbp]
|
|
00449 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
0044d c5 fd 10 8d 20
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
|
|
00455 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
00459 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 271 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a2, _mm256_permute4x64_pd(b3, _FMA_SELECT(2))));
|
|
|
|
00461 c4 e3 fd 01 85
|
|
e0 01 00 00 aa vpermpd ymm0, YMMWORD PTR b3$[rbp], 170 ; 000000aaH
|
|
0046b c5 fd 10 8d a0
|
|
00 00 00 vmovupd ymm1, YMMWORD PTR a2$[rbp]
|
|
00473 c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
00477 c5 fd 10 8d 20
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
|
|
0047f c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
00483 c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 272 : ccol = _mm256_add_pd(ccol, _mm256_mul_pd(a3, _mm256_permute4x64_pd(b3, _FMA_SELECT(3))));
|
|
|
|
0048b c4 e3 fd 01 85
|
|
e0 01 00 00 ff vpermpd ymm0, YMMWORD PTR b3$[rbp], 255 ; 000000ffH
|
|
00495 c5 fd 10 8d e0
|
|
00 00 00 vmovupd ymm1, YMMWORD PTR a3$[rbp]
|
|
0049d c5 f5 59 c0 vmulpd ymm0, ymm1, ymm0
|
|
004a1 c5 fd 10 8d 20
|
|
02 00 00 vmovupd ymm1, YMMWORD PTR ccol$[rbp]
|
|
004a9 c5 f5 58 c0 vaddpd ymm0, ymm1, ymm0
|
|
004ad c5 fd 11 85 20
|
|
02 00 00 vmovupd YMMWORD PTR ccol$[rbp], ymm0
|
|
|
|
; 273 : _mm256_store_pd((double *)&ans->f64_y[3], ccol);
|
|
|
|
004b5 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
004ba 48 6b c0 03 imul rax, rax, 3
|
|
004be 49 8b 8d 20 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
004c5 48 03 c8 add rcx, rax
|
|
004c8 48 8b c1 mov rax, rcx
|
|
004cb c5 fd 10 85 20
|
|
02 00 00 vmovupd ymm0, YMMWORD PTR ccol$[rbp]
|
|
004d3 c5 fd 11 00 vmovupd YMMWORD PTR [rax], ymm0
|
|
|
|
; 274 : }
|
|
|
|
004d7 49 8d a5 f0 03
|
|
00 00 lea rsp, QWORD PTR [r13+1008]
|
|
004de 5f pop rdi
|
|
004df 5d pop rbp
|
|
004e0 41 5d pop r13
|
|
004e2 c3 ret 0
|
|
double_kernel_fma_avx ENDP
|
|
_TEXT ENDS
|
|
; Function compile flags: /Odtp /RTCsu /ZI
|
|
; File D:\platform-dev\StgSharp.Native\sn-src\m.fma.x86.c
|
|
; COMDAT double_kernel_fma_sse
|
|
_TEXT SEGMENT
|
|
col$1 = 4
|
|
c_lo$2 = 48
|
|
c_hi$3 = 96
|
|
b_lo$4 = 144
|
|
b_hi$5 = 192
|
|
a_lo$6 = 240
|
|
a_hi$7 = 288
|
|
b$8 = 336
|
|
left$ = 592
|
|
right$ = 600
|
|
ans$ = 608
|
|
double_kernel_fma_sse PROC ; COMDAT
|
|
|
|
; 189 : {
|
|
|
|
$LN6:
|
|
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
|
|
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
|
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
|
0000f 55 push rbp
|
|
00010 57 push rdi
|
|
00011 48 81 ec 58 02
|
|
00 00 sub rsp, 600 ; 00000258H
|
|
00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
|
0001d 48 8d 0d 00 00
|
|
00 00 lea rcx, OFFSET FLAT:__F8387F23_m@fma@x86@c
|
|
00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
|
|
00029 90 npad 1
|
|
|
|
; 190 : for (int col = 0; col < 4; ++col) {
|
|
|
|
0002a c7 45 04 00 00
|
|
00 00 mov DWORD PTR col$1[rbp], 0
|
|
00031 eb 08 jmp SHORT $LN4@double_ker
|
|
$LN2@double_ker:
|
|
00033 8b 45 04 mov eax, DWORD PTR col$1[rbp]
|
|
00036 ff c0 inc eax
|
|
00038 89 45 04 mov DWORD PTR col$1[rbp], eax
|
|
$LN4@double_ker:
|
|
0003b 83 7d 04 04 cmp DWORD PTR col$1[rbp], 4
|
|
0003f 0f 8d c5 02 00
|
|
00 jge $LN3@double_ker
|
|
|
|
; 191 : /* current answer column (two chunks: rows 0-1 and 2-3) */
|
|
; 192 : register __m128d c_lo = _mm_load_pd(ans->f64_x + (col * 2 + 0));
|
|
|
|
00045 8b 45 04 mov eax, DWORD PTR col$1[rbp]
|
|
00048 03 c0 add eax, eax
|
|
0004a 48 98 cdqe
|
|
0004c 48 6b c0 10 imul rax, rax, 16
|
|
00050 48 8b 8d 60 02
|
|
00 00 mov rcx, QWORD PTR ans$[rbp]
|
|
00057 48 03 c8 add rcx, rax
|
|
0005a 48 8b c1 mov rax, rcx
|
|
0005d 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00060 0f 29 45 30 movaps XMMWORD PTR c_lo$2[rbp], xmm0
|
|
|
|
; 193 : register __m128d c_hi = _mm_load_pd(ans->f64_x + (col * 2 + 1));
|
|
|
|
00064 8b 45 04 mov eax, DWORD PTR col$1[rbp]
|
|
00067 8d 44 00 01 lea eax, DWORD PTR [rax+rax+1]
|
|
0006b 48 98 cdqe
|
|
0006d 48 6b c0 10 imul rax, rax, 16
|
|
00071 48 8b 8d 60 02
|
|
00 00 mov rcx, QWORD PTR ans$[rbp]
|
|
00078 48 03 c8 add rcx, rax
|
|
0007b 48 8b c1 mov rax, rcx
|
|
0007e 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00081 0f 29 45 60 movaps XMMWORD PTR c_hi$3[rbp], xmm0
|
|
|
|
; 194 :
|
|
; 195 : /* right matrix column split into two chunks */
|
|
; 196 : register __m128d b_lo = _mm_load_pd(right + (2 * col + 0));
|
|
|
|
00085 8b 45 04 mov eax, DWORD PTR col$1[rbp]
|
|
00088 03 c0 add eax, eax
|
|
0008a 48 98 cdqe
|
|
0008c 48 69 c0 80 00
|
|
00 00 imul rax, rax, 128 ; 00000080H
|
|
00093 48 8b 8d 58 02
|
|
00 00 mov rcx, QWORD PTR right$[rbp]
|
|
0009a 48 03 c8 add rcx, rax
|
|
0009d 48 8b c1 mov rax, rcx
|
|
000a0 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
000a3 0f 29 85 90 00
|
|
00 00 movaps XMMWORD PTR b_lo$4[rbp], xmm0
|
|
|
|
; 197 : register __m128d b_hi = _mm_load_pd(right + (2 * col + 1));
|
|
|
|
000aa 8b 45 04 mov eax, DWORD PTR col$1[rbp]
|
|
000ad 8d 44 00 01 lea eax, DWORD PTR [rax+rax+1]
|
|
000b1 48 98 cdqe
|
|
000b3 48 69 c0 80 00
|
|
00 00 imul rax, rax, 128 ; 00000080H
|
|
000ba 48 8b 8d 58 02
|
|
00 00 mov rcx, QWORD PTR right$[rbp]
|
|
000c1 48 03 c8 add rcx, rax
|
|
000c4 48 8b c1 mov rax, rcx
|
|
000c7 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
000ca 0f 29 85 c0 00
|
|
00 00 movaps XMMWORD PTR b_hi$5[rbp], xmm0
|
|
|
|
; 198 :
|
|
; 199 : /* k = 0 */
|
|
; 200 : register __m128d a_lo = _mm_load_pd(left + (0 * 2 + 0));
|
|
|
|
000d1 48 8b 85 50 02
|
|
00 00 mov rax, QWORD PTR left$[rbp]
|
|
000d8 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
000db 0f 29 85 f0 00
|
|
00 00 movaps XMMWORD PTR a_lo$6[rbp], xmm0
|
|
|
|
; 201 : register __m128d a_hi = _mm_load_pd(left + (0 * 2 + 1));
|
|
|
|
000e2 48 8b 85 50 02
|
|
00 00 mov rax, QWORD PTR left$[rbp]
|
|
000e9 48 05 80 00 00
|
|
00 add rax, 128 ; 00000080H
|
|
000ef 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
000f2 0f 29 85 20 01
|
|
00 00 movaps XMMWORD PTR a_hi$7[rbp], xmm0
|
|
|
|
; 202 : register __m128d b = _mm_shuffle_pd(b_lo, b_lo, 0x0);
|
|
|
|
000f9 0f 28 85 90 00
|
|
00 00 movaps xmm0, XMMWORD PTR b_lo$4[rbp]
|
|
00100 66 0f c6 85 90
|
|
00 00 00 00 shufpd xmm0, XMMWORD PTR b_lo$4[rbp], 0
|
|
00109 0f 29 85 50 01
|
|
00 00 movaps XMMWORD PTR b$8[rbp], xmm0
|
|
|
|
; 203 : c_lo = _mm_add_pd(c_lo, _mm_mul_pd(a_lo, b));
|
|
|
|
00110 0f 28 85 f0 00
|
|
00 00 movaps xmm0, XMMWORD PTR a_lo$6[rbp]
|
|
00117 66 0f 59 85 50
|
|
01 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
|
|
0011f 0f 28 4d 30 movaps xmm1, XMMWORD PTR c_lo$2[rbp]
|
|
00123 66 0f 58 c8 addpd xmm1, xmm0
|
|
00127 0f 28 c1 movaps xmm0, xmm1
|
|
0012a 0f 29 45 30 movaps XMMWORD PTR c_lo$2[rbp], xmm0
|
|
|
|
; 204 : c_hi = _mm_add_pd(c_hi, _mm_mul_pd(a_hi, b));
|
|
|
|
0012e 0f 28 85 20 01
|
|
00 00 movaps xmm0, XMMWORD PTR a_hi$7[rbp]
|
|
00135 66 0f 59 85 50
|
|
01 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
|
|
0013d 0f 28 4d 60 movaps xmm1, XMMWORD PTR c_hi$3[rbp]
|
|
00141 66 0f 58 c8 addpd xmm1, xmm0
|
|
00145 0f 28 c1 movaps xmm0, xmm1
|
|
00148 0f 29 45 60 movaps XMMWORD PTR c_hi$3[rbp], xmm0
|
|
|
|
; 205 :
|
|
; 206 : /* k = 1 */
|
|
; 207 : a_lo = _mm_load_pd(left + (1 * 2 + 0));
|
|
|
|
0014c 48 8b 85 50 02
|
|
00 00 mov rax, QWORD PTR left$[rbp]
|
|
00153 48 05 00 01 00
|
|
00 add rax, 256 ; 00000100H
|
|
00159 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
0015c 0f 29 85 f0 00
|
|
00 00 movaps XMMWORD PTR a_lo$6[rbp], xmm0
|
|
|
|
; 208 : a_hi = _mm_load_pd(left + (1 * 2 + 1));
|
|
|
|
00163 48 8b 85 50 02
|
|
00 00 mov rax, QWORD PTR left$[rbp]
|
|
0016a 48 05 80 01 00
|
|
00 add rax, 384 ; 00000180H
|
|
00170 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00173 0f 29 85 20 01
|
|
00 00 movaps XMMWORD PTR a_hi$7[rbp], xmm0
|
|
|
|
; 209 : b = _mm_shuffle_pd(b_lo, b_lo, 0x3);
|
|
|
|
0017a 0f 28 85 90 00
|
|
00 00 movaps xmm0, XMMWORD PTR b_lo$4[rbp]
|
|
00181 66 0f c6 85 90
|
|
00 00 00 03 shufpd xmm0, XMMWORD PTR b_lo$4[rbp], 3
|
|
0018a 0f 29 85 50 01
|
|
00 00 movaps XMMWORD PTR b$8[rbp], xmm0
|
|
|
|
; 210 : c_lo = _mm_add_pd(c_lo, _mm_mul_pd(a_lo, b));
|
|
|
|
00191 0f 28 85 f0 00
|
|
00 00 movaps xmm0, XMMWORD PTR a_lo$6[rbp]
|
|
00198 66 0f 59 85 50
|
|
01 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
|
|
001a0 0f 28 4d 30 movaps xmm1, XMMWORD PTR c_lo$2[rbp]
|
|
001a4 66 0f 58 c8 addpd xmm1, xmm0
|
|
001a8 0f 28 c1 movaps xmm0, xmm1
|
|
001ab 0f 29 45 30 movaps XMMWORD PTR c_lo$2[rbp], xmm0
|
|
|
|
; 211 : c_hi = _mm_add_pd(c_hi, _mm_mul_pd(a_hi, b));
|
|
|
|
001af 0f 28 85 20 01
|
|
00 00 movaps xmm0, XMMWORD PTR a_hi$7[rbp]
|
|
001b6 66 0f 59 85 50
|
|
01 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
|
|
001be 0f 28 4d 60 movaps xmm1, XMMWORD PTR c_hi$3[rbp]
|
|
001c2 66 0f 58 c8 addpd xmm1, xmm0
|
|
001c6 0f 28 c1 movaps xmm0, xmm1
|
|
001c9 0f 29 45 60 movaps XMMWORD PTR c_hi$3[rbp], xmm0
|
|
|
|
; 212 :
|
|
; 213 : /* k = 2 */
|
|
; 214 : a_lo = _mm_load_pd(left + (1 * 2 + 0));
|
|
|
|
001cd 48 8b 85 50 02
|
|
00 00 mov rax, QWORD PTR left$[rbp]
|
|
001d4 48 05 00 01 00
|
|
00 add rax, 256 ; 00000100H
|
|
001da 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
001dd 0f 29 85 f0 00
|
|
00 00 movaps XMMWORD PTR a_lo$6[rbp], xmm0
|
|
|
|
; 215 : a_hi = _mm_load_pd(left + (1 * 2 + 1));
|
|
|
|
001e4 48 8b 85 50 02
|
|
00 00 mov rax, QWORD PTR left$[rbp]
|
|
001eb 48 05 80 01 00
|
|
00 add rax, 384 ; 00000180H
|
|
001f1 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
001f4 0f 29 85 20 01
|
|
00 00 movaps XMMWORD PTR a_hi$7[rbp], xmm0
|
|
|
|
; 216 : b = _mm_shuffle_pd(b_hi, b_hi, 0x0);
|
|
|
|
001fb 0f 28 85 c0 00
|
|
00 00 movaps xmm0, XMMWORD PTR b_hi$5[rbp]
|
|
00202 66 0f c6 85 c0
|
|
00 00 00 00 shufpd xmm0, XMMWORD PTR b_hi$5[rbp], 0
|
|
0020b 0f 29 85 50 01
|
|
00 00 movaps XMMWORD PTR b$8[rbp], xmm0
|
|
|
|
; 217 : c_lo = _mm_add_pd(c_lo, _mm_mul_pd(a_lo, b));
|
|
|
|
00212 0f 28 85 f0 00
|
|
00 00 movaps xmm0, XMMWORD PTR a_lo$6[rbp]
|
|
00219 66 0f 59 85 50
|
|
01 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
|
|
00221 0f 28 4d 30 movaps xmm1, XMMWORD PTR c_lo$2[rbp]
|
|
00225 66 0f 58 c8 addpd xmm1, xmm0
|
|
00229 0f 28 c1 movaps xmm0, xmm1
|
|
0022c 0f 29 45 30 movaps XMMWORD PTR c_lo$2[rbp], xmm0
|
|
|
|
; 218 : c_hi = _mm_add_pd(c_hi, _mm_mul_pd(a_hi, b));
|
|
|
|
00230 0f 28 85 20 01
|
|
00 00 movaps xmm0, XMMWORD PTR a_hi$7[rbp]
|
|
00237 66 0f 59 85 50
|
|
01 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
|
|
0023f 0f 28 4d 60 movaps xmm1, XMMWORD PTR c_hi$3[rbp]
|
|
00243 66 0f 58 c8 addpd xmm1, xmm0
|
|
00247 0f 28 c1 movaps xmm0, xmm1
|
|
0024a 0f 29 45 60 movaps XMMWORD PTR c_hi$3[rbp], xmm0
|
|
|
|
; 219 :
|
|
; 220 : /* k = 3 */
|
|
; 221 : a_lo = _mm_load_pd(left + (1 * 2 + 0));
|
|
|
|
0024e 48 8b 85 50 02
|
|
00 00 mov rax, QWORD PTR left$[rbp]
|
|
00255 48 05 00 01 00
|
|
00 add rax, 256 ; 00000100H
|
|
0025b 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
0025e 0f 29 85 f0 00
|
|
00 00 movaps XMMWORD PTR a_lo$6[rbp], xmm0
|
|
|
|
; 222 : a_hi = _mm_load_pd(left + (1 * 2 + 1));
|
|
|
|
00265 48 8b 85 50 02
|
|
00 00 mov rax, QWORD PTR left$[rbp]
|
|
0026c 48 05 80 01 00
|
|
00 add rax, 384 ; 00000180H
|
|
00272 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00275 0f 29 85 20 01
|
|
00 00 movaps XMMWORD PTR a_hi$7[rbp], xmm0
|
|
|
|
; 223 : b = _mm_shuffle_pd(b_hi, b_hi, 0x3);
|
|
|
|
0027c 0f 28 85 c0 00
|
|
00 00 movaps xmm0, XMMWORD PTR b_hi$5[rbp]
|
|
00283 66 0f c6 85 c0
|
|
00 00 00 03 shufpd xmm0, XMMWORD PTR b_hi$5[rbp], 3
|
|
0028c 0f 29 85 50 01
|
|
00 00 movaps XMMWORD PTR b$8[rbp], xmm0
|
|
|
|
; 224 : c_lo = _mm_add_pd(c_lo, _mm_mul_pd(a_lo, b));
|
|
|
|
00293 0f 28 85 f0 00
|
|
00 00 movaps xmm0, XMMWORD PTR a_lo$6[rbp]
|
|
0029a 66 0f 59 85 50
|
|
01 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
|
|
002a2 0f 28 4d 30 movaps xmm1, XMMWORD PTR c_lo$2[rbp]
|
|
002a6 66 0f 58 c8 addpd xmm1, xmm0
|
|
002aa 0f 28 c1 movaps xmm0, xmm1
|
|
002ad 0f 29 45 30 movaps XMMWORD PTR c_lo$2[rbp], xmm0
|
|
|
|
; 225 : c_hi = _mm_add_pd(c_hi, _mm_mul_pd(a_hi, b));
|
|
|
|
002b1 0f 28 85 20 01
|
|
00 00 movaps xmm0, XMMWORD PTR a_hi$7[rbp]
|
|
002b8 66 0f 59 85 50
|
|
01 00 00 mulpd xmm0, XMMWORD PTR b$8[rbp]
|
|
002c0 0f 28 4d 60 movaps xmm1, XMMWORD PTR c_hi$3[rbp]
|
|
002c4 66 0f 58 c8 addpd xmm1, xmm0
|
|
002c8 0f 28 c1 movaps xmm0, xmm1
|
|
002cb 0f 29 45 60 movaps XMMWORD PTR c_hi$3[rbp], xmm0
|
|
|
|
; 226 :
|
|
; 227 : ans->f64_x[col * 2 + 0] = c_lo;
|
|
|
|
002cf 8b 45 04 mov eax, DWORD PTR col$1[rbp]
|
|
002d2 03 c0 add eax, eax
|
|
002d4 48 98 cdqe
|
|
002d6 48 6b c0 10 imul rax, rax, 16
|
|
002da 48 8b 8d 60 02
|
|
00 00 mov rcx, QWORD PTR ans$[rbp]
|
|
002e1 0f 28 45 30 movaps xmm0, XMMWORD PTR c_lo$2[rbp]
|
|
002e5 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
|
|
|
|
; 228 : ans->f64_x[col * 2 + 1] = c_hi;
|
|
|
|
002e9 8b 45 04 mov eax, DWORD PTR col$1[rbp]
|
|
002ec 8d 44 00 01 lea eax, DWORD PTR [rax+rax+1]
|
|
002f0 48 98 cdqe
|
|
002f2 48 6b c0 10 imul rax, rax, 16
|
|
002f6 48 8b 8d 60 02
|
|
00 00 mov rcx, QWORD PTR ans$[rbp]
|
|
002fd 0f 28 45 60 movaps xmm0, XMMWORD PTR c_hi$3[rbp]
|
|
00301 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
|
|
|
|
; 229 : }
|
|
|
|
00305 e9 29 fd ff ff jmp $LN2@double_ker
|
|
$LN3@double_ker:
|
|
|
|
; 230 : }
|
|
|
|
0030a 48 8d a5 38 02
|
|
00 00 lea rsp, QWORD PTR [rbp+568]
|
|
00311 5f pop rdi
|
|
00312 5d pop rbp
|
|
00313 c3 ret 0
|
|
double_kernel_fma_sse ENDP
|
|
_TEXT ENDS
|
|
; Function compile flags: /Odtp /RTCsu /ZI
|
|
; File D:\platform-dev\StgSharp.Native\sn-src\m.fma.x86.c
|
|
; COMDAT float_kernel_fma_512
|
|
_TEXT SEGMENT
|
|
a$ = 64
|
|
b$ = 192
|
|
c$ = 320
|
|
a_perm0$ = 448
|
|
b_perm0$ = 576
|
|
a_perm1$ = 704
|
|
b_perm1$ = 832
|
|
a_perm2$ = 960
|
|
b_perm2$ = 1088
|
|
a_perm3$ = 1216
|
|
b_perm3$ = 1344
|
|
left$ = 2096
|
|
right$ = 2104
|
|
ans$ = 2112
|
|
float_kernel_fma_512 PROC ; COMDAT
|
|
|
|
; 153 : {
|
|
|
|
$LN3:
|
|
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
|
|
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
|
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
|
0000f 41 55 push r13
|
|
00011 55 push rbp
|
|
00012 57 push rdi
|
|
00013 48 81 ec 30 08
|
|
00 00 sub rsp, 2096 ; 00000830H
|
|
0001a 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
|
|
0001f 48 8d 6c 24 60 lea rbp, QWORD PTR [rsp+96]
|
|
00024 48 83 e5 c0 and rbp, -64 ; ffffffffffffffc0H
|
|
00028 48 8d 0d 00 00
|
|
00 00 lea rcx, OFFSET FLAT:__F8387F23_m@fma@x86@c
|
|
0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
|
|
00034 90 npad 1
|
|
|
|
; 154 : static const __m512i b_shift = { .m512i_i32 = {
|
|
; 155 : // shuff order
|
|
; 156 : 0, 1, 2, 3, // col0
|
|
; 157 : 5, 6, 7, 4, //col1
|
|
; 158 : 10, 11, 8, 9, //col2
|
|
; 159 : 15, 12, 13, 14 //col3
|
|
; 160 : } };
|
|
; 161 :
|
|
; 162 : register __m512 a = _mm512_load_ps((float *)left);
|
|
|
|
00035 49 8b 85 30 08
|
|
00 00 mov rax, QWORD PTR left$[r13]
|
|
0003c 62 f1 7c 48 10
|
|
00 vmovups zmm0, ZMMWORD PTR [rax]
|
|
00042 62 f1 7c 48 11
|
|
45 01 vmovups ZMMWORD PTR a$[rbp], zmm0
|
|
|
|
; 163 : register __m512 b = _mm512_load_ps((float *)right);
|
|
|
|
00049 49 8b 85 38 08
|
|
00 00 mov rax, QWORD PTR right$[r13]
|
|
00050 62 f1 7c 48 10
|
|
00 vmovups zmm0, ZMMWORD PTR [rax]
|
|
00056 62 f1 7c 48 11
|
|
45 03 vmovups ZMMWORD PTR b$[rbp], zmm0
|
|
|
|
; 164 : register __m512 c = _mm512_load_ps((float *)ans);
|
|
|
|
0005d 49 8b 85 40 08
|
|
00 00 mov rax, QWORD PTR ans$[r13]
|
|
00064 62 f1 7c 48 10
|
|
00 vmovups zmm0, ZMMWORD PTR [rax]
|
|
0006a 62 f1 7c 48 11
|
|
45 05 vmovups ZMMWORD PTR c$[rbp], zmm0
|
|
|
|
; 165 :
|
|
; 166 : b = _mm512_permutexvar_ps(b_shift, b);
|
|
|
|
00071 62 f1 7e 48 6f
|
|
05 00 00 00 00 vmovdqu32 zmm0, ZMMWORD PTR ?b_shift@?1??float_kernel_fma_512@@9@9
|
|
0007b 62 f2 7d 48 16
|
|
45 03 vpermps zmm0, zmm0, ZMMWORD PTR b$[rbp]
|
|
00082 62 f1 7c 48 11
|
|
45 03 vmovups ZMMWORD PTR b$[rbp], zmm0
|
|
|
|
; 167 : register __m512 a_perm0 = _mm512_shuffle_f32x4(a, a, _MM_SHUFFLE(3, 2, 1, 0));
|
|
|
|
00089 62 f1 7c 48 10
|
|
45 01 vmovups zmm0, ZMMWORD PTR a$[rbp]
|
|
00090 62 f3 7d 48 23
|
|
45 01 e4 vshuff32x4 zmm0, zmm0, ZMMWORD PTR a$[rbp], 228 ; 000000e4H
|
|
00098 62 f1 7c 48 11
|
|
45 07 vmovups ZMMWORD PTR a_perm0$[rbp], zmm0
|
|
|
|
; 168 : register __m512 b_perm0 = _mm512_permute_ps(b, _FMA_SELECT(0));
|
|
|
|
0009f 62 f3 7d 48 04
|
|
45 03 00 vpermilps zmm0, ZMMWORD PTR b$[rbp], 0
|
|
000a7 62 f1 7c 48 11
|
|
45 09 vmovups ZMMWORD PTR b_perm0$[rbp], zmm0
|
|
|
|
; 169 : c = _mm512_fmadd_ps(a_perm0, b_perm0, c);
|
|
|
|
000ae 62 f1 7c 48 10
|
|
45 07 vmovups zmm0, ZMMWORD PTR a_perm0$[rbp]
|
|
000b5 62 f1 7c 48 10
|
|
4d 09 vmovups zmm1, ZMMWORD PTR b_perm0$[rbp]
|
|
000bc 62 f2 75 48 a8
|
|
45 05 vfmadd213ps zmm0, zmm1, ZMMWORD PTR c$[rbp]
|
|
000c3 62 f1 7c 48 11
|
|
45 05 vmovups ZMMWORD PTR c$[rbp], zmm0
|
|
|
|
; 170 :
|
|
; 171 : register __m512 a_perm1 = _mm512_shuffle_f32x4(a, a, _MM_SHUFFLE(2, 1, 0, 3));
|
|
|
|
000ca 62 f1 7c 48 10
|
|
45 01 vmovups zmm0, ZMMWORD PTR a$[rbp]
|
|
000d1 62 f3 7d 48 23
|
|
45 01 93 vshuff32x4 zmm0, zmm0, ZMMWORD PTR a$[rbp], 147 ; 00000093H
|
|
000d9 62 f1 7c 48 11
|
|
45 0b vmovups ZMMWORD PTR a_perm1$[rbp], zmm0
|
|
|
|
; 172 : register __m512 b_perm1 = _mm512_permute_ps(b, _FMA_SELECT(1));
|
|
|
|
000e0 62 f3 7d 48 04
|
|
45 03 55 vpermilps zmm0, ZMMWORD PTR b$[rbp], 85 ; 00000055H
|
|
000e8 62 f1 7c 48 11
|
|
45 0d vmovups ZMMWORD PTR b_perm1$[rbp], zmm0
|
|
|
|
; 173 : c = _mm512_fmadd_ps(a_perm1, b_perm1, c);
|
|
|
|
000ef 62 f1 7c 48 10
|
|
45 0b vmovups zmm0, ZMMWORD PTR a_perm1$[rbp]
|
|
000f6 62 f1 7c 48 10
|
|
4d 0d vmovups zmm1, ZMMWORD PTR b_perm1$[rbp]
|
|
000fd 62 f2 75 48 a8
|
|
45 05 vfmadd213ps zmm0, zmm1, ZMMWORD PTR c$[rbp]
|
|
00104 62 f1 7c 48 11
|
|
45 05 vmovups ZMMWORD PTR c$[rbp], zmm0
|
|
|
|
; 174 :
|
|
; 175 : register __m512 a_perm2 = _mm512_shuffle_f32x4(a, a, _MM_SHUFFLE(1, 0, 3, 2));
|
|
|
|
0010b 62 f1 7c 48 10
|
|
45 01 vmovups zmm0, ZMMWORD PTR a$[rbp]
|
|
00112 62 f3 7d 48 23
|
|
45 01 4e vshuff32x4 zmm0, zmm0, ZMMWORD PTR a$[rbp], 78 ; 0000004eH
|
|
0011a 62 f1 7c 48 11
|
|
45 0f vmovups ZMMWORD PTR a_perm2$[rbp], zmm0
|
|
|
|
; 176 : register __m512 b_perm2 = _mm512_permute_ps(b, _FMA_SELECT(2));
|
|
|
|
00121 62 f3 7d 48 04
|
|
45 03 aa vpermilps zmm0, ZMMWORD PTR b$[rbp], 170 ; 000000aaH
|
|
00129 62 f1 7c 48 11
|
|
45 11 vmovups ZMMWORD PTR b_perm2$[rbp], zmm0
|
|
|
|
; 177 : c = _mm512_fmadd_ps(a_perm2, b_perm2, c);
|
|
|
|
00130 62 f1 7c 48 10
|
|
45 0f vmovups zmm0, ZMMWORD PTR a_perm2$[rbp]
|
|
00137 62 f1 7c 48 10
|
|
4d 11 vmovups zmm1, ZMMWORD PTR b_perm2$[rbp]
|
|
0013e 62 f2 75 48 a8
|
|
45 05 vfmadd213ps zmm0, zmm1, ZMMWORD PTR c$[rbp]
|
|
00145 62 f1 7c 48 11
|
|
45 05 vmovups ZMMWORD PTR c$[rbp], zmm0
|
|
|
|
; 178 :
|
|
; 179 : register __m512 a_perm3 = _mm512_shuffle_f32x4(a, a, _MM_SHUFFLE(0, 3, 2, 1));
|
|
|
|
0014c 62 f1 7c 48 10
|
|
45 01 vmovups zmm0, ZMMWORD PTR a$[rbp]
|
|
00153 62 f3 7d 48 23
|
|
45 01 39 vshuff32x4 zmm0, zmm0, ZMMWORD PTR a$[rbp], 57 ; 00000039H
|
|
0015b 62 f1 7c 48 11
|
|
45 13 vmovups ZMMWORD PTR a_perm3$[rbp], zmm0
|
|
|
|
; 180 : register __m512 b_perm3 = _mm512_permute_ps(b, _FMA_SELECT(3));
|
|
|
|
00162 62 f3 7d 48 04
|
|
45 03 ff vpermilps zmm0, ZMMWORD PTR b$[rbp], 255 ; 000000ffH
|
|
0016a 62 f1 7c 48 11
|
|
45 15 vmovups ZMMWORD PTR b_perm3$[rbp], zmm0
|
|
|
|
; 181 : c = _mm512_fmadd_ps(a_perm3, b_perm3, c);
|
|
|
|
00171 62 f1 7c 48 10
|
|
45 13 vmovups zmm0, ZMMWORD PTR a_perm3$[rbp]
|
|
00178 62 f1 7c 48 10
|
|
4d 15 vmovups zmm1, ZMMWORD PTR b_perm3$[rbp]
|
|
0017f 62 f2 75 48 a8
|
|
45 05 vfmadd213ps zmm0, zmm1, ZMMWORD PTR c$[rbp]
|
|
00186 62 f1 7c 48 11
|
|
45 05 vmovups ZMMWORD PTR c$[rbp], zmm0
|
|
|
|
; 182 :
|
|
; 183 : _mm512_store_ps((float *)ans, c);
|
|
|
|
0018d 49 8b 85 40 08
|
|
00 00 mov rax, QWORD PTR ans$[r13]
|
|
00194 62 f1 7c 48 10
|
|
45 05 vmovups zmm0, ZMMWORD PTR c$[rbp]
|
|
0019b 62 f1 7c 48 11
|
|
00 vmovups ZMMWORD PTR [rax], zmm0
|
|
|
|
; 184 : }
|
|
|
|
001a1 49 8d a5 10 08
|
|
00 00 lea rsp, QWORD PTR [r13+2064]
|
|
001a8 5f pop rdi
|
|
001a9 5d pop rbp
|
|
001aa 41 5d pop r13
|
|
001ac c3 ret 0
|
|
float_kernel_fma_512 ENDP
|
|
_TEXT ENDS
|
|
; Function compile flags: /Odtp /RTCsu /ZI
|
|
; File D:\platform-dev\StgSharp.Native\sn-src\m.fma.x86.c
|
|
; COMDAT float_kernel_fma_avx_fma
|
|
_TEXT SEGMENT
|
|
a01$ = 32
|
|
a23$ = 96
|
|
b01$ = 160
|
|
b23$ = 224
|
|
c01$ = 288
|
|
c23$ = 352
|
|
b01_perm$ = 416
|
|
b23_perm$ = 480
|
|
a12$ = 544
|
|
a30$ = 608
|
|
left$ = 1104
|
|
right$ = 1112
|
|
ans$ = 1120
|
|
float_kernel_fma_avx_fma PROC ; COMDAT
|
|
|
|
; 107 : {
|
|
|
|
$LN3:
|
|
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
|
|
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
|
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
|
0000f 41 55 push r13
|
|
00011 55 push rbp
|
|
00012 57 push rdi
|
|
00013 48 81 ec 50 04
|
|
00 00 sub rsp, 1104 ; 00000450H
|
|
0001a 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
|
|
0001f 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
|
|
00024 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
|
|
00028 48 8d 0d 00 00
|
|
00 00 lea rcx, OFFSET FLAT:__F8387F23_m@fma@x86@c
|
|
0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
|
|
00034 90 npad 1
|
|
|
|
; 108 : static const __m256i b01_shift = { .m256i_i32 = { 0, 1, 2, 3, 5, 6, 7, 4 } };
|
|
; 109 : static const __m256i b23_shift = { .m256i_i32 = { 2, 3, 0, 1, 7, 4, 5, 6 } };
|
|
; 110 :
|
|
; 111 : register __m256 a01 = _mm256_load_ps((float *)&left->f32_y[0]);
|
|
|
|
00035 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
0003a 48 6b c0 00 imul rax, rax, 0
|
|
0003e 49 8b 8d 50 04
|
|
00 00 mov rcx, QWORD PTR left$[r13]
|
|
00045 48 03 c8 add rcx, rax
|
|
00048 48 8b c1 mov rax, rcx
|
|
0004b c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
0004f c5 fc 11 45 20 vmovups YMMWORD PTR a01$[rbp], ymm0
|
|
|
|
; 112 : register __m256 a23 = _mm256_load_ps((float *)&left->f32_y[1]);
|
|
|
|
00054 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00059 48 6b c0 01 imul rax, rax, 1
|
|
0005d 49 8b 8d 50 04
|
|
00 00 mov rcx, QWORD PTR left$[r13]
|
|
00064 48 03 c8 add rcx, rax
|
|
00067 48 8b c1 mov rax, rcx
|
|
0006a c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
0006e c5 fc 11 45 60 vmovups YMMWORD PTR a23$[rbp], ymm0
|
|
|
|
; 113 :
|
|
; 114 : register __m256 b01 = _mm256_load_ps((float *)&right->f32_y[0]);
|
|
|
|
00073 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00078 48 6b c0 00 imul rax, rax, 0
|
|
0007c 49 8b 8d 58 04
|
|
00 00 mov rcx, QWORD PTR right$[r13]
|
|
00083 48 03 c8 add rcx, rax
|
|
00086 48 8b c1 mov rax, rcx
|
|
00089 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
0008d c5 fc 11 85 a0
|
|
00 00 00 vmovups YMMWORD PTR b01$[rbp], ymm0
|
|
|
|
; 115 : register __m256 b23 = _mm256_load_ps((float *)&right->f32_y[1]);
|
|
|
|
00095 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
0009a 48 6b c0 01 imul rax, rax, 1
|
|
0009e 49 8b 8d 58 04
|
|
00 00 mov rcx, QWORD PTR right$[r13]
|
|
000a5 48 03 c8 add rcx, rax
|
|
000a8 48 8b c1 mov rax, rcx
|
|
000ab c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
000af c5 fc 11 85 e0
|
|
00 00 00 vmovups YMMWORD PTR b23$[rbp], ymm0
|
|
|
|
; 116 : b01 = _mm256_permutevar_ps(b01, b01_shift);
|
|
|
|
000b7 c5 fc 10 85 a0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR b01$[rbp]
|
|
000bf c4 e2 7d 0c 05
|
|
00 00 00 00 vpermilps ymm0, ymm0, YMMWORD PTR ?b01_shift@?1??float_kernel_fma_avx_fma@@9@9
|
|
000c8 c5 fc 11 85 a0
|
|
00 00 00 vmovups YMMWORD PTR b01$[rbp], ymm0
|
|
|
|
; 117 : b23 = _mm256_permutevar_ps(b23, b23_shift);
|
|
|
|
000d0 c5 fc 10 85 e0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR b23$[rbp]
|
|
000d8 c4 e2 7d 0c 05
|
|
00 00 00 00 vpermilps ymm0, ymm0, YMMWORD PTR ?b23_shift@?1??float_kernel_fma_avx_fma@@9@9
|
|
000e1 c5 fc 11 85 e0
|
|
00 00 00 vmovups YMMWORD PTR b23$[rbp], ymm0
|
|
|
|
; 118 :
|
|
; 119 : register __m256 c01 = _mm256_load_ps((float *)&ans->f32_y[0]);
|
|
|
|
000e9 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
000ee 48 6b c0 00 imul rax, rax, 0
|
|
000f2 49 8b 8d 60 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
000f9 48 03 c8 add rcx, rax
|
|
000fc 48 8b c1 mov rax, rcx
|
|
000ff c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
00103 c5 fc 11 85 20
|
|
01 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
|
|
|
|
; 120 : register __m256 c23 = _mm256_load_ps((float *)&ans->f32_y[1]);
|
|
|
|
0010b b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00110 48 6b c0 01 imul rax, rax, 1
|
|
00114 49 8b 8d 60 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
0011b 48 03 c8 add rcx, rax
|
|
0011e 48 8b c1 mov rax, rcx
|
|
00121 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
00125 c5 fc 11 85 60
|
|
01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
|
|
|
|
; 121 :
|
|
; 122 : //group 0
|
|
; 123 : register __m256 b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(0));
|
|
|
|
0012d c5 fc 10 85 a0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR b01$[rbp]
|
|
00135 c5 fc c6 85 a0
|
|
00 00 00 00 vshufps ymm0, ymm0, YMMWORD PTR b01$[rbp], 0
|
|
0013e c5 fc 11 85 a0
|
|
01 00 00 vmovups YMMWORD PTR b01_perm$[rbp], ymm0
|
|
|
|
; 124 : register __m256 b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(0));
|
|
|
|
00146 c5 fc 10 85 e0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR b23$[rbp]
|
|
0014e c5 fc c6 85 e0
|
|
00 00 00 00 vshufps ymm0, ymm0, YMMWORD PTR b23$[rbp], 0
|
|
00157 c5 fc 11 85 e0
|
|
01 00 00 vmovups YMMWORD PTR b23_perm$[rbp], ymm0
|
|
|
|
; 125 : c01 = _mm256_fmadd_ps(a01, b01_perm, c01);
|
|
|
|
0015f c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR a01$[rbp]
|
|
00164 c5 fc 10 8d a0
|
|
01 00 00 vmovups ymm1, YMMWORD PTR b01_perm$[rbp]
|
|
0016c c4 e2 75 a8 85
|
|
20 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c01$[rbp]
|
|
00175 c5 fc 11 85 20
|
|
01 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
|
|
|
|
; 126 : c23 = _mm256_fmadd_ps(a23, b23_perm, c23);
|
|
|
|
0017d c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR a23$[rbp]
|
|
00182 c5 fc 10 8d e0
|
|
01 00 00 vmovups ymm1, YMMWORD PTR b23_perm$[rbp]
|
|
0018a c4 e2 75 a8 85
|
|
60 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c23$[rbp]
|
|
00193 c5 fc 11 85 60
|
|
01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
|
|
|
|
; 127 :
|
|
; 128 : //group 2
|
|
; 129 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(2));
|
|
|
|
0019b c5 fc 10 85 a0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR b01$[rbp]
|
|
001a3 c5 fc c6 85 a0
|
|
00 00 00 aa vshufps ymm0, ymm0, YMMWORD PTR b01$[rbp], 170 ; 000000aaH
|
|
001ac c5 fc 11 85 a0
|
|
01 00 00 vmovups YMMWORD PTR b01_perm$[rbp], ymm0
|
|
|
|
; 130 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(2));
|
|
|
|
001b4 c5 fc 10 85 e0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR b23$[rbp]
|
|
001bc c5 fc c6 85 e0
|
|
00 00 00 aa vshufps ymm0, ymm0, YMMWORD PTR b23$[rbp], 170 ; 000000aaH
|
|
001c5 c5 fc 11 85 e0
|
|
01 00 00 vmovups YMMWORD PTR b23_perm$[rbp], ymm0
|
|
|
|
; 131 : c01 = _mm256_fmadd_ps(a23, b01_perm, c01);
|
|
|
|
001cd c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR a23$[rbp]
|
|
001d2 c5 fc 10 8d a0
|
|
01 00 00 vmovups ymm1, YMMWORD PTR b01_perm$[rbp]
|
|
001da c4 e2 75 a8 85
|
|
20 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c01$[rbp]
|
|
001e3 c5 fc 11 85 20
|
|
01 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
|
|
|
|
; 132 : c23 = _mm256_fmadd_ps(a01, b23_perm, c23);
|
|
|
|
001eb c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR a01$[rbp]
|
|
001f0 c5 fc 10 8d e0
|
|
01 00 00 vmovups ymm1, YMMWORD PTR b23_perm$[rbp]
|
|
001f8 c4 e2 75 a8 85
|
|
60 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c23$[rbp]
|
|
00201 c5 fc 11 85 60
|
|
01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
|
|
|
|
; 133 :
|
|
; 134 : //group 1
|
|
; 135 : register __m256 a12 = _mm256_permute2f128_ps(a01, a23, 0x21);
|
|
|
|
00209 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR a01$[rbp]
|
|
0020e c4 e3 7d 06 45
|
|
60 21 vperm2f128 ymm0, ymm0, YMMWORD PTR a23$[rbp], 33 ; 00000021H
|
|
00215 c5 fc 11 85 20
|
|
02 00 00 vmovups YMMWORD PTR a12$[rbp], ymm0
|
|
|
|
; 136 : register __m256 a30 = _mm256_permute2f128_ps(a01, a23, 0x30);
|
|
|
|
0021d c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR a01$[rbp]
|
|
00222 c4 e3 7d 06 45
|
|
60 30 vperm2f128 ymm0, ymm0, YMMWORD PTR a23$[rbp], 48 ; 00000030H
|
|
00229 c5 fc 11 85 60
|
|
02 00 00 vmovups YMMWORD PTR a30$[rbp], ymm0
|
|
|
|
; 137 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(1));
|
|
|
|
00231 c5 fc 10 85 a0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR b01$[rbp]
|
|
00239 c5 fc c6 85 a0
|
|
00 00 00 55 vshufps ymm0, ymm0, YMMWORD PTR b01$[rbp], 85 ; 00000055H
|
|
00242 c5 fc 11 85 a0
|
|
01 00 00 vmovups YMMWORD PTR b01_perm$[rbp], ymm0
|
|
|
|
; 138 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(1));
|
|
|
|
0024a c5 fc 10 85 e0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR b23$[rbp]
|
|
00252 c5 fc c6 85 e0
|
|
00 00 00 55 vshufps ymm0, ymm0, YMMWORD PTR b23$[rbp], 85 ; 00000055H
|
|
0025b c5 fc 11 85 e0
|
|
01 00 00 vmovups YMMWORD PTR b23_perm$[rbp], ymm0
|
|
|
|
; 139 : c01 = _mm256_fmadd_ps(a12, b01_perm, c01);
|
|
|
|
00263 c5 fc 10 85 20
|
|
02 00 00 vmovups ymm0, YMMWORD PTR a12$[rbp]
|
|
0026b c5 fc 10 8d a0
|
|
01 00 00 vmovups ymm1, YMMWORD PTR b01_perm$[rbp]
|
|
00273 c4 e2 75 a8 85
|
|
20 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c01$[rbp]
|
|
0027c c5 fc 11 85 20
|
|
01 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
|
|
|
|
; 140 : c23 = _mm256_fmadd_ps(a30, b23_perm, c23);
|
|
|
|
00284 c5 fc 10 85 60
|
|
02 00 00 vmovups ymm0, YMMWORD PTR a30$[rbp]
|
|
0028c c5 fc 10 8d e0
|
|
01 00 00 vmovups ymm1, YMMWORD PTR b23_perm$[rbp]
|
|
00294 c4 e2 75 a8 85
|
|
60 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c23$[rbp]
|
|
0029d c5 fc 11 85 60
|
|
01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
|
|
|
|
; 141 :
|
|
; 142 : //group 3
|
|
; 143 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(3));
|
|
|
|
002a5 c5 fc 10 85 a0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR b01$[rbp]
|
|
002ad c5 fc c6 85 a0
|
|
00 00 00 ff vshufps ymm0, ymm0, YMMWORD PTR b01$[rbp], 255 ; 000000ffH
|
|
002b6 c5 fc 11 85 a0
|
|
01 00 00 vmovups YMMWORD PTR b01_perm$[rbp], ymm0
|
|
|
|
; 144 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(3));
|
|
|
|
002be c5 fc 10 85 e0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR b23$[rbp]
|
|
002c6 c5 fc c6 85 e0
|
|
00 00 00 ff vshufps ymm0, ymm0, YMMWORD PTR b23$[rbp], 255 ; 000000ffH
|
|
002cf c5 fc 11 85 e0
|
|
01 00 00 vmovups YMMWORD PTR b23_perm$[rbp], ymm0
|
|
|
|
; 145 : c01 = _mm256_fmadd_ps(a30, b01_perm, c01);
|
|
|
|
002d7 c5 fc 10 85 60
|
|
02 00 00 vmovups ymm0, YMMWORD PTR a30$[rbp]
|
|
002df c5 fc 10 8d a0
|
|
01 00 00 vmovups ymm1, YMMWORD PTR b01_perm$[rbp]
|
|
002e7 c4 e2 75 a8 85
|
|
20 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c01$[rbp]
|
|
002f0 c5 fc 11 85 20
|
|
01 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
|
|
|
|
; 146 : c23 = _mm256_fmadd_ps(a12, b23_perm, c23);
|
|
|
|
002f8 c5 fc 10 85 20
|
|
02 00 00 vmovups ymm0, YMMWORD PTR a12$[rbp]
|
|
00300 c5 fc 10 8d e0
|
|
01 00 00 vmovups ymm1, YMMWORD PTR b23_perm$[rbp]
|
|
00308 c4 e2 75 a8 85
|
|
60 01 00 00 vfmadd213ps ymm0, ymm1, YMMWORD PTR c23$[rbp]
|
|
00311 c5 fc 11 85 60
|
|
01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
|
|
|
|
; 147 :
|
|
; 148 : ans->f32_y[0] = c01;
|
|
|
|
00319 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
0031e 48 6b c0 00 imul rax, rax, 0
|
|
00322 49 8b 8d 60 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
00329 c5 fc 10 85 20
|
|
01 00 00 vmovups ymm0, YMMWORD PTR c01$[rbp]
|
|
00331 c5 fc 11 04 01 vmovups YMMWORD PTR [rcx+rax], ymm0
|
|
|
|
; 149 : ans->f32_y[1] = c23;
|
|
|
|
00336 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
0033b 48 6b c0 01 imul rax, rax, 1
|
|
0033f 49 8b 8d 60 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
00346 c5 fc 10 85 60
|
|
01 00 00 vmovups ymm0, YMMWORD PTR c23$[rbp]
|
|
0034e c5 fc 11 04 01 vmovups YMMWORD PTR [rcx+rax], ymm0
|
|
|
|
; 150 : }
|
|
|
|
00353 49 8d a5 30 04
|
|
00 00 lea rsp, QWORD PTR [r13+1072]
|
|
0035a 5f pop rdi
|
|
0035b 5d pop rbp
|
|
0035c 41 5d pop r13
|
|
0035e c3 ret 0
|
|
float_kernel_fma_avx_fma ENDP
|
|
_TEXT ENDS
|
|
; Function compile flags: /Odtp /RTCsu /ZI
|
|
; File D:\platform-dev\StgSharp.Native\sn-src\m.fma.x86.c
|
|
; COMDAT float_kernel_fma_avx
|
|
_TEXT SEGMENT
|
|
a01$ = 32
|
|
a23$ = 96
|
|
b01$ = 160
|
|
b23$ = 224
|
|
c01$ = 288
|
|
c23$ = 352
|
|
b01_perm$ = 416
|
|
b23_perm$ = 480
|
|
a12$ = 544
|
|
a30$ = 608
|
|
left$ = 1104
|
|
right$ = 1112
|
|
ans$ = 1120
|
|
float_kernel_fma_avx PROC ; COMDAT
|
|
|
|
; 61 : {
|
|
|
|
$LN3:
|
|
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
|
|
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
|
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
|
0000f 41 55 push r13
|
|
00011 55 push rbp
|
|
00012 57 push rdi
|
|
00013 48 81 ec 50 04
|
|
00 00 sub rsp, 1104 ; 00000450H
|
|
0001a 4c 8d 6c 24 20 lea r13, QWORD PTR [rsp+32]
|
|
0001f 48 8d 6c 24 40 lea rbp, QWORD PTR [rsp+64]
|
|
00024 48 83 e5 e0 and rbp, -32 ; ffffffffffffffe0H
|
|
00028 48 8d 0d 00 00
|
|
00 00 lea rcx, OFFSET FLAT:__F8387F23_m@fma@x86@c
|
|
0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
|
|
00034 90 npad 1
|
|
|
|
; 62 : static const __m256i b01_shift = { .m256i_i32 = { 0, 1, 2, 3, 5, 6, 7, 4 } };
|
|
; 63 : static const __m256i b23_shift = { .m256i_i32 = { 2, 3, 0, 1, 7, 4, 5, 6 } };
|
|
; 64 :
|
|
; 65 : register __m256 a01 = _mm256_load_ps((float *)&left->f32_y[0]);
|
|
|
|
00035 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
0003a 48 6b c0 00 imul rax, rax, 0
|
|
0003e 49 8b 8d 50 04
|
|
00 00 mov rcx, QWORD PTR left$[r13]
|
|
00045 48 03 c8 add rcx, rax
|
|
00048 48 8b c1 mov rax, rcx
|
|
0004b c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
0004f c5 fc 11 45 20 vmovups YMMWORD PTR a01$[rbp], ymm0
|
|
|
|
; 66 : register __m256 a23 = _mm256_load_ps((float *)&left->f32_y[1]);
|
|
|
|
00054 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00059 48 6b c0 01 imul rax, rax, 1
|
|
0005d 49 8b 8d 50 04
|
|
00 00 mov rcx, QWORD PTR left$[r13]
|
|
00064 48 03 c8 add rcx, rax
|
|
00067 48 8b c1 mov rax, rcx
|
|
0006a c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
0006e c5 fc 11 45 60 vmovups YMMWORD PTR a23$[rbp], ymm0
|
|
|
|
; 67 :
|
|
; 68 : register __m256 b01 = _mm256_load_ps((float *)&right->f32_y[0]);
|
|
|
|
00073 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00078 48 6b c0 00 imul rax, rax, 0
|
|
0007c 49 8b 8d 58 04
|
|
00 00 mov rcx, QWORD PTR right$[r13]
|
|
00083 48 03 c8 add rcx, rax
|
|
00086 48 8b c1 mov rax, rcx
|
|
00089 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
0008d c5 fc 11 85 a0
|
|
00 00 00 vmovups YMMWORD PTR b01$[rbp], ymm0
|
|
|
|
; 69 : register __m256 b23 = _mm256_load_ps((float *)&right->f32_y[1]);
|
|
|
|
00095 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
0009a 48 6b c0 01 imul rax, rax, 1
|
|
0009e 49 8b 8d 58 04
|
|
00 00 mov rcx, QWORD PTR right$[r13]
|
|
000a5 48 03 c8 add rcx, rax
|
|
000a8 48 8b c1 mov rax, rcx
|
|
000ab c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
000af c5 fc 11 85 e0
|
|
00 00 00 vmovups YMMWORD PTR b23$[rbp], ymm0
|
|
|
|
; 70 : b01 = _mm256_permutevar_ps(b01, b01_shift);
|
|
|
|
000b7 c5 fc 10 85 a0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR b01$[rbp]
|
|
000bf c4 e2 7d 0c 05
|
|
00 00 00 00 vpermilps ymm0, ymm0, YMMWORD PTR ?b01_shift@?1??float_kernel_fma_avx@@9@9
|
|
000c8 c5 fc 11 85 a0
|
|
00 00 00 vmovups YMMWORD PTR b01$[rbp], ymm0
|
|
|
|
; 71 : b23 = _mm256_permutevar_ps(b23, b23_shift);
|
|
|
|
000d0 c5 fc 10 85 e0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR b23$[rbp]
|
|
000d8 c4 e2 7d 0c 05
|
|
00 00 00 00 vpermilps ymm0, ymm0, YMMWORD PTR ?b23_shift@?1??float_kernel_fma_avx@@9@9
|
|
000e1 c5 fc 11 85 e0
|
|
00 00 00 vmovups YMMWORD PTR b23$[rbp], ymm0
|
|
|
|
; 72 :
|
|
; 73 : register __m256 c01 = _mm256_load_ps((float *)&ans->f32_y[0]);
|
|
|
|
000e9 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
000ee 48 6b c0 00 imul rax, rax, 0
|
|
000f2 49 8b 8d 60 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
000f9 48 03 c8 add rcx, rax
|
|
000fc 48 8b c1 mov rax, rcx
|
|
000ff c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
00103 c5 fc 11 85 20
|
|
01 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
|
|
|
|
; 74 : register __m256 c23 = _mm256_load_ps((float *)&ans->f32_y[1]);
|
|
|
|
0010b b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00110 48 6b c0 01 imul rax, rax, 1
|
|
00114 49 8b 8d 60 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
0011b 48 03 c8 add rcx, rax
|
|
0011e 48 8b c1 mov rax, rcx
|
|
00121 c5 fc 10 00 vmovups ymm0, YMMWORD PTR [rax]
|
|
00125 c5 fc 11 85 60
|
|
01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
|
|
|
|
; 75 :
|
|
; 76 : //group 0
|
|
; 77 : register __m256 b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(0));
|
|
|
|
0012d c5 fc 10 85 a0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR b01$[rbp]
|
|
00135 c5 fc c6 85 a0
|
|
00 00 00 00 vshufps ymm0, ymm0, YMMWORD PTR b01$[rbp], 0
|
|
0013e c5 fc 11 85 a0
|
|
01 00 00 vmovups YMMWORD PTR b01_perm$[rbp], ymm0
|
|
|
|
; 78 : register __m256 b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(0));
|
|
|
|
00146 c5 fc 10 85 e0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR b23$[rbp]
|
|
0014e c5 fc c6 85 e0
|
|
00 00 00 00 vshufps ymm0, ymm0, YMMWORD PTR b23$[rbp], 0
|
|
00157 c5 fc 11 85 e0
|
|
01 00 00 vmovups YMMWORD PTR b23_perm$[rbp], ymm0
|
|
|
|
; 79 : c01 = _mm256_add_ps(_mm256_mul_ps(a01, b01_perm), c01);
|
|
|
|
0015f c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR a01$[rbp]
|
|
00164 c5 fc 59 85 a0
|
|
01 00 00 vmulps ymm0, ymm0, YMMWORD PTR b01_perm$[rbp]
|
|
0016c c5 fc 58 85 20
|
|
01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c01$[rbp]
|
|
00174 c5 fc 11 85 20
|
|
01 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
|
|
|
|
; 80 : c23 = _mm256_add_ps(_mm256_mul_ps(a23, b23_perm), c23);
|
|
|
|
0017c c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR a23$[rbp]
|
|
00181 c5 fc 59 85 e0
|
|
01 00 00 vmulps ymm0, ymm0, YMMWORD PTR b23_perm$[rbp]
|
|
00189 c5 fc 58 85 60
|
|
01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c23$[rbp]
|
|
00191 c5 fc 11 85 60
|
|
01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
|
|
|
|
; 81 :
|
|
; 82 : //group 2
|
|
; 83 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(2));
|
|
|
|
00199 c5 fc 10 85 a0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR b01$[rbp]
|
|
001a1 c5 fc c6 85 a0
|
|
00 00 00 aa vshufps ymm0, ymm0, YMMWORD PTR b01$[rbp], 170 ; 000000aaH
|
|
001aa c5 fc 11 85 a0
|
|
01 00 00 vmovups YMMWORD PTR b01_perm$[rbp], ymm0
|
|
|
|
; 84 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(2));
|
|
|
|
001b2 c5 fc 10 85 e0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR b23$[rbp]
|
|
001ba c5 fc c6 85 e0
|
|
00 00 00 aa vshufps ymm0, ymm0, YMMWORD PTR b23$[rbp], 170 ; 000000aaH
|
|
001c3 c5 fc 11 85 e0
|
|
01 00 00 vmovups YMMWORD PTR b23_perm$[rbp], ymm0
|
|
|
|
; 85 : c01 = _mm256_add_ps(_mm256_mul_ps(a23, b01_perm), c01);
|
|
|
|
001cb c5 fc 10 45 60 vmovups ymm0, YMMWORD PTR a23$[rbp]
|
|
001d0 c5 fc 59 85 a0
|
|
01 00 00 vmulps ymm0, ymm0, YMMWORD PTR b01_perm$[rbp]
|
|
001d8 c5 fc 58 85 20
|
|
01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c01$[rbp]
|
|
001e0 c5 fc 11 85 20
|
|
01 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
|
|
|
|
; 86 : c23 = _mm256_add_ps(_mm256_mul_ps(a01, b23_perm), c23);
|
|
|
|
001e8 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR a01$[rbp]
|
|
001ed c5 fc 59 85 e0
|
|
01 00 00 vmulps ymm0, ymm0, YMMWORD PTR b23_perm$[rbp]
|
|
001f5 c5 fc 58 85 60
|
|
01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c23$[rbp]
|
|
001fd c5 fc 11 85 60
|
|
01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
|
|
|
|
; 87 :
|
|
; 88 : //group 1
|
|
; 89 : register __m256 a12 = _mm256_permute2f128_ps(a01, a23, 0x21);
|
|
|
|
00205 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR a01$[rbp]
|
|
0020a c4 e3 7d 06 45
|
|
60 21 vperm2f128 ymm0, ymm0, YMMWORD PTR a23$[rbp], 33 ; 00000021H
|
|
00211 c5 fc 11 85 20
|
|
02 00 00 vmovups YMMWORD PTR a12$[rbp], ymm0
|
|
|
|
; 90 : register __m256 a30 = _mm256_permute2f128_ps(a01, a23, 0x30);
|
|
|
|
00219 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR a01$[rbp]
|
|
0021e c4 e3 7d 06 45
|
|
60 30 vperm2f128 ymm0, ymm0, YMMWORD PTR a23$[rbp], 48 ; 00000030H
|
|
00225 c5 fc 11 85 60
|
|
02 00 00 vmovups YMMWORD PTR a30$[rbp], ymm0
|
|
|
|
; 91 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(1));
|
|
|
|
0022d c5 fc 10 85 a0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR b01$[rbp]
|
|
00235 c5 fc c6 85 a0
|
|
00 00 00 55 vshufps ymm0, ymm0, YMMWORD PTR b01$[rbp], 85 ; 00000055H
|
|
0023e c5 fc 11 85 a0
|
|
01 00 00 vmovups YMMWORD PTR b01_perm$[rbp], ymm0
|
|
|
|
; 92 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(1));
|
|
|
|
00246 c5 fc 10 85 e0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR b23$[rbp]
|
|
0024e c5 fc c6 85 e0
|
|
00 00 00 55 vshufps ymm0, ymm0, YMMWORD PTR b23$[rbp], 85 ; 00000055H
|
|
00257 c5 fc 11 85 e0
|
|
01 00 00 vmovups YMMWORD PTR b23_perm$[rbp], ymm0
|
|
|
|
; 93 : c01 = _mm256_add_ps(_mm256_mul_ps(a12, b01_perm), c01);
|
|
|
|
0025f c5 fc 10 85 20
|
|
02 00 00 vmovups ymm0, YMMWORD PTR a12$[rbp]
|
|
00267 c5 fc 59 85 a0
|
|
01 00 00 vmulps ymm0, ymm0, YMMWORD PTR b01_perm$[rbp]
|
|
0026f c5 fc 58 85 20
|
|
01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c01$[rbp]
|
|
00277 c5 fc 11 85 20
|
|
01 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
|
|
|
|
; 94 : c23 = _mm256_add_ps(_mm256_mul_ps(a30, b23_perm), c23);
|
|
|
|
0027f c5 fc 10 85 60
|
|
02 00 00 vmovups ymm0, YMMWORD PTR a30$[rbp]
|
|
00287 c5 fc 59 85 e0
|
|
01 00 00 vmulps ymm0, ymm0, YMMWORD PTR b23_perm$[rbp]
|
|
0028f c5 fc 58 85 60
|
|
01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c23$[rbp]
|
|
00297 c5 fc 11 85 60
|
|
01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
|
|
|
|
; 95 :
|
|
; 96 : //group 3
|
|
; 97 : b01_perm = _mm256_shuffle_ps(b01, b01, _FMA_SELECT(3));
|
|
|
|
0029f c5 fc 10 85 a0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR b01$[rbp]
|
|
002a7 c5 fc c6 85 a0
|
|
00 00 00 ff vshufps ymm0, ymm0, YMMWORD PTR b01$[rbp], 255 ; 000000ffH
|
|
002b0 c5 fc 11 85 a0
|
|
01 00 00 vmovups YMMWORD PTR b01_perm$[rbp], ymm0
|
|
|
|
; 98 : b23_perm = _mm256_shuffle_ps(b23, b23, _FMA_SELECT(3));
|
|
|
|
002b8 c5 fc 10 85 e0
|
|
00 00 00 vmovups ymm0, YMMWORD PTR b23$[rbp]
|
|
002c0 c5 fc c6 85 e0
|
|
00 00 00 ff vshufps ymm0, ymm0, YMMWORD PTR b23$[rbp], 255 ; 000000ffH
|
|
002c9 c5 fc 11 85 e0
|
|
01 00 00 vmovups YMMWORD PTR b23_perm$[rbp], ymm0
|
|
|
|
; 99 : c01 = _mm256_add_ps(_mm256_mul_ps(a30, b01_perm), c01);
|
|
|
|
002d1 c5 fc 10 85 60
|
|
02 00 00 vmovups ymm0, YMMWORD PTR a30$[rbp]
|
|
002d9 c5 fc 59 85 a0
|
|
01 00 00 vmulps ymm0, ymm0, YMMWORD PTR b01_perm$[rbp]
|
|
002e1 c5 fc 58 85 20
|
|
01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c01$[rbp]
|
|
002e9 c5 fc 11 85 20
|
|
01 00 00 vmovups YMMWORD PTR c01$[rbp], ymm0
|
|
|
|
; 100 : c23 = _mm256_add_ps(_mm256_mul_ps(a12, b23_perm), c23);
|
|
|
|
002f1 c5 fc 10 85 20
|
|
02 00 00 vmovups ymm0, YMMWORD PTR a12$[rbp]
|
|
002f9 c5 fc 59 85 e0
|
|
01 00 00 vmulps ymm0, ymm0, YMMWORD PTR b23_perm$[rbp]
|
|
00301 c5 fc 58 85 60
|
|
01 00 00 vaddps ymm0, ymm0, YMMWORD PTR c23$[rbp]
|
|
00309 c5 fc 11 85 60
|
|
01 00 00 vmovups YMMWORD PTR c23$[rbp], ymm0
|
|
|
|
; 101 :
|
|
; 102 : ans->f32_y[0] = c01;
|
|
|
|
00311 b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00316 48 6b c0 00 imul rax, rax, 0
|
|
0031a 49 8b 8d 60 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
00321 c5 fc 10 85 20
|
|
01 00 00 vmovups ymm0, YMMWORD PTR c01$[rbp]
|
|
00329 c5 fc 11 04 01 vmovups YMMWORD PTR [rcx+rax], ymm0
|
|
|
|
; 103 : ans->f32_y[1] = c23;
|
|
|
|
0032e b8 20 00 00 00 mov eax, 32 ; 00000020H
|
|
00333 48 6b c0 01 imul rax, rax, 1
|
|
00337 49 8b 8d 60 04
|
|
00 00 mov rcx, QWORD PTR ans$[r13]
|
|
0033e c5 fc 10 85 60
|
|
01 00 00 vmovups ymm0, YMMWORD PTR c23$[rbp]
|
|
00346 c5 fc 11 04 01 vmovups YMMWORD PTR [rcx+rax], ymm0
|
|
|
|
; 104 : }
|
|
|
|
0034b 49 8d a5 30 04
|
|
00 00 lea rsp, QWORD PTR [r13+1072]
|
|
00352 5f pop rdi
|
|
00353 5d pop rbp
|
|
00354 41 5d pop r13
|
|
00356 c3 ret 0
|
|
float_kernel_fma_avx ENDP
|
|
_TEXT ENDS
|
|
; Function compile flags: /Odtp /RTCsu /ZI
|
|
; File D:\platform-dev\StgSharp.Native\sn-src\m.fma.x86.c
|
|
; COMDAT float_kernel_fma_sse
|
|
_TEXT SEGMENT
|
|
a0$ = 16
|
|
a1$ = 64
|
|
a2$ = 112
|
|
a3$ = 160
|
|
c0$ = 208
|
|
c1$ = 256
|
|
c2$ = 304
|
|
c3$ = 352
|
|
bcol$ = 400
|
|
left$ = 656
|
|
right$ = 664
|
|
ans$ = 672
|
|
float_kernel_fma_sse PROC ; COMDAT
|
|
|
|
; 13 : {
|
|
|
|
$LN3:
|
|
00000 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8
|
|
00005 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx
|
|
0000a 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx
|
|
0000f 55 push rbp
|
|
00010 57 push rdi
|
|
00011 48 81 ec 98 02
|
|
00 00 sub rsp, 664 ; 00000298H
|
|
00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
|
|
0001d 48 8d 0d 00 00
|
|
00 00 lea rcx, OFFSET FLAT:__F8387F23_m@fma@x86@c
|
|
00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
|
|
00029 90 npad 1
|
|
|
|
; 14 : const __m128 a0 = _mm_load_ps((float *)&left->f32_x[0]);
|
|
|
|
0002a b8 10 00 00 00 mov eax, 16
|
|
0002f 48 6b c0 00 imul rax, rax, 0
|
|
00033 48 8b 8d 90 02
|
|
00 00 mov rcx, QWORD PTR left$[rbp]
|
|
0003a 48 03 c8 add rcx, rax
|
|
0003d 48 8b c1 mov rax, rcx
|
|
00040 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00043 0f 29 45 10 movaps XMMWORD PTR a0$[rbp], xmm0
|
|
|
|
; 15 : const __m128 a1 = _mm_load_ps((float *)&left->f32_x[1]);
|
|
|
|
00047 b8 10 00 00 00 mov eax, 16
|
|
0004c 48 6b c0 01 imul rax, rax, 1
|
|
00050 48 8b 8d 90 02
|
|
00 00 mov rcx, QWORD PTR left$[rbp]
|
|
00057 48 03 c8 add rcx, rax
|
|
0005a 48 8b c1 mov rax, rcx
|
|
0005d 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00060 0f 29 45 40 movaps XMMWORD PTR a1$[rbp], xmm0
|
|
|
|
; 16 : const __m128 a2 = _mm_load_ps((float *)&left->f32_x[2]);
|
|
|
|
00064 b8 10 00 00 00 mov eax, 16
|
|
00069 48 6b c0 02 imul rax, rax, 2
|
|
0006d 48 8b 8d 90 02
|
|
00 00 mov rcx, QWORD PTR left$[rbp]
|
|
00074 48 03 c8 add rcx, rax
|
|
00077 48 8b c1 mov rax, rcx
|
|
0007a 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
0007d 0f 29 45 70 movaps XMMWORD PTR a2$[rbp], xmm0
|
|
|
|
; 17 : const __m128 a3 = _mm_load_ps((float *)&left->f32_x[3]);
|
|
|
|
00081 b8 10 00 00 00 mov eax, 16
|
|
00086 48 6b c0 03 imul rax, rax, 3
|
|
0008a 48 8b 8d 90 02
|
|
00 00 mov rcx, QWORD PTR left$[rbp]
|
|
00091 48 03 c8 add rcx, rax
|
|
00094 48 8b c1 mov rax, rcx
|
|
00097 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
0009a 0f 29 85 a0 00
|
|
00 00 movaps XMMWORD PTR a3$[rbp], xmm0
|
|
|
|
; 18 :
|
|
; 19 : __m128 c0 = _mm_load_ps((float *)&ans->f32_x[0]);
|
|
|
|
000a1 b8 10 00 00 00 mov eax, 16
|
|
000a6 48 6b c0 00 imul rax, rax, 0
|
|
000aa 48 8b 8d a0 02
|
|
00 00 mov rcx, QWORD PTR ans$[rbp]
|
|
000b1 48 03 c8 add rcx, rax
|
|
000b4 48 8b c1 mov rax, rcx
|
|
000b7 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
000ba 0f 29 85 d0 00
|
|
00 00 movaps XMMWORD PTR c0$[rbp], xmm0
|
|
|
|
; 20 : __m128 c1 = _mm_load_ps((float *)&ans->f32_x[1]);
|
|
|
|
000c1 b8 10 00 00 00 mov eax, 16
|
|
000c6 48 6b c0 01 imul rax, rax, 1
|
|
000ca 48 8b 8d a0 02
|
|
00 00 mov rcx, QWORD PTR ans$[rbp]
|
|
000d1 48 03 c8 add rcx, rax
|
|
000d4 48 8b c1 mov rax, rcx
|
|
000d7 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
000da 0f 29 85 00 01
|
|
00 00 movaps XMMWORD PTR c1$[rbp], xmm0
|
|
|
|
; 21 : __m128 c2 = _mm_load_ps((float *)&ans->f32_x[2]);
|
|
|
|
000e1 b8 10 00 00 00 mov eax, 16
|
|
000e6 48 6b c0 02 imul rax, rax, 2
|
|
000ea 48 8b 8d a0 02
|
|
00 00 mov rcx, QWORD PTR ans$[rbp]
|
|
000f1 48 03 c8 add rcx, rax
|
|
000f4 48 8b c1 mov rax, rcx
|
|
000f7 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
000fa 0f 29 85 30 01
|
|
00 00 movaps XMMWORD PTR c2$[rbp], xmm0
|
|
|
|
; 22 : __m128 c3 = _mm_load_ps((float *)&ans->f32_x[3]);
|
|
|
|
00101 b8 10 00 00 00 mov eax, 16
|
|
00106 48 6b c0 03 imul rax, rax, 3
|
|
0010a 48 8b 8d a0 02
|
|
00 00 mov rcx, QWORD PTR ans$[rbp]
|
|
00111 48 03 c8 add rcx, rax
|
|
00114 48 8b c1 mov rax, rcx
|
|
00117 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
0011a 0f 29 85 60 01
|
|
00 00 movaps XMMWORD PTR c3$[rbp], xmm0
|
|
|
|
; 23 :
|
|
; 24 : __m128 bcol;
|
|
; 25 :
|
|
; 26 : /* Column 0 */
|
|
; 27 : bcol = _mm_load_ps((float *)&right->f32_x[0]);
|
|
|
|
00121 b8 10 00 00 00 mov eax, 16
|
|
00126 48 6b c0 00 imul rax, rax, 0
|
|
0012a 48 8b 8d 98 02
|
|
00 00 mov rcx, QWORD PTR right$[rbp]
|
|
00131 48 03 c8 add rcx, rax
|
|
00134 48 8b c1 mov rax, rcx
|
|
00137 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
0013a 0f 29 85 90 01
|
|
00 00 movaps XMMWORD PTR bcol$[rbp], xmm0
|
|
|
|
; 28 : c0 = _mm_add_ps(c0, _mm_mul_ps(a0, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(0))));
|
|
|
|
00141 0f 28 85 90 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
00148 0f c6 85 90 01
|
|
00 00 00 shufps xmm0, XMMWORD PTR bcol$[rbp], 0
|
|
00150 0f 28 4d 10 movaps xmm1, XMMWORD PTR a0$[rbp]
|
|
00154 0f 59 c8 mulps xmm1, xmm0
|
|
00157 0f 28 c1 movaps xmm0, xmm1
|
|
0015a 0f 28 8d d0 00
|
|
00 00 movaps xmm1, XMMWORD PTR c0$[rbp]
|
|
00161 0f 58 c8 addps xmm1, xmm0
|
|
00164 0f 28 c1 movaps xmm0, xmm1
|
|
00167 0f 29 85 d0 00
|
|
00 00 movaps XMMWORD PTR c0$[rbp], xmm0
|
|
|
|
; 29 : c0 = _mm_add_ps(c0, _mm_mul_ps(a1, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(1))));
|
|
|
|
0016e 0f 28 85 90 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
00175 0f c6 85 90 01
|
|
00 00 55 shufps xmm0, XMMWORD PTR bcol$[rbp], 85 ; 00000055H
|
|
0017d 0f 28 4d 40 movaps xmm1, XMMWORD PTR a1$[rbp]
|
|
00181 0f 59 c8 mulps xmm1, xmm0
|
|
00184 0f 28 c1 movaps xmm0, xmm1
|
|
00187 0f 28 8d d0 00
|
|
00 00 movaps xmm1, XMMWORD PTR c0$[rbp]
|
|
0018e 0f 58 c8 addps xmm1, xmm0
|
|
00191 0f 28 c1 movaps xmm0, xmm1
|
|
00194 0f 29 85 d0 00
|
|
00 00 movaps XMMWORD PTR c0$[rbp], xmm0
|
|
|
|
; 30 : c0 = _mm_add_ps(c0, _mm_mul_ps(a2, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(2))));
|
|
|
|
0019b 0f 28 85 90 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
001a2 0f c6 85 90 01
|
|
00 00 aa shufps xmm0, XMMWORD PTR bcol$[rbp], 170 ; 000000aaH
|
|
001aa 0f 28 4d 70 movaps xmm1, XMMWORD PTR a2$[rbp]
|
|
001ae 0f 59 c8 mulps xmm1, xmm0
|
|
001b1 0f 28 c1 movaps xmm0, xmm1
|
|
001b4 0f 28 8d d0 00
|
|
00 00 movaps xmm1, XMMWORD PTR c0$[rbp]
|
|
001bb 0f 58 c8 addps xmm1, xmm0
|
|
001be 0f 28 c1 movaps xmm0, xmm1
|
|
001c1 0f 29 85 d0 00
|
|
00 00 movaps XMMWORD PTR c0$[rbp], xmm0
|
|
|
|
; 31 : c0 = _mm_add_ps(c0, _mm_mul_ps(a3, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(3))));
|
|
|
|
001c8 0f 28 85 90 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
001cf 0f c6 85 90 01
|
|
00 00 ff shufps xmm0, XMMWORD PTR bcol$[rbp], 255 ; 000000ffH
|
|
001d7 0f 28 8d a0 00
|
|
00 00 movaps xmm1, XMMWORD PTR a3$[rbp]
|
|
001de 0f 59 c8 mulps xmm1, xmm0
|
|
001e1 0f 28 c1 movaps xmm0, xmm1
|
|
001e4 0f 28 8d d0 00
|
|
00 00 movaps xmm1, XMMWORD PTR c0$[rbp]
|
|
001eb 0f 58 c8 addps xmm1, xmm0
|
|
001ee 0f 28 c1 movaps xmm0, xmm1
|
|
001f1 0f 29 85 d0 00
|
|
00 00 movaps XMMWORD PTR c0$[rbp], xmm0
|
|
|
|
; 32 :
|
|
; 33 : /* Column 1 */
|
|
; 34 : bcol = _mm_load_ps((float *)&right->f32_x[1]);
|
|
|
|
001f8 b8 10 00 00 00 mov eax, 16
|
|
001fd 48 6b c0 01 imul rax, rax, 1
|
|
00201 48 8b 8d 98 02
|
|
00 00 mov rcx, QWORD PTR right$[rbp]
|
|
00208 48 03 c8 add rcx, rax
|
|
0020b 48 8b c1 mov rax, rcx
|
|
0020e 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
00211 0f 29 85 90 01
|
|
00 00 movaps XMMWORD PTR bcol$[rbp], xmm0
|
|
|
|
; 35 : c1 = _mm_add_ps(c1, _mm_mul_ps(a0, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(0))));
|
|
|
|
00218 0f 28 85 90 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
0021f 0f c6 85 90 01
|
|
00 00 00 shufps xmm0, XMMWORD PTR bcol$[rbp], 0
|
|
00227 0f 28 4d 10 movaps xmm1, XMMWORD PTR a0$[rbp]
|
|
0022b 0f 59 c8 mulps xmm1, xmm0
|
|
0022e 0f 28 c1 movaps xmm0, xmm1
|
|
00231 0f 28 8d 00 01
|
|
00 00 movaps xmm1, XMMWORD PTR c1$[rbp]
|
|
00238 0f 58 c8 addps xmm1, xmm0
|
|
0023b 0f 28 c1 movaps xmm0, xmm1
|
|
0023e 0f 29 85 00 01
|
|
00 00 movaps XMMWORD PTR c1$[rbp], xmm0
|
|
|
|
; 36 : c1 = _mm_add_ps(c1, _mm_mul_ps(a1, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(1))));
|
|
|
|
00245 0f 28 85 90 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
0024c 0f c6 85 90 01
|
|
00 00 55 shufps xmm0, XMMWORD PTR bcol$[rbp], 85 ; 00000055H
|
|
00254 0f 28 4d 40 movaps xmm1, XMMWORD PTR a1$[rbp]
|
|
00258 0f 59 c8 mulps xmm1, xmm0
|
|
0025b 0f 28 c1 movaps xmm0, xmm1
|
|
0025e 0f 28 8d 00 01
|
|
00 00 movaps xmm1, XMMWORD PTR c1$[rbp]
|
|
00265 0f 58 c8 addps xmm1, xmm0
|
|
00268 0f 28 c1 movaps xmm0, xmm1
|
|
0026b 0f 29 85 00 01
|
|
00 00 movaps XMMWORD PTR c1$[rbp], xmm0
|
|
|
|
; 37 : c1 = _mm_add_ps(c1, _mm_mul_ps(a2, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(2))));
|
|
|
|
00272 0f 28 85 90 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
00279 0f c6 85 90 01
|
|
00 00 aa shufps xmm0, XMMWORD PTR bcol$[rbp], 170 ; 000000aaH
|
|
00281 0f 28 4d 70 movaps xmm1, XMMWORD PTR a2$[rbp]
|
|
00285 0f 59 c8 mulps xmm1, xmm0
|
|
00288 0f 28 c1 movaps xmm0, xmm1
|
|
0028b 0f 28 8d 00 01
|
|
00 00 movaps xmm1, XMMWORD PTR c1$[rbp]
|
|
00292 0f 58 c8 addps xmm1, xmm0
|
|
00295 0f 28 c1 movaps xmm0, xmm1
|
|
00298 0f 29 85 00 01
|
|
00 00 movaps XMMWORD PTR c1$[rbp], xmm0
|
|
|
|
; 38 : c1 = _mm_add_ps(c1, _mm_mul_ps(a3, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(3))));
|
|
|
|
0029f 0f 28 85 90 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
002a6 0f c6 85 90 01
|
|
00 00 ff shufps xmm0, XMMWORD PTR bcol$[rbp], 255 ; 000000ffH
|
|
002ae 0f 28 8d a0 00
|
|
00 00 movaps xmm1, XMMWORD PTR a3$[rbp]
|
|
002b5 0f 59 c8 mulps xmm1, xmm0
|
|
002b8 0f 28 c1 movaps xmm0, xmm1
|
|
002bb 0f 28 8d 00 01
|
|
00 00 movaps xmm1, XMMWORD PTR c1$[rbp]
|
|
002c2 0f 58 c8 addps xmm1, xmm0
|
|
002c5 0f 28 c1 movaps xmm0, xmm1
|
|
002c8 0f 29 85 00 01
|
|
00 00 movaps XMMWORD PTR c1$[rbp], xmm0
|
|
|
|
; 39 :
|
|
; 40 : /* Column 2 */
|
|
; 41 : bcol = _mm_load_ps((float *)&right->f32_x[2]);
|
|
|
|
002cf b8 10 00 00 00 mov eax, 16
|
|
002d4 48 6b c0 02 imul rax, rax, 2
|
|
002d8 48 8b 8d 98 02
|
|
00 00 mov rcx, QWORD PTR right$[rbp]
|
|
002df 48 03 c8 add rcx, rax
|
|
002e2 48 8b c1 mov rax, rcx
|
|
002e5 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
002e8 0f 29 85 90 01
|
|
00 00 movaps XMMWORD PTR bcol$[rbp], xmm0
|
|
|
|
; 42 : c2 = _mm_add_ps(c2, _mm_mul_ps(a0, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(0))));
|
|
|
|
002ef 0f 28 85 90 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
002f6 0f c6 85 90 01
|
|
00 00 00 shufps xmm0, XMMWORD PTR bcol$[rbp], 0
|
|
002fe 0f 28 4d 10 movaps xmm1, XMMWORD PTR a0$[rbp]
|
|
00302 0f 59 c8 mulps xmm1, xmm0
|
|
00305 0f 28 c1 movaps xmm0, xmm1
|
|
00308 0f 28 8d 30 01
|
|
00 00 movaps xmm1, XMMWORD PTR c2$[rbp]
|
|
0030f 0f 58 c8 addps xmm1, xmm0
|
|
00312 0f 28 c1 movaps xmm0, xmm1
|
|
00315 0f 29 85 30 01
|
|
00 00 movaps XMMWORD PTR c2$[rbp], xmm0
|
|
|
|
; 43 : c2 = _mm_add_ps(c2, _mm_mul_ps(a1, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(1))));
|
|
|
|
0031c 0f 28 85 90 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
00323 0f c6 85 90 01
|
|
00 00 55 shufps xmm0, XMMWORD PTR bcol$[rbp], 85 ; 00000055H
|
|
0032b 0f 28 4d 40 movaps xmm1, XMMWORD PTR a1$[rbp]
|
|
0032f 0f 59 c8 mulps xmm1, xmm0
|
|
00332 0f 28 c1 movaps xmm0, xmm1
|
|
00335 0f 28 8d 30 01
|
|
00 00 movaps xmm1, XMMWORD PTR c2$[rbp]
|
|
0033c 0f 58 c8 addps xmm1, xmm0
|
|
0033f 0f 28 c1 movaps xmm0, xmm1
|
|
00342 0f 29 85 30 01
|
|
00 00 movaps XMMWORD PTR c2$[rbp], xmm0
|
|
|
|
; 44 : c2 = _mm_add_ps(c2, _mm_mul_ps(a2, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(2))));
|
|
|
|
00349 0f 28 85 90 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
00350 0f c6 85 90 01
|
|
00 00 aa shufps xmm0, XMMWORD PTR bcol$[rbp], 170 ; 000000aaH
|
|
00358 0f 28 4d 70 movaps xmm1, XMMWORD PTR a2$[rbp]
|
|
0035c 0f 59 c8 mulps xmm1, xmm0
|
|
0035f 0f 28 c1 movaps xmm0, xmm1
|
|
00362 0f 28 8d 30 01
|
|
00 00 movaps xmm1, XMMWORD PTR c2$[rbp]
|
|
00369 0f 58 c8 addps xmm1, xmm0
|
|
0036c 0f 28 c1 movaps xmm0, xmm1
|
|
0036f 0f 29 85 30 01
|
|
00 00 movaps XMMWORD PTR c2$[rbp], xmm0
|
|
|
|
; 45 : c2 = _mm_add_ps(c2, _mm_mul_ps(a3, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(3))));
|
|
|
|
00376 0f 28 85 90 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
0037d 0f c6 85 90 01
|
|
00 00 ff shufps xmm0, XMMWORD PTR bcol$[rbp], 255 ; 000000ffH
|
|
00385 0f 28 8d a0 00
|
|
00 00 movaps xmm1, XMMWORD PTR a3$[rbp]
|
|
0038c 0f 59 c8 mulps xmm1, xmm0
|
|
0038f 0f 28 c1 movaps xmm0, xmm1
|
|
00392 0f 28 8d 30 01
|
|
00 00 movaps xmm1, XMMWORD PTR c2$[rbp]
|
|
00399 0f 58 c8 addps xmm1, xmm0
|
|
0039c 0f 28 c1 movaps xmm0, xmm1
|
|
0039f 0f 29 85 30 01
|
|
00 00 movaps XMMWORD PTR c2$[rbp], xmm0
|
|
|
|
; 46 :
|
|
; 47 : /* Column 3 */
|
|
; 48 : bcol = _mm_load_ps((float *)&right->f32_x[3]);
|
|
|
|
003a6 b8 10 00 00 00 mov eax, 16
|
|
003ab 48 6b c0 03 imul rax, rax, 3
|
|
003af 48 8b 8d 98 02
|
|
00 00 mov rcx, QWORD PTR right$[rbp]
|
|
003b6 48 03 c8 add rcx, rax
|
|
003b9 48 8b c1 mov rax, rcx
|
|
003bc 0f 10 00 movups xmm0, XMMWORD PTR [rax]
|
|
003bf 0f 29 85 90 01
|
|
00 00 movaps XMMWORD PTR bcol$[rbp], xmm0
|
|
|
|
; 49 : c3 = _mm_add_ps(c3, _mm_mul_ps(a0, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(0))));
|
|
|
|
003c6 0f 28 85 90 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
003cd 0f c6 85 90 01
|
|
00 00 00 shufps xmm0, XMMWORD PTR bcol$[rbp], 0
|
|
003d5 0f 28 4d 10 movaps xmm1, XMMWORD PTR a0$[rbp]
|
|
003d9 0f 59 c8 mulps xmm1, xmm0
|
|
003dc 0f 28 c1 movaps xmm0, xmm1
|
|
003df 0f 28 8d 60 01
|
|
00 00 movaps xmm1, XMMWORD PTR c3$[rbp]
|
|
003e6 0f 58 c8 addps xmm1, xmm0
|
|
003e9 0f 28 c1 movaps xmm0, xmm1
|
|
003ec 0f 29 85 60 01
|
|
00 00 movaps XMMWORD PTR c3$[rbp], xmm0
|
|
|
|
; 50 : c3 = _mm_add_ps(c3, _mm_mul_ps(a1, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(1))));
|
|
|
|
003f3 0f 28 85 90 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
003fa 0f c6 85 90 01
|
|
00 00 55 shufps xmm0, XMMWORD PTR bcol$[rbp], 85 ; 00000055H
|
|
00402 0f 28 4d 40 movaps xmm1, XMMWORD PTR a1$[rbp]
|
|
00406 0f 59 c8 mulps xmm1, xmm0
|
|
00409 0f 28 c1 movaps xmm0, xmm1
|
|
0040c 0f 28 8d 60 01
|
|
00 00 movaps xmm1, XMMWORD PTR c3$[rbp]
|
|
00413 0f 58 c8 addps xmm1, xmm0
|
|
00416 0f 28 c1 movaps xmm0, xmm1
|
|
00419 0f 29 85 60 01
|
|
00 00 movaps XMMWORD PTR c3$[rbp], xmm0
|
|
|
|
; 51 : c3 = _mm_add_ps(c3, _mm_mul_ps(a2, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(2))));
|
|
|
|
00420 0f 28 85 90 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
00427 0f c6 85 90 01
|
|
00 00 aa shufps xmm0, XMMWORD PTR bcol$[rbp], 170 ; 000000aaH
|
|
0042f 0f 28 4d 70 movaps xmm1, XMMWORD PTR a2$[rbp]
|
|
00433 0f 59 c8 mulps xmm1, xmm0
|
|
00436 0f 28 c1 movaps xmm0, xmm1
|
|
00439 0f 28 8d 60 01
|
|
00 00 movaps xmm1, XMMWORD PTR c3$[rbp]
|
|
00440 0f 58 c8 addps xmm1, xmm0
|
|
00443 0f 28 c1 movaps xmm0, xmm1
|
|
00446 0f 29 85 60 01
|
|
00 00 movaps XMMWORD PTR c3$[rbp], xmm0
|
|
|
|
; 52 : c3 = _mm_add_ps(c3, _mm_mul_ps(a3, _mm_shuffle_ps(bcol, bcol, _FMA_SELECT(3))));
|
|
|
|
0044d 0f 28 85 90 01
|
|
00 00 movaps xmm0, XMMWORD PTR bcol$[rbp]
|
|
00454 0f c6 85 90 01
|
|
00 00 ff shufps xmm0, XMMWORD PTR bcol$[rbp], 255 ; 000000ffH
|
|
0045c 0f 28 8d a0 00
|
|
00 00 movaps xmm1, XMMWORD PTR a3$[rbp]
|
|
00463 0f 59 c8 mulps xmm1, xmm0
|
|
00466 0f 28 c1 movaps xmm0, xmm1
|
|
00469 0f 28 8d 60 01
|
|
00 00 movaps xmm1, XMMWORD PTR c3$[rbp]
|
|
00470 0f 58 c8 addps xmm1, xmm0
|
|
00473 0f 28 c1 movaps xmm0, xmm1
|
|
00476 0f 29 85 60 01
|
|
00 00 movaps XMMWORD PTR c3$[rbp], xmm0
|
|
|
|
; 53 :
|
|
; 54 : _mm_store_ps((float *)&ans->f32_x[0], c0);
|
|
|
|
0047d b8 10 00 00 00 mov eax, 16
|
|
00482 48 6b c0 00 imul rax, rax, 0
|
|
00486 48 8b 8d a0 02
|
|
00 00 mov rcx, QWORD PTR ans$[rbp]
|
|
0048d 48 03 c8 add rcx, rax
|
|
00490 48 8b c1 mov rax, rcx
|
|
00493 0f 28 85 d0 00
|
|
00 00 movaps xmm0, XMMWORD PTR c0$[rbp]
|
|
0049a 0f 11 00 movups XMMWORD PTR [rax], xmm0
|
|
|
|
; 55 : _mm_store_ps((float *)&ans->f32_x[1], c1);
|
|
|
|
0049d b8 10 00 00 00 mov eax, 16
|
|
004a2 48 6b c0 01 imul rax, rax, 1
|
|
004a6 48 8b 8d a0 02
|
|
00 00 mov rcx, QWORD PTR ans$[rbp]
|
|
004ad 48 03 c8 add rcx, rax
|
|
004b0 48 8b c1 mov rax, rcx
|
|
004b3 0f 28 85 00 01
|
|
00 00 movaps xmm0, XMMWORD PTR c1$[rbp]
|
|
004ba 0f 11 00 movups XMMWORD PTR [rax], xmm0
|
|
|
|
; 56 : _mm_store_ps((float *)&ans->f32_x[2], c2);
|
|
|
|
004bd b8 10 00 00 00 mov eax, 16
|
|
004c2 48 6b c0 02 imul rax, rax, 2
|
|
004c6 48 8b 8d a0 02
|
|
00 00 mov rcx, QWORD PTR ans$[rbp]
|
|
004cd 48 03 c8 add rcx, rax
|
|
004d0 48 8b c1 mov rax, rcx
|
|
004d3 0f 28 85 30 01
|
|
00 00 movaps xmm0, XMMWORD PTR c2$[rbp]
|
|
004da 0f 11 00 movups XMMWORD PTR [rax], xmm0
|
|
|
|
; 57 : _mm_store_ps((float *)&ans->f32_x[3], c3);
|
|
|
|
004dd b8 10 00 00 00 mov eax, 16
|
|
004e2 48 6b c0 03 imul rax, rax, 3
|
|
004e6 48 8b 8d a0 02
|
|
00 00 mov rcx, QWORD PTR ans$[rbp]
|
|
004ed 48 03 c8 add rcx, rax
|
|
004f0 48 8b c1 mov rax, rcx
|
|
004f3 0f 28 85 60 01
|
|
00 00 movaps xmm0, XMMWORD PTR c3$[rbp]
|
|
004fa 0f 11 00 movups XMMWORD PTR [rax], xmm0
|
|
|
|
; 58 : }
|
|
|
|
004fd 48 8d a5 78 02
|
|
00 00 lea rsp, QWORD PTR [rbp+632]
|
|
00504 5f pop rdi
|
|
00505 5d pop rbp
|
|
00506 c3 ret 0
|
|
float_kernel_fma_sse ENDP
|
|
_TEXT ENDS
|
|
END
|