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

845 lines
27 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
__F49407C4_sn_intrinsic@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
__9CC1CD6B_vector_dot@c DB 01H
msvcjmc ENDS
CONST SEGMENT
avxdot_indices DD 00H
DD 04H
DD 01H
DD 05H
DD 02H
DD 03H
DD 06H
DD 07H
CONST ENDS
PUBLIC dot_41_sse
PUBLIC dot_41_avx
PUBLIC dot_42_sse
PUBLIC dot_42_avx
PUBLIC __JustMyCode_Default
EXTRN _RTC_InitBase:PROC
EXTRN _RTC_Shutdown:PROC
EXTRN __CheckForDebuggerJustMyCode:PROC
; COMDAT pdata
pdata SEGMENT
$pdata$dot_41_sse DD imagerel $LN3
DD imagerel $LN3+281
DD imagerel $unwind$dot_41_sse
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$dot_41_avx DD imagerel $LN3
DD imagerel $LN3+215
DD imagerel $unwind$dot_41_avx
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$dot_42_sse DD imagerel $LN3
DD imagerel $LN3+678
DD imagerel $unwind$dot_42_sse
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$dot_42_avx DD imagerel $LN3
DD imagerel $LN3+446
DD imagerel $unwind$dot_42_avx
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$dot_42_avx DD 02d062801H
DD 011a231fH
DD 07013003aH
DD 0d0115012H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$dot_42_sse DD 025051d01H
DD 0118231dH
DD 07011001dH
DD 05010H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$dot_41_avx DD 02d062801H
DD 011a231fH
DD 070130032H
DD 0d0115012H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$dot_41_sse DD 025051d01H
DD 0118231dH
DD 07011001dH
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\vector_dot.c
; COMDAT dot_42_avx
_TEXT SEGMENT
temp$ = 32
vector_stream$ = 96
result$ = 160
transpose$ = 464
vector$ = 472
ans$ = 480
dot_42_avx PROC ; COMDAT
; 51 : {
$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 d0 01
00 00 sub rsp, 464 ; 000001d0H
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:__9CC1CD6B_vector_dot@c
0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00034 90 npad 1
; 52 : __m256 temp = transpose->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 d0 01
00 00 mov rcx, QWORD PTR transpose$[r13]
00045 c5 fc 10 04 01 vmovups ymm0, YMMWORD PTR [rcx+rax]
0004a c5 fc 11 45 20 vmovups YMMWORD PTR temp$[rbp], ymm0
; 53 : __m256 vector_stream = _mm256_set_m128(vector[1], vector[0]);
0004f b8 10 00 00 00 mov eax, 16
00054 48 6b c0 01 imul rax, rax, 1
00058 b9 10 00 00 00 mov ecx, 16
0005d 48 6b c9 00 imul rcx, rcx, 0
00061 49 8b 95 d8 01
00 00 mov rdx, QWORD PTR vector$[r13]
00068 c5 f8 10 04 0a vmovups xmm0, XMMWORD PTR [rdx+rcx]
0006d 49 8b 8d d8 01
00 00 mov rcx, QWORD PTR vector$[r13]
00074 c4 e3 7d 18 04
01 01 vinsertf128 ymm0, ymm0, XMMWORD PTR [rcx+rax], 1
0007b c5 fc 11 45 60 vmovups YMMWORD PTR vector_stream$[rbp], ymm0
; 54 :
; 55 : __m256 result = _mm256_dp_ps(temp, vector_stream, 0B11110001);
00080 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR temp$[rbp]
00085 c4 e3 7d 40 45
60 f1 vdpps ymm0, ymm0, YMMWORD PTR vector_stream$[rbp], 241 ; 000000f1H
0008c c5 fc 11 85 a0
00 00 00 vmovups YMMWORD PTR result$[rbp], ymm0
; 56 : temp = _mm256_permute2f128_ps(temp, temp, 0B00000001);
00094 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR temp$[rbp]
00099 c4 e3 7d 06 45
20 01 vperm2f128 ymm0, ymm0, YMMWORD PTR temp$[rbp], 1
000a0 c5 fc 11 45 20 vmovups YMMWORD PTR temp$[rbp], ymm0
; 57 : result = _mm256_blend_ps(result, _mm256_dp_ps(temp, vector_stream, 0B11110010), 0B00100010);
000a5 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR temp$[rbp]
000aa c4 e3 7d 40 45
60 f2 vdpps ymm0, ymm0, YMMWORD PTR vector_stream$[rbp], 242 ; 000000f2H
000b1 c5 fc 10 8d a0
00 00 00 vmovups ymm1, YMMWORD PTR result$[rbp]
000b9 c4 e3 75 0c c0
22 vblendps ymm0, ymm1, ymm0, 34 ; 00000022H
000bf c5 fc 11 85 a0
00 00 00 vmovups YMMWORD PTR result$[rbp], ymm0
; 58 :
; 59 : temp = transpose->f32_y[1];
000c7 b8 20 00 00 00 mov eax, 32 ; 00000020H
000cc 48 6b c0 01 imul rax, rax, 1
000d0 49 8b 8d d0 01
00 00 mov rcx, QWORD PTR transpose$[r13]
000d7 c5 fc 10 04 01 vmovups ymm0, YMMWORD PTR [rcx+rax]
000dc c5 fc 11 45 20 vmovups YMMWORD PTR temp$[rbp], ymm0
; 60 : result = _mm256_blend_ps(result, _mm256_dp_ps(temp, vector_stream, 0B11110100), 0B01000100);
000e1 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR temp$[rbp]
000e6 c4 e3 7d 40 45
60 f4 vdpps ymm0, ymm0, YMMWORD PTR vector_stream$[rbp], 244 ; 000000f4H
000ed c5 fc 10 8d a0
00 00 00 vmovups ymm1, YMMWORD PTR result$[rbp]
000f5 c4 e3 75 0c c0
44 vblendps ymm0, ymm1, ymm0, 68 ; 00000044H
000fb c5 fc 11 85 a0
00 00 00 vmovups YMMWORD PTR result$[rbp], ymm0
; 61 : temp = _mm256_permute2f128_ps(temp, temp, 0B00000001);
00103 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR temp$[rbp]
00108 c4 e3 7d 06 45
20 01 vperm2f128 ymm0, ymm0, YMMWORD PTR temp$[rbp], 1
0010f c5 fc 11 45 20 vmovups YMMWORD PTR temp$[rbp], ymm0
; 62 : result = _mm256_blend_ps(result, _mm256_dp_ps(temp, vector_stream, 0B11111000), 0B10001000);
00114 c5 fc 10 45 20 vmovups ymm0, YMMWORD PTR temp$[rbp]
00119 c4 e3 7d 40 45
60 f8 vdpps ymm0, ymm0, YMMWORD PTR vector_stream$[rbp], 248 ; 000000f8H
00120 c5 fc 10 8d a0
00 00 00 vmovups ymm1, YMMWORD PTR result$[rbp]
00128 c4 e3 75 0c c0
88 vblendps ymm0, ymm1, ymm0, 136 ; 00000088H
0012e c5 fc 11 85 a0
00 00 00 vmovups YMMWORD PTR result$[rbp], ymm0
; 63 :
; 64 : ans[0] = _mm256_castps256_ps128(result);
00136 c5 f8 10 85 a0
00 00 00 vmovups xmm0, XMMWORD PTR result$[rbp]
0013e b8 10 00 00 00 mov eax, 16
00143 48 6b c0 00 imul rax, rax, 0
00147 49 8b 8d e0 01
00 00 mov rcx, QWORD PTR ans$[r13]
0014e 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 65 : ans[1] = _mm256_extractf128_ps(result, 1);
00152 c5 fc 10 85 a0
00 00 00 vmovups ymm0, YMMWORD PTR result$[rbp]
0015a c4 e3 7d 19 c0
01 vextractf128 xmm0, ymm0, 1
00160 b8 10 00 00 00 mov eax, 16
00165 48 6b c0 01 imul rax, rax, 1
00169 49 8b 8d e0 01
00 00 mov rcx, QWORD PTR ans$[r13]
00170 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 66 : ans[1] = _mm_shuffle_ps(ans[1], ans[1], _MM_SHUFFLE(2, 3, 0, 1));
00174 b8 10 00 00 00 mov eax, 16
00179 48 6b c0 01 imul rax, rax, 1
0017d b9 10 00 00 00 mov ecx, 16
00182 48 6b c9 01 imul rcx, rcx, 1
00186 49 8b 95 e0 01
00 00 mov rdx, QWORD PTR ans$[r13]
0018d 4d 8b 85 e0 01
00 00 mov r8, QWORD PTR ans$[r13]
00194 0f 10 04 0a movups xmm0, XMMWORD PTR [rdx+rcx]
00198 41 0f c6 04 00
b1 shufps xmm0, XMMWORD PTR [r8+rax], 177 ; 000000b1H
0019e b8 10 00 00 00 mov eax, 16
001a3 48 6b c0 01 imul rax, rax, 1
001a7 49 8b 8d e0 01
00 00 mov rcx, QWORD PTR ans$[r13]
001ae 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 67 : }
001b2 49 8d a5 b0 01
00 00 lea rsp, QWORD PTR [r13+432]
001b9 5f pop rdi
001ba 5d pop rbp
001bb 41 5d pop r13
001bd c3 ret 0
dot_42_avx ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\sn-src\vector_dot.c
; COMDAT dot_42_sse
_TEXT SEGMENT
transpose$ = 224
vector$ = 232
ans$ = 240
dot_42_sse PROC ; COMDAT
; 31 : {
$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 e8 00
00 00 sub rsp, 232 ; 000000e8H
00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__9CC1CD6B_vector_dot@c
00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00029 90 npad 1
; 32 : ans[0] = _mm_dp_ps(transpose->f32_x[0], vector[0], 0B11110001);
0002a b8 10 00 00 00 mov eax, 16
0002f 48 6b c0 00 imul rax, rax, 0
00033 b9 10 00 00 00 mov ecx, 16
00038 48 6b c9 00 imul rcx, rcx, 0
0003c 48 8b 95 e0 00
00 00 mov rdx, QWORD PTR transpose$[rbp]
00043 4c 8b 85 e8 00
00 00 mov r8, QWORD PTR vector$[rbp]
0004a 0f 10 04 0a movups xmm0, XMMWORD PTR [rdx+rcx]
0004e 66 41 0f 3a 40
04 00 f1 dpps xmm0, XMMWORD PTR [r8+rax], 241 ; 000000f1H
00056 b8 10 00 00 00 mov eax, 16
0005b 48 6b c0 00 imul rax, rax, 0
0005f 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR ans$[rbp]
00066 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 33 : ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[1], vector[0], 0B11110001),
0006a b8 10 00 00 00 mov eax, 16
0006f 48 6b c0 00 imul rax, rax, 0
00073 b9 10 00 00 00 mov ecx, 16
00078 48 6b c9 01 imul rcx, rcx, 1
0007c 48 8b 95 e0 00
00 00 mov rdx, QWORD PTR transpose$[rbp]
00083 4c 8b 85 e8 00
00 00 mov r8, QWORD PTR vector$[rbp]
0008a 0f 10 04 0a movups xmm0, XMMWORD PTR [rdx+rcx]
0008e 66 41 0f 3a 40
04 00 f1 dpps xmm0, XMMWORD PTR [r8+rax], 241 ; 000000f1H
00096 48 8b 85 f0 00
00 00 mov rax, QWORD PTR ans$[rbp]
0009d 0f 10 08 movups xmm1, XMMWORD PTR [rax]
000a0 66 0f 3a 21 c8
10 insertps xmm1, xmm0, 16
000a6 0f 28 c1 movaps xmm0, xmm1
000a9 b8 10 00 00 00 mov eax, 16
000ae 48 6b c0 00 imul rax, rax, 0
000b2 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR ans$[rbp]
000b9 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 34 : SSE_INSERT_SIMPLE(1, 2));
; 35 : ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[2], vector[0], 0B11110001),
000bd b8 10 00 00 00 mov eax, 16
000c2 48 6b c0 00 imul rax, rax, 0
000c6 b9 10 00 00 00 mov ecx, 16
000cb 48 6b c9 02 imul rcx, rcx, 2
000cf 48 8b 95 e0 00
00 00 mov rdx, QWORD PTR transpose$[rbp]
000d6 4c 8b 85 e8 00
00 00 mov r8, QWORD PTR vector$[rbp]
000dd 0f 10 04 0a movups xmm0, XMMWORD PTR [rdx+rcx]
000e1 66 41 0f 3a 40
04 00 f1 dpps xmm0, XMMWORD PTR [r8+rax], 241 ; 000000f1H
000e9 48 8b 85 f0 00
00 00 mov rax, QWORD PTR ans$[rbp]
000f0 0f 10 08 movups xmm1, XMMWORD PTR [rax]
000f3 66 0f 3a 21 c8
20 insertps xmm1, xmm0, 32 ; 00000020H
000f9 0f 28 c1 movaps xmm0, xmm1
000fc b8 10 00 00 00 mov eax, 16
00101 48 6b c0 00 imul rax, rax, 0
00105 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR ans$[rbp]
0010c 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 36 : SSE_INSERT_SIMPLE(1, 3));
; 37 : ans[0] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[3], vector[0], 0B11110001),
00110 b8 10 00 00 00 mov eax, 16
00115 48 6b c0 00 imul rax, rax, 0
00119 b9 10 00 00 00 mov ecx, 16
0011e 48 6b c9 03 imul rcx, rcx, 3
00122 48 8b 95 e0 00
00 00 mov rdx, QWORD PTR transpose$[rbp]
00129 4c 8b 85 e8 00
00 00 mov r8, QWORD PTR vector$[rbp]
00130 0f 10 04 0a movups xmm0, XMMWORD PTR [rdx+rcx]
00134 66 41 0f 3a 40
04 00 f1 dpps xmm0, XMMWORD PTR [r8+rax], 241 ; 000000f1H
0013c 48 8b 85 f0 00
00 00 mov rax, QWORD PTR ans$[rbp]
00143 0f 10 08 movups xmm1, XMMWORD PTR [rax]
00146 66 0f 3a 21 c8
30 insertps xmm1, xmm0, 48 ; 00000030H
0014c 0f 28 c1 movaps xmm0, xmm1
0014f b8 10 00 00 00 mov eax, 16
00154 48 6b c0 00 imul rax, rax, 0
00158 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR ans$[rbp]
0015f 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 38 : SSE_INSERT_SIMPLE(1, 4));
; 39 :
; 40 : ans[1] = _mm_dp_ps(transpose->f32_x[0], vector[1], 0B11110001);
00163 b8 10 00 00 00 mov eax, 16
00168 48 6b c0 01 imul rax, rax, 1
0016c b9 10 00 00 00 mov ecx, 16
00171 48 6b c9 00 imul rcx, rcx, 0
00175 48 8b 95 e0 00
00 00 mov rdx, QWORD PTR transpose$[rbp]
0017c 4c 8b 85 e8 00
00 00 mov r8, QWORD PTR vector$[rbp]
00183 0f 10 04 0a movups xmm0, XMMWORD PTR [rdx+rcx]
00187 66 41 0f 3a 40
04 00 f1 dpps xmm0, XMMWORD PTR [r8+rax], 241 ; 000000f1H
0018f b8 10 00 00 00 mov eax, 16
00194 48 6b c0 01 imul rax, rax, 1
00198 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR ans$[rbp]
0019f 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 41 : ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[1], vector[1], 0B11110001),
001a3 b8 10 00 00 00 mov eax, 16
001a8 48 6b c0 01 imul rax, rax, 1
001ac b9 10 00 00 00 mov ecx, 16
001b1 48 6b c9 01 imul rcx, rcx, 1
001b5 48 8b 95 e0 00
00 00 mov rdx, QWORD PTR transpose$[rbp]
001bc 4c 8b 85 e8 00
00 00 mov r8, QWORD PTR vector$[rbp]
001c3 0f 10 04 0a movups xmm0, XMMWORD PTR [rdx+rcx]
001c7 66 41 0f 3a 40
04 00 f1 dpps xmm0, XMMWORD PTR [r8+rax], 241 ; 000000f1H
001cf 48 8b 85 f0 00
00 00 mov rax, QWORD PTR ans$[rbp]
001d6 0f 10 08 movups xmm1, XMMWORD PTR [rax]
001d9 66 0f 3a 21 c8
10 insertps xmm1, xmm0, 16
001df 0f 28 c1 movaps xmm0, xmm1
001e2 b8 10 00 00 00 mov eax, 16
001e7 48 6b c0 01 imul rax, rax, 1
001eb 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR ans$[rbp]
001f2 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 42 : SSE_INSERT_SIMPLE(1, 2));
; 43 : ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[2], vector[1], 0B11110001),
001f6 b8 10 00 00 00 mov eax, 16
001fb 48 6b c0 01 imul rax, rax, 1
001ff b9 10 00 00 00 mov ecx, 16
00204 48 6b c9 02 imul rcx, rcx, 2
00208 48 8b 95 e0 00
00 00 mov rdx, QWORD PTR transpose$[rbp]
0020f 4c 8b 85 e8 00
00 00 mov r8, QWORD PTR vector$[rbp]
00216 0f 10 04 0a movups xmm0, XMMWORD PTR [rdx+rcx]
0021a 66 41 0f 3a 40
04 00 f1 dpps xmm0, XMMWORD PTR [r8+rax], 241 ; 000000f1H
00222 48 8b 85 f0 00
00 00 mov rax, QWORD PTR ans$[rbp]
00229 0f 10 08 movups xmm1, XMMWORD PTR [rax]
0022c 66 0f 3a 21 c8
20 insertps xmm1, xmm0, 32 ; 00000020H
00232 0f 28 c1 movaps xmm0, xmm1
00235 b8 10 00 00 00 mov eax, 16
0023a 48 6b c0 01 imul rax, rax, 1
0023e 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR ans$[rbp]
00245 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 44 : SSE_INSERT_SIMPLE(1, 3));
; 45 : ans[1] = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[3], vector[1], 0B11110001),
00249 b8 10 00 00 00 mov eax, 16
0024e 48 6b c0 01 imul rax, rax, 1
00252 b9 10 00 00 00 mov ecx, 16
00257 48 6b c9 03 imul rcx, rcx, 3
0025b 48 8b 95 e0 00
00 00 mov rdx, QWORD PTR transpose$[rbp]
00262 4c 8b 85 e8 00
00 00 mov r8, QWORD PTR vector$[rbp]
00269 0f 10 04 0a movups xmm0, XMMWORD PTR [rdx+rcx]
0026d 66 41 0f 3a 40
04 00 f1 dpps xmm0, XMMWORD PTR [r8+rax], 241 ; 000000f1H
00275 48 8b 85 f0 00
00 00 mov rax, QWORD PTR ans$[rbp]
0027c 0f 10 08 movups xmm1, XMMWORD PTR [rax]
0027f 66 0f 3a 21 c8
30 insertps xmm1, xmm0, 48 ; 00000030H
00285 0f 28 c1 movaps xmm0, xmm1
00288 b8 10 00 00 00 mov eax, 16
0028d 48 6b c0 01 imul rax, rax, 1
00291 48 8b 8d f0 00
00 00 mov rcx, QWORD PTR ans$[rbp]
00298 0f 11 04 01 movups XMMWORD PTR [rcx+rax], xmm0
; 46 : SSE_INSERT_SIMPLE(1, 4));
; 47 : }
0029c 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
002a3 5f pop rdi
002a4 5d pop rbp
002a5 c3 ret 0
dot_42_sse ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\sn-src\vector_dot.c
; COMDAT dot_41_avx
_TEXT SEGMENT
_double$ = 32
tmp$ = 96
transpose$ = 400
vector$ = 408
ans$ = 416
dot_41_avx PROC ; COMDAT
; 20 : {
$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 90 01
00 00 sub rsp, 400 ; 00000190H
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:__9CC1CD6B_vector_dot@c
0002f e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00034 90 npad 1
; 21 : __m256 _double = _mm256_set_m128(vector[0], vector[0]);
00035 b8 10 00 00 00 mov eax, 16
0003a 48 6b c0 00 imul rax, rax, 0
0003e b9 10 00 00 00 mov ecx, 16
00043 48 6b c9 00 imul rcx, rcx, 0
00047 49 8b 95 98 01
00 00 mov rdx, QWORD PTR vector$[r13]
0004e c5 f8 10 04 0a vmovups xmm0, XMMWORD PTR [rdx+rcx]
00053 49 8b 8d 98 01
00 00 mov rcx, QWORD PTR vector$[r13]
0005a c4 e3 7d 18 04
01 01 vinsertf128 ymm0, ymm0, XMMWORD PTR [rcx+rax], 1
00061 c5 fc 11 45 20 vmovups YMMWORD PTR _double$[rbp], ymm0
; 22 : __m256 tmp = _mm256_dp_ps(transpose->f32_y[0], _double, 0B11110001);
00066 b8 20 00 00 00 mov eax, 32 ; 00000020H
0006b 48 6b c0 00 imul rax, rax, 0
0006f 49 8b 8d 90 01
00 00 mov rcx, QWORD PTR transpose$[r13]
00076 c5 fc 10 04 01 vmovups ymm0, YMMWORD PTR [rcx+rax]
0007b c4 e3 7d 40 45
20 f1 vdpps ymm0, ymm0, YMMWORD PTR _double$[rbp], 241 ; 000000f1H
00082 c5 fc 11 45 60 vmovups YMMWORD PTR tmp$[rbp], ymm0
; 23 : tmp = _mm256_blend_ps(tmp, _mm256_dp_ps(transpose->f32_y[0], _double, 0B11110010),
00087 b8 20 00 00 00 mov eax, 32 ; 00000020H
0008c 48 6b c0 00 imul rax, rax, 0
00090 49 8b 8d 90 01
00 00 mov rcx, QWORD PTR transpose$[r13]
00097 c5 fc 10 04 01 vmovups ymm0, YMMWORD PTR [rcx+rax]
0009c c4 e3 7d 40 45
20 f2 vdpps ymm0, ymm0, YMMWORD PTR _double$[rbp], 242 ; 000000f2H
000a3 c5 fc 10 4d 60 vmovups ymm1, YMMWORD PTR tmp$[rbp]
000a8 c4 e3 75 0c c0
22 vblendps ymm0, ymm1, ymm0, 34 ; 00000022H
000ae c5 fc 11 45 60 vmovups YMMWORD PTR tmp$[rbp], ymm0
; 24 : 0B00100010);
; 25 : *ans = _mm256_castps256_ps128(
000b3 c5 fe 6f 05 00
00 00 00 vmovdqu ymm0, YMMWORD PTR avxdot_indices
000bb c4 e2 7d 16 45
60 vpermps ymm0, ymm0, YMMWORD PTR tmp$[rbp]
000c1 49 8b 85 a0 01
00 00 mov rax, QWORD PTR ans$[r13]
000c8 0f 11 00 movups XMMWORD PTR [rax], xmm0
; 26 : _mm256_permutevar8x32_ps(tmp, _mm256_loadu_epi32(avxdot_indices)));
; 27 : }
000cb 49 8d a5 70 01
00 00 lea rsp, QWORD PTR [r13+368]
000d2 5f pop rdi
000d3 5d pop rbp
000d4 41 5d pop r13
000d6 c3 ret 0
dot_41_avx ENDP
_TEXT ENDS
; Function compile flags: /Odtp /RTCsu /ZI
; File D:\platform-dev\StgSharp.Native\sn-src\vector_dot.c
; COMDAT dot_41_sse
_TEXT SEGMENT
transpose$ = 224
vector$ = 232
ans$ = 240
dot_41_sse PROC ; COMDAT
; 8 : {
$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 e8 00
00 00 sub rsp, 232 ; 000000e8H
00018 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32]
0001d 48 8d 0d 00 00
00 00 lea rcx, OFFSET FLAT:__9CC1CD6B_vector_dot@c
00024 e8 00 00 00 00 call __CheckForDebuggerJustMyCode
00029 90 npad 1
; 9 : *ans = _mm_dp_ps(transpose->f32_x[0], *vector, 0B11110001);
0002a b8 10 00 00 00 mov eax, 16
0002f 48 6b c0 00 imul rax, rax, 0
00033 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR transpose$[rbp]
0003a 48 8b 95 e8 00
00 00 mov rdx, QWORD PTR vector$[rbp]
00041 0f 10 04 01 movups xmm0, XMMWORD PTR [rcx+rax]
00045 66 0f 3a 40 02
f1 dpps xmm0, XMMWORD PTR [rdx], 241 ; 000000f1H
0004b 48 8b 85 f0 00
00 00 mov rax, QWORD PTR ans$[rbp]
00052 0f 11 00 movups XMMWORD PTR [rax], xmm0
; 10 : *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[1], *vector, 0B11110001),
00055 b8 10 00 00 00 mov eax, 16
0005a 48 6b c0 01 imul rax, rax, 1
0005e 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR transpose$[rbp]
00065 48 8b 95 e8 00
00 00 mov rdx, QWORD PTR vector$[rbp]
0006c 0f 10 04 01 movups xmm0, XMMWORD PTR [rcx+rax]
00070 66 0f 3a 40 02
f1 dpps xmm0, XMMWORD PTR [rdx], 241 ; 000000f1H
00076 48 8b 85 f0 00
00 00 mov rax, QWORD PTR ans$[rbp]
0007d 0f 10 08 movups xmm1, XMMWORD PTR [rax]
00080 66 0f 3a 21 c8
00 insertps xmm1, xmm0, 0
00086 0f 28 c1 movaps xmm0, xmm1
00089 48 8b 85 f0 00
00 00 mov rax, QWORD PTR ans$[rbp]
00090 0f 11 00 movups XMMWORD PTR [rax], xmm0
; 11 : SSE_INSERT_SIMPLE(1, 1));
; 12 : *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[2], *vector, 0B11110001),
00093 b8 10 00 00 00 mov eax, 16
00098 48 6b c0 02 imul rax, rax, 2
0009c 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR transpose$[rbp]
000a3 48 8b 95 e8 00
00 00 mov rdx, QWORD PTR vector$[rbp]
000aa 0f 10 04 01 movups xmm0, XMMWORD PTR [rcx+rax]
000ae 66 0f 3a 40 02
f1 dpps xmm0, XMMWORD PTR [rdx], 241 ; 000000f1H
000b4 48 8b 85 f0 00
00 00 mov rax, QWORD PTR ans$[rbp]
000bb 0f 10 08 movups xmm1, XMMWORD PTR [rax]
000be 66 0f 3a 21 c8
20 insertps xmm1, xmm0, 32 ; 00000020H
000c4 0f 28 c1 movaps xmm0, xmm1
000c7 48 8b 85 f0 00
00 00 mov rax, QWORD PTR ans$[rbp]
000ce 0f 11 00 movups XMMWORD PTR [rax], xmm0
; 13 : SSE_INSERT_SIMPLE(1, 3));
; 14 : *ans = _mm_insert_ps(*ans, _mm_dp_ps(transpose->f32_x[3], *vector, 0B11110001),
000d1 b8 10 00 00 00 mov eax, 16
000d6 48 6b c0 03 imul rax, rax, 3
000da 48 8b 8d e0 00
00 00 mov rcx, QWORD PTR transpose$[rbp]
000e1 48 8b 95 e8 00
00 00 mov rdx, QWORD PTR vector$[rbp]
000e8 0f 10 04 01 movups xmm0, XMMWORD PTR [rcx+rax]
000ec 66 0f 3a 40 02
f1 dpps xmm0, XMMWORD PTR [rdx], 241 ; 000000f1H
000f2 48 8b 85 f0 00
00 00 mov rax, QWORD PTR ans$[rbp]
000f9 0f 10 08 movups xmm1, XMMWORD PTR [rax]
000fc 66 0f 3a 21 c8
30 insertps xmm1, xmm0, 48 ; 00000030H
00102 0f 28 c1 movaps xmm0, xmm1
00105 48 8b 85 f0 00
00 00 mov rax, QWORD PTR ans$[rbp]
0010c 0f 11 00 movups XMMWORD PTR [rax], xmm0
; 15 : SSE_INSERT_SIMPLE(1, 4));
; 16 : }
0010f 48 8d a5 c8 00
00 00 lea rsp, QWORD PTR [rbp+200]
00116 5f pop rdi
00117 5d pop rbp
00118 c3 ret 0
dot_41_sse ENDP
_TEXT ENDS
END