forked from MihaZupan/runtime-utils
-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[JitDiff X64] MihaZupan/runtime/jit-uint16mod-2 #901
Comments
Top method improvements-32 (-1.38 % of base) - System.Text.GB18030Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this ; Assembly listing for method System.Text.GB18030Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 13 single block inlinees; 31 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T36] ( 5, 19 ) ref -> r15 this class-hnd single-def <System.Text.GB18030Encoding>
; V01 arg1 [V01,T73] ( 3, 3 ) long -> r13 single-def
; V02 arg2 [V02,T74] ( 3, 3 ) int -> r12 single-def
; V03 arg3 [V03,T72] ( 4, 3.50) long -> r14 single-def
; V04 arg4 [V04,T75] ( 3, 3 ) int -> [rbp-0x2C] single-def
; V05 arg5 [V05,T08] ( 10, 136.50) ref -> rbx class-hnd single-def <System.Text.EncoderNLS>
; V06 loc0 [V06,T21] ( 12, 36 ) ushort -> [rbp-0x30]
; V07 loc1 [V07,T01] (180,2714.50) ref -> r13 class-hnd exact single-def <System.Text.EncodingByteBuffer>
;* V08 loc2 [V08 ] ( 0, 0 ) ushort -> zero-ref
; V09 loc3 [V09,T25] ( 12, 24 ) int -> registers
; V10 loc4 [V10,T76] ( 2, 4 ) ubyte -> rdi
; V11 loc5 [V11,T77] ( 2, 4 ) ubyte -> rcx
; V12 loc6 [V12,T78] ( 2, 4 ) ubyte -> rdx
-; V13 loc7 [V13,T06] ( 16, 176 ) ushort -> rcx
+; V13 loc7 [V13,T07] ( 13, 152 ) ushort -> rax
; V14 loc8 [V14,T38] ( 2, 16 ) ubyte -> rdi
-; V15 loc9 [V15,T39] ( 2, 16 ) ubyte -> rsi
-; V16 loc10 [V16,T40] ( 2, 16 ) ubyte -> rax
+; V15 loc9 [V15,T39] ( 2, 16 ) ubyte -> rcx
+; V16 loc10 [V16,T40] ( 2, 16 ) ubyte -> rdx
; V17 OutArgs [V17 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V18 tmp1 [V18,T57] ( 3, 6 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "NewObj constructor temp" <System.Text.EncodingByteBuffer>
; V19 tmp2 [V19,T15] ( 14, 82 ) ushort -> rsi "Inline stloc first use temp"
; V20 tmp3 [V20,T58] ( 3, 6 ) long -> rdi "Inline stloc first use temp"
; V21 tmp4 [V21,T37] ( 4, 16 ) byref -> r12 "Inlining Arg"
; V22 tmp5 [V22,T52] ( 4, 8 ) ushort -> rsi "Inline stloc first use temp"
; V23 tmp6 [V23,T79] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
;* V24 tmp7 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp8 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V26 tmp9 [V26,T59] ( 3, 6 ) long -> rax "Inline stloc first use temp"
;* V27 tmp10 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V28 tmp11 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V29 tmp12 [V29,T60] ( 3, 6 ) long -> rax "Inline stloc first use temp"
;* V30 tmp13 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V31 tmp14 [V31,T61] ( 3, 6 ) long -> rax "Inline stloc first use temp"
; V32 tmp15 [V32,T62] ( 3, 6 ) ubyte -> rax "Inline return value spill temp"
; V33 tmp16 [V33,T63] ( 3, 6 ) long -> rax "Inline stloc first use temp"
;* V34 tmp17 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp18 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V36 tmp19 [V36,T26] ( 3, 24 ) long -> rdi "Inline stloc first use temp"
;* V37 tmp20 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V38 tmp21 [V38,T56] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V39 tmp22 [V39,T27] ( 3, 24 ) ubyte -> rdi "Inline stloc first use temp"
; V40 tmp23 [V40,T41] ( 2, 16 ) ubyte -> rax "Inline return value spill temp"
;* V41 tmp24 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V42 tmp25 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V43 tmp26 [V43,T28] ( 3, 24 ) long -> rdx "Inline stloc first use temp"
+; V43 tmp26 [V43,T28] ( 3, 24 ) long -> rsi "Inline stloc first use temp"
;* V44 tmp27 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V45 tmp28 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V46 tmp29 [V46,T29] ( 3, 24 ) long -> rcx "Inline stloc first use temp"
+; V46 tmp29 [V46,T29] ( 3, 24 ) long -> rax "Inline stloc first use temp"
;* V47 tmp30 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V48 tmp31 [V48,T30] ( 3, 24 ) long -> rax "Inline stloc first use temp"
; V49 tmp32 [V49,T31] ( 3, 24 ) ubyte -> rax "Inline return value spill temp"
; V50 tmp33 [V50,T32] ( 3, 24 ) long -> rax "Inline stloc first use temp"
;* V51 tmp34 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V52 tmp35 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V53 tmp36 [V53,T10] ( 2, 128 ) ubyte -> rax "Inline return value spill temp"
;* V54 tmp37 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V55 tmp38 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V56 tmp39 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V57 tmp40 [V57,T12] ( 3, 96 ) long -> rdi "Inline stloc first use temp"
;* V58 tmp41 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V59 tmp42 [V59,T09] ( 3, 128 ) ubyte -> rax "Inline return value spill temp"
; V60 tmp43 [V60,T13] ( 3, 96 ) long -> rdi "Inline stloc first use temp"
;* V61 tmp44 [V61 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V62 tmp45 [V62,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V63 tmp46 [V63,T00] ( 3,3072 ) ref -> rdi "argument with side effect"
; V64 tmp47 [V64,T42] ( 3, 12 ) ref -> rdi "argument with side effect"
; V65 tmp48 [V65,T04] ( 3, 192 ) ref -> rdi "argument with side effect"
; V66 tmp49 [V66,T05] ( 3, 192 ) ref -> rdi "argument with side effect"
; V67 tmp50 [V67,T16] ( 3, 48 ) ref -> rdi "argument with side effect"
; V68 tmp51 [V68,T17] ( 3, 48 ) ref -> rdi "argument with side effect"
; V69 tmp52 [V69,T18] ( 3, 48 ) ref -> rdi "argument with side effect"
; V70 tmp53 [V70,T19] ( 3, 48 ) ref -> rdi "argument with side effect"
; V71 tmp54 [V71,T20] ( 3, 48 ) ref -> rdi "argument with side effect"
; V72 tmp55 [V72,T43] ( 3, 12 ) ref -> rdi "argument with side effect"
; V73 tmp56 [V73,T44] ( 3, 12 ) ref -> rdi "argument with side effect"
; V74 tmp57 [V74,T45] ( 3, 12 ) ref -> rdi "argument with side effect"
; V75 tmp58 [V75,T46] ( 3, 12 ) ref -> rdi "argument with side effect"
; V76 tmp59 [V76,T47] ( 3, 12 ) ref -> rdi "argument with side effect"
; V77 tmp60 [V77,T48] ( 3, 12 ) ref -> rdi "argument with side effect"
; V78 cse0 [V78,T64] ( 3, 6 ) int -> rax "CSE #04: conservative"
; V79 cse1 [V79,T65] ( 3, 6 ) int -> rax "CSE #05: conservative"
; V80 cse2 [V80,T66] ( 3, 6 ) int -> rax "CSE #06: conservative"
; V81 cse3 [V81,T02] ( 16, 296 ) long -> registers multi-def "CSE #07: aggressive"
; V82 cse4 [V82,T03] ( 4, 192 ) long -> rdi "CSE #33: aggressive"
-; V83 cse5 [V83,T07] ( 15, 156 ) long -> rdi multi-def "CSE #02: aggressive"
+; V83 cse5 [V83,T06] ( 15, 156 ) long -> rdi multi-def "CSE #02: aggressive"
; V84 cse6 [V84,T14] ( 3, 96 ) long -> rdi "CSE #34: moderate"
-; V85 cse7 [V85,T22] ( 4, 32 ) long -> rcx "CSE #27: moderate"
+; V85 cse7 [V85,T22] ( 4, 32 ) long -> rax "CSE #27: moderate"
; V86 cse8 [V86,T23] ( 4, 32 ) long -> rax "CSE #29: moderate"
; V87 cse9 [V87,T24] ( 4, 32 ) long -> rax "CSE #31: moderate"
; V88 cse10 [V88,T33] ( 3, 24 ) long -> rdi "CSE #28: moderate"
; V89 cse11 [V89,T34] ( 3, 24 ) long -> rdi "CSE #30: moderate"
; V90 cse12 [V90,T35] ( 3, 24 ) long -> rdi "CSE #32: moderate"
; V91 cse13 [V91,T53] ( 4, 8 ) long -> rax "CSE #15: conservative"
; V92 cse14 [V92,T54] ( 4, 8 ) long -> rax "CSE #17: conservative"
; V93 cse15 [V93,T55] ( 4, 8 ) long -> rax "CSE #19: conservative"
; V94 cse16 [V94,T67] ( 3, 6 ) long -> rdi "CSE #01: conservative"
; V95 cse17 [V95,T68] ( 3, 6 ) long -> rdi "CSE #16: conservative"
; V96 cse18 [V96,T69] ( 3, 6 ) long -> rdi "CSE #18: conservative"
; V97 cse19 [V97,T70] ( 3, 6 ) long -> rdi "CSE #20: conservative"
; V98 cse20 [V98,T71] ( 3, 6 ) long -> rdi "CSE #21: conservative"
; V99 rat0 [V99,T49] ( 3, 12 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
; V100 rat1 [V100,T50] ( 3, 12 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
; V101 rat2 [V101,T51] ( 3, 12 ) int -> rdx "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 24
G_M32130_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 24
lea rbp, [rsp+0x40]
mov dword ptr [rbp-0x2C], r8d
mov r15, rdi
mov r13, rsi
mov r12d, edx
mov r14, rcx
mov rbx, r9
;; size=38 bbWeight=1 PerfScore 9.00
G_M32130_IG02:
xor ecx, ecx
test rbx, rbx
mov dword ptr [rbp-0x30], ecx
je SHORT G_M32130_IG04
;; size=10 bbWeight=1 PerfScore 2.50
G_M32130_IG03:
movzx rcx, word ptr [rbx+0x34]
mov dword ptr [rbp-0x30], ecx
;; size=7 bbWeight=0.50 PerfScore 1.50
G_M32130_IG04:
mov rdi, 0xD1FFAB1E ; System.Text.EncodingByteBuffer
call CORINFO_HELP_NEWSFAST
mov gword ptr [rbp-0x38], rax
mov dword ptr [rsp], r12d
mov rdi, rax
mov rsi, r15
mov rdx, rbx
mov rcx, r14
mov r8d, dword ptr [rbp-0x2C]
mov r9, r13
mov r10, 0xD1FFAB1E ; code for System.Text.EncodingByteBuffer:.ctor(System.Text.EncodingNLS,System.Text.EncoderNLS,ulong,int,ulong,int):this
call [r10]System.Text.EncodingByteBuffer:.ctor(System.Text.EncodingNLS,System.Text.EncoderNLS,ulong,int,ulong,int):this
mov r13, gword ptr [rbp-0x38]
jmp SHORT G_M32130_IG09
;; size=61 bbWeight=1 PerfScore 11.75
G_M32130_IG05:
cmp byte ptr [r13+0x7E], 0
jne SHORT G_M32130_IG06
mov rdi, qword ptr [r13+0x38]
cmp rdi, qword ptr [r13+0x40]
jbe SHORT G_M32130_IG07
add rdi, -2
mov qword ptr [r13+0x38], rdi
jmp SHORT G_M32130_IG07
;; size=27 bbWeight=32 PerfScore 424.00
G_M32130_IG06:
mov rdi, gword ptr [r13+0x18]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
;; size=14 bbWeight=32 PerfScore 288.00
G_M32130_IG07:
mov rdx, qword ptr [r13+0x20]
cmp rdx, qword ptr [r13+0x28]
sete dl
movzx rdx, dl
mov rsi, gword ptr [r13+0x10]
mov rdi, gword ptr [r13+0x08]
mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
xor eax, eax
;; size=38 bbWeight=32 PerfScore 536.00
G_M32130_IG08:
test eax, eax
mov dword ptr [rbp-0x30], r12d
je G_M32130_IG23
;; size=12 bbWeight=64 PerfScore 144.00
G_M32130_IG09:
mov rdi, gword ptr [r13+0x18]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x48]
call [rax]System.Text.EncoderFallbackBuffer:get_Remaining():int:this
test eax, eax
jg SHORT G_M32130_IG11
;; size=17 bbWeight=512 PerfScore 5248.00
G_M32130_IG10:
mov rdi, qword ptr [r13+0x38]
cmp rdi, qword ptr [r13+0x48]
jae G_M32130_IG23
;; size=14 bbWeight=128 PerfScore 768.00
G_M32130_IG11:
lea r12, bword ptr [r13+0x58]
mov rdi, gword ptr [r12+0x08]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x30]System.Text.EncoderFallbackBuffer:GetNextChar():ushort:this
mov esi, eax
test esi, esi
setne dil
mov byte ptr [r12+0x26], dil
test esi, esi
jne SHORT G_M32130_IG12
xor edi, edi
mov dword ptr [r12+0x20], edi
;; size=43 bbWeight=2 PerfScore 29.00
G_M32130_IG12:
test esi, esi
jne SHORT G_M32130_IG13
mov rdi, qword ptr [r13+0x38]
cmp rdi, qword ptr [r13+0x48]
jae SHORT G_M32130_IG13
lea rsi, [rdi+0x02]
mov qword ptr [r13+0x38], rsi
movzx rsi, word ptr [rdi]
;; size=25 bbWeight=2 PerfScore 21.50
G_M32130_IG13:
mov r12d, dword ptr [rbp-0x30]
test r12d, r12d
jne G_M32130_IG53
;; size=13 bbWeight=2 PerfScore 4.50
G_M32130_IG14:
cmp esi, 127
jle G_M32130_IG48
lea edi, [rsi-0xD800]
cmp edi, 0x3FF
jbe G_M32130_IG47
lea edi, [rsi-0xDC00]
cmp edi, 0x3FF
jbe G_M32130_IG46
mov rdi, qword ptr [r15+0x70]
mov eax, esi
- movzx rcx, word ptr [rdi+2*rax]
+ movzx rax, word ptr [rdi+2*rax]
mov edi, esi
shr edi, 3
movsxd rdi, edi
- mov rax, qword ptr [r15+0x90]
- movzx rdi, byte ptr [rdi+rax]
+ mov rcx, qword ptr [r15+0x90]
+ movzx rdi, byte ptr [rdi+rcx]
test edi, edi
je SHORT G_M32130_IG15
and esi, 7
bt edi, esi
jb G_M32130_IG28
;; size=91 bbWeight=8 PerfScore 136.00
G_M32130_IG15:
mov rdi, qword ptr [r13+0x20]
test rdi, rdi
je SHORT G_M32130_IG17
- mov rax, qword ptr [r13+0x30]
- dec rax
- cmp rdi, rax
+ mov rcx, qword ptr [r13+0x30]
+ dec rcx
+ cmp rdi, rcx
jae SHORT G_M32130_IG20
;; size=21 bbWeight=64 PerfScore 432.00
G_M32130_IG16:
- lea rax, [rdi+0x01]
- mov qword ptr [r13+0x20], rax
- mov eax, ecx
- sar eax, 8
- mov byte ptr [rdi], al
+ lea rcx, [rdi+0x01]
+ mov qword ptr [r13+0x20], rcx
+ mov ecx, eax
+ sar ecx, 8
+ mov byte ptr [rdi], cl
;; size=15 bbWeight=32 PerfScore 104.00
G_M32130_IG17:
inc dword ptr [r13+0x50]
mov rdi, qword ptr [r13+0x20]
test rdi, rdi
je SHORT G_M32130_IG19
;; size=13 bbWeight=64 PerfScore 400.00
G_M32130_IG18:
cmp rdi, qword ptr [r13+0x30]
jae G_M32130_IG05
- lea rax, [rdi+0x01]
- mov qword ptr [r13+0x20], rax
- mov byte ptr [rdi], cl
+ lea rcx, [rdi+0x01]
+ mov qword ptr [r13+0x20], rcx
+ mov byte ptr [rdi], al
;; size=20 bbWeight=32 PerfScore 208.00
G_M32130_IG19:
inc dword ptr [r13+0x50]
mov eax, 1
jmp G_M32130_IG08
;; size=14 bbWeight=32 PerfScore 168.00
G_M32130_IG20:
cmp byte ptr [r13+0x7E], 0
jne SHORT G_M32130_IG27
;; size=7 bbWeight=64 PerfScore 256.00
G_M32130_IG21:
mov rdi, qword ptr [r13+0x38]
cmp rdi, qword ptr [r13+0x40]
jbe SHORT G_M32130_IG22
add rdi, -2
mov qword ptr [r13+0x38], rdi
;; size=18 bbWeight=32 PerfScore 232.00
G_M32130_IG22:
mov rdx, qword ptr [r13+0x20]
cmp rdx, qword ptr [r13+0x28]
sete dl
movzx rdx, dl
mov rsi, gword ptr [r13+0x10]
mov rdi, gword ptr [r13+0x08]
mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
mov dword ptr [rbp-0x30], r12d
;; size=40 bbWeight=64 PerfScore 1120.00
G_M32130_IG23:
test rbx, rbx
je SHORT G_M32130_IG25
;; size=5 bbWeight=128 PerfScore 160.00
G_M32130_IG24:
cmp byte ptr [rbx+0x36], 0
je G_M32130_IG79
;; size=10 bbWeight=2 PerfScore 8.00
G_M32130_IG25:
mov r12d, dword ptr [rbp-0x30]
test r12d, r12d
jle G_M32130_IG78
lea rdi, bword ptr [r13+0x58]
lea rdx, bword ptr [r13+0x38]
mov esi, r12d
mov rax, 0xD1FFAB1E ; code for System.Text.EncoderFallbackBufferHelper:InternalFallback(ushort,byref):ubyte:this
call [rax]System.Text.EncoderFallbackBufferHelper:InternalFallback(ushort,byref):ubyte:this
;; size=36 bbWeight=4 PerfScore 27.00
G_M32130_IG26:
xor r12d, r12d
mov dword ptr [rbp-0x30], r12d
jmp G_M32130_IG09
;; size=12 bbWeight=8 PerfScore 26.00
G_M32130_IG27:
mov rdi, gword ptr [r13+0x18]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
jmp SHORT G_M32130_IG22
;; size=16 bbWeight=32 PerfScore 352.00
G_M32130_IG28:
- mov eax, 0xD1FFAB1E
- mov edx, ecx
- imul rax, rdx
- shr rax, 35
- imul eax, eax, 10
- mov edx, ecx
- sub edx, eax
+ imul edx, eax, 0xD1FFAB1E
+ imul rdx, rdx, 10
+ shr rdx, 32
add edx, 48
movzx rdi, dl
- mov eax, 0xD1FFAB1E
- mov ecx, ecx
- imul rax, rcx
- shr rax, 35
- movzx rcx, ax
- mov rdx, 0xD1FFAB1E
- mov eax, ecx
- mul rdx:rax, rdx
- imul eax, edx, 126
- mov edx, ecx
- sub edx, eax
- add edx, 129
- movzx rsi, dl
- mov rdx, 0xD1FFAB1E
- mov eax, ecx
- mul rdx:rax, rdx
- movzx rcx, dx
- mov eax, 0xD1FFAB1E
- mov edx, ecx
+ mov edx, 0xD1FFAB1E
+ mov eax, eax
imul rax, rdx
shr rax, 35
- imul eax, eax, 10
- mov edx, ecx
- sub edx, eax
+ movzx rax, ax
+ imul edx, eax, 0xD1FFAB1E
+ imul rdx, rdx, 126
+ shr rdx, 32
+ add edx, 129
+ movzx rcx, dl
+ mov rdx, 0xD1FFAB1E
+ mul rdx:rax, rdx
+ movzx rax, dx
+ imul edx, eax, 0xD1FFAB1E
+ imul rdx, rdx, 10
+ shr rdx, 32
add edx, 48
- movzx rax, dl
- mov edx, 0xD1FFAB1E
- imul rcx, rdx
- shr rcx, 35
- movzx rcx, cx
- mov rdx, qword ptr [r13+0x20]
- test rdx, rdx
+ movzx rdx, dl
+ mov esi, 0xD1FFAB1E
+ imul rax, rsi
+ shr rax, 35
+ movzx rax, ax
+ mov rsi, qword ptr [r13+0x20]
+ test rsi, rsi
je SHORT G_M32130_IG29
mov r8, qword ptr [r13+0x30]
add r8, -3
- cmp rdx, r8
+ cmp rsi, r8
jae G_M32130_IG43
- lea r8, [rdx+0x01]
+ lea r8, [rsi+0x01]
mov qword ptr [r13+0x20], r8
- add ecx, 129
- mov byte ptr [rdx], cl
- ;; size=183 bbWeight=8 PerfScore 304.00
+ add eax, 129
+ mov byte ptr [rsi], al
+ ;; size=155 bbWeight=8 PerfScore 274.00
G_M32130_IG29:
inc dword ptr [r13+0x50]
- mov rcx, qword ptr [r13+0x20]
- test rcx, rcx
+ mov rax, qword ptr [r13+0x20]
+ test rax, rax
je SHORT G_M32130_IG30
- mov rdx, qword ptr [r13+0x30]
- add rdx, -2
- cmp rcx, rdx
+ mov rsi, qword ptr [r13+0x30]
+ add rsi, -2
+ cmp rax, rsi
jae G_M32130_IG40
- lea rdx, [rcx+0x01]
- mov qword ptr [r13+0x20], rdx
- mov byte ptr [rcx], al
+ lea rsi, [rax+0x01]
+ mov qword ptr [r13+0x20], rsi
+ mov byte ptr [rax], dl
;; size=40 bbWeight=8 PerfScore 98.00
G_M32130_IG30:
inc dword ptr [r13+0x50]
mov rax, qword ptr [r13+0x20]
test rax, rax
je SHORT G_M32130_IG31
- mov rcx, qword ptr [r13+0x30]
- dec rcx
- cmp rax, rcx
+ mov rdx, qword ptr [r13+0x30]
+ dec rdx
+ cmp rax, rdx
jae G_M32130_IG37
- lea rcx, [rax+0x01]
- mov qword ptr [r13+0x20], rcx
- mov byte ptr [rax], sil
- ;; size=40 bbWeight=8 PerfScore 98.00
+ lea rdx, [rax+0x01]
+ mov qword ptr [r13+0x20], rdx
+ mov byte ptr [rax], cl
+ ;; size=39 bbWeight=8 PerfScore 98.00
G_M32130_IG31:
inc dword ptr [r13+0x50]
mov rax, qword ptr [r13+0x20]
test rax, rax
je SHORT G_M32130_IG32
cmp rax, qword ptr [r13+0x30]
jae SHORT G_M32130_IG33
lea rcx, [rax+0x01]
mov qword ptr [r13+0x20], rcx
mov byte ptr [rax], dil
;; size=30 bbWeight=8 PerfScore 102.00
G_M32130_IG32:
inc dword ptr [r13+0x50]
mov eax, 1
jmp SHORT G_M32130_IG36
;; size=11 bbWeight=8 PerfScore 42.00
G_M32130_IG33:
cmp byte ptr [r13+0x7E], 0
jne SHORT G_M32130_IG34
mov rdi, qword ptr [r13+0x38]
cmp rdi, qword ptr [r13+0x40]
jbe SHORT G_M32130_IG35
add rdi, -2
mov qword ptr [r13+0x38], rdi
jmp SHORT G_M32130_IG35
;; size=27 bbWeight=8 PerfScore 106.00
G_M32130_IG34:
mov rdi, gword ptr [r13+0x18]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
;; size=14 bbWeight=8 PerfScore 72.00
G_M32130_IG35:
mov rdx, qword ptr [r13+0x20]
cmp rdx, qword ptr [r13+0x28]
sete dl
movzx rdx, dl
mov rsi, gword ptr [r13+0x10]
mov rdi, gword ptr [r13+0x08]
mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
xor eax, eax
;; size=38 bbWeight=8 PerfScore 134.00
G_M32130_IG36:
test eax, eax
mov dword ptr [rbp-0x30], r12d
jne G_M32130_IG09
jmp G_M32130_IG23
;; size=17 bbWeight=8 PerfScore 34.00
G_M32130_IG37:
cmp byte ptr [r13+0x7E], 0
jne SHORT G_M32130_IG38
mov rdi, qword ptr [r13+0x38]
cmp rdi, qword ptr [r13+0x40]
jbe SHORT G_M32130_IG39
add rdi, -2
mov qword ptr [r13+0x38], rdi
jmp SHORT G_M32130_IG39
;; size=27 bbWeight=8 PerfScore 106.00
G_M32130_IG38:
mov rdi, gword ptr [r13+0x18]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
;; size=14 bbWeight=8 PerfScore 72.00
G_M32130_IG39:
mov rdx, qword ptr [r13+0x20]
cmp rdx, qword ptr [r13+0x28]
sete dl
movzx rdx, dl
mov rsi, gword ptr [r13+0x10]
mov rdi, gword ptr [r13+0x08]
mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
mov dword ptr [rbp-0x30], r12d
jmp G_M32130_IG23
;; size=45 bbWeight=8 PerfScore 156.00
G_M32130_IG40:
cmp byte ptr [r13+0x7E], 0
jne SHORT G_M32130_IG41
mov rdi, qword ptr [r13+0x38]
cmp rdi, qword ptr [r13+0x40]
jbe SHORT G_M32130_IG42
add rdi, -2
mov qword ptr [r13+0x38], rdi
jmp SHORT G_M32130_IG42
;; size=27 bbWeight=8 PerfScore 106.00
G_M32130_IG41:
mov rdi, gword ptr [r13+0x18]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
;; size=14 bbWeight=8 PerfScore 72.00
G_M32130_IG42:
mov rdx, qword ptr [r13+0x20]
cmp rdx, qword ptr [r13+0x28]
sete dl
movzx rdx, dl
mov rsi, gword ptr [r13+0x10]
mov rdi, gword ptr [r13+0x08]
mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
mov dword ptr [rbp-0x30], r12d
jmp G_M32130_IG23
;; size=45 bbWeight=8 PerfScore 156.00
G_M32130_IG43:
cmp byte ptr [r13+0x7E], 0
jne SHORT G_M32130_IG44
mov rdi, qword ptr [r13+0x38]
cmp rdi, qword ptr [r13+0x40]
jbe SHORT G_M32130_IG45
add rdi, -2
mov qword ptr [r13+0x38], rdi
jmp SHORT G_M32130_IG45
;; size=27 bbWeight=8 PerfScore 106.00
G_M32130_IG44:
mov rdi, gword ptr [r13+0x18]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
;; size=14 bbWeight=8 PerfScore 72.00
G_M32130_IG45:
mov rdx, qword ptr [r13+0x20]
cmp rdx, qword ptr [r13+0x28]
sete dl
movzx rdx, dl
mov rsi, gword ptr [r13+0x10]
mov rdi, gword ptr [r13+0x08]
mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
mov dword ptr [rbp-0x30], r12d
jmp G_M32130_IG23
;; size=45 bbWeight=8 PerfScore 156.00
G_M32130_IG46:
lea rdi, bword ptr [r13+0x58]
lea rdx, bword ptr [r13+0x38]
mov rax, 0xD1FFAB1E ; code for System.Text.EncoderFallbackBufferHelper:InternalFallback(ushort,byref):ubyte:this
call [rax]System.Text.EncoderFallbackBufferHelper:InternalFallback(ushort,byref):ubyte:this
test eax, eax
mov dword ptr [rbp-0x30], r12d
jne G_M32130_IG09
jmp G_M32130_IG23
;; size=37 bbWeight=8 PerfScore 68.00
G_M32130_IG47:
mov r12d, esi
mov dword ptr [rbp-0x30], r12d
jmp G_M32130_IG09
;; size=12 bbWeight=8 PerfScore 26.00
G_M32130_IG48:
- mov rdx, qword ptr [r13+0x20]
- test rdx, rdx
+ mov rdi, qword ptr [r13+0x20]
+ test rdi, rdi
je SHORT G_M32130_IG49
- cmp rdx, qword ptr [r13+0x30]
+ cmp rdi, qword ptr [r13+0x30]
jae SHORT G_M32130_IG50
- mov rdi, rdx
lea rax, [rdi+0x01]
mov qword ptr [r13+0x20], rax
mov byte ptr [rdi], sil
- ;; size=29 bbWeight=8 PerfScore 80.00
+ ;; size=26 bbWeight=8 PerfScore 78.00
G_M32130_IG49:
inc dword ptr [r13+0x50]
mov dword ptr [rbp-0x30], r12d
jmp G_M32130_IG09
;; size=13 bbWeight=8 PerfScore 48.00
G_M32130_IG50:
cmp byte ptr [r13+0x7E], 0
jne SHORT G_M32130_IG51
mov rdi, qword ptr [r13+0x38]
cmp rdi, qword ptr [r13+0x40]
jbe SHORT G_M32130_IG52
add rdi, -2
mov qword ptr [r13+0x38], rdi
jmp SHORT G_M32130_IG52
;; size=27 bbWeight=8 PerfScore 106.00
G_M32130_IG51:
mov rdi, gword ptr [r13+0x18]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
;; size=14 bbWeight=8 PerfScore 72.00
G_M32130_IG52:
mov rdx, qword ptr [r13+0x20]
cmp rdx, qword ptr [r13+0x28]
sete dl
movzx rdx, dl
mov rsi, gword ptr [r13+0x10]
mov rdi, gword ptr [r13+0x08]
mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
mov dword ptr [rbp-0x30], r12d
jmp G_M32130_IG23
;; size=45 bbWeight=8 PerfScore 156.00
G_M32130_IG53:
lea eax, [rsi-0xDC00]
cmp eax, 0x3FF
ja G_M32130_IG75
add r12d, -0xD800
shl r12d, 10
lea edi, [r12+rsi-0xDC00]
mov edx, 0xD1FFAB1E
mov eax, edx
imul edx:eax, edi
mov eax, edx
shr eax, 31
sar edx, 2
add eax, edx
lea edx, [rax+4*rax]
add edx, edx
sub edi, edx
add edi, 48
movzx rdi, dil
mov ecx, eax
mov edx, 0xD1FFAB1E
mov eax, edx
imul edx:eax, ecx
add edx, ecx
mov eax, edx
shr eax, 31
sar edx, 6
add eax, edx
imul edx, eax, 126
sub ecx, edx
add ecx, 129
movzx rcx, cl
mov esi, eax
mov edx, 0xD1FFAB1E
mov eax, edx
imul edx:eax, esi
mov eax, edx
shr eax, 31
sar edx, 2
add eax, edx
lea edx, [rax+4*rax]
add edx, edx
sub esi, edx
add esi, 48
movzx rdx, sil
mov esi, eax
xor r12d, r12d
mov rax, qword ptr [r13+0x20]
test rax, rax
je SHORT G_M32130_IG54
mov r8, qword ptr [r13+0x30]
add r8, -3
cmp rax, r8
jae G_M32130_IG68
lea r8, [rax+0x01]
mov qword ptr [r13+0x20], r8
add esi, 144
mov byte ptr [rax], sil
;; size=189 bbWeight=2 PerfScore 70.00
G_M32130_IG54:
inc dword ptr [r13+0x50]
mov rax, qword ptr [r13+0x20]
test rax, rax
je SHORT G_M32130_IG55
mov rsi, qword ptr [r13+0x30]
add rsi, -2
cmp rax, rsi
jae G_M32130_IG65
lea rsi, [rax+0x01]
mov qword ptr [r13+0x20], rsi
mov byte ptr [rax], dl
;; size=40 bbWeight=2 PerfScore 24.50
G_M32130_IG55:
inc dword ptr [r13+0x50]
mov rax, qword ptr [r13+0x20]
test rax, rax
je SHORT G_M32130_IG56
mov rdx, qword ptr [r13+0x30]
dec rdx
cmp rax, rdx
jae G_M32130_IG62
lea rdx, [rax+0x01]
mov qword ptr [r13+0x20], rdx
mov byte ptr [rax], cl
;; size=39 bbWeight=2 PerfScore 24.50
G_M32130_IG56:
inc dword ptr [r13+0x50]
mov rax, qword ptr [r13+0x20]
test rax, rax
je SHORT G_M32130_IG57
cmp rax, qword ptr [r13+0x30]
jae SHORT G_M32130_IG58
lea rcx, [rax+0x01]
mov qword ptr [r13+0x20], rcx
mov byte ptr [rax], dil
;; size=30 bbWeight=2 PerfScore 25.50
G_M32130_IG57:
inc dword ptr [r13+0x50]
mov eax, 1
jmp SHORT G_M32130_IG61
;; size=11 bbWeight=2 PerfScore 10.50
G_M32130_IG58:
cmp byte ptr [r13+0x7E], 0
jne SHORT G_M32130_IG59
mov rdi, qword ptr [r13+0x38]
cmp rdi, qword ptr [r13+0x40]
jbe SHORT G_M32130_IG60
add rdi, -2
mov qword ptr [r13+0x38], rdi
jmp SHORT G_M32130_IG60
;; size=27 bbWeight=2 PerfScore 26.50
G_M32130_IG59:
mov rdi, gword ptr [r13+0x18]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
;; size=14 bbWeight=2 PerfScore 18.00
G_M32130_IG60:
mov rdx, qword ptr [r13+0x20]
cmp rdx, qword ptr [r13+0x28]
sete dl
movzx rdx, dl
mov rsi, gword ptr [r13+0x10]
mov rdi, gword ptr [r13+0x08]
mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
xor eax, eax
;; size=38 bbWeight=2 PerfScore 33.50
G_M32130_IG61:
test eax, eax
jne G_M32130_IG26
jmp G_M32130_IG71
;; size=13 bbWeight=2 PerfScore 6.50
G_M32130_IG62:
cmp byte ptr [r13+0x7E], 0
jne SHORT G_M32130_IG63
mov rdi, qword ptr [r13+0x38]
cmp rdi, qword ptr [r13+0x40]
jbe SHORT G_M32130_IG64
add rdi, -2
mov qword ptr [r13+0x38], rdi
jmp SHORT G_M32130_IG64
;; size=27 bbWeight=2 PerfScore 26.50
G_M32130_IG63:
mov rdi, gword ptr [r13+0x18]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
;; size=14 bbWeight=2 PerfScore 18.00
G_M32130_IG64:
mov rdx, qword ptr [r13+0x20]
cmp rdx, qword ptr [r13+0x28]
sete dl
movzx rdx, dl
mov rsi, gword ptr [r13+0x10]
mov rdi, gword ptr [r13+0x08]
mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
jmp G_M32130_IG71
;; size=41 bbWeight=2 PerfScore 37.00
G_M32130_IG65:
cmp byte ptr [r13+0x7E], 0
jne SHORT G_M32130_IG66
mov rdi, qword ptr [r13+0x38]
cmp rdi, qword ptr [r13+0x40]
jbe SHORT G_M32130_IG67
add rdi, -2
mov qword ptr [r13+0x38], rdi
jmp SHORT G_M32130_IG67
;; size=27 bbWeight=2 PerfScore 26.50
G_M32130_IG66:
mov rdi, gword ptr [r13+0x18]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
;; size=14 bbWeight=2 PerfScore 18.00
G_M32130_IG67:
mov rdx, qword ptr [r13+0x20]
cmp rdx, qword ptr [r13+0x28]
sete dl
movzx rdx, dl
mov rsi, gword ptr [r13+0x10]
mov rdi, gword ptr [r13+0x08]
mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
jmp SHORT G_M32130_IG71
;; size=38 bbWeight=2 PerfScore 37.00
G_M32130_IG68:
cmp byte ptr [r13+0x7E], 0
jne SHORT G_M32130_IG69
mov rdi, qword ptr [r13+0x38]
cmp rdi, qword ptr [r13+0x40]
jbe SHORT G_M32130_IG70
add rdi, -2
mov qword ptr [r13+0x38], rdi
jmp SHORT G_M32130_IG70
;; size=27 bbWeight=2 PerfScore 26.50
G_M32130_IG69:
mov rdi, gword ptr [r13+0x18]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
;; size=14 bbWeight=2 PerfScore 18.00
G_M32130_IG70:
mov rdx, qword ptr [r13+0x20]
cmp rdx, qword ptr [r13+0x28]
sete dl
movzx rdx, dl
mov rsi, gword ptr [r13+0x10]
mov rdi, gword ptr [r13+0x08]
mov rax, 0xD1FFAB1E ; code for System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
cmp dword ptr [rdi], edi
call [rax]System.Text.EncodingNLS:ThrowBytesOverflow(System.Text.EncoderNLS,ubyte):this
;; size=36 bbWeight=2 PerfScore 33.00
G_M32130_IG71:
cmp byte ptr [r13+0x7E], 0
jne SHORT G_M32130_IG74
mov rdi, qword ptr [r13+0x38]
cmp rdi, qword ptr [r13+0x40]
ja SHORT G_M32130_IG73
;; size=17 bbWeight=2 PerfScore 20.00
G_M32130_IG72:
mov dword ptr [rbp-0x30], r12d
jmp G_M32130_IG23
;; size=9 bbWeight=1 PerfScore 3.00
G_M32130_IG73:
add rdi, -2
mov qword ptr [r13+0x38], rdi
mov dword ptr [rbp-0x30], r12d
jmp G_M32130_IG23
;; size=17 bbWeight=2 PerfScore 8.50
G_M32130_IG74:
mov rdi, gword ptr [r13+0x18]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
mov dword ptr [rbp-0x30], r12d
jmp G_M32130_IG23
;; size=23 bbWeight=2 PerfScore 24.00
G_M32130_IG75:
cmp byte ptr [r13+0x7E], 0
jne SHORT G_M32130_IG76
mov rdi, qword ptr [r13+0x38]
cmp rdi, qword ptr [r13+0x40]
jbe SHORT G_M32130_IG77
add rdi, -2
mov qword ptr [r13+0x38], rdi
jmp SHORT G_M32130_IG77
;; size=27 bbWeight=2 PerfScore 26.50
G_M32130_IG76:
mov rdi, gword ptr [r13+0x18]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x40]
call [rax+0x38]System.Text.EncoderFallbackBuffer:MovePrevious():ubyte:this
;; size=14 bbWeight=2 PerfScore 18.00
G_M32130_IG77:
lea rdi, bword ptr [r13+0x58]
lea rdx, bword ptr [r13+0x38]
mov esi, r12d
mov rax, 0xD1FFAB1E ; code for System.Text.EncoderFallbackBufferHelper:InternalFallback(ushort,byref):ubyte:this
call [rax]System.Text.EncoderFallbackBufferHelper:InternalFallback(ushort,byref):ubyte:this
test eax, eax
jne G_M32130_IG26
xor r12d, r12d
mov dword ptr [rbp-0x30], r12d
jmp G_M32130_IG23
;; size=43 bbWeight=2 PerfScore 18.00
G_M32130_IG78:
test rbx, rbx
mov dword ptr [rbp-0x30], r12d
je SHORT G_M32130_IG81
;; size=9 bbWeight=1 PerfScore 2.25
G_M32130_IG79:
test r14, r14
je SHORT G_M32130_IG80
mov r12d, dword ptr [rbp-0x30]
mov word ptr [rbx+0x34], r12w
;; size=14 bbWeight=0.50 PerfScore 1.62
G_M32130_IG80:
mov rdi, r13
mov rax, 0xD1FFAB1E ; code for System.Text.EncodingByteBuffer:get_CharsUsed():int:this
call [rax]System.Text.EncodingByteBuffer:get_CharsUsed():int:this
mov dword ptr [rbx+0x30], eax
;; size=18 bbWeight=0.50 PerfScore 2.25
G_M32130_IG81:
mov eax, dword ptr [r13+0x50]
;; size=4 bbWeight=1 PerfScore 2.00
G_M32130_IG82:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.25
-; Total bytes of code 2321, prolog size 19, PerfScore 14275.12, instruction count 639, allocated bytes for code 2321 (MethodHash=d6c5827d) for method System.Text.GB18030Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
+; Total bytes of code 2289, prolog size 19, PerfScore 14243.12, instruction count 626, allocated bytes for code 2289 (MethodHash=d6c5827d) for method System.Text.GB18030Encoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
; ============================================================ -4 (-0.80 % of base) - System.Diagnostics.Tracing.EventSource:SendManifest(ubyte[]):this ; Assembly listing for method System.Diagnostics.Tracing.EventSource:SendManifest(ubyte[]):this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rbp based frame
; fully interruptible
; No PGO data
; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T10] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Diagnostics.Tracing.EventSource>
-; V01 arg1 [V01,T11] ( 3, 3 ) ref -> rsi class-hnd single-def <ubyte[]>
-; V02 loc0 [V02,T14] ( 3, 1.50) long -> r14
+; V00 this [V00,T09] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Diagnostics.Tracing.EventSource>
+; V01 arg1 [V01,T10] ( 3, 3 ) ref -> rsi class-hnd single-def <ubyte[]>
+; V02 loc0 [V02,T13] ( 3, 1.50) long -> r14
; V03 loc1 [V03 ] ( 2, 1 ) ref -> [rbp-0x50] must-init pinned class-hnd ptr <ubyte[]>
; V04 loc2 [V04 ] ( 2, 16.50) struct (16) [rbp-0x60] do-not-enreg[XS] addr-exposed ld-addr-op <System.Diagnostics.Tracing.EventDescriptor>
; V05 loc3 [V05 ] ( 12, 59.50) struct ( 8) [rbp-0x68] do-not-enreg[XSF] addr-exposed ld-addr-op ptr <System.Diagnostics.Tracing.ManifestEnvelope>
; V06 loc4 [V06,T00] ( 8, 96.50) int -> r15
;* V07 loc5 [V07 ] ( 0, 0 ) long -> zero-ref ptr
-; V08 loc6 [V08,T03] ( 10, 92.50) int -> r14
+; V08 loc6 [V08,T02] ( 10, 92.50) int -> r14
; V09 OutArgs [V09 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V10 tmp1 [V10 ] ( 9, 82.50) struct (32) [rbp-0x48] do-not-enreg[XSF] addr-exposed ld-addr-op ptr unsafe-buffer "stackallocLocal"
;* V11 tmp2 [V11 ] ( 0, 0 ) long -> zero-ref "dup spill"
-; V12 tmp3 [V12,T05] ( 3, 48 ) int -> rdi "Inline return value spill temp"
+; V12 tmp3 [V12,T04] ( 3, 48 ) int -> rdi "Inline return value spill temp"
;* V13 tmp4 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V14 tmp5 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Diagnostics.Tracing.EventSource+OverrideEventProvider>
-; V15 tmp6 [V15,T06] ( 3, 36 ) int -> r13 "Inline stloc first use temp"
-; V16 tmp7 [V16,T13] ( 2, 2 ) long -> r14 "Cast away GC"
+; V15 tmp6 [V15,T05] ( 3, 36 ) int -> r13 "Inline stloc first use temp"
+; V16 tmp7 [V16,T12] ( 2, 2 ) long -> r14 "Cast away GC"
; V17 tmp8 [V17,T01] ( 3, 96 ) ref -> rdi "argument with side effect"
; V18 GsCookie [V18 ] ( 1, 1 ) long -> [rbp-0x28] do-not-enreg[X] addr-exposed "GSSecurityCookie"
-; V19 tmp10 [V19,T04] ( 5, 50 ) ref -> rbx single-def "shadowVar"
-; V20 tmp11 [V20,T12] ( 5, 3.50) ref -> rsi single-def "shadowVar"
-; V21 cse0 [V21,T09] ( 3, 12 ) long -> rax "CSE #02: aggressive"
-; V22 cse1 [V22,T15] ( 3, 1.50) int -> r15 "CSE #01: moderate"
-; V23 rat0 [V23,T07] ( 2, 16 ) long -> rax "TLS field access"
-; V24 rat1 [V24,T08] ( 2, 16 ) long -> rax "TLS access"
-; V25 rat2 [V25,T02] ( 3, 96 ) int -> rdi "ReplaceWithLclVar is creating a new local variable"
+; V19 tmp10 [V19,T03] ( 5, 50 ) ref -> rbx single-def "shadowVar"
+; V20 tmp11 [V20,T11] ( 5, 3.50) ref -> rsi single-def "shadowVar"
+; V21 cse0 [V21,T08] ( 3, 12 ) long -> rax "CSE #02: aggressive"
+; V22 cse1 [V22,T14] ( 3, 1.50) int -> r15 "CSE #01: moderate"
+; V23 rat0 [V23,T06] ( 2, 16 ) long -> rax "TLS field access"
+; V24 rat1 [V24,T07] ( 2, 16 ) long -> rax "TLS access"
;
; Lcl frame size = 96
G_M11069_IG01:
push rbp
push r15
push r14
push r13
push rbx
sub rsp, 96
lea rbp, [rsp+0x80]
xor eax, eax
mov qword ptr [rbp-0x50], rax
mov qword ptr [rbp-0x28], 0xD1FFAB1E
;; size=34 bbWeight=1 PerfScore 8.00
G_M11069_IG02:
mov rbx, rdi
test rsi, rsi
je G_M11069_IG18
;; size=12 bbWeight=1 PerfScore 1.50
G_M11069_IG03:
mov gword ptr [rbp-0x50], rsi
mov r15d, dword ptr [rsi+0x08]
test r15d, r15d
je SHORT G_M11069_IG04
add rsi, 16
mov r14, rsi
jmp SHORT G_M11069_IG05
;; size=22 bbWeight=0.50 PerfScore 3.38
G_M11069_IG04:
xor r14d, r14d
;; size=3 bbWeight=0.50 PerfScore 0.12
G_M11069_IG05:
mov dword ptr [rsp], 0xFFFE
mov rdi, 0xD1FFAB1E
mov qword ptr [rsp+0x08], rdi
lea rdi, [rbp-0x60]
mov esi, 0xFFFE
mov edx, 1
xor ecx, ecx
xor r8d, r8d
mov r9d, 254
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventDescriptor:.ctor(int,ubyte,ubyte,ubyte,ubyte,int,long):this
call [rax]System.Diagnostics.Tracing.EventDescriptor:.ctor(int,ubyte,ubyte,ubyte,ubyte,int,long):this
xor eax, eax
mov qword ptr [rbp-0x68], rax
mov byte ptr [rbp-0x68], 1
mov byte ptr [rbp-0x67], 1
mov byte ptr [rbp-0x66], 0
mov byte ptr [rbp-0x65], 91
mov word ptr [rbp-0x62], 0
lea rax, [rbp-0x68]
mov qword ptr [rbp-0x48], rax
mov dword ptr [rbp-0x40], 8
xor eax, eax
mov dword ptr [rbp-0x3C], eax
mov qword ptr [rbp-0x38], r14
;; size=111 bbWeight=0.50 PerfScore 9.12
G_M11069_IG06:
mov dword ptr [rbp-0x2C], eax
mov r14d, 0xF700
jmp SHORT G_M11069_IG08
;; size=11 bbWeight=0.50 PerfScore 1.62
G_M11069_IG07:
shr r14d, 1
;; size=3 bbWeight=4 PerfScore 2.00
G_M11069_IG08:
lea eax, [r15+r14-0x01]
cdq
idiv edx:eax, r14d
mov word ptr [rbp-0x64], ax
test r15d, r15d
jle G_M11069_IG17
;; size=22 bbWeight=4 PerfScore 115.00
G_M11069_IG09:
cmp r15d, r14d
jg SHORT G_M11069_IG11
;; size=5 bbWeight=32 PerfScore 40.00
G_M11069_IG10:
mov edi, r15d
jmp SHORT G_M11069_IG12
;; size=5 bbWeight=8 PerfScore 18.00
G_M11069_IG11:
mov edi, r14d
;; size=3 bbWeight=8 PerfScore 2.00
G_M11069_IG12:
mov dword ptr [rbp-0x30], edi
cmp gword ptr [rbx+0x30], 0
je SHORT G_M11069_IG14
;; size=10 bbWeight=32 PerfScore 160.00
G_M11069_IG13:
mov rdi, gword ptr [rbx+0x30]
mov rdi, gword ptr [rdi+0x08]
lea rsi, [rbp-0x48]
mov qword ptr [rsp], rsi
lea rsi, [rbp-0x60]
xor edx, edx
xor ecx, ecx
xor r8d, r8d
mov r9d, 2
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x48]
call [rax]System.Diagnostics.Tracing.EventProviderImpl:EventWriteTransfer(byref,long,ulong,ulong,int,ulong):int:this
mov r13d, eax
test r13d, r13d
jne SHORT G_M11069_IG21
;; size=50 bbWeight=16 PerfScore 248.00
G_M11069_IG14:
sub r15d, r14d
mov edi, r14d
add rdi, qword ptr [rbp-0x38]
mov qword ptr [rbp-0x38], rdi
movzx rdi, word ptr [rbp-0x62]
inc edi
mov word ptr [rbp-0x62], di
movzx rdi, word ptr [rbp-0x62]
- mov eax, 0xD1FFAB1E
- mov ecx, edi
- imul rax, rcx
- shr rax, 34
- lea eax, [rax+4*rax]
- sub edi, eax
+ imul edi, edi, 0xD1FFAB1E
+ lea rdi, [rdi+4*rdi]
+ shr rdi, 32
+ test edi, edi
jne SHORT G_M11069_IG16
- ;; size=50 bbWeight=16 PerfScore 184.00
+ ;; size=46 bbWeight=16 PerfScore 176.00
G_M11069_IG15:
mov edi, 15
mov rax, 0xD1FFAB1E ; code for System.Threading.Thread:Sleep(int)
call [rax]System.Threading.Thread:Sleep(int)
;; size=17 bbWeight=8 PerfScore 28.00
G_M11069_IG16:
test r15d, r15d
jg G_M11069_IG09
;; size=9 bbWeight=16 PerfScore 20.00
G_M11069_IG17:
xor rax, rax
mov gword ptr [rbp-0x50], rax
;; size=6 bbWeight=0.50 PerfScore 0.62
G_M11069_IG18:
cmp qword ptr [rbp-0x28], 0xD1FFAB1E
je SHORT G_M11069_IG19
call CORINFO_HELP_FAIL_FAST
;; size=15 bbWeight=1 PerfScore 4.00
G_M11069_IG19:
nop
;; size=1 bbWeight=1 PerfScore 0.25
G_M11069_IG20:
add rsp, 96
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
;; size=13 bbWeight=1 PerfScore 3.75
G_M11069_IG21:
mov rdi, 0xD1FFAB1E
mov rax, 0xD1FFAB1E ; function address
call rax
add rax, 56
mov dword ptr [rax+0x10], r13d
cmp dword ptr [rax+0x10], 2
jne SHORT G_M11069_IG22
cmp word ptr [rbp-0x62], 0
jne SHORT G_M11069_IG22
cmp r14d, 256
jg G_M11069_IG07
;; size=56 bbWeight=4 PerfScore 52.00
G_M11069_IG22:
test byte ptr [rbx+0x94], 1
je SHORT G_M11069_IG17
mov rdi, rbx
mov rsi, 0xD1FFAB1E ; 'SendManifest'
xor rdx, rdx
mov rax, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.EventSource:ThrowEventSourceException(System.String,System.Exception):this
call [rax]System.Diagnostics.Tracing.EventSource:ThrowEventSourceException(System.String,System.Exception):this
jmp G_M11069_IG17
;; size=41 bbWeight=0.50 PerfScore 5.00
-; Total bytes of code 499, prolog size 34, PerfScore 906.38, instruction count 130, allocated bytes for code 499 (MethodHash=a56ad4c2) for method System.Diagnostics.Tracing.EventSource:SendManifest(ubyte[]):this (FullOpts)
+; Total bytes of code 495, prolog size 34, PerfScore 898.38, instruction count 128, allocated bytes for code 495 (MethodHash=a56ad4c2) for method System.Diagnostics.Tracing.EventSource:SendManifest(ubyte[]):this (FullOpts)
; ============================================================ Larger list of diffs: https://gist.github.com/MihuBot/9acdafff8a07039d9c602efce0862d1f |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 11 minutes 44 seconds.
https://github.com/MihaZupan/runtime/tree/jit-uint16mod-2
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: