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] [hez2010] [Testing] stackalloc arrays contain gcrefs #849
Comments
Top method regressions144 (25.99 % of base) - System.Xml.XmlDictionaryReader:ReadContentAsBytes(ubyte,int):ubyte[]:this ; Assembly listing for method System.Xml.XmlDictionaryReader:ReadContentAsBytes(ubyte,int):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; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T05] ( 7, 34 ) ref -> rbx this class-hnd single-def <System.Xml.XmlDictionaryReader>
; V01 arg1 [V01,T08] ( 3, 18 ) ubyte -> r15 single-def
-; V02 arg2 [V02,T14] ( 4, 10 ) int -> r14 single-def
-; V03 loc0 [V03,T09] ( 5, 18 ) ref -> r13 class-hnd exact single-def <ubyte[][]>
-; V04 loc1 [V04,T04] ( 9, 47 ) ref -> [rbp-0x50] class-hnd <ubyte[]>
-; V05 loc2 [V05,T11] ( 4, 17 ) int -> r12
-; V06 loc3 [V06,T10] ( 4, 18 ) int -> [rbp-0x2C]
-; V07 loc4 [V07,T06] ( 6, 27 ) int -> [rbp-0x30]
-; V08 loc5 [V08,T13] ( 6, 15 ) int -> rbx
-; V09 loc6 [V09,T00] ( 11,112 ) int -> [rbp-0x34]
+; V02 arg2 [V02,T13] ( 4, 10 ) int -> r14 single-def
+;* V03 loc0 [V03 ] ( 0, 0 ) byref -> zero-ref class-hnd exact <ubyte[][]>
+; V04 loc1 [V04,T04] ( 9, 47 ) ref -> [rbp-0x158] class-hnd <ubyte[]>
+; V05 loc2 [V05,T10] ( 4, 17 ) int -> r13
+; V06 loc3 [V06,T09] ( 4, 18 ) int -> [rbp-0x2C]
+; V07 loc4 [V07,T07] ( 6, 27 ) int -> [rbp-0x30]
+; V08 loc5 [V08,T12] ( 6, 15 ) int -> rbx
+; V09 loc6 [V09,T00] ( 11,112 ) int -> r12
; V10 loc7 [V10,T03] ( 4, 48 ) int -> rax
-;* V11 loc8 [V11,T17] ( 0, 0 ) int -> zero-ref
+;* V11 loc8 [V11,T16] ( 0, 0 ) int -> zero-ref
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V13 tmp1 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewArr temp" <ubyte[][]>
+;* V13 tmp1 [V13 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewArr temp" <ubyte[][]>
;* V14 tmp2 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewArr temp" <ubyte[]>
-; V15 tmp3 [V15,T01] ( 4, 64 ) int -> rdi "impSpillLclRefs"
+; V15 tmp3 [V15,T01] ( 4, 64 ) int -> r12 "impSpillLclRefs"
;* V16 tmp4 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewArr temp" <ubyte[]>
-; V17 tmp5 [V17 ] ( 2, 0 ) int -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+; V17 tmp5 [V17 ] ( 2, 0 ) int -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
;* V18 tmp6 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
;* V19 tmp7 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V20 tmp8 [V20,T18] ( 2, 0 ) ref -> rsi "argument with side effect"
-; V21 tmp9 [V21,T19] ( 2, 0 ) ref -> r15 "argument with side effect"
-; V22 tmp10 [V22,T20] ( 2, 0 ) ref -> rdx "argument with side effect"
-; V23 tmp11 [V23,T12] ( 2, 16 ) ref -> rdi "argument with side effect"
-; V24 cse0 [V24,T15] ( 3, 12 ) ref -> r8 "CSE #08: moderate"
-; V25 cse1 [V25,T02] ( 6, 56 ) int -> [rbp-0x44] spill-single-def "CSE #01: aggressive"
-; V26 cse2 [V26,T16] ( 5, 8 ) int -> r12 "CSE #09: moderate"
-; V27 rat0 [V27,T07] ( 7, 25 ) long -> r15 "Widened IV V11"
+; V20 tmp8 [V20 ] ( 12, 41 ) struct (272) [rbp-0x148] do-not-enreg[XSF] addr-exposed "stack allocated array temp"
+; V21 tmp9 [V21,T17] ( 2, 0 ) ref -> rsi "argument with side effect"
+; V22 tmp10 [V22,T18] ( 2, 0 ) ref -> r15 "argument with side effect"
+; V23 tmp11 [V23,T19] ( 2, 0 ) ref -> rdx "argument with side effect"
+; V24 tmp12 [V24,T11] ( 2, 16 ) ref -> rdi "argument with side effect"
+; V25 cse0 [V25,T02] ( 6, 56 ) int -> [rbp-0x14C] spill-single-def "CSE #01: aggressive"
+; V26 cse1 [V26,T14] ( 5, 8 ) int -> r13 "CSE #08: moderate"
+; V27 cse2 [V27,T15] ( 2, 8 ) int -> rdi "CSE #06: moderate"
+; V28 rat0 [V28,T06] ( 9, 33 ) long -> r15 "Widened IV V11"
;
-; Lcl frame size = 40
+; Lcl frame size = 312
G_M31414_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 40
- lea rbp, [rsp+0x50]
+ sub rsp, 312
+ lea rbp, [rsp+0x160]
mov rbx, rdi
mov r15d, esi
mov r14d, edx
- ;; size=28 bbWeight=1 PerfScore 7.50
+ ;; size=34 bbWeight=1 PerfScore 7.50
G_M31414_IG02:
- mov rdi, 0xD1FFAB1E ; ubyte[][]
- mov esi, 32
- call CORINFO_HELP_NEWARR_1_OBJ
- mov r13, rax
- mov r12d, 384
+ vxorps ymm0, ymm0, ymm0
+ vmovdqu32 zmmword ptr [rbp-0x148], zmm0
+ vmovdqu32 zmmword ptr [rbp-0x108], zmm0
+ vmovdqu32 zmmword ptr [rbp-0xC8], zmm0
+ vmovdqu32 zmmword ptr [rbp-0x88], zmm0
+ vmovdqu xmmword ptr [rbp-0x48], xmm0
+ mov rsi, 0xD1FFAB1E ; ubyte[][]
+ mov qword ptr [rbp-0x148], rsi
+ mov dword ptr [rbp-0x140], 32
+ mov r13d, 384
+ xor r12d, r12d
xor eax, eax
- mov dword ptr [rbp-0x2C], eax
- xor ecx, ecx
- mov dword ptr [rbp-0x30], ecx
+ mov dword ptr [rbp-0x30], eax
jmp SHORT G_M31414_IG04
- ;; size=41 bbWeight=1 PerfScore 6.50
+ ;; size=92 bbWeight=1 PerfScore 11.33
G_M31414_IG03:
- add r12d, r12d
- mov dword ptr [rbp-0x30], ecx
- ;; size=6 bbWeight=4 PerfScore 5.00
+ add r13d, r13d
+ mov dword ptr [rbp-0x30], eax
+ mov r12d, dword ptr [rbp-0x2C]
+ ;; size=10 bbWeight=4 PerfScore 9.00
G_M31414_IG04:
- movsxd rsi, r12d
+ movsxd rsi, r13d
mov rdi, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
- mov edi, dword ptr [rbp-0x2C]
- lea esi, [rdi+0x01]
- mov dword ptr [rbp-0x2C], esi
- cmp edi, 32
- jae G_M31414_IG18
- lea rdi, bword ptr [r13+8*rdi+0x10]
- mov gword ptr [rbp-0x50], rax
+ lea edi, [r12+0x01]
+ mov dword ptr [rbp-0x2C], edi
+ cmp r12d, dword ptr [rbp-0x140]
+ jae G_M31414_IG17
+ lea rdi, bword ptr [rbp-0x148]
+ mov esi, r12d
+ lea rdi, bword ptr [rdi+8*rsi+0x10]
+ mov gword ptr [rbp-0x158], rax
mov rsi, rax
- call CORINFO_HELP_ASSIGN_REF
- xor eax, eax
- mov r8, gword ptr [rbp-0x50]
- mov r9d, dword ptr [r8+0x08]
- mov dword ptr [rbp-0x44], r9d
- test r9d, r9d
+ call CORINFO_HELP_CHECKED_ASSIGN_REF
+ xor r12d, r12d
+ mov rax, gword ptr [rbp-0x158]
+ mov r8d, dword ptr [rax+0x08]
+ mov dword ptr [rbp-0x14C], r8d
+ test r8d, r8d
jg SHORT G_M31414_IG07
- ;; size=72 bbWeight=8 PerfScore 120.00
+ ;; size=95 bbWeight=8 PerfScore 124.00
G_M31414_IG05:
- mov dword ptr [rbp-0x34], eax
- jmp SHORT G_M31414_IG12
- ;; size=5 bbWeight=4 PerfScore 12.00
+ jmp SHORT G_M31414_IG11
+ ;; size=2 bbWeight=4 PerfScore 8.00
G_M31414_IG06:
- mov eax, esi
- mov r9d, edi
- ;; size=5 bbWeight=8 PerfScore 4.00
+ mov r8d, esi
+ ;; size=3 bbWeight=8 PerfScore 2.00
G_M31414_IG07:
test r15b, r15b
jne SHORT G_M31414_IG09
;; size=5 bbWeight=16 PerfScore 20.00
G_M31414_IG08:
- mov ecx, r9d
- sub ecx, eax
+ mov ecx, r8d
+ sub ecx, r12d
mov rdi, rbx
- mov gword ptr [rbp-0x50], r8
- mov rsi, r8
- mov dword ptr [rbp-0x34], eax
- mov edx, eax
- mov r10, qword ptr [rbx]
- mov r10, qword ptr [r10+0x88]
- call [r10+0x30]System.Xml.XmlReader:ReadContentAsBinHex(ubyte[],int,int):int:this
+ mov gword ptr [rbp-0x158], rax
+ mov rsi, rax
+ mov edx, r12d
+ mov r9, qword ptr [rbx]
+ mov r9, qword ptr [r9+0x88]
+ call [r9+0x30]System.Xml.XmlReader:ReadContentAsBinHex(ubyte[],int,int):int:this
jmp SHORT G_M31414_IG10
- ;; size=36 bbWeight=8 PerfScore 98.00
+ ;; size=38 bbWeight=8 PerfScore 90.00
G_M31414_IG09:
- mov ecx, r9d
- sub ecx, eax
+ mov ecx, r8d
+ sub ecx, r12d
mov rdi, rbx
- mov gword ptr [rbp-0x50], r8
- mov rsi, r8
- mov dword ptr [rbp-0x34], eax
- mov edx, eax
- mov r10, qword ptr [rbx]
- mov r10, qword ptr [r10+0x88]
- call [r10+0x20]System.Xml.XmlReader:ReadContentAsBase64(ubyte[],int,int):int:this
- ;; size=34 bbWeight=8 PerfScore 82.00
+ mov gword ptr [rbp-0x158], rax
+ mov rsi, rax
+ mov edx, r12d
+ mov r9, qword ptr [rbx]
+ mov r9, qword ptr [r9+0x88]
+ call [r9+0x20]System.Xml.XmlReader:ReadContentAsBase64(ubyte[],int,int):int:this
+ ;; size=36 bbWeight=8 PerfScore 74.00
G_M31414_IG10:
test eax, eax
- je SHORT G_M31414_IG12
- mov esi, dword ptr [rbp-0x34]
- add esi, eax
- mov edi, dword ptr [rbp-0x44]
- cmp edi, esi
- mov r8, gword ptr [rbp-0x50]
+ je SHORT G_M31414_IG11
+ add r12d, eax
+ mov esi, dword ptr [rbp-0x14C]
+ cmp esi, r12d
+ mov rax, gword ptr [rbp-0x158]
jg SHORT G_M31414_IG06
- ;; size=20 bbWeight=16 PerfScore 92.00
+ ;; size=25 bbWeight=16 PerfScore 76.00
G_M31414_IG11:
- mov dword ptr [rbp-0x34], esi
- ;; size=3 bbWeight=8 PerfScore 8.00
-G_M31414_IG12:
- mov esi, dword ptr [rbp-0x34]
- mov eax, r14d
- sub eax, esi
- mov ecx, dword ptr [rbp-0x30]
- cmp eax, ecx
- jl G_M31414_IG17
- add ecx, esi
- cmp dword ptr [rbp-0x44], esi
+ mov edi, r14d
+ sub edi, r12d
+ mov eax, dword ptr [rbp-0x30]
+ cmp edi, eax
+ jl G_M31414_IG16
+ add eax, r12d
+ cmp dword ptr [rbp-0x14C], r12d
jle G_M31414_IG03
- ;; size=30 bbWeight=8 PerfScore 56.00
-G_M31414_IG13:
- mov dword ptr [rbp-0x30], ecx
- movsxd rsi, ecx
+ ;; size=33 bbWeight=8 PerfScore 48.00
+G_M31414_IG12:
+ mov dword ptr [rbp-0x30], eax
+ movsxd rsi, eax
mov rdi, 0xD1FFAB1E ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
mov r14, rax
xor ebx, ebx
xor r15d, r15d
mov r12d, dword ptr [rbp-0x2C]
- dec r12d
- test r12d, r12d
- jle SHORT G_M31414_IG15
- ;; size=41 bbWeight=1 PerfScore 5.75
-G_M31414_IG14:
- cmp r15d, 32
- jae G_M31414_IG18
- mov r8, gword ptr [r13+8*r15+0x10]
- mov rdi, r8
+ lea r13d, [r12-0x01]
+ test r13d, r13d
+ jle SHORT G_M31414_IG14
+ ;; size=43 bbWeight=1 PerfScore 6.00
+G_M31414_IG13:
+ mov edi, dword ptr [rbp-0x140]
+ cmp r15d, edi
+ jae G_M31414_IG17
+ lea rdi, bword ptr [rbp-0x148]
+ mov rdi, gword ptr [rdi+8*r15+0x10]
+ lea r8, bword ptr [rbp-0x148]
+ mov r8, gword ptr [r8+8*r15+0x10]
mov r8d, dword ptr [r8+0x08]
mov rdx, r14
mov ecx, ebx
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Buffer:BlockCopy(System.Array,int,System.Array,int,int)
call [rax]System.Buffer:BlockCopy(System.Array,int,System.Array,int,int)
- mov rdi, gword ptr [r13+8*r15+0x10]
+ cmp r15d, dword ptr [rbp-0x140]
+ jae G_M31414_IG17
+ lea rdi, bword ptr [rbp-0x148]
+ mov rdi, gword ptr [rdi+8*r15+0x10]
add ebx, dword ptr [rdi+0x08]
inc r15d
- cmp r15d, r12d
- jl SHORT G_M31414_IG14
- ;; size=57 bbWeight=4 PerfScore 64.00
-G_M31414_IG15:
- cmp r12d, 32
- jae G_M31414_IG18
- mov edi, r12d
- mov rdi, gword ptr [r13+8*rdi+0x10]
+ cmp r15d, r13d
+ jl SHORT G_M31414_IG13
+ ;; size=98 bbWeight=4 PerfScore 93.00
+G_M31414_IG14:
+ cmp r13d, dword ptr [rbp-0x140]
+ jae G_M31414_IG17
+ lea rdi, bword ptr [rbp-0x148]
+ mov r8d, r13d
+ mov rdi, gword ptr [rdi+8*r8+0x10]
mov r15d, dword ptr [rbp-0x30]
mov r8d, r15d
sub r8d, ebx
mov rdx, r14
mov ecx, ebx
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Buffer:BlockCopy(System.Array,int,System.Array,int,int)
call [rax]System.Buffer:BlockCopy(System.Array,int,System.Array,int,int)
mov rax, r14
- ;; size=50 bbWeight=1 PerfScore 9.25
-G_M31414_IG16:
- add rsp, 40
+ ;; size=60 bbWeight=1 PerfScore 11.50
+G_M31414_IG15:
+ add rsp, 312
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M31414_IG17:
- mov dword ptr [rbp-0x40], r14d
+ ;; size=18 bbWeight=1 PerfScore 4.25
+G_M31414_IG16:
+ mov dword ptr [rbp-0x38], r14d
mov edi, 0x2F13
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_STRCNS
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for System.SR:GetResourceString(System.String):System.String
call [rax]System.SR:GetResourceString(System.String):System.String
mov r15, rax
mov rax, 0xD1FFAB1E ; code for System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
call [rax]System.Globalization.NumberFormatInfo:get_CurrentInfo():System.Globalization.NumberFormatInfo
mov rsi, rax
- lea rdi, [rbp-0x40]
+ lea rdi, [rbp-0x38]
mov rax, 0xD1FFAB1E ; code for System.Int32:ToString(System.IFormatProvider):System.String:this
call [rax]System.Int32:ToString(System.IFormatProvider):System.String:this
mov rdx, rax
mov rsi, r15
mov rdi, rbx
xor rcx, rcx
xor r8, r8
mov rax, 0xD1FFAB1E ; code for System.Xml.XmlExceptionHelper:ThrowXmlException(System.Xml.XmlDictionaryReader,System.String,System.String,System.String,System.String)
call [rax]System.Xml.XmlExceptionHelper:ThrowXmlException(System.Xml.XmlDictionaryReader,System.String,System.String,System.String,System.String)
int3
;; size=100 bbWeight=0 PerfScore 0.00
-G_M31414_IG18:
+G_M31414_IG17:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 554, prolog size 28, PerfScore 594.25, instruction count 157, allocated bytes for code 554 (MethodHash=25c48549) for method System.Xml.XmlDictionaryReader:ReadContentAsBytes(ubyte,int):ubyte[]:this (FullOpts)
+; Total bytes of code 698, prolog size 34, PerfScore 584.58, instruction count 163, allocated bytes for code 698 (MethodHash=25c48549) for method System.Xml.XmlDictionaryReader:ReadContentAsBytes(ubyte,int):ubyte[]:this (FullOpts)
; ============================================================ 129 (13.41 % of base) - System.Runtime.Serialization.DataContracts.DataContract:ComputeHash(ubyte[]):ubyte[] ; Assembly listing for method System.Runtime.Serialization.DataContracts.DataContract:ComputeHash(ubyte[]):ubyte[] (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; 5 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T23] ( 6, 23 ) ref -> rbx class-hnd single-def <ubyte[]>
-; V01 loc0 [V01,T26] ( 2, 16.84) ref -> r15 class-hnd exact single-def <int[]>
-; V02 loc1 [V02,T27] ( 2, 16.84) ref -> [rbp-0x50] class-hnd exact spill-single-def <uint[]>
-; V03 loc2 [V03,T33] ( 5, 12 ) int -> [rbp-0x2C] spill-single-def
-; V04 loc3 [V04,T31] ( 8, 14 ) int -> [rbp-0x30]
-; V05 loc4 [V05,T32] ( 6, 12 ) int -> [rbp-0x34]
-; V06 loc5 [V06,T38] ( 4, 6 ) int -> [rbp-0x38]
-; V07 loc6 [V07,T39] ( 4, 6 ) int -> [rbp-0x3C]
-; V08 loc7 [V08,T25] ( 7, 23 ) int -> [rbp-0x40]
-; V09 loc8 [V09,T08] ( 12, 63.68) ref -> r10 class-hnd <ubyte[]>
-; V10 loc9 [V10,T11] ( 12, 51 ) int -> [rbp-0x44]
-; V11 loc10 [V11,T16] ( 4, 36.68) int -> registers
-; V12 loc11 [V12,T01] ( 14,155.48) int -> registers
-; V13 loc12 [V13,T04] ( 9, 82.20) int -> registers
-; V14 loc13 [V14,T06] ( 9, 74.28) int -> registers
-; V15 loc14 [V15,T12] ( 5, 47.52) int -> r12
-; V16 loc15 [V16,T02] ( 10, 95.04) int -> rax
+;* V01 loc0 [V01 ] ( 0, 0 ) long -> zero-ref class-hnd exact <int[]>
+;* V02 loc1 [V02 ] ( 0, 0 ) long -> zero-ref class-hnd exact <uint[]>
+; V03 loc2 [V03,T31] ( 5, 12 ) int -> [rbp-0x2C] spill-single-def
+; V04 loc3 [V04,T29] ( 8, 14 ) int -> r13
+; V05 loc4 [V05,T30] ( 6, 12 ) int -> [rbp-0x30]
+; V06 loc5 [V06,T36] ( 4, 6 ) int -> [rbp-0x34]
+; V07 loc6 [V07,T37] ( 4, 6 ) int -> [rbp-0x38]
+; V08 loc7 [V08,T25] ( 7, 23 ) int -> [rbp-0x3C]
+; V09 loc8 [V09,T07] ( 12, 64 ) ref -> r8 class-hnd <ubyte[]>
+; V10 loc9 [V10,T12] ( 12, 51.16) int -> [rbp-0x40]
+; V11 loc10 [V11,T16] ( 4, 37 ) int -> registers
+; V12 loc11 [V12,T01] ( 14,157 ) int -> registers
+; V13 loc12 [V13,T04] ( 9, 83 ) int -> registers
+; V14 loc13 [V14,T06] ( 9, 75 ) int -> registers
+; V15 loc14 [V15,T13] ( 5, 48 ) int -> rax
+; V16 loc15 [V16,T02] ( 10, 96 ) int -> r14
; V17 loc16 [V17,T05] ( 12, 82.16) int -> rsi
-;* V18 loc17 [V18,T44] ( 0, 0 ) int -> zero-ref
+;* V18 loc17 [V18,T40] ( 0, 0 ) int -> zero-ref
;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V20 tmp1 [V20,T40] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewArr temp" <int[]>
-; V21 tmp2 [V21,T41] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewArr temp" <uint[]>
-; V22 tmp3 [V22,T09] ( 2, 63.36) int -> r8 "impSpillLclRefs"
-; V23 tmp4 [V23,T10] ( 2, 63.36) int -> rdi "impAppendStmt"
+;* V20 tmp1 [V20 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewArr temp" <int[]>
+;* V21 tmp2 [V21 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewArr temp" <uint[]>
+; V22 tmp3 [V22,T09] ( 2, 64 ) int -> r11 "impSpillLclRefs"
+; V23 tmp4 [V23,T10] ( 2, 64 ) int -> rdi "impAppendStmt"
;* V24 tmp5 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V25 tmp6 [V25 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V26 tmp7 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewArr temp" <ubyte[]>
-; V27 tmp8 [V27,T07] ( 4, 64 ) int -> rax "Strict ordering of exceptions for Array store"
-; V28 tmp9 [V28,T34] ( 2, 8 ) int -> rdi "Strict ordering of exceptions for Array store"
-; V29 tmp10 [V29,T35] ( 2, 8 ) int -> rdi "Strict ordering of exceptions for Array store"
-; V30 tmp11 [V30,T36] ( 2, 8 ) int -> rdi "Strict ordering of exceptions for Array store"
-; V31 tmp12 [V31,T37] ( 2, 8 ) int -> rdi "Strict ordering of exceptions for Array store"
-; V32 tmp13 [V32,T28] ( 8, 16 ) ref -> rax class-hnd exact single-def "NewArr temp" <ubyte[]>
+; V27 tmp8 [V27,T08] ( 4, 64 ) int -> rax "Strict ordering of exceptions for Array store"
+; V28 tmp9 [V28,T32] ( 2, 8 ) int -> rdi "Strict ordering of exceptions for Array store"
+; V29 tmp10 [V29,T33] ( 2, 8 ) int -> rdi "Strict ordering of exceptions for Array store"
+; V30 tmp11 [V30,T34] ( 2, 8 ) int -> rdi "Strict ordering of exceptions for Array store"
+; V31 tmp12 [V31,T35] ( 2, 8 ) int -> rdi "Strict ordering of exceptions for Array store"
+; V32 tmp13 [V32,T26] ( 8, 16 ) ref -> rax class-hnd exact single-def "NewArr temp" <ubyte[]>
;* V33 tmp14 [V33 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[ubyte]>
;* V34 tmp15 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V35 tmp16 [V35 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ubyte]>
-; V36 tmp17 [V36,T20] ( 2, 31.68) byref -> r14 "Inlining Arg"
-; V37 tmp18 [V37,T21] ( 2, 31.68) int -> r12 "Inlining Arg"
+; V36 tmp17 [V36,T20] ( 2, 32 ) byref -> r12 "Inlining Arg"
+; V37 tmp18 [V37,T21] ( 2, 32 ) int -> rax "Inlining Arg"
;* V38 tmp19 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V39 tmp20 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V40 tmp21 [V40 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V41 tmp22 [V41 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V42 tmp23 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V43 tmp24 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;* V44 tmp25 [V44 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
-;* V45 tmp26 [V45 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-;* V46 tmp27 [V46 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
-;* V47 tmp28 [V47 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
-; V48 tmp29 [V48,T18] ( 3, 31.68) byref -> registers "field V33._reference (fldOffset=0x0)" P-INDEP
-; V49 tmp30 [V49,T19] ( 3, 31.68) int -> r12 "field V33._length (fldOffset=0x8)" P-INDEP
-; V50 tmp31 [V50,T29] ( 2, 15.84) byref -> r14 "field V34._reference (fldOffset=0x0)" P-INDEP
-; V51 tmp32 [V51,T30] ( 2, 15.84) int -> r12 "field V34._length (fldOffset=0x8)" P-INDEP
-;* V52 tmp33 [V52 ] ( 0, 0 ) byref -> zero-ref "field V35._reference (fldOffset=0x0)" P-INDEP
-;* V53 tmp34 [V53 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
-;* V54 tmp35 [V54 ] ( 0, 0 ) byref -> zero-ref "field V38._reference (fldOffset=0x0)" P-INDEP
-;* V55 tmp36 [V55 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
-;* V56 tmp37 [V56 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP
-;* V57 tmp38 [V57 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
-;* V58 tmp39 [V58 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
-;* V59 tmp40 [V59 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
-;* V60 tmp41 [V60 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP
-;* V61 tmp42 [V61 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
-; V62 tmp43 [V62,T03] ( 3, 95.04) int -> rax "index expr"
-;* V63 tmp44 [V63,T22] ( 0, 0 ) int -> zero-ref "index expr"
-; V64 cse0 [V64,T13] ( 3, 47.52) int -> rax "CSE #13: moderate"
-; V65 cse1 [V65,T14] ( 2, 31.68) int -> rax "CSE #10: moderate"
-; V66 cse2 [V66,T42] ( 3, 6 ) int -> rsi "CSE #04: conservative"
-; V67 cse3 [V67,T17] ( 12, 36 ) int -> r13 "CSE #01: moderate"
-; V68 cse4 [V68,T15] ( 3, 47.52) int -> rcx "CSE #02: moderate"
-; V69 cse5 [V69,T24] ( 3, 23.76) int -> r12 "CSE #06: moderate"
-; V70 rat0 [V70,T00] ( 15,167.32) long -> rcx "Widened IV V18"
-; V71 rat1 [V71,T43] ( 3, 6 ) int -> r12 "ReplaceWithLclVar is creating a new local variable"
+; V44 tmp25 [V44 ] ( 7, 52 ) struct (80) [rbp-0x90] do-not-enreg[XSF] addr-exposed "stack allocated array temp"
+; V45 tmp26 [V45 ] ( 6, 36 ) struct (272) [rbp-0x1A0] do-not-enreg[XSF] addr-exposed "stack allocated array temp"
+;* V46 tmp27 [V46 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
+;* V47 tmp28 [V47 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
+;* V48 tmp29 [V48 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
+;* V49 tmp30 [V49 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
+; V50 tmp31 [V50,T18] ( 3, 32 ) byref -> registers "field V33._reference (fldOffset=0x0)" P-INDEP
+; V51 tmp32 [V51,T19] ( 3, 32 ) int -> registers "field V33._length (fldOffset=0x8)" P-INDEP
+; V52 tmp33 [V52,T27] ( 2, 16 ) byref -> r12 "field V34._reference (fldOffset=0x0)" P-INDEP
+; V53 tmp34 [V53,T28] ( 2, 16 ) int -> rax "field V34._length (fldOffset=0x8)" P-INDEP
+;* V54 tmp35 [V54 ] ( 0, 0 ) byref -> zero-ref "field V35._reference (fldOffset=0x0)" P-INDEP
+;* V55 tmp36 [V55 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
+;* V56 tmp37 [V56 ] ( 0, 0 ) byref -> zero-ref "field V38._reference (fldOffset=0x0)" P-INDEP
+;* V57 tmp38 [V57 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
+;* V58 tmp39 [V58 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP
+;* V59 tmp40 [V59 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
+;* V60 tmp41 [V60 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V61 tmp42 [V61 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
+;* V62 tmp43 [V62 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP
+;* V63 tmp44 [V63 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
+; V64 tmp45 [V64,T03] ( 3, 96 ) int -> r14 "index expr"
+; V65 tmp46 [V65,T11] ( 2, 64 ) int -> rax "index expr"
+; V66 cse0 [V66,T14] ( 3, 48 ) int -> rax "CSE #10: moderate"
+; V67 cse1 [V67,T38] ( 3, 6 ) int -> rsi "CSE #04: conservative"
+; V68 cse2 [V68,T17] ( 12, 36 ) int -> r15 "CSE #01: moderate"
+; V69 cse3 [V69,T22] ( 2, 32 ) int -> r12 "CSE #11: moderate"
+; V70 cse4 [V70,T15] ( 3, 47.52) int -> rcx "CSE #02: moderate"
+; V71 cse5 [V71,T24] ( 3, 24 ) int -> rax "CSE #06: moderate"
+; V72 rat0 [V72,T00] ( 16,185 ) long -> rcx "Widened IV V18"
+; V73 rat1 [V73,T39] ( 3, 6 ) int -> r14 "ReplaceWithLclVar is creating a new local variable"
;
-; Lcl frame size = 40
+; Lcl frame size = 376
G_M24152_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 40
- lea rbp, [rsp+0x50]
+ sub rsp, 376
+ lea rbp, [rsp+0x1A0]
mov rbx, rdi
- ;; size=22 bbWeight=1 PerfScore 7.00
+ ;; size=28 bbWeight=1 PerfScore 7.00
G_M24152_IG02:
+ vxorps ymm0, ymm0, ymm0
+ vmovdqu32 zmmword ptr [rbp-0x90], zmm0
+ vmovdqu xmmword ptr [rbp-0x50], xmm0
mov rdi, 0xD1FFAB1E ; int[]
- mov esi, 16
- call CORINFO_HELP_NEWARR_1_VC
- mov r15, rax
+ mov qword ptr [rbp-0x90], rdi
+ mov dword ptr [rbp-0x88], 16
mov rdi, 0xD1FFAB1E ; const ptr
vmovdqu32 zmm0, zmmword ptr [rdi]
- vmovdqu32 zmmword ptr [r15+0x10], zmm0
+ vmovdqu32 zmmword ptr [rbp-0x80], zmm0
+ ;; NOP compensation instructions of 3 bytes.
+ vxorps ymm0, ymm0, ymm0
+ vmovdqu32 zmmword ptr [rbp-0x1A0], zmm0
+ vmovdqu32 zmmword ptr [rbp-0x160], zmm0
+ vmovdqu32 zmmword ptr [rbp-0x120], zmm0
+ vmovdqu32 zmmword ptr [rbp-0xE0], zmm0
+ vmovdqu xmmword ptr [rbp-0xA0], xmm0
mov rdi, 0xD1FFAB1E ; uint[]
- mov esi, 64
- call CORINFO_HELP_NEWARR_1_VC
- mov r14, rax
+ mov qword ptr [rbp-0x1A0], rdi
+ mov dword ptr [rbp-0x198], 64
mov rdi, 0xD1FFAB1E ; const ptr
vmovdqu32 zmm0, zmmword ptr [rdi]
- vmovdqu32 zmmword ptr [r14+0x10], zmm0
+ vmovdqu32 zmmword ptr [rbp-0x190], zmm0
vmovdqu32 zmm0, zmmword ptr [rdi+0x40]
- vmovdqu32 zmmword ptr [r14+0x50], zmm0
+ vmovdqu32 zmmword ptr [rbp-0x150], zmm0
vmovdqu32 zmm0, zmmword ptr [rdi+0x80]
- vmovdqu32 zmmword ptr [r14+0x90], zmm0
+ vmovdqu32 zmmword ptr [rbp-0x110], zmm0
vmovdqu32 zmm0, zmmword ptr [rdi+0xC0]
- vmovdqu32 zmmword ptr [r14+0xD0], zmm0
- mov gword ptr [rbp-0x50], r14
- mov r13d, dword ptr [rbx+0x08]
- lea r12d, [r13+0x08]
- mov eax, r12d
- sar eax, 31
- and eax, 63
- add r12d, eax
- sar r12d, 6
- inc r12d
- mov dword ptr [rbp-0x2C], r12d
- mov dword ptr [rbp-0x30], 0xD1FFAB1E
+ vmovdqu32 zmmword ptr [rbp-0xD0], zmm0
+ mov r15d, dword ptr [rbx+0x08]
+ lea r14d, [r15+0x08]
+ mov r13d, r14d
+ sar r13d, 31
+ and r13d, 63
+ add r14d, r13d
+ sar r14d, 6
+ inc r14d
+ mov dword ptr [rbp-0x2C], r14d
+ mov r13d, 0xD1FFAB1E
+ mov r12d, 0xD1FFAB1E
mov dword ptr [rbp-0x34], 0xD1FFAB1E
mov dword ptr [rbp-0x38], 0xD1FFAB1E
- mov dword ptr [rbp-0x3C], 0xD1FFAB1E
- xor r9d, r9d
- test r12d, r12d
+ xor edx, edx
+ test r14d, r14d
jle G_M24152_IG24
- ;; size=224 bbWeight=1 PerfScore 46.00
+ ;; size=298 bbWeight=1 PerfScore 47.17
G_M24152_IG03:
- mov r10, rbx
+ mov r8, rbx
+ mov dword ptr [rbp-0x3C], edx
+ mov r9d, edx
+ shl r9d, 6
mov dword ptr [rbp-0x40], r9d
- mov r11d, r9d
- shl r11d, 6
- mov dword ptr [rbp-0x44], r11d
- lea edi, [r11+0x40]
- cmp r13d, edi
+ lea edi, [r9+0x40]
+ cmp r15d, edi
jge G_M24152_IG10
- ;; size=31 bbWeight=4 PerfScore 19.00
+ ;; size=30 bbWeight=4 PerfScore 19.00
G_M24152_IG04:
mov rdi, 0xD1FFAB1E ; ubyte[]
mov esi, 64
call CORINFO_HELP_NEWARR_1_VC
- mov r10, rax
- mov edi, dword ptr [rbp-0x44]
+ mov r8, rax
+ mov edi, dword ptr [rbp-0x40]
mov esi, edi
- cmp r13d, edi
+ cmp r15d, edi
jle SHORT G_M24152_IG07
;; size=33 bbWeight=2 PerfScore 8.50
G_M24152_IG05:
test edi, edi
jl G_M24152_IG13
- align [2 bytes for IG06]
- ;; size=10 bbWeight=1 PerfScore 1.50
+ align [3 bytes for IG06]
+ ;; size=11 bbWeight=1 PerfScore 1.50
G_M24152_IG06:
mov eax, esi
movzx rax, byte ptr [rbx+rax+0x10]
mov ecx, esi
sub ecx, edi
cmp ecx, 64
jae G_M24152_IG28
- mov byte ptr [r10+rcx+0x10], al
+ mov byte ptr [r8+rcx+0x10], al
inc esi
- cmp r13d, esi
+ cmp r15d, esi
jg SHORT G_M24152_IG06
;; size=32 bbWeight=15.84 PerfScore 102.96
G_M24152_IG07:
- cmp r13d, edi
+ cmp r15d, edi
jl SHORT G_M24152_IG08
- mov esi, r13d
+ mov esi, r15d
sub esi, edi
cmp esi, 64
jae G_M24152_IG28
mov edi, esi
- mov byte ptr [r10+rdi+0x10], 128
+ mov byte ptr [r8+rdi+0x10], 128
;; size=27 bbWeight=2 PerfScore 8.50
G_M24152_IG08:
- lea edi, [r12-0x01]
- mov esi, dword ptr [rbp-0x40]
+ lea edi, [r14-0x01]
+ mov esi, dword ptr [rbp-0x3C]
cmp esi, edi
jne SHORT G_M24152_IG09
- lea edi, [8*r13]
+ lea edi, [8*r15]
movzx rdi, dil
- mov byte ptr [r10+0x48], dil
- mov edi, r13d
+ mov byte ptr [r8+0x48], dil
+ mov edi, r15d
sar edi, 5
movzx rdi, dil
- mov byte ptr [r10+0x49], dil
- mov edi, r13d
+ mov byte ptr [r8+0x49], dil
+ mov edi, r15d
sar edi, 13
movzx rdi, dil
- mov byte ptr [r10+0x4A], dil
- mov edi, r13d
+ mov byte ptr [r8+0x4A], dil
+ mov edi, r15d
sar edi, 21
movzx rdi, dil
- mov byte ptr [r10+0x4B], dil
- ;; size=70 bbWeight=2 PerfScore 21.00
+ mov byte ptr [r8+0x4B], dil
+ ;; size=69 bbWeight=2 PerfScore 21.00
G_M24152_IG09:
xor edi, edi
- mov dword ptr [rbp-0x44], edi
- mov dword ptr [rbp-0x40], esi
- mov r12d, dword ptr [rbp-0x2C]
+ mov dword ptr [rbp-0x40], edi
+ mov dword ptr [rbp-0x3C], esi
+ mov r14d, dword ptr [rbp-0x2C]
;; size=12 bbWeight=2 PerfScore 6.50
G_M24152_IG10:
- mov eax, dword ptr [rbp-0x30]
- mov edi, eax
- mov ecx, dword ptr [rbp-0x34]
- mov esi, ecx
- mov edx, dword ptr [rbp-0x38]
- mov r8d, dword ptr [rbp-0x3C]
+ mov edi, r13d
+ mov dword ptr [rbp-0x30], r12d
+ mov esi, r12d
+ mov eax, dword ptr [rbp-0x34]
+ mov r10d, eax
+ mov ecx, dword ptr [rbp-0x38]
+ mov r11d, ecx
xor ecx, ecx
align [0 bytes for IG11]
- ;; size=19 bbWeight=1 PerfScore 4.75
+ ;; size=24 bbWeight=1 PerfScore 4.25
G_M24152_IG11:
cmp ecx, 16
jge SHORT G_M24152_IG14
- ;; size=5 bbWeight=15.84 PerfScore 19.80
+ ;; size=5 bbWeight=16 PerfScore 20.00
G_M24152_IG12:
- mov r12d, esi
- and r12d, edx
- andn eax, esi, r8d
- or r12d, eax
- mov eax, ecx
+ mov eax, esi
+ and eax, r10d
+ andn r14d, esi, r11d
+ or eax, r14d
+ mov r14d, ecx
jmp SHORT G_M24152_IG17
- ;; size=18 bbWeight=7.92 PerfScore 27.72
+ ;; size=18 bbWeight=8 PerfScore 28.00
G_M24152_IG13:
mov eax, esi
movzx rax, byte ptr [rbx+rax+0x10]
mov ecx, esi
sub ecx, edi
cmp ecx, 64
jae G_M24152_IG28
mov ecx, esi
sub ecx, edi
- mov byte ptr [r10+rcx+0x10], al
+ mov byte ptr [r8+rcx+0x10], al
inc esi
- cmp r13d, esi
+ cmp r15d, esi
jg SHORT G_M24152_IG13
jmp G_M24152_IG07
;; size=41 bbWeight=0.16 PerfScore 1.44
G_M24152_IG14:
cmp ecx, 32
jl SHORT G_M24152_IG16
cmp ecx, 48
jl SHORT G_M24152_IG15
- mov r12d, r8d
- not r12d
- or r12d, esi
- xor r12d, edx
- lea eax, [8*rcx]
- sub eax, ecx
+ mov eax, r11d
+ not eax
+ or eax, esi
+ xor eax, r10d
+ lea r14d, [8*rcx]
+ sub r14d, ecx
jmp SHORT G_M24152_IG17
- ;; size=33 bbWeight=7.92 PerfScore 49.50
+ ;; size=33 bbWeight=8 PerfScore 50.00
G_M24152_IG15:
- mov r12d, esi
- xor r12d, edx
- xor r12d, r8d
- lea eax, [rcx+2*rcx]
- add eax, 5
+ mov eax, esi
+ xor eax, r10d
+ xor eax, r11d
+ lea r14d, [rcx+2*rcx]
+ add r14d, 5
jmp SHORT G_M24152_IG17
- ;; size=17 bbWeight=7.92 PerfScore 27.72
+ ;; size=18 bbWeight=8 PerfScore 28.00
G_M24152_IG16:
- mov r12d, esi
- and r12d, r8d
- andn eax, r8d, edx
- or r12d, eax
- lea eax, [rcx+4*rcx]
- inc eax
- ;; size=19 bbWeight=7.92 PerfScore 15.84
+ mov eax, esi
+ and eax, r11d
+ andn r14d, r11d, r10d
+ or eax, r14d
+ lea r14d, [rcx+4*rcx]
+ inc r14d
+ ;; size=20 bbWeight=8 PerfScore 16.00
G_M24152_IG17:
- and eax, 15
- mov r11d, dword ptr [rbp-0x44]
- lea eax, [r11+4*rax]
- add edi, r12d
- add edi, dword ptr [r14+4*rcx+0x10]
- test r10, r10
+ and r14d, 15
+ mov r9d, dword ptr [rbp-0x40]
+ lea r14d, [r9+4*r14]
+ add edi, eax
+ cmp ecx, dword ptr [rbp-0x198]
+ jae G_M24152_IG28
+ lea rax, [rbp-0x1A0]
+ add edi, dword ptr [rax+4*rcx+0x10]
+ test r8, r8
je SHORT G_M24152_IG19
- ;; size=24 bbWeight=15.84 PerfScore 99.00
+ ;; size=42 bbWeight=16 PerfScore 156.00
G_M24152_IG18:
- mov r12d, dword ptr [r10+0x08]
- cmp r12d, eax
+ mov eax, dword ptr [r8+0x08]
+ cmp eax, r14d
jb G_M24152_IG27
+ mov r12d, r14d
+ lea r12, bword ptr [r8+r12+0x10]
+ sub eax, r14d
mov r14d, eax
- lea r14, bword ptr [r10+r14+0x10]
- sub r12d, eax
- mov rax, r14
+ mov rax, r12
jmp SHORT G_M24152_IG20
- ;; size=29 bbWeight=7.92 PerfScore 55.44
+ ;; size=32 bbWeight=8 PerfScore 58.00
G_M24152_IG19:
- test eax, eax
+ test r14d, r14d
jne G_M24152_IG27
xor rax, rax
- xor r12d, r12d
- ;; size=13 bbWeight=7.92 PerfScore 13.86
+ xor r14d, r14d
+ ;; size=14 bbWeight=8 PerfScore 14.00
G_M24152_IG20:
- cmp r12d, 4
+ cmp r14d, 4
jl G_M24152_IG26
add edi, dword ptr [rax]
mov eax, ecx
and eax, 3
- mov r12d, ecx
- sar r12d, 2
- and r12d, -4
- or eax, r12d
- cmp eax, 16
+ mov r14d, ecx
+ sar r14d, 2
+ and r14d, -4
+ or eax, r14d
+ mov r14d, eax
+ mov r12d, dword ptr [rbp-0x88]
+ cmp r14d, r12d
jae G_M24152_IG28
- mov eax, dword ptr [r15+4*rax+0x10]
- shlx r12d, edi, eax
+ lea r12, [rbp-0x90]
+ mov r14d, dword ptr [r12+4*r14+0x10]
+ shlx r14d, edi, r14d
+ lea r12, [rbp-0x90]
+ mov eax, dword ptr [r12+4*rax+0x10]
neg eax
add eax, 32
shrx edi, edi, eax
- or edi, r12d
+ or edi, r14d
add edi, esi
inc ecx
cmp ecx, 64
- mov dword ptr [rbp-0x44], r11d
- mov eax, edx
- mov edx, esi
+ mov dword ptr [rbp-0x40], r9d
+ mov eax, esi
mov esi, edi
- mov edi, r8d
- mov r8d, eax
- mov r12d, dword ptr [rbp-0x2C]
- mov r14, gword ptr [rbp-0x50]
+ mov edi, r11d
+ mov r11d, r10d
+ mov r10d, eax
+ mov r14d, dword ptr [rbp-0x2C]
jl G_M24152_IG11
- ;; size=100 bbWeight=15.84 PerfScore 269.28
+ ;; size=126 bbWeight=16 PerfScore 324.00
G_M24152_IG21:
- mov eax, edi
- add eax, dword ptr [rbp-0x30]
- mov dword ptr [rbp-0x30], eax
- mov ecx, esi
- add ecx, dword ptr [rbp-0x34]
- mov dword ptr [rbp-0x34], ecx
- lea edi, [r12-0x01]
- mov r9d, dword ptr [rbp-0x40]
- cmp r9d, edi
+ add r13d, edi
+ mov r12d, esi
+ add r12d, dword ptr [rbp-0x30]
+ lea edi, [r14-0x01]
+ mov edx, dword ptr [rbp-0x3C]
+ cmp edx, edi
jge SHORT G_M24152_IG23
- ;; size=30 bbWeight=4 PerfScore 37.00
+ ;; size=21 bbWeight=4 PerfScore 21.00
G_M24152_IG22:
- add edx, dword ptr [rbp-0x38]
- mov edi, edx
- add r8d, dword ptr [rbp-0x3C]
- mov esi, r8d
+ mov eax, r10d
+ add eax, dword ptr [rbp-0x34]
+ mov ecx, r11d
+ add ecx, dword ptr [rbp-0x38]
+ mov edi, ecx
+ mov dword ptr [rbp-0x34], eax
mov dword ptr [rbp-0x38], edi
- mov dword ptr [rbp-0x3C], esi
- ;; size=18 bbWeight=2 PerfScore 13.00
+ ;; size=20 bbWeight=2 PerfScore 13.50
G_M24152_IG23:
- inc r9d
- cmp r9d, r12d
+ inc edx
+ cmp edx, r14d
jl G_M24152_IG03
- ;; size=12 bbWeight=4 PerfScore 6.00
+ ;; size=11 bbWeight=4 PerfScore 6.00
G_M24152_IG24:
mov rdi, 0xD1FFAB1E ; ubyte[]
mov esi, 6
call CORINFO_HELP_NEWARR_1_VC
- mov ebx, dword ptr [rbp-0x30]
- mov byte ptr [rax+0x10], bl
- mov edi, ebx
+ mov byte ptr [rax+0x10], r13b
+ mov edi, r13d
shr edi, 8
mov byte ptr [rax+0x11], dil
- mov edi, ebx
+ mov edi, r13d
shr edi, 16
mov byte ptr [rax+0x12], dil
- mov edi, ebx
+ mov edi, r13d
shr edi, 24
mov byte ptr [rax+0x13], dil
- mov ebx, dword ptr [rbp-0x34]
- mov byte ptr [rax+0x14], bl
- mov edi, ebx
+ mov byte ptr [rax+0x14], r12b
+ mov edi, r12d
shr edi, 8
mov byte ptr [rax+0x15], dil
- ;; size=68 bbWeight=1 PerfScore 12.50
+ ;; size=68 bbWeight=1 PerfScore 10.50
G_M24152_IG25:
vzeroupper
- add rsp, 40
+ add rsp, 376
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=18 bbWeight=1 PerfScore 5.25
+ ;; size=21 bbWeight=1 PerfScore 5.25
G_M24152_IG26:
mov edi, 40
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int)
int3
;; size=18 bbWeight=0 PerfScore 0.00
G_M24152_IG27:
mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
int3
;; size=13 bbWeight=0 PerfScore 0.00
G_M24152_IG28:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 962, prolog size 22, PerfScore 879.06, instruction count 262, allocated bytes for code 962 (MethodHash=ada3a1a7) for method System.Runtime.Serialization.DataContracts.DataContract:ComputeHash(ubyte[]):ubyte[] (FullOpts)
+; Total bytes of code 1091, prolog size 28, PerfScore 978.07, instruction count 273, allocated bytes for code 1091 (MethodHash=ada3a1a7) for method System.Runtime.Serialization.DataContracts.DataContract:ComputeHash(ubyte[]):ubyte[] (FullOpts)
; ============================================================ 47 (20.52 % of base) - System.Data.Common.SqlCharsStorage:Set(int,System.Object):this ; Assembly listing for method System.Data.Common.SqlCharsStorage:Set(int,System.Object):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; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 4, 2.75) ref -> r14 this class-hnd single-def <System.Data.Common.SqlCharsStorage>
-; V01 arg1 [V01,T01] ( 6, 4 ) int -> rbx single-def
-; V02 arg2 [V02,T02] ( 6, 3.75) ref -> r15 class-hnd single-def <System.Object>
+; V00 this [V00,T02] ( 4, 2.75) ref -> r14 this class-hnd single-def <System.Data.Common.SqlCharsStorage>
+; V01 arg1 [V01,T00] ( 6, 4 ) int -> rbx single-def
+; V02 arg2 [V02,T01] ( 6, 3.75) ref -> r15 class-hnd single-def <System.Object>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 3, 3 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <System.Data.SqlTypes.SqlChars[]>
-;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Strict ordering of exceptions for Array store" <System.Data.SqlTypes.SqlChars>
-; V06 tmp3 [V06,T05] ( 3, 2.50) ref -> rdi class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.Data.SqlTypes.SqlChars[]>
-; V07 tmp4 [V07,T07] ( 2, 2 ) ref -> rsi class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.Data.SqlTypes.SqlChars>
-; V08 tmp5 [V08,T00] ( 7, 7 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <System.Data.SqlTypes.SqlChars>
-; V09 rat0 [V09,T06] ( 3, 2 ) ref -> rsi "replacement local"
-; V10 rat1 [V10,T08] ( 3, 1 ) long -> rax "CSE for expectedClsNode"
+; V04 tmp1 [V04,T03] ( 3, 3 ) long -> rax class-hnd exact "impAppendStmt" <System.Data.SqlTypes.SqlChars[]>
+;* V05 tmp2 [V05 ] ( 0, 0 ) long -> zero-ref class-hnd exact "Strict ordering of exceptions for Array store" <System.Data.SqlTypes.SqlChars>
+; V06 tmp3 [V06,T04] ( 3, 2.50) ref -> rdi class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.Data.SqlTypes.SqlChars[]>
+; V07 tmp4 [V07,T06] ( 2, 2 ) ref -> rsi class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.Data.SqlTypes.SqlChars>
+;* V08 tmp5 [V08 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Data.SqlTypes.SqlChars>
+; V09 tmp6 [V09 ] ( 11, 5.50) struct (48) [rbp-0x48] do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <System.Data.SqlTypes.SqlChars>
+; V10 rat0 [V10,T05] ( 3, 2 ) ref -> rsi "replacement local"
+; V11 rat1 [V11,T07] ( 3, 1 ) long -> rax "CSE for expectedClsNode"
;
-; Lcl frame size = 8
+; Lcl frame size = 56
G_M46868_IG01:
push rbp
push r15
push r14
push rbx
- push rax
- lea rbp, [rsp+0x20]
+ sub rsp, 56
+ lea rbp, [rsp+0x50]
+ xor eax, eax
+ mov qword ptr [rbp-0x48], rax
+ vxorps xmm8, xmm8, xmm8
+ vmovdqu ymmword ptr [rbp-0x40], ymm8
+ mov qword ptr [rbp-0x20], rax
mov r14, rdi
mov ebx, esi
mov r15, rdx
- ;; size=20 bbWeight=1 PerfScore 6.25
+ ;; size=43 bbWeight=1 PerfScore 10.08
G_M46868_IG02:
mov rdi, 0xD1FFAB1E ; global ptr
test byte ptr [rdi], 1
- je G_M46868_IG13
+ je G_M46868_IG12
;; size=19 bbWeight=1 PerfScore 4.25
G_M46868_IG03:
mov rdi, 0xD1FFAB1E ; data for System.DBNull:Value
cmp r15, gword ptr [rdi]
je SHORT G_M46868_IG05
;; size=15 bbWeight=1 PerfScore 4.25
G_M46868_IG04:
test r15, r15
- jne SHORT G_M46868_IG11
+ jne SHORT G_M46868_IG07
;; size=5 bbWeight=0.50 PerfScore 0.62
G_M46868_IG05:
- mov r15, gword ptr [r14+0x40]
- mov rdi, 0xD1FFAB1E ; System.Data.SqlTypes.SqlChars
- call CORINFO_HELP_NEWSFAST
- xor rdi, rdi
- mov gword ptr [rax+0x08], rdi
- ;; size=25 bbWeight=0.50 PerfScore 2.25
+ mov rax, gword ptr [r14+0x40]
+ mov rcx, 0xD1FFAB1E ; System.Data.SqlTypes.SqlChars
+ mov qword ptr [rbp-0x48], rcx
+ xor rcx, rcx
+ mov gword ptr [rbp-0x40], rcx
+ ;; size=24 bbWeight=0.50 PerfScore 2.25
G_M46868_IG06:
- mov gword ptr [rax+0x10], rdi
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ mov gword ptr [rbp-0x38], rcx
+ cmp gword ptr [rbp-0x40], 0
+ jne SHORT G_M46868_IG09
+ xor ecx, ecx
+ mov dword ptr [rbp-0x20], ecx
+ mov qword ptr [rbp-0x28], -1
+ jmp SHORT G_M46868_IG10
+ ;; size=26 bbWeight=0.50 PerfScore 4.12
G_M46868_IG07:
- mov dword ptr [rax+0x28], edi
- mov qword ptr [rax+0x20], -1
- ;; size=11 bbWeight=0.50 PerfScore 1.00
+ mov rdi, gword ptr [r14+0x40]
+ mov rsi, r15
+ mov rax, 0xD1FFAB1E ; System.Data.SqlTypes.SqlChars
+ cmp qword ptr [rsi], rax
+ jne SHORT G_M46868_IG13
+ ;; size=22 bbWeight=0.25 PerfScore 1.62
G_M46868_IG08:
- mov gword ptr [rax+0x18], rdi
- cmp ebx, dword ptr [r15+0x08]
- jae SHORT G_M46868_IG15
- mov edi, ebx
- lea rdi, bword ptr [r15+8*rdi+0x10]
- mov rsi, rax
+ cmp ebx, dword ptr [rdi+0x08]
+ jae SHORT G_M46868_IG14
+ mov eax, ebx
+ lea rdi, bword ptr [rdi+8*rax+0x10]
call CORINFO_HELP_ASSIGN_REF
- ;; size=25 bbWeight=0.50 PerfScore 3.75
+ jmp SHORT G_M46868_IG11
+ ;; size=19 bbWeight=0.50 PerfScore 4.12
G_M46868_IG09:
- nop
- ;; size=1 bbWeight=1 PerfScore 0.25
+ mov dword ptr [rbp-0x20], 1
+ mov rcx, gword ptr [rbp-0x40]
+ mov ecx, dword ptr [rcx+0x08]
+ mov qword ptr [rbp-0x28], rcx
+ ;; size=18 bbWeight=0.50 PerfScore 2.50
G_M46868_IG10:
- add rsp, 8
+ xor rcx, rcx
+ mov gword ptr [rbp-0x30], rcx
+ cmp ebx, dword ptr [rax+0x08]
+ jae SHORT G_M46868_IG14
+ mov ecx, ebx
+ lea rdx, [rbp-0x48]
+ mov gword ptr [rax+8*rcx+0x10], rdx
+ ;; size=22 bbWeight=0.50 PerfScore 3.50
+G_M46868_IG11:
+ add rsp, 56
pop rbx
pop r14
pop r15
pop rbp
ret
;; size=11 bbWeight=1 PerfScore 3.25
-G_M46868_IG11:
- mov rdi, gword ptr [r14+0x40]
- mov rsi, r15
- mov rax, 0xD1FFAB1E ; System.Data.SqlTypes.SqlChars
- cmp qword ptr [rsi], rax
- jne SHORT G_M46868_IG14
- ;; size=22 bbWeight=0.25 PerfScore 1.62
G_M46868_IG12:
- cmp ebx, dword ptr [rdi+0x08]
- jae SHORT G_M46868_IG15
- mov eax, ebx
- lea rdi, bword ptr [rdi+8*rax+0x10]
- call CORINFO_HELP_ASSIGN_REF
- jmp SHORT G_M46868_IG09
- ;; size=19 bbWeight=0.50 PerfScore 4.12
-G_M46868_IG13:
mov rdi, 0xD1FFAB1E ; System.DBNull
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_GET_GCSTATIC_BASE
call [rax]CORINFO_HELP_GET_GCSTATIC_BASE
jmp G_M46868_IG03
;; size=27 bbWeight=0 PerfScore 0.00
-G_M46868_IG14:
+G_M46868_IG13:
mov rsi, r15
mov rdi, rax
mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS
call [rax]CORINFO_HELP_CHKCASTCLASS
int3
;; size=19 bbWeight=0 PerfScore 0.00
-G_M46868_IG15:
+G_M46868_IG14:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 229, prolog size 12, PerfScore 32.12, instruction count 61, allocated bytes for code 229 (MethodHash=900c48eb) for method System.Data.Common.SqlCharsStorage:Set(int,System.Object):this (FullOpts)
+; Total bytes of code 276, prolog size 35, PerfScore 40.58, instruction count 73, allocated bytes for code 276 (MethodHash=900c48eb) for method System.Data.Common.SqlCharsStorage:Set(int,System.Object):this (FullOpts)
; ============================================================ 7 (7.61 % of base) - System.Data.ExpressionParser:StartScan():this ; Assembly listing for method System.Data.ExpressionParser:StartScan():this (FullOpts)
; Emitting BLENDED_CODE for X64 with AVX512 - Unix
; FullOpts code
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
; V00 this [V00,T00] ( 8, 8 ) ref -> rdi this class-hnd single-def <System.Data.ExpressionParser>
-; V01 loc0 [V01,T03] ( 4, 4 ) int -> r15
+; V01 loc0 [V01,T02] ( 4, 4 ) int -> rcx
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> rbx class-hnd exact single-def "impAppendStmt" <System.Data.OperatorInfo[]>
-; V04 tmp2 [V04,T01] ( 4, 8 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" <System.Data.OperatorInfo>
+; V03 tmp1 [V03,T01] ( 3, 6 ) long -> rax class-hnd exact "impAppendStmt" <System.Data.OperatorInfo[]>
+;* V04 tmp2 [V04 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" <System.Data.OperatorInfo>
+; V05 tmp3 [V05 ] ( 6, 6 ) struct (24) [rsp+0x00] do-not-enreg[XSF] addr-exposed "stack allocated ref class temp" <System.Data.OperatorInfo>
;
-; Lcl frame size = 8
+; Lcl frame size = 24
G_M54786_IG01:
- push r15
- push rbx
- push rax
- ;; size=4 bbWeight=1 PerfScore 3.00
+ sub rsp, 24
+ ;; size=4 bbWeight=1 PerfScore 0.25
G_M54786_IG02:
xor eax, eax
mov dword ptr [rdi+0x3C], eax
;; size=5 bbWeight=1 PerfScore 1.25
G_M54786_IG03:
mov qword ptr [rdi+0x30], rax
;; size=4 bbWeight=1 PerfScore 1.00
G_M54786_IG04:
mov dword ptr [rdi+0x40], eax
- mov rbx, gword ptr [rdi+0x10]
- mov r15d, dword ptr [rdi+0x40]
- lea eax, [r15+0x01]
- mov dword ptr [rdi+0x40], eax
- mov rdi, 0xD1FFAB1E ; System.Data.OperatorInfo
- call CORINFO_HELP_NEWSFAST
- xor edi, edi
- mov qword ptr [rax+0x08], rdi
- ;; size=39 bbWeight=1 PerfScore 9.00
+ mov rax, gword ptr [rdi+0x10]
+ mov ecx, dword ptr [rdi+0x40]
+ lea edx, [rcx+0x01]
+ mov dword ptr [rdi+0x40], edx
+ vxorps xmm0, xmm0, xmm0
+ vmovdqu xmmword ptr [rsp], xmm0
+ vmovdqu xmmword ptr [rsp+0x04], xmm0
+ mov rdx, 0xD1FFAB1E ; System.Data.OperatorInfo
+ mov qword ptr [rsp], rdx
+ xor edx, edx
+ mov dword ptr [rsp+0x08], edx
+ ;; size=51 bbWeight=1 PerfScore 11.33
G_M54786_IG05:
- mov dword ptr [rax+0x10], edi
- cmp r15d, dword ptr [rbx+0x08]
- jae SHORT G_M54786_IG07
- mov edi, r15d
- lea rdi, bword ptr [rbx+8*rdi+0x10]
- mov rsi, rax
- call CORINFO_HELP_ASSIGN_REF
- nop
- ;; size=26 bbWeight=1 PerfScore 7.75
+ mov dword ptr [rsp+0x0C], edx
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M54786_IG06:
- add rsp, 8
- pop rbx
- pop r15
- ret
- ;; size=8 bbWeight=1 PerfScore 2.25
+ mov dword ptr [rsp+0x10], edx
+ cmp ecx, dword ptr [rax+0x08]
+ jae SHORT G_M54786_IG08
+ mov ecx, ecx
+ lea rdx, [rsp]
+ mov gword ptr [rax+8*rcx+0x10], rdx
+ ;; size=20 bbWeight=1 PerfScore 6.75
G_M54786_IG07:
+ add rsp, 24
+ ret
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M54786_IG08:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 92, prolog size 4, PerfScore 24.25, instruction count 29, allocated bytes for code 92 (MethodHash=2c2a29fd) for method System.Data.ExpressionParser:StartScan():this (FullOpts)
+; Total bytes of code 99, prolog size 4, PerfScore 22.83, instruction count 27, allocated bytes for code 99 (MethodHash=2c2a29fd) for method System.Data.ExpressionParser:StartScan():this (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/5ed402c680a86a4da29103d3dad1bc92 |
Top method improvements-205 (-10.03 % of base) - System.Data.Odbc.OdbcDataReader:RetrieveKeyInfoFromStatistics(System.Data.Odbc.OdbcDataReader+QualifiedTableName,ubyte):int:this ; Assembly listing for method System.Data.Odbc.OdbcDataReader:RetrieveKeyInfoFromStatistics(System.Data.Odbc.OdbcDataReader+QualifiedTableName,ubyte):int: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; 61 single block inlinees; 10 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T09] ( 14, 28.29) ref -> rbx this class-hnd single-def <System.Data.Odbc.OdbcDataReader>
-; V01 arg1 [V01,T12] ( 9, 24 ) ref -> r15 class-hnd single-def <System.Data.Odbc.OdbcDataReader+QualifiedTableName>
-; V02 arg2 [V02,T39] ( 3, 3 ) ubyte -> r14 single-def
+; V00 this [V00,T06] ( 13, 32 ) ref -> rbx this class-hnd single-def <System.Data.Odbc.OdbcDataReader>
+; V01 arg1 [V01,T10] ( 8, 24 ) ref -> r15 class-hnd single-def <System.Data.Odbc.OdbcDataReader+QualifiedTableName>
+; V02 arg2 [V02,T33] ( 3, 3 ) ubyte -> rdx single-def
;* V03 loc0 [V03 ] ( 0, 0 ) short -> zero-ref
-; V04 loc1 [V04,T17] ( 6, 23 ) ref -> r13 class-hnd <System.String>
-; V05 loc2 [V05,T13] ( 6, 26 ) ref -> r14 class-hnd exact <System.String>
-; V06 loc3 [V06,T14] ( 6, 25 ) ref -> registers class-hnd <System.String>
-; V07 loc4 [V07,T03] ( 7, 73 ) ref -> [rbp-0x88] class-hnd exact spill-single-def <int[]>
-; V08 loc5 [V08,T04] ( 7, 69.29) ref -> [rbp-0x90] class-hnd exact spill-single-def <int[]>
-; V09 loc6 [V09,T07] ( 20, 45.72) int -> [rbp-0x2C]
-; V10 loc7 [V10,T06] ( 13, 52.50) int -> [rbp-0x30]
-; V11 loc8 [V11,T10] ( 6, 29.50) ubyte -> [rbp-0x34]
-; V12 loc9 [V12,T08] ( 8, 44 ) int -> [rbp-0x38]
-; V13 loc10 [V13,T26] ( 6, 12 ) int -> rdx
-; V14 loc11 [V14,T31] ( 3, 8 ) long -> [rbp-0x40] spill-single-def
-; V15 loc12 [V15,T32] ( 3, 8 ) long -> r14
-; V16 loc13 [V16,T29] ( 6, 9.50) int -> [rbp-0x44]
+; V04 loc1 [V04,T16] ( 5, 23 ) ref -> r14 class-hnd <System.String>
+; V05 loc2 [V05,T11] ( 6, 26 ) ref -> [rbp-0x130] class-hnd exact spill-single-def <System.String>
+; V06 loc3 [V06,T12] ( 6, 25 ) ref -> [rbp-0x138] class-hnd <System.String>
+;* V07 loc4 [V07 ] ( 0, 0 ) long -> zero-ref class-hnd exact <int[]>
+;* V08 loc5 [V08 ] ( 0, 0 ) long -> zero-ref class-hnd exact <int[]>
+; V09 loc6 [V09,T03] ( 14,108 ) int -> r12
+; V10 loc7 [V10,T04] ( 13, 52.50) int -> [rbp-0x2C]
+; V11 loc8 [V11,T07] ( 6, 29.50) ubyte -> [rbp-0x30]
+; V12 loc9 [V12,T05] ( 8, 44 ) int -> [rbp-0x34]
+; V13 loc10 [V13,T22] ( 3, 12 ) int -> rdi
+; V14 loc11 [V14,T25] ( 3, 8 ) long -> [rbp-0x40] spill-single-def
+; V15 loc12 [V15,T26] ( 3, 8 ) long -> [rbp-0x48] spill-single-def
+; V16 loc13 [V16,T23] ( 4, 9.50) int -> [rbp-0x4C]
;* V17 loc14 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.String>
-; V18 loc15 [V18,T18] ( 14, 20.50) ref -> [rbp-0x98] class-hnd exact EH-live spill-single-def <System.Data.Odbc.CNativeBuffer>
-; V19 loc16 [V19 ] ( 4, 1.50) ubyte -> [rbp-0x50] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V18 loc15 [V18,T17] ( 14, 20.50) ref -> [rbp-0x140] class-hnd exact EH-live spill-single-def <System.Data.Odbc.CNativeBuffer>
+; V19 loc16 [V19 ] ( 4, 1.50) ubyte -> [rbp-0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op
;* V20 loc17 [V20 ] ( 0, 0 ) struct (16) zero-ref <System.Runtime.InteropServices.HandleRef>
;* V21 loc18 [V21 ] ( 0, 0 ) struct (16) zero-ref <System.Runtime.InteropServices.HandleRef>
;* V22 loc19 [V22 ] ( 0, 0 ) struct (16) zero-ref <System.Runtime.InteropServices.HandleRef>
;* V23 loc20 [V23 ] ( 0, 0 ) long -> zero-ref single-def
;* V24 loc21 [V24 ] ( 0, 0 ) long -> zero-ref single-def
;* V25 loc22 [V25 ] ( 0, 0 ) long -> zero-ref single-def
;* V26 loc23 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Runtime.InteropServices.HandleRef>
-; V27 loc24 [V27,T28] ( 7, 11.84) int -> rcx
-; V28 loc25 [V28,T59] ( 7, 0.74) int -> rdi
-; V29 loc26 [V29,T60] ( 6, 0.70) int -> r14
-; V30 loc27 [V30,T20] ( 12, 20 ) ref -> registers class-hnd <System.Data.Odbc.OdbcDataReader+MetaData>
+; V27 loc24 [V27,T00] ( 7,392 ) int -> r8
+;* V28 loc25 [V28,T55] ( 0, 0 ) int -> zero-ref
+;* V29 loc26 [V29,T56] ( 0, 0 ) int -> zero-ref
+; V30 loc27 [V30,T19] ( 6, 20 ) ref -> rcx class-hnd <System.Data.Odbc.OdbcDataReader+MetaData>
; V31 OutArgs [V31 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V32 tmp1 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewArr temp" <int[]>
-;* V33 tmp2 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewArr temp" <int[]>
+;* V32 tmp1 [V32 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewArr temp" <int[]>
+;* V33 tmp2 [V33 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewArr temp" <int[]>
;* V34 tmp3 [V34 ] ( 0, 0 ) int -> zero-ref "dup spill"
;* V35 tmp4 [V35 ] ( 0, 0 ) int -> zero-ref "impSpillLclRefs"
-; V36 tmp5 [V36,T01] ( 4,256 ) int -> rdi "Strict ordering of exceptions for Array store"
-; V37 tmp6 [V37,T27] ( 3, 12 ) int -> rcx "impSpillLclRefs"
-; V38 tmp7 [V38,T22] ( 4, 16 ) int -> rax "Strict ordering of exceptions for Array store"
-; V39 tmp8 [V39,T47] ( 3, 2 ) ref -> rcx class-hnd "Inline return value spill temp" <System.String>
+; V36 tmp5 [V36,T01] ( 2,256 ) int -> rdx "Strict ordering of exceptions for Array store"
+; V37 tmp6 [V37,T20] ( 4, 16 ) int -> rcx "impSpillLclRefs"
+; V38 tmp7 [V38,T21] ( 2, 16 ) int -> rsi "Strict ordering of exceptions for Array store"
+; V39 tmp8 [V39,T41] ( 3, 2 ) ref -> rcx class-hnd "Inline return value spill temp" <System.String>
;* V40 tmp9 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Data.Odbc.CMDWrapper>
-; V41 tmp10 [V41,T38] ( 3, 6 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Odbc.OdbcStatementHandle>
-; V42 tmp11 [V42,T49] ( 2, 1 ) long -> rax single-def "Inline stloc first use temp"
+; V41 tmp10 [V41,T32] ( 3, 6 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Odbc.OdbcStatementHandle>
+; V42 tmp11 [V42,T43] ( 2, 1 ) long -> rcx single-def "Inline stloc first use temp"
;* V43 tmp12 [V43 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.HandleRef>
;* V44 tmp13 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V45 tmp14 [V45,T50] ( 2, 1 ) long -> r8 single-def "Inline stloc first use temp"
+; V45 tmp14 [V45,T44] ( 2, 1 ) long -> r9 single-def "Inline stloc first use temp"
;* V46 tmp15 [V46 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.HandleRef>
;* V47 tmp16 [V47 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V48 tmp17 [V48,T51] ( 2, 1 ) long -> r9 single-def "Inline stloc first use temp"
+; V48 tmp17 [V48,T45] ( 2, 1 ) long -> r10 single-def "Inline stloc first use temp"
;* V49 tmp18 [V49 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.HandleRef>
;* V50 tmp19 [V50 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V51 tmp20 [V51,T52] ( 2, 1 ) long -> [rbp-0x58] spill-single-def "Inline stloc first use temp"
+; V51 tmp20 [V51,T46] ( 2, 1 ) long -> [rbp-0x60] spill-single-def "Inline stloc first use temp"
;* V52 tmp21 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.HandleRef>
;* V53 tmp22 [V53 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V54 tmp23 [V54,T53] ( 2, 1 ) long -> [rbp-0x60] spill-single-def "Inline stloc first use temp"
+; V54 tmp23 [V54,T47] ( 2, 1 ) long -> [rbp-0x68] spill-single-def "Inline stloc first use temp"
;* V55 tmp24 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.HandleRef>
;* V56 tmp25 [V56 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V57 tmp26 [V57,T54] ( 2, 1 ) long -> [rbp-0x68] spill-single-def "Inline stloc first use temp"
+; V57 tmp26 [V57,T48] ( 2, 1 ) long -> [rbp-0x70] spill-single-def "Inline stloc first use temp"
;* V58 tmp27 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.InteropServices.HandleRef>
;* V59 tmp28 [V59 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V60 tmp29 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Data.Odbc.CMDWrapper>
-; V61 tmp30 [V61,T44] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Odbc.OdbcStatementHandle>
+; V61 tmp30 [V61,T38] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Odbc.OdbcStatementHandle>
;* V62 tmp31 [V62 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Data.Odbc.CMDWrapper>
-; V63 tmp32 [V63,T45] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Odbc.OdbcStatementHandle>
+; V63 tmp32 [V63,T39] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Odbc.OdbcStatementHandle>
;* V64 tmp33 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Data.Odbc.CMDWrapper>
-; V65 tmp34 [V65,T46] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Odbc.OdbcStatementHandle>
+; V65 tmp34 [V65,T40] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Data.Odbc.OdbcStatementHandle>
;* V66 tmp35 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V67 tmp36 [V67,T48] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V68 tmp37 [V68,T41] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
-; V69 tmp38 [V69,T33] ( 2, 8 ) byref -> rdi "impAppendStmt"
+;* V67 tmp36 [V67,T42] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V68 tmp37 [V68,T35] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
+; V69 tmp38 [V69,T27] ( 2, 8 ) byref -> rdi "impAppendStmt"
;* V70 tmp39 [V70 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Data.Odbc.CMDWrapper>
-; V71 tmp40 [V71,T11] ( 6, 27 ) ref -> rdi class-hnd exact "Inlining Arg" <System.Data.Odbc.OdbcStatementHandle>
-;* V72 tmp41 [V72 ] ( 0, 0 ) ref -> zero-ref single-def "field V20._wrapper (fldOffset=0x0)" P-INDEP
-;* V73 tmp42 [V73 ] ( 0, 0 ) long -> zero-ref single-def "field V20._handle (fldOffset=0x8)" P-INDEP
-;* V74 tmp43 [V74 ] ( 0, 0 ) ref -> zero-ref single-def "field V21._wrapper (fldOffset=0x0)" P-INDEP
-;* V75 tmp44 [V75 ] ( 0, 0 ) long -> zero-ref single-def "field V21._handle (fldOffset=0x8)" P-INDEP
-;* V76 tmp45 [V76 ] ( 0, 0 ) ref -> zero-ref single-def "field V22._wrapper (fldOffset=0x0)" P-INDEP
-;* V77 tmp46 [V77 ] ( 0, 0 ) long -> zero-ref single-def "field V22._handle (fldOffset=0x8)" P-INDEP
-;* V78 tmp47 [V78 ] ( 0, 0 ) ref -> zero-ref "field V26._wrapper (fldOffset=0x0)" P-INDEP
-;* V79 tmp48 [V79 ] ( 0, 0 ) long -> zero-ref "field V26._handle (fldOffset=0x8)" P-INDEP
-; V80 tmp49 [V80,T40] ( 6, 3 ) ref -> [rbp-0xA0] spill-single-def "field V43._wrapper (fldOffset=0x0)" P-INDEP
-; V81 tmp50 [V81,T55] ( 2, 1 ) long -> [rbp-0x70] spill-single-def "field V43._handle (fldOffset=0x8)" P-INDEP
-;* V82 tmp51 [V82,T61] ( 0, 0 ) ref -> zero-ref single-def "field V46._wrapper (fldOffset=0x0)" P-INDEP
-; V83 tmp52 [V83,T56] ( 2, 1 ) long -> [rbp-0x78] spill-single-def "field V46._handle (fldOffset=0x8)" P-INDEP
-;* V84 tmp53 [V84,T62] ( 0, 0 ) ref -> zero-ref single-def "field V49._wrapper (fldOffset=0x0)" P-INDEP
-; V85 tmp54 [V85,T57] ( 2, 1 ) long -> [rbp-0x80] spill-single-def "field V49._handle (fldOffset=0x8)" P-INDEP
-;* V86 tmp55 [V86 ] ( 0, 0 ) ref -> zero-ref single-def "field V52._wrapper (fldOffset=0x0)" P-INDEP
-;* V87 tmp56 [V87 ] ( 0, 0 ) long -> zero-ref single-def "field V52._handle (fldOffset=0x8)" P-INDEP
-;* V88 tmp57 [V88 ] ( 0, 0 ) ref -> zero-ref single-def "field V55._wrapper (fldOffset=0x0)" P-INDEP
-;* V89 tmp58 [V89 ] ( 0, 0 ) long -> zero-ref single-def "field V55._handle (fldOffset=0x8)" P-INDEP
-;* V90 tmp59 [V90 ] ( 0, 0 ) ref -> zero-ref single-def "field V58._wrapper (fldOffset=0x0)" P-INDEP
-;* V91 tmp60 [V91 ] ( 0, 0 ) long -> zero-ref single-def "field V58._handle (fldOffset=0x8)" P-INDEP
-; V92 tmp61 [V92,T15] ( 6, 24 ) ref -> r9 "arr expr"
-;* V93 tmp62 [V93,T34] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V94 tmp63 [V94,T35] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V95 tmp64 [V95,T36] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V96 tmp65 [V96,T37] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V97 PSPSym [V97,T58] ( 1, 1 ) long -> [rbp-0xC8] do-not-enreg[V] "PSPSym"
-; V98 cse0 [V98,T16] ( 6, 23.76) ref -> [rbp-0xA8] spill-single-def "CSE #15: moderate"
-; V99 cse1 [V99,T63] ( 6, 0.24) ref -> [rbp-0xB0] spill-single-def "CSE #18: conservative"
-; V100 cse2 [V100,T19] ( 4, 4.29) ref -> registers hoist multi-def "CSE #11: moderate"
-; V101 cse3 [V101,T42] ( 7, 3.50) int -> rsi "CSE #03: moderate"
-; V102 cse4 [V102,T43] ( 7, 3.50) long -> r14 "CSE #04: moderate"
-; V103 cse5 [V103,T30] ( 4, 8 ) int -> rdx "CSE #05: moderate"
-;* V104 cse6 [V104,T05] ( 0, 0 ) long -> zero-ref "CSE #07: aggressive"
-; V105 rat0 [V105,T00] ( 5,257.44) long -> rcx "Strength reduced derived IV"
-; V106 rat1 [V106,T02] ( 4,194.08) int -> rdx "Trip count IV"
-; V107 rat2 [V107,T21] ( 5, 16.09) long -> rdi "Strength reduced derived IV"
-; V108 rat3 [V108,T24] ( 4, 12.13) int -> rsi "Trip count IV"
-; V109 rat4 [V109,T23] ( 4, 12.13) byref -> [rbp-0xB8] "Strength reduced derived IV"
-; V110 rat5 [V110,T25] ( 4, 12.13) int -> r12 "Trip count IV"
+; V71 tmp40 [V71,T09] ( 6, 27 ) ref -> rdi class-hnd exact "Inlining Arg" <System.Data.Odbc.OdbcStatementHandle>
+; V72 tmp41 [V72 ] ( 9,144 ) struct (80) [rbp-0xC0] do-not-enreg[XSF] must-init addr-exposed "stack allocated array temp"
+; V73 tmp42 [V73 ] ( 8,146 ) struct (80) [rbp-0x110] do-not-enreg[XSF] must-init addr-exposed "stack allocated array temp"
+;* V74 tmp43 [V74 ] ( 0, 0 ) ref -> zero-ref single-def "field V20._wrapper (fldOffset=0x0)" P-INDEP
+;* V75 tmp44 [V75 ] ( 0, 0 ) long -> zero-ref single-def "field V20._handle (fldOffset=0x8)" P-INDEP
+;* V76 tmp45 [V76 ] ( 0, 0 ) ref -> zero-ref single-def "field V21._wrapper (fldOffset=0x0)" P-INDEP
+;* V77 tmp46 [V77 ] ( 0, 0 ) long -> zero-ref single-def "field V21._handle (fldOffset=0x8)" P-INDEP
+;* V78 tmp47 [V78 ] ( 0, 0 ) ref -> zero-ref single-def "field V22._wrapper (fldOffset=0x0)" P-INDEP
+;* V79 tmp48 [V79 ] ( 0, 0 ) long -> zero-ref single-def "field V22._handle (fldOffset=0x8)" P-INDEP
+;* V80 tmp49 [V80 ] ( 0, 0 ) ref -> zero-ref "field V26._wrapper (fldOffset=0x0)" P-INDEP
+;* V81 tmp50 [V81 ] ( 0, 0 ) long -> zero-ref "field V26._handle (fldOffset=0x8)" P-INDEP
+; V82 tmp51 [V82,T34] ( 6, 3 ) ref -> [rbp-0x148] spill-single-def "field V43._wrapper (fldOffset=0x0)" P-INDEP
+; V83 tmp52 [V83,T49] ( 2, 1 ) long -> [rbp-0x118] spill-single-def "field V43._handle (fldOffset=0x8)" P-INDEP
+;* V84 tmp53 [V84,T53] ( 0, 0 ) ref -> zero-ref single-def "field V46._wrapper (fldOffset=0x0)" P-INDEP
+; V85 tmp54 [V85,T50] ( 2, 1 ) long -> [rbp-0x120] spill-single-def "field V46._handle (fldOffset=0x8)" P-INDEP
+;* V86 tmp55 [V86,T54] ( 0, 0 ) ref -> zero-ref single-def "field V49._wrapper (fldOffset=0x0)" P-INDEP
+; V87 tmp56 [V87,T51] ( 2, 1 ) long -> [rbp-0x128] spill-single-def "field V49._handle (fldOffset=0x8)" P-INDEP
+;* V88 tmp57 [V88 ] ( 0, 0 ) ref -> zero-ref single-def "field V52._wrapper (fldOffset=0x0)" P-INDEP
+;* V89 tmp58 [V89 ] ( 0, 0 ) long -> zero-ref single-def "field V52._handle (fldOffset=0x8)" P-INDEP
+;* V90 tmp59 [V90 ] ( 0, 0 ) ref -> zero-ref single-def "field V55._wrapper (fldOffset=0x0)" P-INDEP
+;* V91 tmp60 [V91 ] ( 0, 0 ) long -> zero-ref single-def "field V55._handle (fldOffset=0x8)" P-INDEP
+;* V92 tmp61 [V92 ] ( 0, 0 ) ref -> zero-ref single-def "field V58._wrapper (fldOffset=0x0)" P-INDEP
+;* V93 tmp62 [V93 ] ( 0, 0 ) long -> zero-ref single-def "field V58._handle (fldOffset=0x8)" P-INDEP
+; V94 tmp63 [V94,T15] ( 3, 24 ) ref -> rsi "arr expr"
+;* V95 tmp64 [V95,T28] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V96 tmp65 [V96,T29] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V97 tmp66 [V97,T30] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V98 tmp67 [V98,T31] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V99 PSPSym [V99,T52] ( 1, 1 ) long -> [rbp-0x168] do-not-enreg[V] "PSPSym"
+; V100 cse0 [V100,T13] ( 6, 24 ) ref -> [rbp-0x150] spill-single-def "CSE #13: moderate"
+; V101 cse1 [V101,T14] ( 2, 8 ) ref -> rsi "CSE #09: moderate"
+; V102 cse2 [V102,T36] ( 7, 3.50) int -> rsi "CSE #03: conservative"
+; V103 cse3 [V103,T37] ( 7, 3.50) long -> rax "CSE #04: conservative"
+; V104 cse4 [V104,T24] ( 4, 8 ) int -> rdx "CSE #05: moderate"
+; V105 cse5 [V105,T02] ( 3,192 ) long -> rdi "CSE #07: aggressive"
+; V106 rat0 [V106,T08] ( 8, 28.50) long -> rdi "Widened IV V28"
+; V107 rat1 [V107,T18] ( 6, 20.50) long -> r13 "Widened IV V29"
+; TEMP_02 ref -> [rbp-0x158]
+; TEMP_01 long -> [rbp-0x160]
;
-; Lcl frame size = 168
+; Lcl frame size = 328
G_M30047_IG01:
push rbp
push r15
push r14
push r13
push r12
push rbx
- sub rsp, 168
- lea rbp, [rsp+0xD0]
+ sub rsp, 328
+ lea rbp, [rsp+0x170]
xor eax, eax
- mov qword ptr [rbp-0x50], rax
- mov qword ptr [rbp-0xC8], rsp
+ mov qword ptr [rbp-0x158], rax
+ vxorps xmm8, xmm8, xmm8
+ vmovdqu32 zmmword ptr [rbp-0x150], zmm8
+ vmovdqu32 zmmword ptr [rbp-0x110], zmm8
+ vmovdqu32 zmmword ptr [rbp-0xD0], zmm8
+ vmovdqu32 zmmword ptr [rbp-0x90], zmm8
+ mov qword ptr [rbp-0x168], rsp
mov rbx, rdi
mov r15, rsi
- mov r14d, edx
- ;; size=47 bbWeight=1 PerfScore 9.75
+ ;; size=92 bbWeight=1 PerfScore 17.83
G_M30047_IG02:
+ mov r14, 0xD1FFAB1E ; ''
mov r13, 0xD1FFAB1E ; ''
- mov r12, 0xD1FFAB1E ; ''
mov rdi, 0xD1FFAB1E ; int[]
- mov esi, 16
- call CORINFO_HELP_NEWARR_1_VC
- mov gword ptr [rbp-0x88], rax
- mov rdi, 0xD1FFAB1E ; int[]
- mov esi, 16
- call CORINFO_HELP_NEWARR_1_VC
- mov gword ptr [rbp-0x90], rax
+ mov qword ptr [rbp-0xC0], rdi
+ mov dword ptr [rbp-0xB8], 16
+ mov qword ptr [rbp-0x110], rdi
+ mov dword ptr [rbp-0x108], 16
+ xor r12d, r12d
+ xor eax, eax
+ mov dword ptr [rbp-0x2C], eax
xor r10d, r10d
- mov dword ptr [rbp-0x2C], r10d
+ mov dword ptr [rbp-0x30], r10d
xor r11d, r11d
- mov dword ptr [rbp-0x30], r11d
- xor r9d, r9d
- mov dword ptr [rbp-0x34], r9d
- xor r8d, r8d
- mov dword ptr [rbp-0x44], r8d
+ mov dword ptr [rbp-0x4C], r11d
cmp byte ptr [r15], r15b
- test r14b, r14b
+ test dl, dl
je SHORT G_M30047_IG04
- ;; size=110 bbWeight=1 PerfScore 14.75
+ ;; size=93 bbWeight=1 PerfScore 13.00
G_M30047_IG03:
mov rcx, gword ptr [r15+0x20]
jmp SHORT G_M30047_IG05
- ;; size=6 bbWeight=0.50 PerfScore 2.00
+ align [3 bytes for IG14]
+ ;; size=9 bbWeight=0.50 PerfScore 2.00
G_M30047_IG04:
mov rcx, gword ptr [r15+0x18]
;; size=4 bbWeight=0.50 PerfScore 1.00
G_M30047_IG05:
mov rdi, gword ptr [rbx+0x38]
mov rdi, gword ptr [rdi+0x10]
cmp byte ptr [rdi], dil
+ mov gword ptr [rbp-0x158], rcx
xor rsi, rsi
xor rdx, rdx
xor r8d, r8d
mov r9d, 1
- mov r14, 0xD1FFAB1E ; code for System.Data.Odbc.OdbcStatementHandle:Statistics(System.String,System.String,System.String,short,short):short:this
- call [r14]System.Data.Odbc.OdbcStatementHandle:Statistics(System.String,System.String,System.String,short,short):short:this
+ mov rcx, 0xD1FFAB1E ; code for System.Data.Odbc.OdbcStatementHandle:Statistics(System.String,System.String,System.String,short,short):short:this
+ mov qword ptr [rbp-0x160], rcx
+ mov rcx, gword ptr [rbp-0x158]
+ mov r11, qword ptr [rbp-0x160]
+ call [r11]System.Data.Odbc.OdbcStatementHandle:Statistics(System.String,System.String,System.String,short,short):short:this
test eax, eax
jne SHORT G_M30047_IG07
- ;; size=41 bbWeight=1 PerfScore 12.50
+ ;; size=69 bbWeight=1 PerfScore 16.50
G_M30047_IG06:
mov rdi, rbx
mov rax, 0xD1FFAB1E ; code for System.Data.Odbc.OdbcDataReader:get_Buffer():System.Data.Odbc.CNativeBuffer:this
call [rax]System.Data.Odbc.OdbcDataReader:get_Buffer():System.Data.Odbc.CNativeBuffer:this
- mov gword ptr [rbp-0x98], rax
+ mov gword ptr [rbp-0x140], rax
xor esi, esi
- mov dword ptr [rbp-0x50], esi
+ mov dword ptr [rbp-0x58], esi
jmp SHORT G_M30047_IG09
;; size=29 bbWeight=0.50 PerfScore 3.88
G_M30047_IG07:
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M30047_IG08:
- add rsp, 168
+ add rsp, 328
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.12
G_M30047_IG09:
- lea rsi, [rbp-0x50]
+ lea rsi, [rbp-0x58]
mov rdi, rax
mov rcx, 0xD1FFAB1E ; code for System.Runtime.InteropServices.SafeHandle:DangerousAddRef(byref):this
cmp dword ptr [rdi], edi
call [rcx]System.Runtime.InteropServices.SafeHandle:DangerousAddRef(byref):this
- mov rdi, gword ptr [rbp-0x98]
+ mov rdi, gword ptr [rbp-0x140]
mov esi, dword ptr [rdi+0x18]
cmp esi, 256
- jl G_M30047_IG57
- mov r14, qword ptr [rdi+0x08]
- mov rax, r14
- mov rcx, rdi
- mov gword ptr [rbp-0xA0], rcx
- mov qword ptr [rbp-0x70], rax
+ jl G_M30047_IG47
+ mov rax, qword ptr [rdi+0x08]
+ mov rcx, rax
+ mov r8, rdi
+ mov gword ptr [rbp-0x148], r8
+ mov qword ptr [rbp-0x118], rcx
cmp esi, 512
- jl G_M30047_IG57
- lea r8, [r14+0x100]
- mov qword ptr [rbp-0x78], r8
+ jl G_M30047_IG47
+ lea r9, [rax+0x100]
+ mov qword ptr [rbp-0x120], r9
cmp esi, 516
- jl G_M30047_IG57
- lea r9, [r14+0x200]
- mov qword ptr [rbp-0x80], r9
+ jl G_M30047_IG47
+ lea r10, [rax+0x200]
+ mov qword ptr [rbp-0x128], r10
cmp esi, 528
- jl G_M30047_IG57
- lea r10, [r14+0x208]
- mov qword ptr [rbp-0x58], r10
- cmp esi, 536
- jl G_M30047_IG57
- lea r11, [r14+0x210]
+ jl G_M30047_IG47
+ lea r11, [rax+0x208]
mov qword ptr [rbp-0x60], r11
+ cmp esi, 536
+ jl G_M30047_IG47
+ lea rdx, [rax+0x210]
+ mov qword ptr [rbp-0x68], rdx
cmp esi, 544
- jl G_M30047_IG57
- add r14, 536
- mov qword ptr [rbp-0x68], r14
- mov rdi, rcx
+ jl G_M30047_IG47
+ add rax, 536
+ mov qword ptr [rbp-0x70], rax
+ mov rdi, r8
mov esi, 256
xor edx, edx
- mov r14, 0xD1FFAB1E ; code for System.Data.ProviderBase.DbBuffer:WriteInt16(int,short):this
- call [r14]System.Data.ProviderBase.DbBuffer:WriteInt16(int,short):this
+ mov rax, 0xD1FFAB1E ; code for System.Data.ProviderBase.DbBuffer:WriteInt16(int,short):this
+ call [rax]System.Data.ProviderBase.DbBuffer:WriteInt16(int,short):this
mov rcx, gword ptr [rbx+0x38]
mov rdi, gword ptr [rcx+0x10]
cmp byte ptr [rdi], dil
- mov r14, qword ptr [rbp-0x60]
- mov qword ptr [rsp], r14
- mov rcx, gword ptr [rbp-0xA0]
- mov r8, qword ptr [rbp-0x78]
- ;; size=232 bbWeight=0.50 PerfScore 22.12
+ mov rcx, qword ptr [rbp-0x68]
+ mov qword ptr [rsp], rcx
+ mov rcx, gword ptr [rbp-0x148]
+ mov r8, qword ptr [rbp-0x120]
+ ;; size=242 bbWeight=0.50 PerfScore 22.12
G_M30047_IG10:
mov esi, 6
mov edx, -8
mov r9d, 256
mov rax, 0xD1FFAB1E ; code for Interop+Odbc:SQLBindCol(System.Data.Odbc.OdbcStatementHandle,ushort,short,System.Runtime.InteropServices.HandleRef,long,long):short
call [rax]Interop+Odbc:SQLBindCol(System.Data.Odbc.OdbcStatementHandle,ushort,short,System.Runtime.InteropServices.HandleRef,long,long):short
mov rcx, gword ptr [rbx+0x38]
mov rdi, gword ptr [rcx+0x10]
cmp byte ptr [rdi], dil
- mov r14, qword ptr [rbp-0x68]
- mov qword ptr [rsp], r14
- mov rcx, gword ptr [rbp-0xA0]
- mov r8, qword ptr [rbp-0x80]
+ mov rcx, qword ptr [rbp-0x70]
+ mov qword ptr [rsp], rcx
+ mov rcx, gword ptr [rbp-0x148]
+ mov r8, qword ptr [rbp-0x128]
mov esi, 8
mov edx, -15
mov r9d, 4
mov rax, 0xD1FFAB1E ; code for Interop+Odbc:SQLBindCol(System.Data.Odbc.OdbcStatementHandle,ushort,short,System.Runtime.InteropServices.HandleRef,long,long):short
call [rax]Interop+Odbc:SQLBindCol(System.Data.Odbc.OdbcStatementHandle,ushort,short,System.Runtime.InteropServices.HandleRef,long,long):short
- mov rdi, gword ptr [rbp-0xA0]
+ mov rdi, gword ptr [rbp-0x148]
mov esi, 512
xor edx, edx
mov rax, 0xD1FFAB1E ; code for System.Data.ProviderBase.DbBuffer:WriteInt16(int,short):this
call [rax]System.Data.ProviderBase.DbBuffer:WriteInt16(int,short):this
mov rcx, gword ptr [rbx+0x38]
mov rdi, gword ptr [rcx+0x10]
cmp byte ptr [rdi], dil
- mov r14, qword ptr [rbp-0x58]
- mov qword ptr [rsp], r14
- mov rcx, gword ptr [rbp-0xA0]
- mov r8, qword ptr [rbp-0x70]
+ mov rcx, qword ptr [rbp-0x60]
+ mov qword ptr [rsp], rcx
+ mov rcx, gword ptr [rbp-0x148]
+ mov r8, qword ptr [rbp-0x118]
mov esi, 9
mov edx, -8
mov r9d, 256
mov rax, 0xD1FFAB1E ; code for Interop+Odbc:SQLBindCol(System.Data.Odbc.OdbcStatementHandle,ushort,short,System.Runtime.InteropServices.HandleRef,long,long):short
call [rax]Interop+Odbc:SQLBindCol(System.Data.Odbc.OdbcStatementHandle,ushort,short,System.Runtime.InteropServices.HandleRef,long,long):short
mov rdi, gword ptr [rbx+0x38]
mov rdi, gword ptr [rdi+0x10]
cmp byte ptr [rdi], dil
mov rax, 0xD1FFAB1E ; code for Interop+Odbc:SQLFetch(System.Data.Odbc.OdbcStatementHandle):short
call [rax]Interop+Odbc:SQLFetch(System.Data.Odbc.OdbcStatementHandle):short
test eax, eax
je G_M30047_IG45
- ;; size=201 bbWeight=0.50 PerfScore 25.12
+ ;; size=207 bbWeight=0.50 PerfScore 25.12
G_M30047_IG11:
- mov r12d, dword ptr [rbp-0x2C]
+ mov r13d, dword ptr [rbp-0x2C]
;; size=4 bbWeight=0.25 PerfScore 0.25
G_M30047_IG12:
- cmp dword ptr [rbp-0x34], 0
- jne G_M30047_IG47
- mov r14d, dword ptr [rbp-0x30]
- test r14d, r14d
- je G_M30047_IG48
+ cmp dword ptr [rbp-0x30], 0
+ jne SHORT G_M30047_IG15
+ test r13d, r13d
+ je SHORT G_M30047_IG15
test r12d, r12d
je SHORT G_M30047_IG13
- cmp r12d, r14d
- jle G_M30047_IG49
- ;; size=37 bbWeight=0.50 PerfScore 3.88
+ cmp r12d, r13d
+ jle SHORT G_M30047_IG15
+ ;; size=21 bbWeight=0.50 PerfScore 3.38
G_M30047_IG13:
- mov r12d, r14d
+ mov r12d, r13d
xor edi, edi
test r12d, r12d
- jle G_M30047_IG50
- ;; size=14 bbWeight=0.50 PerfScore 0.88
+ jle SHORT G_M30047_IG15
+ ;; size=10 bbWeight=0.50 PerfScore 0.88
G_M30047_IG14:
- cmp r12d, 16
- jg G_M30047_IG51
- mov edi, 16
- mov esi, r12d
- jmp SHORT G_M30047_IG15
- align [0 bytes for IG18]
- ;; size=20 bbWeight=0.25 PerfScore 0.94
+ cmp edi, dword ptr [rbp-0xB8]
+ jae G_M30047_IG48
+ lea rsi, [rbp-0xC0]
+ mov esi, dword ptr [rsi+4*rdi+0x10]
+ cmp edi, dword ptr [rbp-0x108]
+ jae G_M30047_IG48
+ lea rax, [rbp-0x110]
+ mov dword ptr [rax+4*rdi+0x10], esi
+ inc edi
+ cmp edi, r12d
+ jl SHORT G_M30047_IG14
+ ;; size=53 bbWeight=4 PerfScore 46.00
G_M30047_IG15:
- mov r14, gword ptr [rbp-0x88]
- mov eax, dword ptr [r14+rdi]
- mov rcx, gword ptr [rbp-0x90]
- mov dword ptr [rcx+rdi], eax
- add rdi, 4
- dec esi
- jne SHORT G_M30047_IG15
- ;; size=29 bbWeight=3.96 PerfScore 25.74
-G_M30047_IG16:
test r12d, r12d
- je G_M30047_IG23
- xor r14d, r14d
+ je G_M30047_IG21
+ xor r13d, r13d
test r12d, r12d
- jle G_M30047_IG23
+ jle G_M30047_IG21
+ align [0 bytes for IG16]
;; size=21 bbWeight=0.50 PerfScore 1.38
+G_M30047_IG16:
+ cmp r13d, dword ptr [rbp-0x108]
+ jae G_M30047_IG48
+ lea rdi, [rbp-0x110]
+ mov edi, dword ptr [rdi+4*r13+0x10]
+ mov r11d, dword ptr [rbp-0x4C]
+ inc r11d
+ mov dword ptr [rbp-0x4C], r11d
+ mov rsi, gword ptr [rbx+0x20]
+ cmp edi, dword ptr [rsi+0x08]
+ jae G_M30047_IG48
+ mov rax, gword ptr [rsi+8*rdi+0x10]
+ mov gword ptr [rbp-0x150], rax
+ mov byte ptr [rax+0x3C], 1
+ mov byte ptr [rax+0x39], 0
+ mov byte ptr [rax+0x37], 1
+ mov rcx, rax
+ cmp gword ptr [rcx+0x20], 0
+ jne SHORT G_M30047_IG18
+ ;; size=83 bbWeight=4 PerfScore 96.00
G_M30047_IG17:
- cmp r12d, 16
- jg G_M30047_IG52
- mov r14, gword ptr [rbx+0x20]
- lea rax, bword ptr [rcx+0x10]
- ;; size=18 bbWeight=0.25 PerfScore 0.94
-G_M30047_IG18:
- mov bword ptr [rbp-0xB8], rax
- mov edx, dword ptr [rax]
- mov r8d, dword ptr [rbp-0x44]
- inc r8d
- mov dword ptr [rbp-0x44], r8d
- mov r9, r14
- cmp edx, dword ptr [r9+0x08]
- jae G_M30047_IG58
- mov edi, edx
- mov r10, gword ptr [r9+8*rdi+0x10]
- mov gword ptr [rbp-0xA8], r10
- mov byte ptr [r10+0x3C], 1
- mov byte ptr [r10+0x39], 0
- mov byte ptr [r10+0x37], 1
- mov r11, r10
- cmp gword ptr [r11+0x20], 0
- jne SHORT G_M30047_IG20
- ;; size=72 bbWeight=3.96 PerfScore 79.20
-G_M30047_IG19:
mov rsi, gword ptr [r15+0x18]
- lea rdi, bword ptr [r11+0x20]
+ lea rdi, bword ptr [rcx+0x20]
call CORINFO_HELP_ASSIGN_REF
- ;; size=13 bbWeight=1.98 PerfScore 6.93
+ ;; size=13 bbWeight=2 PerfScore 7.00
+G_M30047_IG18:
+ mov rax, gword ptr [rbp-0x150]
+ mov rcx, rax
+ cmp gword ptr [rcx+0x28], 0
+ jne SHORT G_M30047_IG20
+ ;; size=17 bbWeight=4 PerfScore 21.00
+G_M30047_IG19:
+ lea rdi, bword ptr [rcx+0x28]
+ mov rsi, r14
+ call CORINFO_HELP_ASSIGN_REF
+ ;; size=12 bbWeight=2 PerfScore 3.50
G_M30047_IG20:
- mov r10, gword ptr [rbp-0xA8]
- mov r11, r10
- cmp gword ptr [r11+0x28], 0
- jne SHORT G_M30047_IG22
- ;; size=17 bbWeight=3.96 PerfScore 20.79
+ inc r13d
+ cmp r13d, r12d
+ jl G_M30047_IG16
+ ;; size=12 bbWeight=4 PerfScore 6.00
G_M30047_IG21:
- lea rdi, bword ptr [r11+0x28]
- mov rsi, r13
- call CORINFO_HELP_ASSIGN_REF
- ;; size=12 bbWeight=1.98 PerfScore 3.46
-G_M30047_IG22:
- mov rax, bword ptr [rbp-0xB8]
- add rax, 4
- dec r12d
- jne G_M30047_IG18
- ;; size=20 bbWeight=3.96 PerfScore 9.90
-G_M30047_IG23:
mov rdi, gword ptr [rbx+0x38]
mov esi, 2
mov rax, 0xD1FFAB1E ; code for System.Data.Odbc.CMDWrapper:FreeKeyInfoStatementHandle(short):this
cmp dword ptr [rdi], edi
call [rax]System.Data.Odbc.CMDWrapper:FreeKeyInfoStatementHandle(short):this
- jmp G_M30047_IG59
- align [11 bytes for IG32]
- ;; size=39 bbWeight=0.50 PerfScore 5.25
-G_M30047_IG24:
+ jmp G_M30047_IG49
+ align [1 bytes for IG32]
+ ;; size=29 bbWeight=0.50 PerfScore 5.25
+G_M30047_IG22:
+ mov r14, qword ptr [rbp-0x48]
mov edx, r14d
shr edx, 31
add edx, r14d
sar edx, 1
- mov rdi, gword ptr [rbp-0x98]
+ mov rdi, gword ptr [rbp-0x140]
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Data.ProviderBase.DbBuffer:PtrToStringUni(int,int):System.String:this
call [rax]System.Data.ProviderBase.DbBuffer:PtrToStringUni(int,int):System.String:this
- mov r13, rax
- mov r14, qword ptr [rbp-0x40]
- mov edx, r14d
- shr edx, 31
- add edx, r14d
+ mov r14, rax
+ mov rdx, qword ptr [rbp-0x40]
+ mov edi, edx
+ shr edi, 31
+ add edx, edi
sar edx, 1
- mov rdi, gword ptr [rbp-0x98]
+ mov rdi, gword ptr [rbp-0x140]
mov esi, 256
mov rax, 0xD1FFAB1E ; code for System.Data.ProviderBase.DbBuffer:PtrToStringUni(int,int):System.String:this
call [rax]System.Data.ProviderBase.DbBuffer:PtrToStringUni(int,int):System.String:this
- mov r14, rax
- mov rdi, gword ptr [rbp-0x98]
+ mov gword ptr [rbp-0x130], rax
+ mov rdi, gword ptr [rbp-0x140]
mov esi, 512
- mov rax, 0xD1FFAB1E ; code for System.Data.ProviderBase.DbBuffer:ReadInt16(int):short:this
- call [rax]System.Data.ProviderBase.DbBuffer:ReadInt16(int):short:this
- mov dword ptr [rbp-0x38], eax
- test r12, r12
- je SHORT G_M30047_IG26
- mov edx, dword ptr [r12+0x08]
- test edx, edx
- je SHORT G_M30047_IG26
- cmp r12, r14
- je SHORT G_M30047_IG25
- test r14, r14
- je SHORT G_M30047_IG26
- cmp dword ptr [r14+0x08], edx
- jne SHORT G_M30047_IG26
- lea rdi, bword ptr [r12+0x0C]
- add edx, edx
- lea rsi, bword ptr [r14+0x0C]
- mov rcx, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
- call [rcx]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
- test eax, eax
- je SHORT G_M30047_IG26
- ;; size=161 bbWeight=2 PerfScore 71.50
-G_M30047_IG25:
- mov ecx, dword ptr [rbp-0x30]
- lea edx, [rcx+0x01]
- cmp dword ptr [rbp-0x38], edx
- mov dword ptr [rbp-0x30], ecx
- je G_M30047_IG36
- ;; size=18 bbWeight=2 PerfScore 11.00
-G_M30047_IG26:
- cmp dword ptr [rbp-0x34], 0
+ mov rcx, 0xD1FFAB1E ; code for System.Data.ProviderBase.DbBuffer:ReadInt16(int):short:this
+ call [rcx]System.Data.ProviderBase.DbBuffer:ReadInt16(int):short:this
+ mov dword ptr [rbp-0x34], eax
+ test r13, r13
je SHORT G_M30047_IG29
- ;; size=6 bbWeight=2 PerfScore 6.00
-G_M30047_IG27:
- mov r12d, dword ptr [rbp-0x2C]
- jmp SHORT G_M30047_IG33
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M30047_IG28:
- mov r12d, dword ptr [rbp-0x2C]
- jmp SHORT G_M30047_IG33
- ;; size=6 bbWeight=4 PerfScore 12.00
-G_M30047_IG29:
- mov ecx, dword ptr [rbp-0x30]
- test ecx, ecx
+ mov edx, dword ptr [r13+0x08]
+ test edx, edx
+ je SHORT G_M30047_IG29
+ mov rcx, gword ptr [rbp-0x130]
+ cmp r13, rcx
je SHORT G_M30047_IG28
- mov r12d, dword ptr [rbp-0x2C]
- test r12d, r12d
- je SHORT G_M30047_IG30
- cmp r12d, ecx
- jle SHORT G_M30047_IG33
- ;; size=21 bbWeight=8 PerfScore 46.00
+ test rcx, rcx
+ jne SHORT G_M30047_IG24
+ ;; size=140 bbWeight=2 PerfScore 57.50
+G_M30047_IG23:
+ jmp SHORT G_M30047_IG29
+ ;; size=2 bbWeight=1 PerfScore 2.00
+G_M30047_IG24:
+ cmp dword ptr [rcx+0x08], edx
+ je SHORT G_M30047_IG26
+ ;; size=5 bbWeight=2 PerfScore 8.00
+G_M30047_IG25:
+ jmp SHORT G_M30047_IG29
+ ;; size=2 bbWeight=1 PerfScore 2.00
+G_M30047_IG26:
+ lea rdi, bword ptr [r13+0x0C]
+ add edx, edx
+ lea rsi, bword ptr [rcx+0x0C]
+ mov r8, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
+ call [r8]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
+ test eax, eax
+ je SHORT G_M30047_IG29
+ ;; size=27 bbWeight=2 PerfScore 11.50
+G_M30047_IG27:
+ mov rcx, gword ptr [rbp-0x130]
+ ;; size=7 bbWeight=1 PerfScore 1.00
+G_M30047_IG28:
+ mov r8d, dword ptr [rbp-0x2C]
+ lea edx, [r8+0x01]
+ cmp dword ptr [rbp-0x34], edx
+ mov dword ptr [rbp-0x2C], r8d
+ je G_M30047_IG36
+ ;; size=21 bbWeight=2 PerfScore 11.00
+G_M30047_IG29:
+ cmp dword ptr [rbp-0x30], 0
+ jne SHORT G_M30047_IG33
+ ;; size=6 bbWeight=2 PerfScore 6.00
G_M30047_IG30:
- mov r12d, ecx
- xor ecx, ecx
+ mov r8d, dword ptr [rbp-0x2C]
+ test r8d, r8d
+ je SHORT G_M30047_IG33
+ test r12d, r12d
+ je SHORT G_M30047_IG31
+ cmp r12d, r8d
+ jle SHORT G_M30047_IG33
+ ;; size=19 bbWeight=8 PerfScore 38.00
+G_M30047_IG31:
+ mov r12d, r8d
+ xor r8d, r8d
test r12d, r12d
jle SHORT G_M30047_IG33
- ;; size=10 bbWeight=8 PerfScore 14.00
-G_M30047_IG31:
- cmp r12d, 16
- jg SHORT G_M30047_IG35
- mov ecx, 16
- mov edx, r12d
- ;; size=14 bbWeight=4 PerfScore 7.00
+ ;; size=11 bbWeight=8 PerfScore 14.00
G_M30047_IG32:
- mov r8, gword ptr [rbp-0x88]
- mov edi, dword ptr [r8+rcx]
- mov r9, gword ptr [rbp-0x90]
- mov dword ptr [r9+rcx], edi
- add rcx, 4
- dec edx
- jne SHORT G_M30047_IG32
- ;; size=30 bbWeight=63.36 PerfScore 411.84
+ cmp r8d, dword ptr [rbp-0xB8]
+ jae G_M30047_IG48
+ lea rdx, [rbp-0xC0]
+ mov edi, r8d
+ mov edx, dword ptr [rdx+4*rdi+0x10]
+ cmp r8d, dword ptr [rbp-0x108]
+ jae G_M30047_IG48
+ lea rsi, [rbp-0x110]
+ mov dword ptr [rsi+4*rdi+0x10], edx
+ inc r8d
+ cmp r8d, r12d
+ jl SHORT G_M30047_IG32
+ ;; size=59 bbWeight=64 PerfScore 752.00
G_M30047_IG33:
- xor ecx, ecx
- mov dword ptr [rbp-0x30], ecx
- xor edx, edx
- mov dword ptr [rbp-0x34], edx
+ xor r8d, r8d
+ xor r13d, r13d
+ mov rcx, gword ptr [rbp-0x130]
+ mov gword ptr [rbp-0x138], rcx
+ ;; size=20 bbWeight=16 PerfScore 40.00
+G_M30047_IG34:
+ mov dword ptr [rbp-0x30], r8d
mov rdx, gword ptr [r15+0x18]
mov rdi, rbx
- mov rsi, r13
+ mov rsi, r14
mov rax, 0xD1FFAB1E ; code for System.Data.Odbc.OdbcDataReader:GetOrdinalFromBaseColName(System.String,System.String):int:this
call [rax]System.Data.Odbc.OdbcDataReader:GetOrdinalFromBaseColName(System.String,System.String):int:this
cmp eax, -1
je G_M30047_IG42
- ;; size=41 bbWeight=16 PerfScore 152.00
-G_M30047_IG34:
- mov dword ptr [rbp-0x30], 1
- mov r8, gword ptr [rbp-0x88]
- mov dword ptr [r8+0x10], eax
- jmp G_M30047_IG43
- ;; size=23 bbWeight=2 PerfScore 10.00
+ ;; size=35 bbWeight=16 PerfScore 128.00
G_M30047_IG35:
- cmp ecx, 16
- jae G_M30047_IG58
- mov edi, ecx
- mov r8, gword ptr [rbp-0x88]
- mov edi, dword ptr [r8+4*rdi+0x10]
- mov edx, ecx
- mov r9, gword ptr [rbp-0x90]
- mov dword ptr [r9+4*rdx+0x10], edi
- inc ecx
- cmp ecx, r12d
- jl SHORT G_M30047_IG35
- jmp SHORT G_M30047_IG33
- ;; size=46 bbWeight=0.64 PerfScore 6.56
+ mov r13d, 1
+ mov dword ptr [rbp-0xB0], eax
+ jmp G_M30047_IG43
+ ;; size=17 bbWeight=2 PerfScore 6.50
G_M30047_IG36:
- mov r14d, dword ptr [rbp-0x34]
- test r14d, r14d
+ cmp dword ptr [rbp-0x30], 0
je SHORT G_M30047_IG38
- ;; size=9 bbWeight=2 PerfScore 4.50
+ ;; size=6 bbWeight=2 PerfScore 6.00
G_M30047_IG37:
- mov dword ptr [rbp-0x34], r14d
- mov r14, r12
- mov r12d, dword ptr [rbp-0x2C]
+ mov gword ptr [rbp-0x138], r13
+ mov r13d, dword ptr [rbp-0x2C]
jmp SHORT G_M30047_IG43
- ;; size=13 bbWeight=1 PerfScore 4.25
+ ;; size=13 bbWeight=1 PerfScore 4.00
G_M30047_IG38:
mov rdx, gword ptr [r15+0x18]
mov rdi, rbx
- mov rsi, r13
+ mov rsi, r14
mov rax, 0xD1FFAB1E ; code for System.Data.Odbc.OdbcDataReader:GetOrdinalFromBaseColName(System.String,System.String):int:this
call [rax]System.Data.Odbc.OdbcDataReader:GetOrdinalFromBaseColName(System.String,System.String):int:this
mov edi, eax
cmp edi, -1
je SHORT G_M30047_IG41
- mov eax, dword ptr [rbp-0x30]
+ mov eax, dword ptr [rbp-0x2C]
cmp eax, 16
jl SHORT G_M30047_IG40
;; size=37 bbWeight=2 PerfScore 19.00
G_M30047_IG39:
- mov dword ptr [rbp-0x30], eax
- mov r14, r12
- mov r12d, dword ptr [rbp-0x2C]
+ mov gword ptr [rbp-0x138], r13
+ mov r13d, eax
jmp SHORT G_M30047_IG42
- ;; size=12 bbWeight=1 PerfScore 4.25
+ ;; size=12 bbWeight=1 PerfScore 3.25
G_M30047_IG40:
mov ecx, eax
lea eax, [rcx+0x01]
- mov dword ptr [rbp-0x30], eax
- mov rdx, gword ptr [rbp-0x88]
+ cmp ecx, dword ptr [rbp-0xB8]
+ jae G_M30047_IG48
+ lea rdx, [rbp-0xC0]
mov dword ptr [rdx+4*rcx+0x10], edi
- mov dword ptr [rbp-0x34], r14d
- mov r14, r12
- mov r12d, dword ptr [rbp-0x2C]
+ mov gword ptr [rbp-0x138], r13
+ mov r13d, eax
jmp SHORT G_M30047_IG43
- ;; size=32 bbWeight=2 PerfScore 16.00
+ ;; size=40 bbWeight=2 PerfScore 17.00
G_M30047_IG41:
- mov r14, r12
- mov r12d, dword ptr [rbp-0x2C]
- ;; size=7 bbWeight=1 PerfScore 1.25
+ mov gword ptr [rbp-0x138], r13
+ mov r13d, dword ptr [rbp-0x2C]
+ ;; size=11 bbWeight=1 PerfScore 2.00
G_M30047_IG42:
- mov dword ptr [rbp-0x34], 1
+ mov dword ptr [rbp-0x30], 1
;; size=7 bbWeight=8 PerfScore 8.00
G_M30047_IG43:
mov rdi, gword ptr [rbx+0x38]
mov rdi, gword ptr [rdi+0x10]
cmp byte ptr [rdi], dil
- mov rsi, 0xD1FFAB1E ; code for Interop+Odbc:SQLFetch(System.Data.Odbc.OdbcStatementHandle):short
- call [rsi]Interop+Odbc:SQLFetch(System.Data.Odbc.OdbcStatementHandle):short
+ mov rcx, 0xD1FFAB1E ; code for Interop+Odbc:SQLFetch(System.Data.Odbc.OdbcStatementHandle):short
+ call [rcx]Interop+Odbc:SQLFetch(System.Data.Odbc.OdbcStatementHandle):short
test eax, eax
jne G_M30047_IG12
;; size=31 bbWeight=4 PerfScore 46.00
G_M30047_IG44:
- mov dword ptr [rbp-0x2C], r12d
- mov r12, r14
- ;; size=7 bbWeight=2 PerfScore 2.50
+ mov dword ptr [rbp-0x2C], r13d
+ mov r13, gword ptr [rbp-0x138]
+ ;; size=11 bbWeight=2 PerfScore 4.00
G_M30047_IG45:
- mov rdi, gword ptr [rbp-0x98]
+ mov rdi, gword ptr [rbp-0x140]
mov esi, 520
mov rax, 0xD1FFAB1E ; code for System.Data.ProviderBase.DbBuffer:ReadIntPtr(int):long:this
call [rax]System.Data.ProviderBase.DbBuffer:ReadIntPtr(int):long:this
- mov r14, rax
- mov rdi, gword ptr [rbp-0x98]
+ mov qword ptr [rbp-0x48], rax
+ mov rdi, gword ptr [rbp-0x140]
mov esi, 528
mov rax, 0xD1FFAB1E ; code for System.Data.ProviderBase.DbBuffer:ReadIntPtr(int):long:this
call [rax]System.Data.ProviderBase.DbBuffer:ReadIntPtr(int):long:this
mov qword ptr [rbp-0x40], rax
- mov rdi, gword ptr [rbp-0x98]
+ mov rdi, gword ptr [rbp-0x140]
mov esi, 256
mov rax, 0xD1FFAB1E ; code for System.Data.ProviderBase.DbBuffer:ReadInt16(int):short:this
call [rax]System.Data.ProviderBase.DbBuffer:ReadInt16(int):short:this
test eax, eax
- jne G_M30047_IG24
- ;; size=87 bbWeight=4 PerfScore 64.00
+ jne G_M30047_IG22
+ ;; size=88 bbWeight=4 PerfScore 67.00
G_M30047_IG46:
- mov r14, r12
- mov r12d, dword ptr [rbp-0x2C]
+ mov gword ptr [rbp-0x138], r13
+ mov r13d, dword ptr [rbp-0x2C]
jmp G_M30047_IG43
- ;; size=12 bbWeight=2 PerfScore 6.50
+ ;; size=16 bbWeight=2 PerfScore 8.00
G_M30047_IG47:
- mov rcx, gword ptr [rbp-0x90]
- jmp G_M30047_IG16
- ;; size=12 bbWeight=0.25 PerfScore 0.75
-G_M30047_IG48:
- mov rcx, gword ptr [rbp-0x90]
- jmp G_M30047_IG16
- ;; size=12 bbWeight=0.25 PerfScore 0.75
-G_M30047_IG49:
- mov rcx, gword ptr [rbp-0x90]
- jmp G_M30047_IG16
- ;; size=12 bbWeight=0.25 PerfScore 0.75
-G_M30047_IG50:
- mov rcx, gword ptr [rbp-0x90]
- jmp G_M30047_IG16
- ;; size=12 bbWeight=0.25 PerfScore 0.75
-G_M30047_IG51:
- cmp edi, 16
- jae G_M30047_IG58
- mov eax, edi
- mov r14, gword ptr [rbp-0x88]
- mov eax, dword ptr [r14+4*rax+0x10]
- mov esi, edi
- mov rcx, gword ptr [rbp-0x90]
- mov dword ptr [rcx+4*rsi+0x10], eax
- inc edi
- cmp edi, r12d
- jl SHORT G_M30047_IG51
- jmp G_M30047_IG16
- ;; size=48 bbWeight=0.04 PerfScore 0.41
-G_M30047_IG52:
- cmp r14d, 16
- jae G_M30047_IG58
- mov edi, r14d
- mov edx, dword ptr [rcx+4*rdi+0x10]
- mov r8d, dword ptr [rbp-0x44]
- inc r8d
- mov dword ptr [rbp-0x44], r8d
- mov rdi, gword ptr [rbx+0x20]
- mov r9, rdi
- cmp edx, dword ptr [r9+0x08]
- jae G_M30047_IG58
- mov edi, edx
- mov rax, gword ptr [r9+8*rdi+0x10]
- mov r11, rax
- mov gword ptr [rbp-0xB0], r11
- mov byte ptr [r11+0x3C], 1
- mov byte ptr [r11+0x39], 0
- mov byte ptr [r11+0x37], 1
- mov rax, r11
- cmp gword ptr [rax+0x20], 0
- jne SHORT G_M30047_IG54
- ;; size=87 bbWeight=0.04 PerfScore 0.91
-G_M30047_IG53:
- mov rsi, gword ptr [r15+0x18]
- lea rdi, bword ptr [rax+0x20]
- call CORINFO_HELP_ASSIGN_REF
- ;; size=13 bbWeight=0.02 PerfScore 0.07
-G_M30047_IG54:
- mov r11, gword ptr [rbp-0xB0]
- cmp gword ptr [r11+0x28], 0
- jne SHORT G_M30047_IG56
- ;; size=14 bbWeight=0.04 PerfScore 0.20
-G_M30047_IG55:
- lea rdi, bword ptr [r11+0x28]
- mov rsi, r13
- call CORINFO_HELP_ASSIGN_REF
- ;; size=12 bbWeight=0.02 PerfScore 0.04
-G_M30047_IG56:
- inc r14d
- cmp r14d, r12d
- mov rcx, gword ptr [rbp-0x90]
- jl G_M30047_IG52
- jmp G_M30047_IG23
- ;; size=24 bbWeight=0.04 PerfScore 0.18
-G_M30047_IG57:
mov edi, 30
mov rax, 0xD1FFAB1E ; code for System.Data.Common.ADP:InternalError(int):System.Exception
call [rax]System.Data.Common.ADP:InternalError(int):System.Exception
mov rdi, rax
call CORINFO_HELP_THROW
int3
;; size=26 bbWeight=0 PerfScore 0.00
-G_M30047_IG58:
+G_M30047_IG48:
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-G_M30047_IG59:
- cmp byte ptr [rbp-0x50], 0
- je SHORT G_M30047_IG60
- mov rdi, gword ptr [rbp-0x98]
+G_M30047_IG49:
+ cmp byte ptr [rbp-0x58], 0
+ je SHORT G_M30047_IG50
+ mov rdi, gword ptr [rbp-0x140]
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this
call [rax]System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this
;; size=27 bbWeight=0.50 PerfScore 3.75
-G_M30047_IG60:
- mov eax, dword ptr [rbp-0x44]
+G_M30047_IG50:
+ mov eax, dword ptr [rbp-0x4C]
;; size=3 bbWeight=0.50 PerfScore 0.50
-G_M30047_IG61:
- add rsp, 168
+G_M30047_IG51:
+ add rsp, 328
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=18 bbWeight=0.50 PerfScore 2.12
-G_M30047_IG62:
+G_M30047_IG52:
push rbp
push r15
push r14
push r13
push r12
push rbx
sub rsp, 24
mov rbp, qword ptr [rdi+0x08]
mov qword ptr [rsp+0x08], rbp
- lea rbp, [rbp+0xD0]
+ lea rbp, [rbp+0x170]
;; size=30 bbWeight=0 PerfScore 0.00
-G_M30047_IG63:
- cmp byte ptr [rbp-0x50], 0
- je SHORT G_M30047_IG64
- mov rdi, gword ptr [rbp-0x98]
+G_M30047_IG53:
+ cmp byte ptr [rbp-0x58], 0
+ je SHORT G_M30047_IG54
+ mov rdi, gword ptr [rbp-0x140]
cmp byte ptr [rdi], dil
xor esi, esi
mov rax, 0xD1FFAB1E ; code for System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this
call [rax]System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this
;; size=30 bbWeight=0 PerfScore 0.00
-G_M30047_IG64:
+G_M30047_IG54:
nop
;; size=1 bbWeight=0 PerfScore 0.00
-G_M30047_IG65:
+G_M30047_IG55:
add rsp, 24
pop rbx
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
;; size=15 bbWeight=0 PerfScore 0.00
-; Total bytes of code 2044, prolog size 47, PerfScore 1191.23, instruction count 495, allocated bytes for code 2044 (MethodHash=95e48aa0) for method System.Data.Odbc.OdbcDataReader:RetrieveKeyInfoFromStatistics(System.Data.Odbc.OdbcDataReader+QualifiedTableName,ubyte):int:this (FullOpts)
+; Total bytes of code 1839, prolog size 92, PerfScore 1562.46, instruction count 425, allocated bytes for code 1839 (MethodHash=95e48aa0) for method System.Data.Odbc.OdbcDataReader:RetrieveKeyInfoFromStatistics(System.Data.Odbc.OdbcDataReader+QualifiedTableName,ubyte):int:this (FullOpts)
; ============================================================ Note: some changes were skipped as they were too large to fit into a comment. Larger list of diffs: https://gist.github.com/MihuBot/7c81d96378739677d98f0c17e95f6296 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Job completed in 18 minutes 41 seconds.
dotnet/runtime#110925
Diffs
Diffs
Artifacts:
The text was updated successfully, but these errors were encountered: