Skip to content

Conversation

Ruihan-Yin
Copy link
Member

This PR enables APX feature: EVEX.ZU for SETcc instructions.

image

This allow us not to emit an extra movzx, dst, dst to zero out the upper part of the register when using SETcc.

@github-actions github-actions bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jul 3, 2025
@dotnet-policy-service dotnet-policy-service bot added the community-contribution Indicates that the PR has been added by a community member label Jul 3, 2025
@Ruihan-Yin
Copy link
Member Author

Diffs are based on 2,746,670 contexts (1,099,928 MinOpts, 1,646,742 FullOpts).

MISSED contexts: 834 (0.03%)

Base JIT options: JitBypassApxCheck=1

Diff JIT options: JitBypassApxCheck=1;EnableApxZU=1

Overall (-132,728 bytes)
Collection Base size (bytes) Diff size (bytes) PerfScore in Diffs Base Instruction Count Diff Instruction Count
aspnet.run.windows.x64.checked.mch 72,213,713 -15,054 -0.90% 16496999 -31,008(-0.71%)(-0.71%)
benchmarks.run.windows.x64.checked.mch 8,860,456 -1,811 -0.87% 2230787 -8,171(-1.39%)(-1.40%)
benchmarks.run_pgo.windows.x64.checked.mch 78,306,645 -26,777 -0.83% 18360180 -55,633(-0.78%)(-0.78%)
benchmarks.run_pgo_optrepeat.windows.x64.checked.mch 8,873,055 -1,811 -0.87% 2233570 -8,225(-1.39%)(-1.40%)
coreclr_tests.run.windows.x64.checked.mch 424,009,451 -7,678 -0.60% 87926723 -202,141(-1.29%)(-1.29%)
libraries.pmi.windows.x64.checked.mch 57,374,919 -9,123 -1.63% 14529270 -26,772(-1.16%)(-1.17%)
libraries_tests.run.windows.x64.Release.mch 319,808,597 -50,564 -0.70% 69812667 -133,449(-0.75%)(-0.76%)
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 154,516,552 -16,679 -0.67% 35658228 -66,655(-1.06%)(-1.06%)
realworld.run.windows.x64.checked.mch 11,796,060 -2,915 -0.80% 2856074 -6,830(-0.92%)(-0.93%)
smoke_tests.nativeaot.windows.x64.checked.mch 5,516,034 -316 -1.52% 1547261 -677(-1.31%)(-1.36%)
MinOpts (+9,265 bytes)
Collection Base size (bytes) Diff size (bytes) PerfScore in Diffs Base Instruction Count Diff Instruction Count
aspnet.run.windows.x64.checked.mch 32,168,380 -263 -1.06% 6835190 -7,425(-0.85%)(-0.85%)
benchmarks.run.windows.x64.checked.mch 467 +0 -0.43% 133 -1(-2.00%)(-2.00%)
benchmarks.run_pgo.windows.x64.checked.mch 14,441,360 -186 -1.05% 3221434 -8,212(-1.26%)(-1.26%)
benchmarks.run_pgo_optrepeat.windows.x64.checked.mch 467 +0 -0.43% 133 -1(-2.00%)(-2.00%)
coreclr_tests.run.windows.x64.checked.mch 287,806,235 +10,117 -0.48% 57856217 -168,505(-1.42%)(-1.42%)
libraries.pmi.windows.x64.checked.mch 112,785 +0 -0.29% 20282 -8(-0.04%)(-0.04%)
libraries_tests.run.windows.x64.Release.mch 190,608,270 -412 -0.77% 39677374 -54,529(-1.16%)(-1.16%)
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 11,159,603 +9 -0.42% 2565793 -24,853(-1.59%)(-1.59%)
FullOpts (-141,993 bytes)
Collection Base size (bytes) Diff size (bytes) PerfScore in Diffs Base Instruction Count Diff Instruction Count
aspnet.run.windows.x64.checked.mch 40,045,333 -14,791 -0.83% 9661809 -23,583(-0.67%)(-0.67%)
benchmarks.run.windows.x64.checked.mch 8,859,989 -1,811 -0.87% 2230654 -8,170(-1.39%)(-1.40%)
benchmarks.run_pgo.windows.x64.checked.mch 63,865,285 -26,591 -0.76% 15138746 -47,421(-0.73%)(-0.73%)
benchmarks.run_pgo_optrepeat.windows.x64.checked.mch 8,872,588 -1,811 -0.87% 2233437 -8,224(-1.39%)(-1.40%)
coreclr_tests.run.windows.x64.checked.mch 136,203,216 -17,795 -0.91% 30070506 -33,636(-0.89%)(-0.90%)
libraries.pmi.windows.x64.checked.mch 57,262,134 -9,123 -1.63% 14508988 -26,764(-1.17%)(-1.18%)
libraries_tests.run.windows.x64.Release.mch 129,200,327 -50,152 -0.64% 30135293 -78,920(-0.61%)(-0.61%)
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 143,356,949 -16,688 -0.77% 33092435 -41,802(-0.88%)(-0.89%)
realworld.run.windows.x64.checked.mch 11,571,181 -2,915 -0.80% 2820911 -6,830(-0.92%)(-0.93%)
smoke_tests.nativeaot.windows.x64.checked.mch 5,514,881 -316 -1.52% 1546956 -677(-1.31%)(-1.36%)
Example diffs
aspnet.run.windows.x64.checked.mch
-4 (-8.89%) : 197485.dasm - System.Threading.SpinLock:Exit(bool):this (Tier1)
@@ -21,16 +21,14 @@ G_M57783_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
        ; byrRegs +[rcx]
        mov      eax, dword ptr [rcx]
        test     eax, 0xD1FFAB1E
-       setne    r8b
-       movzx    r8, r8b
+       setzune  r8b
        test     dl, dl
-       sete     r10b
-       movzx    r10, r10b
+       setzue   r10b
        test     r8d, r10d
        je       SHORT G_M57783_IG04
        and      eax, -2
        mov      dword ptr [rcx], eax
-						;; size=35 bbWeight=1 PerfScore 7.50
+						;; size=31 bbWeight=1 PerfScore 7.00
 G_M57783_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
@@ -41,7 +39,7 @@ G_M57783_IG05:        ; bbWeight=0, epilog, nogc, extend
        tail.jmp [System.Threading.SpinLock:ExitSlowPath(bool):this]
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 45, prolog size 0, PerfScore 8.50, instruction count 14, allocated bytes for code 45 (MethodHash=9f381e48) for method System.Threading.SpinLock:Exit(bool):this (Tier1)
+; Total bytes of code 41, prolog size 0, PerfScore 8.00, instruction count 12, allocated bytes for code 41 (MethodHash=9f381e48) for method System.Threading.SpinLock:Exit(bool):this (Tier1)
 ; ============================================================
 
 Unwind Info:
-2 (-7.14%) : 54794.dasm - Microsoft.Data.Sqlite.SqliteConnection:BeginTransaction(int):Microsoft.Data.Sqlite.SqliteTransaction:this (FullOpts)
@@ -18,16 +18,15 @@ G_M23909_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M23909_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rcx]
        cmp      edx, 256
-       sete     r8b
-       movzx    r8, r8b
+       setzue   r8b
        mov      rax, qword ptr [rcx]
        mov      rax, qword ptr [rax+0xC8]
-						;; size=24 bbWeight=1 PerfScore 5.50
+						;; size=22 bbWeight=1 PerfScore 5.25
 G_M23909_IG03:        ; bbWeight=1, epilog, nogc, extend
        tail.jmp [rax+0x38]<unknown method>
 						;; size=4 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 28, prolog size 0, PerfScore 7.50, instruction count 6, allocated bytes for code 28 (MethodHash=1b3fa29a) for method Microsoft.Data.Sqlite.SqliteConnection:BeginTransaction(int):Microsoft.Data.Sqlite.SqliteTransaction:this (FullOpts)
+; Total bytes of code 26, prolog size 0, PerfScore 7.25, instruction count 5, allocated bytes for code 26 (MethodHash=1b3fa29a) for method Microsoft.Data.Sqlite.SqliteConnection:BeginTransaction(int):Microsoft.Data.Sqlite.SqliteTransaction:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
-2 (-5.71%) : 189859.dasm - NLog.ScopeContext:SetAsyncLocalContext(NLog.Internal.IScopeContextAsyncState) (Tier1)
@@ -23,14 +23,13 @@ G_M17350_IG02:        ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr
        mov      rcx, gword ptr [r8]
        ; gcrRegs +[rcx]
        cmp      gword ptr [rcx+0x08], 0
-       setne    r8b
-       movzx    r8, r8b
-						;; size=26 bbWeight=1 PerfScore 6.50
+       setzune  r8b
+						;; size=24 bbWeight=1 PerfScore 6.25
 G_M17350_IG03:        ; bbWeight=1, epilog, nogc, extend
        tail.jmp [<unknown method>]
 						;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 35, prolog size 3, PerfScore 8.75, instruction count 7, allocated bytes for code 35 (MethodHash=add7bc39) for method NLog.ScopeContext:SetAsyncLocalContext(NLog.Internal.IScopeContextAsyncState) (Tier1)
+; Total bytes of code 33, prolog size 3, PerfScore 8.50, instruction count 6, allocated bytes for code 33 (MethodHash=add7bc39) for method NLog.ScopeContext:SetAsyncLocalContext(NLog.Internal.IScopeContextAsyncState) (Tier1)
 ; ============================================================
 
 Unwind Info:
+3 (+18.75%) : 28434.dasm - System.Double:op_Inequality(double,double):bool (Tier1)
@@ -19,18 +19,15 @@ G_M47944_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=0 bbWeight=1 PerfScore 0.00
 G_M47944_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vucomisd xmm0, xmm1
-       setp     al
+       setzup   al
        jp       SHORT G_M47944_IG03
-       setne    al
-						;; size=12 bbWeight=1 PerfScore 5.00
-G_M47944_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       movzx    rax, al
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M47944_IG04:        ; bbWeight=1, epilog, nogc, extend
+       setzune  al
+						;; size=18 bbWeight=1 PerfScore 5.00
+G_M47944_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 16, prolog size 0, PerfScore 6.25, instruction count 6, allocated bytes for code 16 (MethodHash=48b044b7) for method System.Double:op_Inequality(double,double):bool (Tier1)
+; Total bytes of code 19, prolog size 0, PerfScore 6.00, instruction count 5, allocated bytes for code 19 (MethodHash=48b044b7) for method System.Double:op_Inequality(double,double):bool (Tier1)
 ; ============================================================
 
 Unwind Info:
+3 (+12.00%) : 56700.dasm - Xunit.Sdk.AssertEqualityComparer`1[int]:Equals(int,Xunit.Sdk.CollectionTracker,int,Xunit.Sdk.CollectionTracker,byref):bool:this (FullOpts)
@@ -190,9 +190,9 @@ G_M48997_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; byrRegs +[rcx]
        mov      qword ptr [rcx], rax
        cmp      edx, r9d
-       sete     al
+       setzue   al
        movzx    rax, al
-						;; size=18 bbWeight=1 PerfScore 3.75
+						;; size=21 bbWeight=1 PerfScore 3.75
 G_M48997_IG03:        ; bbWeight=1, epilog, nogc, extend
        pop      rbp
        ret      
@@ -202,7 +202,7 @@ G_M48997_IG04:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
        int3     
 						;; size=1 bbWeight=1 PerfScore 0.25
 
-; Total bytes of code 25, prolog size 4, PerfScore 6.75, instruction count 11, allocated bytes for code 25 (MethodHash=2065409a) for method Xunit.Sdk.AssertEqualityComparer`1[int]:Equals(int,Xunit.Sdk.CollectionTracker,int,Xunit.Sdk.CollectionTracker,byref):bool:this (FullOpts)
+; Total bytes of code 28, prolog size 4, PerfScore 6.75, instruction count 11, allocated bytes for code 28 (MethodHash=2065409a) for method Xunit.Sdk.AssertEqualityComparer`1[int]:Equals(int,Xunit.Sdk.CollectionTracker,int,Xunit.Sdk.CollectionTracker,byref):bool:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+3 (+12.00%) : 35388.dasm - (dynamicClass):lambda_method82(System.Runtime.CompilerServices.Closure,Microsoft.EntityFrameworkCore.Benchmarks.Models.Orders.Product):bool (FullOpts)
@@ -26,19 +26,16 @@ G_M10061_IG02:        ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr
        vmovsd   xmm0, qword ptr [rdx+0x30]
        vxorps   xmm1, xmm1, xmm1
        vucomisd xmm0, xmm1
-       setnp    al
+       setzunp  al
        jp       SHORT G_M10061_IG03
-       sete     al
-						;; size=21 bbWeight=1 PerfScore 9.33
-G_M10061_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       setzue   al
+						;; size=27 bbWeight=1 PerfScore 9.33
+G_M10061_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ; gcrRegs -[rdx]
-       movzx    rax, al
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M10061_IG04:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 25, prolog size 0, PerfScore 10.58, instruction count 8, allocated bytes for code 25 (MethodHash=7044d8b2) for method (dynamicClass):lambda_method82(System.Runtime.CompilerServices.Closure,Microsoft.EntityFrameworkCore.Benchmarks.Models.Orders.Product):bool (FullOpts)
+; Total bytes of code 28, prolog size 0, PerfScore 10.33, instruction count 7, allocated bytes for code 28 (MethodHash=7044d8b2) for method (dynamicClass):lambda_method82(System.Runtime.CompilerServices.Closure,Microsoft.EntityFrameworkCore.Benchmarks.Models.Orders.Product):bool (FullOpts)
 ; ============================================================
 
 Unwind Info:
benchmarks.run.windows.x64.checked.mch
-2 (-4.55%) : 28383.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:GetSourceAssemblyAttributes(bool):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.ICustomAttribute]:this (FullOpts)
@@ -23,8 +23,7 @@ G_M16812_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=3 bbWeight=1 PerfScore 0.25
 G_M16812_IG02:        ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
        cmp      dword ptr [rax+0x88], 3
-       sete     r9b
-       movzx    r9, r9b
+       setzue   r9b
        mov      rcx, gword ptr [rax+0xA0]
        ; gcrRegs +[rcx]
        mov      rcx, gword ptr [rcx+0x18]
@@ -32,12 +31,12 @@ G_M16812_IG02:        ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byr
        mov      rdx, rax
        ; gcrRegs +[rdx]
        cmp      dword ptr [rcx], ecx
-						;; size=35 bbWeight=1 PerfScore 11.75
+						;; size=33 bbWeight=1 PerfScore 11.50
 G_M16812_IG03:        ; bbWeight=1, epilog, nogc, extend
        tail.jmp [Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:GetCustomAttributesToEmit(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,bool,bool):System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this]
 						;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 44, prolog size 3, PerfScore 14.00, instruction count 10, allocated bytes for code 44 (MethodHash=bc3abe53) for method Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:GetSourceAssemblyAttributes(bool):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.ICustomAttribute]:this (FullOpts)
+; Total bytes of code 42, prolog size 3, PerfScore 13.75, instruction count 9, allocated bytes for code 42 (MethodHash=bc3abe53) for method Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:GetSourceAssemblyAttributes(bool):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.ICustomAttribute]:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
-12 (-4.46%) : 8012.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo:Alternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo,System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo):System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo (FullOpts)
@@ -112,9 +112,8 @@ G_M40295_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
 						;; size=8 bbWeight=0.50 PerfScore 1.12
 G_M40295_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        test     dl, 8
-       setne    r9b
-       movzx    r9, r9b
-						;; size=11 bbWeight=0.50 PerfScore 0.75
+       setzune  r9b
+						;; size=9 bbWeight=0.50 PerfScore 0.62
 G_M40295_IG08:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        test     cl, 2
        je       SHORT G_M40295_IG10
@@ -125,9 +124,8 @@ G_M40295_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M40295_IG10:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        test     dl, 2
-       setne    al
-       movzx    rax, al
-						;; size=9 bbWeight=0.50 PerfScore 0.75
+       setzune  al
+						;; size=9 bbWeight=0.50 PerfScore 0.62
 G_M40295_IG11:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        test     ecx, 256
        je       SHORT G_M40295_IG13
@@ -138,9 +136,8 @@ G_M40295_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
 						;; size=8 bbWeight=0.50 PerfScore 1.12
 G_M40295_IG13:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        test     edx, 256
-       setne    r10b
-       movzx    r10, r10b
-						;; size=14 bbWeight=0.50 PerfScore 0.75
+       setzune  r10b
+						;; size=12 bbWeight=0.50 PerfScore 0.62
 G_M40295_IG14:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        test     cl, 32
        je       SHORT G_M40295_IG16
@@ -151,9 +148,8 @@ G_M40295_IG15:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
 						;; size=8 bbWeight=0.50 PerfScore 1.12
 G_M40295_IG16:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        test     dl, 32
-       setne    r11b
-       movzx    r11, r11b
-						;; size=11 bbWeight=0.50 PerfScore 0.75
+       setzune  r11b
+						;; size=9 bbWeight=0.50 PerfScore 0.62
 G_M40295_IG17:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        test     cl, 16
        je       SHORT G_M40295_IG19
@@ -164,25 +160,22 @@ G_M40295_IG18:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
 						;; size=9 bbWeight=0.50 PerfScore 1.12
 G_M40295_IG19:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        test     dl, 16
-       setne    r16b
-       movzx    r16, r16b
-						;; size=11 bbWeight=0.50 PerfScore 0.75
+       setzune  r16b
+						;; size=9 bbWeight=0.50 PerfScore 0.62
 G_M40295_IG20:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        test     cl, 64
-       setne    r17b
-       movzx    r17, r17b
+       setzune  r17b
        test     cl, 128
        je       SHORT G_M40295_IG22
-						;; size=16 bbWeight=1 PerfScore 2.75
+						;; size=14 bbWeight=1 PerfScore 2.50
 G_M40295_IG21:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        mov      r18, 1
        jmp      SHORT G_M40295_IG23
 						;; size=9 bbWeight=0.50 PerfScore 1.12
 G_M40295_IG22:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        test     dl, 128
-       setne    r18b
-       movzx    r18, r18b
-						;; size=11 bbWeight=0.50 PerfScore 0.75
+       setzune  r18b
+						;; size=9 bbWeight=0.50 PerfScore 0.62
 G_M40295_IG23:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        test     ecx, 512
        je       SHORT G_M40295_IG25
@@ -193,9 +186,8 @@ G_M40295_IG24:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M40295_IG25:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        test     edx, 512
-       setne    cl
-       movzx    rcx, cl
-						;; size=12 bbWeight=0.50 PerfScore 0.75
+       setzune  cl
+						;; size=12 bbWeight=0.50 PerfScore 0.62
 G_M40295_IG26:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      dword ptr [rsp+0x20], r11d
        mov      dword ptr [rsp+0x28], r16
@@ -215,7 +207,7 @@ G_M40295_IG27:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 269, prolog size 10, PerfScore 38.75, instruction count 75, allocated bytes for code 269 (MethodHash=b3ad6298) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo:Alternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo,System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo):System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo (FullOpts)
+; Total bytes of code 257, prolog size 10, PerfScore 37.62, instruction count 67, allocated bytes for code 257 (MethodHash=b3ad6298) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo:Alternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo,System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo):System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo (FullOpts)
 ; ============================================================
 
 Unwind Info:
-8 (-4.15%) : 6244.dasm - SIMD.ConsoleMandel:GetRenderer(System.Action`3[int,int,int],int):Algorithms.FractalRenderer+Render (FullOpts)
@@ -68,29 +68,25 @@ G_M20728_IG03:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
 G_M20728_IG04:        ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rdi]
        test     bl, 2
-       setne    r9b
-       movzx    r9, r9b
+       setzune  r9b
        mov      dword ptr [rsp+0x20], r9d
        mov      r9d, ebx
        and      r9d, 1
        mov      dword ptr [rsp+0x28], r9d
        test     bl, 8
-       setne    r9b
-       movzx    r9, r9b
+       setzune  r9b
        mov      dword ptr [rsp+0x30], r9d
        test     bl, 4
-       setne    r9b
-       movzx    r9, r9b
+       setzune  r9b
        cmp      ebx, 7
-       setg     r8b
-       movzx    r8, r8b
+       setzug   r8b
        mov      rcx, rsi
        ; gcrRegs +[rcx]
        call     [<unknown method>]
        ; gcrRegs -[rcx rdx rsi] +[rax]
        ; gcr arg pop 0
        nop      
-						;; size=76 bbWeight=1 PerfScore 13.00
+						;; size=68 bbWeight=1 PerfScore 12.00
 G_M20728_IG05:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 64
        pop      rbx
@@ -99,7 +95,7 @@ G_M20728_IG05:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=8 bbWeight=1 PerfScore 2.75
 
-; Total bytes of code 193, prolog size 7, PerfScore 26.75, instruction count 49, allocated bytes for code 193 (MethodHash=8e0baf07) for method SIMD.ConsoleMandel:GetRenderer(System.Action`3[int,int,int],int):Algorithms.FractalRenderer+Render (FullOpts)
+; Total bytes of code 185, prolog size 7, PerfScore 25.75, instruction count 45, allocated bytes for code 185 (MethodHash=8e0baf07) for method SIMD.ConsoleMandel:GetRenderer(System.Action`3[int,int,int],int):Algorithms.FractalRenderer+Render (FullOpts)
 ; ============================================================
 
 Unwind Info:
+3 (+4.62%) : 27395.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol:get_IsSealed():bool:this (FullOpts)
@@ -35,10 +35,10 @@ G_M27569_IG03:        ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
        test     dl, 64
        je       SHORT G_M27569_IG06
        test     edx, 256
-       sete     al
+       setzue   al
        ; gcrRegs -[rax]
        movzx    rax, al
-						;; size=38 bbWeight=0.50 PerfScore 5.00
+						;; size=41 bbWeight=0.50 PerfScore 5.00
 G_M27569_IG04:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0.50 PerfScore 0.50
@@ -58,7 +58,7 @@ G_M27569_IG08:        ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
        tail.jmp [Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol:get_IsOverride():bool:this]
 						;; size=6 bbWeight=0.50 PerfScore 1.00
 
-; Total bytes of code 65, prolog size 0, PerfScore 11.00, instruction count 19, allocated bytes for code 65 (MethodHash=4b0b944e) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol:get_IsSealed():bool:this (FullOpts)
+; Total bytes of code 68, prolog size 0, PerfScore 11.00, instruction count 19, allocated bytes for code 68 (MethodHash=4b0b944e) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol:get_IsSealed():bool:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+3 (+4.11%) : 27726.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):bool:this (FullOpts)
@@ -57,14 +57,14 @@ G_M51419_IG07:        ; bbWeight=0.50, epilog, nogc, extend
 						;; size=1 bbWeight=0.50 PerfScore 0.50
 G_M51419_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
        cmp      r8d, 68
-       setne    al
+       setzune  al
        movzx    rax, al
-						;; size=10 bbWeight=0.50 PerfScore 0.75
+						;; size=13 bbWeight=0.50 PerfScore 0.75
 G_M51419_IG09:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 73, prolog size 0, PerfScore 9.88, instruction count 22, allocated bytes for code 73 (MethodHash=e5843724) for method Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):bool:this (FullOpts)
+; Total bytes of code 76, prolog size 0, PerfScore 9.88, instruction count 22, allocated bytes for code 76 (MethodHash=e5843724) for method Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):bool:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+3 (+3.19%) : 5321.dasm - System.Text.RegularExpressions.RegexCaseEquivalences:g__IsTurkishOrAzeri|8_0(System.String):bool (FullOpts)
@@ -37,9 +37,9 @@ G_M3299_IG04:        ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, b
        cmp      edx, 2
        jbe      SHORT G_M3299_IG12
        cmp      word  ptr [rcx+0x10], 45
-       sete     al
+       setzue   al
        movzx    rax, al
-						;; size=16 bbWeight=0.50 PerfScore 2.75
+						;; size=19 bbWeight=0.50 PerfScore 2.75
 G_M3299_IG05:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 40
        ret      
@@ -77,7 +77,7 @@ G_M3299_IG12:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 94, prolog size 4, PerfScore 15.88, instruction count 32, allocated bytes for code 94 (MethodHash=cd7af31c) for method System.Text.RegularExpressions.RegexCaseEquivalences:<GetRegexBehavior>g__IsTurkishOrAzeri|8_0(System.String):bool (FullOpts)
+; Total bytes of code 97, prolog size 4, PerfScore 15.88, instruction count 32, allocated bytes for code 97 (MethodHash=cd7af31c) for method System.Text.RegularExpressions.RegexCaseEquivalences:<GetRegexBehavior>g__IsTurkishOrAzeri|8_0(System.String):bool (FullOpts)
 ; ============================================================
 
 Unwind Info:
benchmarks.run_pgo.windows.x64.checked.mch
-4 (-8.89%) : 87991.dasm - System.Threading.SpinLock:Exit(bool):this (Tier1)
@@ -21,16 +21,14 @@ G_M57783_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
        ; byrRegs +[rcx]
        mov      eax, dword ptr [rcx]
        test     eax, 0xD1FFAB1E
-       setne    r8b
-       movzx    r8, r8b
+       setzune  r8b
        test     dl, dl
-       sete     r10b
-       movzx    r10, r10b
+       setzue   r10b
        test     r8d, r10d
        je       SHORT G_M57783_IG04
        and      eax, -2
        mov      dword ptr [rcx], eax
-						;; size=35 bbWeight=1 PerfScore 7.50
+						;; size=31 bbWeight=1 PerfScore 7.00
 G_M57783_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
@@ -41,7 +39,7 @@ G_M57783_IG05:        ; bbWeight=0, epilog, nogc, extend
        tail.jmp [System.Threading.SpinLock:ExitSlowPath(bool):this]
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 45, prolog size 0, PerfScore 8.50, instruction count 14, allocated bytes for code 45 (MethodHash=9f381e48) for method System.Threading.SpinLock:Exit(bool):this (Tier1)
+; Total bytes of code 41, prolog size 0, PerfScore 8.00, instruction count 12, allocated bytes for code 41 (MethodHash=9f381e48) for method System.Threading.SpinLock:Exit(bool):this (Tier1)
 ; ============================================================
 
 Unwind Info:
-2 (-7.69%) : 92783.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass318_0:g__EmitMultiChar|19(System.Text.RegularExpressions.RegexNode,bool):this (Tier1)
@@ -22,16 +22,15 @@ G_M23934_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M23934_IG02:        ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rcx rdx]
        test     byte  ptr [rdx+0x28], 64
-       setne    r9b
-       movzx    r9, r9b
+       setzune  r9b
        mov      rdx, gword ptr [rdx+0x10]
        movzx    r8, r8b
-						;; size=20 bbWeight=1 PerfScore 6.50
+						;; size=18 bbWeight=1 PerfScore 6.25
 G_M23934_IG03:        ; bbWeight=1, epilog, nogc, extend
        tail.jmp [System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass318_0:<EmitTryMatchAtCurrentPosition>g__EmitMultiCharString|20(System.String,bool,bool):this]
 						;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 26, prolog size 0, PerfScore 8.50, instruction count 6, allocated bytes for code 26 (MethodHash=23daa281) for method System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass318_0:<EmitTryMatchAtCurrentPosition>g__EmitMultiChar|19(System.Text.RegularExpressions.RegexNode,bool):this (Tier1)
+; Total bytes of code 24, prolog size 0, PerfScore 8.25, instruction count 5, allocated bytes for code 24 (MethodHash=23daa281) for method System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass318_0:<EmitTryMatchAtCurrentPosition>g__EmitMultiChar|19(System.Text.RegularExpressions.RegexNode,bool):this (Tier1)
 ; ============================================================
 
 Unwind Info:
-8 (-5.41%) : 128844.dasm - System.IO.PathInternal:IsPartiallyQualified(System.ReadOnlySpan`1[char]):bool (Tier1)
@@ -35,11 +35,11 @@ G_M50304_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
        mov      ecx, dword ptr [rcx+0x08]
        ; byrRegs -[rcx]
        cmp      ecx, 2
-       jl       G_M50304_IG13
+       jl       SHORT G_M50304_IG13
        movzx    rax, word  ptr [rdx]
        cmp      eax, 92
        jne      SHORT G_M50304_IG07
-						;; size=23 bbWeight=1 PerfScore 8.50
+						;; size=19 bbWeight=1 PerfScore 8.50
 G_M50304_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref, isz
        movzx    r8, word  ptr [rdx+0x02]
        cmp      r8d, 63
@@ -51,9 +51,8 @@ G_M50304_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byr
 G_M50304_IG04:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; byrRegs -[rdx]
        test     eax, eax
-       sete     r8b
-       movzx    r8, r8b
-						;; size=10 bbWeight=1 PerfScore 1.50
+       setzue   r8b
+						;; size=8 bbWeight=1 PerfScore 1.25
 G_M50304_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        movzx    rax, r8b
 						;; size=4 bbWeight=1 PerfScore 0.25
@@ -69,8 +68,7 @@ G_M50304_IG07:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
 G_M50304_IG08:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        ; byrRegs -[rdx]
        cmp      r8d, 47
-       sete     al
-       movzx    rax, al
+       setzue   al
        jmp      SHORT G_M50304_IG04
 						;; size=12 bbWeight=0 PerfScore 0.00
 G_M50304_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -90,8 +88,7 @@ G_M50304_IG11:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
        cmp      eax, 92
        je       SHORT G_M50304_IG12
        cmp      eax, 47
-       sete     al
-       movzx    rax, al
+       setzue   al
        test     eax, eax
        je       SHORT G_M50304_IG13
 						;; size=38 bbWeight=0 PerfScore 0.00
@@ -100,10 +97,9 @@ G_M50304_IG12:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byr
        or       eax, 32
        add      eax, -97
        cmp      eax, 25
-       seta     r8b
-       movzx    r8, r8b
+       setzua   r8b
        jmp      SHORT G_M50304_IG05
-						;; size=22 bbWeight=0 PerfScore 0.00
+						;; size=20 bbWeight=0 PerfScore 0.00
 G_M50304_IG13:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; byrRegs -[rdx]
        mov      eax, 1
@@ -112,7 +108,7 @@ G_M50304_IG14:        ; bbWeight=0, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 148, prolog size 0, PerfScore 16.00, instruction count 49, allocated bytes for code 148 (MethodHash=affd3b7f) for method System.IO.PathInternal:IsPartiallyQualified(System.ReadOnlySpan`1[char]):bool (Tier1)
+; Total bytes of code 140, prolog size 0, PerfScore 15.75, instruction count 45, allocated bytes for code 140 (MethodHash=affd3b7f) for method System.IO.PathInternal:IsPartiallyQualified(System.ReadOnlySpan`1[char]):bool (Tier1)
 ; ============================================================
 
 Unwind Info:
+3 (+18.75%) : 34564.dasm - System.Double:op_Inequality(double,double):bool (Tier1)
@@ -19,18 +19,15 @@ G_M47944_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=0 bbWeight=1 PerfScore 0.00
 G_M47944_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vucomisd xmm0, xmm1
-       setp     al
+       setzup   al
        jp       SHORT G_M47944_IG03
-       setne    al
-						;; size=12 bbWeight=1 PerfScore 5.00
-G_M47944_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       movzx    rax, al
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M47944_IG04:        ; bbWeight=1, epilog, nogc, extend
+       setzune  al
+						;; size=18 bbWeight=1 PerfScore 5.00
+G_M47944_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 16, prolog size 0, PerfScore 6.25, instruction count 6, allocated bytes for code 16 (MethodHash=48b044b7) for method System.Double:op_Inequality(double,double):bool (Tier1)
+; Total bytes of code 19, prolog size 0, PerfScore 6.00, instruction count 5, allocated bytes for code 19 (MethodHash=48b044b7) for method System.Double:op_Inequality(double,double):bool (Tier1)
 ; ============================================================
 
 Unwind Info:
+3 (+9.38%) : 45452.dasm - System.Double:IsNaN(double):bool (Instrumented Tier0)
@@ -19,19 +19,16 @@ G_M63013_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M63013_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vmovsd   xmm0, qword ptr [rbp+0x10]
        vucomisd xmm0, qword ptr [rbp+0x10]
-       setp     al
+       setzup   al
        jp       SHORT G_M63013_IG03
-       setne    al
-						;; size=18 bbWeight=1 PerfScore 10.00
-G_M63013_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       movzx    rax, al
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M63013_IG04:        ; bbWeight=1, epilog, nogc, extend
+       setzune  al
+						;; size=24 bbWeight=1 PerfScore 10.00
+G_M63013_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        pop      rbp
        ret      
 						;; size=2 bbWeight=1 PerfScore 1.50
 
-; Total bytes of code 32, prolog size 4, PerfScore 14.00, instruction count 11, allocated bytes for code 32 (MethodHash=3f0d09da) for method System.Double:IsNaN(double):bool (Instrumented Tier0)
+; Total bytes of code 35, prolog size 4, PerfScore 13.75, instruction count 10, allocated bytes for code 35 (MethodHash=3f0d09da) for method System.Double:IsNaN(double):bool (Instrumented Tier0)
 ; ============================================================
 
 Unwind Info:
+3 (+9.38%) : 28927.dasm - System.Single:IsNaN(float):bool (Tier0)
@@ -19,19 +19,16 @@ G_M463_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, n
 G_M463_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vmovss   xmm0, dword ptr [rbp+0x10]
        vucomiss xmm0, dword ptr [rbp+0x10]
-       setp     al
+       setzup   al
        jp       SHORT G_M463_IG03
-       setne    al
-						;; size=18 bbWeight=1 PerfScore 10.00
-G_M463_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       movzx    rax, al
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M463_IG04:        ; bbWeight=1, epilog, nogc, extend
+       setzune  al
+						;; size=24 bbWeight=1 PerfScore 10.00
+G_M463_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        pop      rbp
        ret      
 						;; size=2 bbWeight=1 PerfScore 1.50
 
-; Total bytes of code 32, prolog size 4, PerfScore 14.00, instruction count 11, allocated bytes for code 32 (MethodHash=402ffe30) for method System.Single:IsNaN(float):bool (Tier0)
+; Total bytes of code 35, prolog size 4, PerfScore 13.75, instruction count 10, allocated bytes for code 35 (MethodHash=402ffe30) for method System.Single:IsNaN(float):bool (Tier0)
 ; ============================================================
 
 Unwind Info:
benchmarks.run_pgo_optrepeat.windows.x64.checked.mch
-2 (-4.55%) : 28405.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:GetSourceAssemblyAttributes(bool):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.ICustomAttribute]:this (FullOpts)
@@ -23,8 +23,7 @@ G_M16812_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=3 bbWeight=1 PerfScore 0.25
 G_M16812_IG02:        ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
        cmp      dword ptr [rax+0x88], 3
-       sete     r9b
-       movzx    r9, r9b
+       setzue   r9b
        mov      rcx, gword ptr [rax+0xA0]
        ; gcrRegs +[rcx]
        mov      rcx, gword ptr [rcx+0x18]
@@ -32,12 +31,12 @@ G_M16812_IG02:        ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byr
        mov      rdx, rax
        ; gcrRegs +[rdx]
        cmp      dword ptr [rcx], ecx
-						;; size=35 bbWeight=1 PerfScore 11.75
+						;; size=33 bbWeight=1 PerfScore 11.50
 G_M16812_IG03:        ; bbWeight=1, epilog, nogc, extend
        tail.jmp [Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:GetCustomAttributesToEmit(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,bool,bool):System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this]
 						;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 44, prolog size 3, PerfScore 14.00, instruction count 10, allocated bytes for code 44 (MethodHash=bc3abe53) for method Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:GetSourceAssemblyAttributes(bool):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.ICustomAttribute]:this (FullOpts)
+; Total bytes of code 42, prolog size 3, PerfScore 13.75, instruction count 9, allocated bytes for code 42 (MethodHash=bc3abe53) for method Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder:GetSourceAssemblyAttributes(bool):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.ICustomAttribute]:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
-12 (-4.46%) : 7824.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo:Alternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo,System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo):System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo (FullOpts)
@@ -112,9 +112,8 @@ G_M40295_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
 						;; size=8 bbWeight=0.50 PerfScore 1.12
 G_M40295_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        test     dl, 8
-       setne    r9b
-       movzx    r9, r9b
-						;; size=11 bbWeight=0.50 PerfScore 0.75
+       setzune  r9b
+						;; size=9 bbWeight=0.50 PerfScore 0.62
 G_M40295_IG08:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        test     cl, 2
        je       SHORT G_M40295_IG10
@@ -125,9 +124,8 @@ G_M40295_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M40295_IG10:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        test     dl, 2
-       setne    al
-       movzx    rax, al
-						;; size=9 bbWeight=0.50 PerfScore 0.75
+       setzune  al
+						;; size=9 bbWeight=0.50 PerfScore 0.62
 G_M40295_IG11:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        test     ecx, 256
        je       SHORT G_M40295_IG13
@@ -138,9 +136,8 @@ G_M40295_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
 						;; size=8 bbWeight=0.50 PerfScore 1.12
 G_M40295_IG13:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        test     edx, 256
-       setne    r10b
-       movzx    r10, r10b
-						;; size=14 bbWeight=0.50 PerfScore 0.75
+       setzune  r10b
+						;; size=12 bbWeight=0.50 PerfScore 0.62
 G_M40295_IG14:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        test     cl, 32
        je       SHORT G_M40295_IG16
@@ -151,9 +148,8 @@ G_M40295_IG15:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
 						;; size=8 bbWeight=0.50 PerfScore 1.12
 G_M40295_IG16:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        test     dl, 32
-       setne    r11b
-       movzx    r11, r11b
-						;; size=11 bbWeight=0.50 PerfScore 0.75
+       setzune  r11b
+						;; size=9 bbWeight=0.50 PerfScore 0.62
 G_M40295_IG17:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        test     cl, 16
        je       SHORT G_M40295_IG19
@@ -164,25 +160,22 @@ G_M40295_IG18:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
 						;; size=9 bbWeight=0.50 PerfScore 1.12
 G_M40295_IG19:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        test     dl, 16
-       setne    r16b
-       movzx    r16, r16b
-						;; size=11 bbWeight=0.50 PerfScore 0.75
+       setzune  r16b
+						;; size=9 bbWeight=0.50 PerfScore 0.62
 G_M40295_IG20:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        test     cl, 64
-       setne    r17b
-       movzx    r17, r17b
+       setzune  r17b
        test     cl, 128
        je       SHORT G_M40295_IG22
-						;; size=16 bbWeight=1 PerfScore 2.75
+						;; size=14 bbWeight=1 PerfScore 2.50
 G_M40295_IG21:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        mov      r18, 1
        jmp      SHORT G_M40295_IG23
 						;; size=9 bbWeight=0.50 PerfScore 1.12
 G_M40295_IG22:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        test     dl, 128
-       setne    r18b
-       movzx    r18, r18b
-						;; size=11 bbWeight=0.50 PerfScore 0.75
+       setzune  r18b
+						;; size=9 bbWeight=0.50 PerfScore 0.62
 G_M40295_IG23:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        test     ecx, 512
        je       SHORT G_M40295_IG25
@@ -193,9 +186,8 @@ G_M40295_IG24:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 G_M40295_IG25:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        test     edx, 512
-       setne    cl
-       movzx    rcx, cl
-						;; size=12 bbWeight=0.50 PerfScore 0.75
+       setzune  cl
+						;; size=12 bbWeight=0.50 PerfScore 0.62
 G_M40295_IG26:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      dword ptr [rsp+0x20], r11d
        mov      dword ptr [rsp+0x28], r16
@@ -215,7 +207,7 @@ G_M40295_IG27:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 269, prolog size 10, PerfScore 38.75, instruction count 75, allocated bytes for code 269 (MethodHash=b3ad6298) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo:Alternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo,System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo):System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo (FullOpts)
+; Total bytes of code 257, prolog size 10, PerfScore 37.62, instruction count 67, allocated bytes for code 257 (MethodHash=b3ad6298) for method System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo:Alternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo,System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo):System.Text.RegularExpressions.Symbolic.SymbolicRegexInfo (FullOpts)
 ; ============================================================
 
 Unwind Info:
-8 (-4.15%) : 4729.dasm - SIMD.ConsoleMandel:GetRenderer(System.Action`3[int,int,int],int):Algorithms.FractalRenderer+Render (FullOpts)
@@ -68,29 +68,25 @@ G_M20728_IG03:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
 G_M20728_IG04:        ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rdi]
        test     bl, 2
-       setne    r9b
-       movzx    r9, r9b
+       setzune  r9b
        mov      dword ptr [rsp+0x20], r9d
        mov      r9d, ebx
        and      r9d, 1
        mov      dword ptr [rsp+0x28], r9d
        test     bl, 8
-       setne    r9b
-       movzx    r9, r9b
+       setzune  r9b
        mov      dword ptr [rsp+0x30], r9d
        test     bl, 4
-       setne    r9b
-       movzx    r9, r9b
+       setzune  r9b
        cmp      ebx, 7
-       setg     r8b
-       movzx    r8, r8b
+       setzug   r8b
        mov      rcx, rsi
        ; gcrRegs +[rcx]
        call     [<unknown method>]
        ; gcrRegs -[rcx rdx rsi] +[rax]
        ; gcr arg pop 0
        nop      
-						;; size=76 bbWeight=1 PerfScore 13.00
+						;; size=68 bbWeight=1 PerfScore 12.00
 G_M20728_IG05:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 64
        pop      rbx
@@ -99,7 +95,7 @@ G_M20728_IG05:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=8 bbWeight=1 PerfScore 2.75
 
-; Total bytes of code 193, prolog size 7, PerfScore 26.75, instruction count 49, allocated bytes for code 193 (MethodHash=8e0baf07) for method SIMD.ConsoleMandel:GetRenderer(System.Action`3[int,int,int],int):Algorithms.FractalRenderer+Render (FullOpts)
+; Total bytes of code 185, prolog size 7, PerfScore 25.75, instruction count 45, allocated bytes for code 185 (MethodHash=8e0baf07) for method SIMD.ConsoleMandel:GetRenderer(System.Action`3[int,int,int],int):Algorithms.FractalRenderer+Render (FullOpts)
 ; ============================================================
 
 Unwind Info:
+3 (+4.62%) : 27417.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol:get_IsSealed():bool:this (FullOpts)
@@ -35,10 +35,10 @@ G_M27569_IG03:        ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
        test     dl, 64
        je       SHORT G_M27569_IG06
        test     edx, 256
-       sete     al
+       setzue   al
        ; gcrRegs -[rax]
        movzx    rax, al
-						;; size=38 bbWeight=0.50 PerfScore 5.00
+						;; size=41 bbWeight=0.50 PerfScore 5.00
 G_M27569_IG04:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0.50 PerfScore 0.50
@@ -58,7 +58,7 @@ G_M27569_IG08:        ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
        tail.jmp [Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol:get_IsOverride():bool:this]
 						;; size=6 bbWeight=0.50 PerfScore 1.00
 
-; Total bytes of code 65, prolog size 0, PerfScore 11.00, instruction count 19, allocated bytes for code 65 (MethodHash=4b0b944e) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol:get_IsSealed():bool:this (FullOpts)
+; Total bytes of code 68, prolog size 0, PerfScore 11.00, instruction count 19, allocated bytes for code 68 (MethodHash=4b0b944e) for method Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol:get_IsSealed():bool:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+3 (+4.11%) : 27748.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):bool:this (FullOpts)
@@ -57,14 +57,14 @@ G_M51419_IG07:        ; bbWeight=0.50, epilog, nogc, extend
 						;; size=1 bbWeight=0.50 PerfScore 0.50
 G_M51419_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
        cmp      r8d, 68
-       setne    al
+       setzune  al
        movzx    rax, al
-						;; size=10 bbWeight=0.50 PerfScore 0.75
+						;; size=13 bbWeight=0.50 PerfScore 0.75
 G_M51419_IG09:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 73, prolog size 0, PerfScore 9.88, instruction count 22, allocated bytes for code 73 (MethodHash=e5843724) for method Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):bool:this (FullOpts)
+; Total bytes of code 76, prolog size 0, PerfScore 9.88, instruction count 22, allocated bytes for code 76 (MethodHash=e5843724) for method Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):bool:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+3 (+3.19%) : 4122.dasm - System.Text.RegularExpressions.RegexCaseEquivalences:g__IsTurkishOrAzeri|8_0(System.String):bool (FullOpts)
@@ -37,9 +37,9 @@ G_M3299_IG04:        ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, b
        cmp      edx, 2
        jbe      SHORT G_M3299_IG12
        cmp      word  ptr [rcx+0x10], 45
-       sete     al
+       setzue   al
        movzx    rax, al
-						;; size=16 bbWeight=0.50 PerfScore 2.75
+						;; size=19 bbWeight=0.50 PerfScore 2.75
 G_M3299_IG05:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 40
        ret      
@@ -77,7 +77,7 @@ G_M3299_IG12:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 94, prolog size 4, PerfScore 15.88, instruction count 32, allocated bytes for code 94 (MethodHash=cd7af31c) for method System.Text.RegularExpressions.RegexCaseEquivalences:<GetRegexBehavior>g__IsTurkishOrAzeri|8_0(System.String):bool (FullOpts)
+; Total bytes of code 97, prolog size 4, PerfScore 15.88, instruction count 32, allocated bytes for code 97 (MethodHash=cd7af31c) for method System.Text.RegularExpressions.RegexCaseEquivalences:<GetRegexBehavior>g__IsTurkishOrAzeri|8_0(System.String):bool (FullOpts)
 ; ============================================================
 
 Unwind Info:
coreclr_tests.run.windows.x64.checked.mch
-2 (-8.33%) : 330019.dasm - System.Runtime.CompilerServices.StaticsHelpers:GetThreadStaticsByIndex(System.Runtime.CompilerServices.ByteRefOnStack,int,bool) (FullOpts)
@@ -23,15 +23,14 @@ G_M17760_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=7 bbWeight=1 PerfScore 2.25
 G_M17760_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        test     r8b, r8b
-       setne    r8b
-       movzx    r8, r8b
-						;; size=11 bbWeight=1 PerfScore 1.50
+       setzune  r8b
+						;; size=9 bbWeight=1 PerfScore 1.25
 G_M17760_IG03:        ; bbWeight=1, epilog, nogc, extend
        pop      rbp
        jmp      <unknown method>
 						;; size=6 bbWeight=1 PerfScore 2.50
 
-; Total bytes of code 24, prolog size 7, PerfScore 6.25, instruction count 8, allocated bytes for code 24 (MethodHash=a2a7ba9f) for method System.Runtime.CompilerServices.StaticsHelpers:GetThreadStaticsByIndex(System.Runtime.CompilerServices.ByteRefOnStack,int,bool) (FullOpts)
+; Total bytes of code 22, prolog size 7, PerfScore 6.00, instruction count 7, allocated bytes for code 22 (MethodHash=a2a7ba9f) for method System.Runtime.CompilerServices.StaticsHelpers:GetThreadStaticsByIndex(System.Runtime.CompilerServices.ByteRefOnStack,int,bool) (FullOpts)
 ; ============================================================
 
 Unwind Info:
-26 (-6.34%) : 211903.dasm - (dynamicClass):IL_STUB_PInvoke(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool):ptr (FullOpts)
@@ -80,53 +80,37 @@ G_M25614_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        lea      rcx, [rbp-0x80]
        mov      qword ptr [r13+0x08], rcx
        test     bl, bl
-       setne    cl
-       movzx    rcx, cl
+       setzune  cl
        test     sil, sil
-       setne    dl
-       movzx    rdx, dl
+       setzune  dl
        test     dil, dil
-       setne    r8b
-       movzx    r8, r8b
+       setzune  r8b
        test     r14b, r14b
-       setne    r9b
-       movzx    r9, r9b
+       setzune  r9b
        cmp      byte  ptr [rbp+0x30], 0
-       setne    al
-       movzx    rax, al
+       setzune  al
        cmp      byte  ptr [rbp+0x38], 0
-       setne    r10b
-       movzx    r10, r10b
+       setzune  r10b
        cmp      byte  ptr [rbp+0x40], 0
-       setne    r11b
-       movzx    r11, r11b
+       setzune  r11b
        cmp      byte  ptr [rbp+0x48], 0
-       setne    r16b
-       movzx    r16, r16b
+       setzune  r16b
        cmp      byte  ptr [rbp+0x50], 0
-       setne    r17b
-       movzx    r17, r17b
+       setzune  r17b
        cmp      byte  ptr [rbp+0x58], 0
-       setne    r18b
-       movzx    r18, r18b
+       setzune  r18b
        cmp      byte  ptr [rbp+0x60], 0
-       setne    r19b
-       movzx    r19, r19b
+       setzune  r19b
        cmp      byte  ptr [rbp+0x68], 0
-       setne    r20b
-       movzx    r20, r20b
+       setzune  r20b
        cmp      byte  ptr [rbp+0x70], 0
-       setne    r21b
-       movzx    r21, r21b
+       setzune  r21b
        cmp      byte  ptr [rbp+0x78], 0
-       setne    r22b
-       movzx    r22, r22b
+       setzune  r22b
        cmp      byte  ptr [rbp+0x80], 0
-       setne    r23b
-       movzx    r23, r23b
+       setzune  r23b
        cmp      byte  ptr [rbp+0x88], 0
-       setne    r24b
-       movzx    r24, r24b
+       setzune  r24b
        mov      r25, qword ptr [r15+0x50]
        mov      dword ptr [rsp+0x20], eax
        mov      dword ptr [rsp+0x28], r10d
@@ -141,26 +125,24 @@ G_M25614_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      dword ptr [rsp+0x70], r23
        mov      dword ptr [rsp+0x78], r24
        mov      qword ptr [rbp-0x70], r15
-						;; size=302 bbWeight=1 PerfScore 66.75
-G_M25614_IG03:        ; bbWeight=1, extend
-       lea      rax, G_M25614_IG05
+       lea      rax, G_M25614_IG04
        mov      qword ptr [rbp-0x60], rax
        mov      byte  ptr [r13+0x04], 0
-						;; size=16 bbWeight=1 PerfScore 3.00
-G_M25614_IG04:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+						;; size=292 bbWeight=1 PerfScore 65.75
+G_M25614_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        call     r25
 						;; size=4 bbWeight=1 PerfScore 3.00
-G_M25614_IG05:        ; bbWeight=1, isz, extend
+G_M25614_IG04:        ; bbWeight=1, isz, extend
        mov      byte  ptr [r13+0x04], 1
        cmp      dword ptr [(reloc)], 0
-       je       SHORT G_M25614_IG06
+       je       SHORT G_M25614_IG05
        call     [CORINFO_HELP_STOP_FOR_GC]
 						;; size=20 bbWeight=1 PerfScore 8.00
-G_M25614_IG06:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25614_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      rcx, qword ptr [rbp-0x78]
        mov      qword ptr [r13+0x08], rcx
 						;; size=8 bbWeight=1 PerfScore 2.00
-G_M25614_IG07:        ; bbWeight=1, epilog, nogc, extend
+G_M25614_IG06:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 200
        pop      rbx
        pop      rsi
@@ -173,7 +155,7 @@ G_M25614_IG07:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=20 bbWeight=1 PerfScore 5.25
 
-; Total bytes of code 410, prolog size 27, PerfScore 98.00, instruction count 107, allocated bytes for code 410 (MethodHash=429b9bf1) for method (dynamicClass):IL_STUB_PInvoke(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool):ptr (FullOpts)
+; Total bytes of code 384, prolog size 27, PerfScore 94.00, instruction count 91, allocated bytes for code 384 (MethodHash=429b9bf1) for method (dynamicClass):IL_STUB_PInvoke(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool):ptr (FullOpts)
 ; ============================================================
 
 Unwind Info:
-26 (-6.12%) : 211901.dasm - (dynamicClass):IL_STUB_PInvoke(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,ptr) (FullOpts)
@@ -79,53 +79,37 @@ G_M48024_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        lea      rcx, [rbp-0x80]
        mov      qword ptr [r13+0x08], rcx
        test     bl, bl
-       setne    cl
-       movzx    rcx, cl
+       setzune  cl
        test     sil, sil
-       setne    dl
-       movzx    rdx, dl
+       setzune  dl
        test     dil, dil
-       setne    r8b
-       movzx    r8, r8b
+       setzune  r8b
        test     r14b, r14b
-       setne    r9b
-       movzx    r9, r9b
+       setzune  r9b
        cmp      byte  ptr [rbp+0x30], 0
-       setne    al
-       movzx    rax, al
+       setzune  al
        cmp      byte  ptr [rbp+0x38], 0
-       setne    r10b
-       movzx    r10, r10b
+       setzune  r10b
        cmp      byte  ptr [rbp+0x40], 0
-       setne    r11b
-       movzx    r11, r11b
+       setzune  r11b
        cmp      byte  ptr [rbp+0x48], 0
-       setne    r16b
-       movzx    r16, r16b
+       setzune  r16b
        cmp      byte  ptr [rbp+0x50], 0
-       setne    r17b
-       movzx    r17, r17b
+       setzune  r17b
        cmp      byte  ptr [rbp+0x58], 0
-       setne    r18b
-       movzx    r18, r18b
+       setzune  r18b
        cmp      byte  ptr [rbp+0x60], 0
-       setne    r19b
-       movzx    r19, r19b
+       setzune  r19b
        cmp      byte  ptr [rbp+0x68], 0
-       setne    r20b
-       movzx    r20, r20b
+       setzune  r20b
        cmp      byte  ptr [rbp+0x70], 0
-       setne    r21b
-       movzx    r21, r21b
+       setzune  r21b
        cmp      byte  ptr [rbp+0x78], 0
-       setne    r22b
-       movzx    r22, r22b
+       setzune  r22b
        cmp      byte  ptr [rbp+0x80], 0
-       setne    r23b
-       movzx    r23, r23b
+       setzune  r23b
        cmp      byte  ptr [rbp+0x88], 0
-       setne    r24b
-       movzx    r24, r24b
+       setzune  r24b
        mov      r25, qword ptr [r15+0x50]
        mov      dword ptr [rsp+0x20], eax
        mov      dword ptr [rsp+0x28], r10d
@@ -140,28 +124,26 @@ G_M48024_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      dword ptr [rsp+0x70], r23
        mov      dword ptr [rsp+0x78], r24
        mov      rbx, qword ptr [rbp+0x90]
-						;; size=305 bbWeight=1 PerfScore 66.75
-G_M48024_IG03:        ; bbWeight=1, extend
        mov      qword ptr [rsp+0x80], rbx
        mov      qword ptr [rbp-0x70], r15
-       lea      rax, G_M48024_IG05
+       lea      rax, G_M48024_IG04
        mov      qword ptr [rbp-0x60], rax
        mov      byte  ptr [r13+0x04], 0
-						;; size=28 bbWeight=1 PerfScore 5.00
-G_M48024_IG04:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+						;; size=307 bbWeight=1 PerfScore 67.75
+G_M48024_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        call     r25
 						;; size=4 bbWeight=1 PerfScore 3.00
-G_M48024_IG05:        ; bbWeight=1, isz, extend
+G_M48024_IG04:        ; bbWeight=1, isz, extend
        mov      byte  ptr [r13+0x04], 1
        cmp      dword ptr [(reloc)], 0
-       je       SHORT G_M48024_IG06
+       je       SHORT G_M48024_IG05
        call     [CORINFO_HELP_STOP_FOR_GC]
 						;; size=20 bbWeight=1 PerfScore 8.00
-G_M48024_IG06:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M48024_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      rax, qword ptr [rbp-0x78]
        mov      qword ptr [r13+0x08], rax
 						;; size=8 bbWeight=1 PerfScore 2.00
-G_M48024_IG07:        ; bbWeight=1, epilog, nogc, extend
+G_M48024_IG06:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 216
        pop      rbx
        pop      rsi
@@ -174,7 +156,7 @@ G_M48024_IG07:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=20 bbWeight=1 PerfScore 5.25
 
-; Total bytes of code 425, prolog size 27, PerfScore 100.00, instruction count 109, allocated bytes for code 425 (MethodHash=41fe4467) for method (dynamicClass):IL_STUB_PInvoke(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,ptr) (FullOpts)
+; Total bytes of code 399, prolog size 27, PerfScore 96.00, instruction count 93, allocated bytes for code 399 (MethodHash=41fe4467) for method (dynamicClass):IL_STUB_PInvoke(bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,ptr) (FullOpts)
 ; ============================================================
 
 Unwind Info:
+3 (+18.75%) : 414576.dasm - System.Single:op_Equality(float,float):bool (Tier1)
@@ -19,18 +19,15 @@ G_M39616_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=0 bbWeight=1 PerfScore 0.00
 G_M39616_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vucomiss xmm0, xmm1
-       setnp    al
+       setzunp  al
        jp       SHORT G_M39616_IG03
-       sete     al
-						;; size=12 bbWeight=1 PerfScore 5.00
-G_M39616_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       movzx    rax, al
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M39616_IG04:        ; bbWeight=1, epilog, nogc, extend
+       setzue   al
+						;; size=18 bbWeight=1 PerfScore 5.00
+G_M39616_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 16, prolog size 0, PerfScore 6.25, instruction count 6, allocated bytes for code 16 (MethodHash=37d5653f) for method System.Single:op_Equality(float,float):bool (Tier1)
+; Total bytes of code 19, prolog size 0, PerfScore 6.00, instruction count 5, allocated bytes for code 19 (MethodHash=37d5653f) for method System.Single:op_Equality(float,float):bool (Tier1)
 ; ============================================================
 
 Unwind Info:
+3 (+18.75%) : 414566.dasm - System.Double:op_Equality(double,double):bool (Tier1)
@@ -19,18 +19,15 @@ G_M65327_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=0 bbWeight=1 PerfScore 0.00
 G_M65327_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vucomisd xmm0, xmm1
-       setnp    al
+       setzunp  al
        jp       SHORT G_M65327_IG03
-       sete     al
-						;; size=12 bbWeight=1 PerfScore 5.00
-G_M65327_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       movzx    rax, al
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M65327_IG04:        ; bbWeight=1, epilog, nogc, extend
+       setzue   al
+						;; size=18 bbWeight=1 PerfScore 5.00
+G_M65327_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 16, prolog size 0, PerfScore 6.25, instruction count 6, allocated bytes for code 16 (MethodHash=fc6e00d0) for method System.Double:op_Equality(double,double):bool (Tier1)
+; Total bytes of code 19, prolog size 0, PerfScore 6.00, instruction count 5, allocated bytes for code 19 (MethodHash=fc6e00d0) for method System.Double:op_Equality(double,double):bool (Tier1)
 ; ============================================================
 
 Unwind Info:
+3 (+18.75%) : 360412.dasm - System.Runtime.Intrinsics.Scalar`1[float]:Equals(float,float):bool (Tier1)
@@ -19,18 +19,15 @@ G_M50164_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=0 bbWeight=1 PerfScore 0.00
 G_M50164_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vucomiss xmm0, xmm1
-       setnp    al
+       setzunp  al
        jp       SHORT G_M50164_IG03
-       sete     al
-						;; size=12 bbWeight=1 PerfScore 5.00
-G_M50164_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       movzx    rax, al
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M50164_IG04:        ; bbWeight=1, epilog, nogc, extend
+       setzue   al
+						;; size=18 bbWeight=1 PerfScore 5.00
+G_M50164_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 16, prolog size 0, PerfScore 6.25, instruction count 6, allocated bytes for code 16 (MethodHash=bc063c0b) for method System.Runtime.Intrinsics.Scalar`1[float]:Equals(float,float):bool (Tier1)
+; Total bytes of code 19, prolog size 0, PerfScore 6.00, instruction count 5, allocated bytes for code 19 (MethodHash=bc063c0b) for method System.Runtime.Intrinsics.Scalar`1[float]:Equals(float,float):bool (Tier1)
 ; ============================================================
 
 Unwind Info:
libraries.pmi.windows.x64.checked.mch
-2 (-11.76%) : 195703.dasm - Microsoft.Diagnostics.NETCore.Client.DiagnosticsClient:WriteDump(int,System.String,bool):this (FullOpts)
@@ -27,14 +27,13 @@ G_M29183_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M29183_IG02:        ; bbWeight=1, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rcx r8]
        test     r9b, r9b
-       setne    r9b
-       movzx    r9, r9b
-						;; size=11 bbWeight=1 PerfScore 1.50
+       setzune  r9b
+						;; size=9 bbWeight=1 PerfScore 1.25
 G_M29183_IG03:        ; bbWeight=1, epilog, nogc, extend
        tail.jmp [<unknown method>]
 						;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 17, prolog size 0, PerfScore 3.50, instruction count 4, allocated bytes for code 17 (MethodHash=a0558e00) for method Microsoft.Diagnostics.NETCore.Client.DiagnosticsClient:WriteDump(int,System.String,bool):this (FullOpts)
+; Total bytes of code 15, prolog size 0, PerfScore 3.25, instruction count 3, allocated bytes for code 15 (MethodHash=a0558e00) for method Microsoft.Diagnostics.NETCore.Client.DiagnosticsClient:WriteDump(int,System.String,bool):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
-2 (-11.76%) : 248942.dasm - System.Net.Sockets.Socket:SetSocketOption(int,int,bool):this (FullOpts)
@@ -20,14 +20,13 @@ G_M5040_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M5040_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rcx]
        test     r9b, r9b
-       setne    r9b
-       movzx    r9, r9b
-						;; size=11 bbWeight=1 PerfScore 1.50
+       setzune  r9b
+						;; size=9 bbWeight=1 PerfScore 1.25
 G_M5040_IG03:        ; bbWeight=1, epilog, nogc, extend
        tail.jmp [System.Net.Sockets.Socket:SetSocketOption(int,int,int):this]
 						;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 17, prolog size 0, PerfScore 3.50, instruction count 4, allocated bytes for code 17 (MethodHash=be9aec4f) for method System.Net.Sockets.Socket:SetSocketOption(int,int,bool):this (FullOpts)
+; Total bytes of code 15, prolog size 0, PerfScore 3.25, instruction count 3, allocated bytes for code 15 (MethodHash=be9aec4f) for method System.Net.Sockets.Socket:SetSocketOption(int,int,bool):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
-2 (-11.11%) : 239105.dasm - System.Linq.Enumerable+ImplicitlyStableOrderedIterator`1[System.__Canon]:TryGetFirst(byref):System.__Canon:this (FullOpts)
@@ -19,14 +19,13 @@ G_M41929_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx},
        ; gcrRegs +[rcx]
        ; byrRegs +[rdx]
        cmp      byte  ptr [rcx+0x28], 0
-       sete     r8b
-       movzx    r8, r8b
-						;; size=12 bbWeight=1 PerfScore 4.25
+       setzue   r8b
+						;; size=10 bbWeight=1 PerfScore 4.00
 G_M41929_IG03:        ; bbWeight=1, epilog, nogc, extend
        tail.jmp [<unknown method>]
 						;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 18, prolog size 0, PerfScore 6.25, instruction count 4, allocated bytes for code 18 (MethodHash=e2c25c36) for method System.Linq.Enumerable+ImplicitlyStableOrderedIterator`1[System.__Canon]:TryGetFirst(byref):System.__Canon:this (FullOpts)
+; Total bytes of code 16, prolog size 0, PerfScore 6.00, instruction count 3, allocated bytes for code 16 (MethodHash=e2c25c36) for method System.Linq.Enumerable+ImplicitlyStableOrderedIterator`1[System.__Canon]:TryGetFirst(byref):System.__Canon:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+3 (+18.75%) : 14195.dasm - System.Runtime.Intrinsics.Scalar`1[double]:Equals(double,double):bool (FullOpts)
@@ -17,18 +17,15 @@ G_M8561_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=0 bbWeight=1 PerfScore 0.00
 G_M8561_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vucomisd xmm0, xmm1
-       setnp    al
+       setzunp  al
        jp       SHORT G_M8561_IG03
-       sete     al
-						;; size=12 bbWeight=1 PerfScore 5.00
-G_M8561_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       movzx    rax, al
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M8561_IG04:        ; bbWeight=1, epilog, nogc, extend
+       setzue   al
+						;; size=18 bbWeight=1 PerfScore 5.00
+G_M8561_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 16, prolog size 0, PerfScore 6.25, instruction count 6, allocated bytes for code 16 (MethodHash=a219de8e) for method System.Runtime.Intrinsics.Scalar`1[double]:Equals(double,double):bool (FullOpts)
+; Total bytes of code 19, prolog size 0, PerfScore 6.00, instruction count 5, allocated bytes for code 19 (MethodHash=a219de8e) for method System.Runtime.Intrinsics.Scalar`1[double]:Equals(double,double):bool (FullOpts)
 ; ============================================================
 
 Unwind Info:
+3 (+18.75%) : 69666.dasm - Microsoft.FSharp.Core.Operators+OperatorIntrinsics+RangeSingle@6191-1:Equal(float,float):bool:this (FullOpts)
@@ -18,18 +18,15 @@ G_M53599_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=0 bbWeight=1 PerfScore 0.00
 G_M53599_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vucomiss xmm1, xmm2
-       setnp    al
+       setzunp  al
        jp       SHORT G_M53599_IG03
-       sete     al
-						;; size=12 bbWeight=1 PerfScore 5.00
-G_M53599_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       movzx    rax, al
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M53599_IG04:        ; bbWeight=1, epilog, nogc, extend
+       setzue   al
+						;; size=18 bbWeight=1 PerfScore 5.00
+G_M53599_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 16, prolog size 0, PerfScore 6.25, instruction count 6, allocated bytes for code 16 (MethodHash=16532ea0) for method Microsoft.FSharp.Core.Operators+OperatorIntrinsics+RangeSingle@6191-1:Equal(float,float):bool:this (FullOpts)
+; Total bytes of code 19, prolog size 0, PerfScore 6.00, instruction count 5, allocated bytes for code 19 (MethodHash=16532ea0) for method Microsoft.FSharp.Core.Operators+OperatorIntrinsics+RangeSingle@6191-1:Equal(float,float):bool:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+3 (+18.75%) : 148333.dasm - Microsoft.Build.Evaluation.NotEqualExpressionNode:Compare(double,double):bool:this (FullOpts)
@@ -18,18 +18,15 @@ G_M61779_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=0 bbWeight=1 PerfScore 0.00
 G_M61779_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vucomisd xmm1, xmm2
-       setp     al
+       setzup   al
        jp       SHORT G_M61779_IG03
-       setne    al
-						;; size=12 bbWeight=1 PerfScore 5.00
-G_M61779_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       movzx    rax, al
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M61779_IG04:        ; bbWeight=1, epilog, nogc, extend
+       setzune  al
+						;; size=18 bbWeight=1 PerfScore 5.00
+G_M61779_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 16, prolog size 0, PerfScore 6.25, instruction count 6, allocated bytes for code 16 (MethodHash=a0790eac) for method Microsoft.Build.Evaluation.NotEqualExpressionNode:Compare(double,double):bool:this (FullOpts)
+; Total bytes of code 19, prolog size 0, PerfScore 6.00, instruction count 5, allocated bytes for code 19 (MethodHash=a0790eac) for method Microsoft.Build.Evaluation.NotEqualExpressionNode:Compare(double,double):bool:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
libraries_tests.run.windows.x64.Release.mch
-4 (-8.89%) : 190968.dasm - System.Threading.SpinLock:Exit(bool):this (Tier1)
@@ -21,16 +21,14 @@ G_M57783_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
        ; byrRegs +[rcx]
        mov      eax, dword ptr [rcx]
        test     eax, 0xD1FFAB1E
-       setne    r8b
-       movzx    r8, r8b
+       setzune  r8b
        test     dl, dl
-       sete     r10b
-       movzx    r10, r10b
+       setzue   r10b
        test     r8d, r10d
        je       SHORT G_M57783_IG04
        and      eax, -2
        mov      dword ptr [rcx], eax
-						;; size=35 bbWeight=1 PerfScore 7.50
+						;; size=31 bbWeight=1 PerfScore 7.00
 G_M57783_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
@@ -41,7 +39,7 @@ G_M57783_IG05:        ; bbWeight=0, epilog, nogc, extend
        tail.jmp [System.Threading.SpinLock:ExitSlowPath(bool):this]
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 45, prolog size 0, PerfScore 8.50, instruction count 14, allocated bytes for code 45 (MethodHash=9f381e48) for method System.Threading.SpinLock:Exit(bool):this (Tier1)
+; Total bytes of code 41, prolog size 0, PerfScore 8.00, instruction count 12, allocated bytes for code 41 (MethodHash=9f381e48) for method System.Threading.SpinLock:Exit(bool):this (Tier1)
 ; ============================================================
 
 Unwind Info:
-11 (-7.28%) : 59796.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ModifierUtils:AdjustModifiersForAnInterfaceMember(uint,bool,bool,bool):uint (Tier1)
@@ -20,25 +20,24 @@
 
 G_M2212_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
 						;; size=0 bbWeight=1 PerfScore 0.00
-G_M2212_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2212_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        test     ecx, 0x4000
-       jne      G_M2212_IG14
+       jne      SHORT G_M2212_IG14
        mov      eax, 1
-						;; size=17 bbWeight=1 PerfScore 1.50
+						;; size=13 bbWeight=1 PerfScore 1.50
 G_M2212_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        test     ecx, 0x3F0
        jne      SHORT G_M2212_IG05
 						;; size=8 bbWeight=1 PerfScore 1.25
 G_M2212_IG04:        ; bbWeight=0.43, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        test     r8b, r8b
-       sete     r10b
-       movzx    r10, r10b
+       setzue   r10b
        mov      r9d, ecx
        or       r9d, 256
        or       ecx, 16
        test     r10d, eax
        cmove    ecx, r9d
-						;; size=31 bbWeight=0.43 PerfScore 1.17
+						;; size=29 bbWeight=0.43 PerfScore 1.07
 G_M2212_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        test     r8b, r8b
        jne      SHORT G_M2212_IG13
@@ -49,8 +48,7 @@ G_M2212_IG06:        ; bbWeight=0.78, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
 						;; size=5 bbWeight=0.78 PerfScore 0.97
 G_M2212_IG07:        ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        test     ecx, 0x20101
-       sete     r8b
-       movzx    r8, r8b
+       setzue   r8b
        test     r8d, eax
        je       SHORT G_M2212_IG09
        movzx    rax, dl
@@ -58,7 +56,7 @@ G_M2212_IG07:        ; bbWeight=0.62, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
        and      edx, 0x6002
        or       eax, edx
        jne      SHORT G_M2212_IG11
-						;; size=34 bbWeight=0.62 PerfScore 2.94
+						;; size=32 bbWeight=0.62 PerfScore 2.79
 G_M2212_IG08:        ; bbWeight=0.59, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        or       ecx, 1
 						;; size=3 bbWeight=0.59 PerfScore 0.15
@@ -85,14 +83,13 @@ G_M2212_IG13:        ; bbWeight=0.22, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
        cmovne   ecx, eax
        jmp      SHORT G_M2212_IG09
 						;; size=13 bbWeight=0.22 PerfScore 0.67
-G_M2212_IG14:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2212_IG14:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        test     r9b, r9b
-       sete     al
-       movzx    rax, al
-       jmp      G_M2212_IG03
-						;; size=14 bbWeight=0 PerfScore 0.00
+       setzue   al
+       jmp      SHORT G_M2212_IG03
+						;; size=11 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 151, prolog size 0, PerfScore 11.60, instruction count 45, allocated bytes for code 151 (MethodHash=26b0f75b) for method Microsoft.CodeAnalysis.CSharp.Symbols.ModifierUtils:AdjustModifiersForAnInterfaceMember(uint,bool,bool,bool):uint (Tier1)
+; Total bytes of code 140, prolog size 0, PerfScore 11.34, instruction count 42, allocated bytes for code 140 (MethodHash=26b0f75b) for method Microsoft.CodeAnalysis.CSharp.Symbols.ModifierUtils:AdjustModifiersForAnInterfaceMember(uint,bool,bool,bool):uint (Tier1)
 ; ============================================================
 
 Unwind Info:
-6 (-6.52%) : 682482.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32200_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[char]):bool (FullOpts)
@@ -45,18 +45,15 @@ G_M45082_IG03:        ; bbWeight=0.80, gcrefRegs=0002 {rcx}, byrefRegs=0100 {r8}
 G_M45082_IG04:        ; bbWeight=3.79, gcrefRegs=0002 {rcx}, byrefRegs=0100 {r8}, byref, isz
        movzx    r10, word  ptr [r8+2*rax]
        cmp      r10d, 32
-       sete     r9b
-       movzx    r9, r9b
+       setzue   r9b
        cmp      r10d, 49
-       sete     r11b
-       movzx    r11, r11b
+       setzue   r11b
        or       r9d, r11d
        cmp      r10d, 97
-       sete     r10b
-       movzx    r10, r10b
+       setzue   r10b
        or       r10d, r9d
        jne      SHORT G_M45082_IG08
-						;; size=49 bbWeight=3.79 PerfScore 30.32
+						;; size=43 bbWeight=3.79 PerfScore 27.47
 G_M45082_IG05:        ; bbWeight=3.41, gcrefRegs=0002 {rcx}, byrefRegs=0100 {r8}, byref, isz
        dec      eax
        cmp      eax, edx
@@ -81,7 +78,7 @@ G_M45082_IG09:        ; bbWeight=0.38, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0.38 PerfScore 0.38
 
-; Total bytes of code 92, prolog size 0, PerfScore 46.23, instruction count 31, allocated bytes for code 92 (MethodHash=0eeb4fe5) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex32200_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[char]):bool (FullOpts)
+; Total bytes of code 86, prolog size 0, PerfScore 43.38, instruction count 28, allocated bytes for code 86 (MethodHash=0eeb4fe5) for method System.Text.RegularExpressions.CompiledRegexRunner:Regex32200_TryFindNextPossibleStartingPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[char]):bool (FullOpts)
 ; ============================================================
 
 Unwind Info:
+2 (+20.00%) : 488736.dasm - System.Boolean:System.IConvertible.ToInt64(System.IFormatProvider):long:this (Instrumented Tier1)
@@ -22,14 +22,14 @@ G_M49137_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M49137_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
        ; byrRegs +[rcx]
        cmp      byte  ptr [rcx], 0
-       setne    al
-       movzx    rax, al
-						;; size=9 bbWeight=1 PerfScore 4.25
+       setzune  al
+       mov      eax, eax
+						;; size=11 bbWeight=1 PerfScore 4.25
 G_M49137_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 10, prolog size 0, PerfScore 5.25, instruction count 4, allocated bytes for code 10 (MethodHash=9261400e) for method System.Boolean:System.IConvertible.ToInt64(System.IFormatProvider):long:this (Instrumented Tier1)
+; Total bytes of code 12, prolog size 0, PerfScore 5.25, instruction count 4, allocated bytes for code 12 (MethodHash=9261400e) for method System.Boolean:System.IConvertible.ToInt64(System.IFormatProvider):long:this (Instrumented Tier1)
 ; ============================================================
 
 Unwind Info:
+2 (+20.00%) : 488701.dasm - System.Boolean:System.IConvertible.ToUInt64(System.IFormatProvider):ulong:this (Instrumented Tier1)
@@ -22,14 +22,14 @@ G_M53105_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M53105_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
        ; byrRegs +[rcx]
        cmp      byte  ptr [rcx], 0
-       setne    al
-       movzx    rax, al
-						;; size=9 bbWeight=1 PerfScore 4.25
+       setzune  al
+       mov      eax, eax
+						;; size=11 bbWeight=1 PerfScore 4.25
 G_M53105_IG03:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 10, prolog size 0, PerfScore 5.25, instruction count 4, allocated bytes for code 10 (MethodHash=61ae308e) for method System.Boolean:System.IConvertible.ToUInt64(System.IFormatProvider):ulong:this (Instrumented Tier1)
+; Total bytes of code 12, prolog size 0, PerfScore 5.25, instruction count 4, allocated bytes for code 12 (MethodHash=61ae308e) for method System.Boolean:System.IConvertible.ToUInt64(System.IFormatProvider):ulong:this (Instrumented Tier1)
 ; ============================================================
 
 Unwind Info:
+3 (+18.75%) : 338924.dasm - System.Double:op_Inequality(double,double):bool (Instrumented Tier1)
@@ -19,18 +19,15 @@ G_M47944_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=0 bbWeight=1 PerfScore 0.00
 G_M47944_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vucomisd xmm0, xmm1
-       setp     al
+       setzup   al
        jp       SHORT G_M47944_IG03
-       setne    al
-						;; size=12 bbWeight=1 PerfScore 5.00
-G_M47944_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       movzx    rax, al
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M47944_IG04:        ; bbWeight=1, epilog, nogc, extend
+       setzune  al
+						;; size=18 bbWeight=1 PerfScore 5.00
+G_M47944_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 16, prolog size 0, PerfScore 6.25, instruction count 6, allocated bytes for code 16 (MethodHash=48b044b7) for method System.Double:op_Inequality(double,double):bool (Instrumented Tier1)
+; Total bytes of code 19, prolog size 0, PerfScore 6.00, instruction count 5, allocated bytes for code 19 (MethodHash=48b044b7) for method System.Double:op_Inequality(double,double):bool (Instrumented Tier1)
 ; ============================================================
 
 Unwind Info:
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch
-2 (-11.11%) : 165093.dasm - System.Linq.Enumerable+ImplicitlyStableOrderedIterator`1[int]:TryGetFirst(byref):int:this (FullOpts)
@@ -19,14 +19,13 @@ G_M10025_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx},
        ; gcrRegs +[rcx]
        ; byrRegs +[rdx]
        cmp      byte  ptr [rcx+0x28], 0
-       sete     r8b
-       movzx    r8, r8b
-						;; size=12 bbWeight=1 PerfScore 4.25
+       setzue   r8b
+						;; size=10 bbWeight=1 PerfScore 4.00
 G_M10025_IG03:        ; bbWeight=1, epilog, nogc, extend
        tail.jmp [<unknown method>]
 						;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 18, prolog size 0, PerfScore 6.25, instruction count 4, allocated bytes for code 18 (MethodHash=6cd2d8d6) for method System.Linq.Enumerable+ImplicitlyStableOrderedIterator`1[int]:TryGetFirst(byref):int:this (FullOpts)
+; Total bytes of code 16, prolog size 0, PerfScore 6.00, instruction count 3, allocated bytes for code 16 (MethodHash=6cd2d8d6) for method System.Linq.Enumerable+ImplicitlyStableOrderedIterator`1[int]:TryGetFirst(byref):int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
-2 (-8.70%) : 145574.dasm - System.IO.MemoryMappedFiles.Tests.MemoryMappedViewAccessorTests+<>c__DisplayClass7_0:b__0(long,bool):this (FullOpts)
@@ -23,14 +23,13 @@ G_M24844_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
        mov      rcx, gword ptr [rcx+0x08]
        cmp      byte  ptr [rcx], cl
        test     r8b, r8b
-       setne    r8b
-       movzx    r8, r8b
-						;; size=17 bbWeight=1 PerfScore 6.50
+       setzune  r8b
+						;; size=15 bbWeight=1 PerfScore 6.25
 G_M24844_IG03:        ; bbWeight=1, epilog, nogc, extend
        tail.jmp [System.IO.UnmanagedMemoryAccessor:Write(long,byte):this]
 						;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 23, prolog size 0, PerfScore 8.50, instruction count 6, allocated bytes for code 23 (MethodHash=87c89ef3) for method System.IO.MemoryMappedFiles.Tests.MemoryMappedViewAccessorTests+<>c__DisplayClass7_0:<AssertWritesReads>b__0(long,bool):this (FullOpts)
+; Total bytes of code 21, prolog size 0, PerfScore 8.25, instruction count 5, allocated bytes for code 21 (MethodHash=87c89ef3) for method System.IO.MemoryMappedFiles.Tests.MemoryMappedViewAccessorTests+<>c__DisplayClass7_0:<AssertWritesReads>b__0(long,bool):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
-2 (-6.90%) : 65545.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConvertedSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundConvertedSwitchExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
@@ -21,20 +21,19 @@ G_M12575_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M12575_IG02:        ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rcx rdx]
        cmp      byte  ptr [rdx+0x50], 0
-       sete     r8b
-       movzx    r8, r8b
+       setzue   r8b
        call     [<unknown method>]
        ; gcrRegs -[rcx rdx]
        ; gcr arg pop 0
        xor      rax, rax
        ; gcrRegs +[rax]
-						;; size=20 bbWeight=1 PerfScore 7.50
+						;; size=18 bbWeight=1 PerfScore 7.25
 G_M12575_IG03:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 40
        ret      
 						;; size=5 bbWeight=1 PerfScore 1.25
 
-; Total bytes of code 29, prolog size 4, PerfScore 9.00, instruction count 8, allocated bytes for code 29 (MethodHash=3778cee0) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConvertedSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundConvertedSwitchExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
+; Total bytes of code 27, prolog size 4, PerfScore 8.75, instruction count 7, allocated bytes for code 27 (MethodHash=3778cee0) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConvertedSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundConvertedSwitchExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+3 (+18.75%) : 236590.dasm - System.Runtime.Intrinsics.Scalar`1[double]:Equals(double,double):bool (FullOpts)
@@ -17,18 +17,15 @@ G_M8561_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=0 bbWeight=1 PerfScore 0.00
 G_M8561_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vucomisd xmm0, xmm1
-       setnp    al
+       setzunp  al
        jp       SHORT G_M8561_IG03
-       sete     al
-						;; size=12 bbWeight=1 PerfScore 5.00
-G_M8561_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       movzx    rax, al
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M8561_IG04:        ; bbWeight=1, epilog, nogc, extend
+       setzue   al
+						;; size=18 bbWeight=1 PerfScore 5.00
+G_M8561_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 16, prolog size 0, PerfScore 6.25, instruction count 6, allocated bytes for code 16 (MethodHash=a219de8e) for method System.Runtime.Intrinsics.Scalar`1[double]:Equals(double,double):bool (FullOpts)
+; Total bytes of code 19, prolog size 0, PerfScore 6.00, instruction count 5, allocated bytes for code 19 (MethodHash=a219de8e) for method System.Runtime.Intrinsics.Scalar`1[double]:Equals(double,double):bool (FullOpts)
 ; ============================================================
 
 Unwind Info:
+3 (+18.75%) : 236334.dasm - System.Runtime.Intrinsics.Scalar`1[float]:Equals(float,float):bool (FullOpts)
@@ -17,18 +17,15 @@ G_M50164_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=0 bbWeight=1 PerfScore 0.00
 G_M50164_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vucomiss xmm0, xmm1
-       setnp    al
+       setzunp  al
        jp       SHORT G_M50164_IG03
-       sete     al
-						;; size=12 bbWeight=1 PerfScore 5.00
-G_M50164_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       movzx    rax, al
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M50164_IG04:        ; bbWeight=1, epilog, nogc, extend
+       setzue   al
+						;; size=18 bbWeight=1 PerfScore 5.00
+G_M50164_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 16, prolog size 0, PerfScore 6.25, instruction count 6, allocated bytes for code 16 (MethodHash=bc063c0b) for method System.Runtime.Intrinsics.Scalar`1[float]:Equals(float,float):bool (FullOpts)
+; Total bytes of code 19, prolog size 0, PerfScore 6.00, instruction count 5, allocated bytes for code 19 (MethodHash=bc063c0b) for method System.Runtime.Intrinsics.Scalar`1[float]:Equals(float,float):bool (FullOpts)
 ; ============================================================
 
 Unwind Info:
+3 (+18.75%) : 132268.dasm - System.Formats.Cbor.Tests.CborRandomGenerators+<>c:b__4_0(double):bool:this (FullOpts)
@@ -18,18 +18,15 @@ G_M12531_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=0 bbWeight=1 PerfScore 0.00
 G_M12531_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vucomisd xmm1, xmm1
-       setnp    al
+       setzunp  al
        jp       SHORT G_M12531_IG03
-       sete     al
-						;; size=12 bbWeight=1 PerfScore 5.00
-G_M12531_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       movzx    rax, al
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M12531_IG04:        ; bbWeight=1, epilog, nogc, extend
+       setzue   al
+						;; size=18 bbWeight=1 PerfScore 5.00
+G_M12531_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 16, prolog size 0, PerfScore 6.25, instruction count 6, allocated bytes for code 16 (MethodHash=c7f6cf0c) for method System.Formats.Cbor.Tests.CborRandomGenerators+<>c:<Double>b__4_0(double):bool:this (FullOpts)
+; Total bytes of code 19, prolog size 0, PerfScore 6.00, instruction count 5, allocated bytes for code 19 (MethodHash=c7f6cf0c) for method System.Formats.Cbor.Tests.CborRandomGenerators+<>c:<Double>b__4_0(double):bool:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
realworld.run.windows.x64.checked.mch
-2 (-6.90%) : 15882.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConvertedSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundConvertedSwitchExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
@@ -21,20 +21,19 @@ G_M12575_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M12575_IG02:        ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rcx rdx]
        cmp      byte  ptr [rdx+0x50], 0
-       sete     r8b
-       movzx    r8, r8b
+       setzue   r8b
        call     [<unknown method>]
        ; gcrRegs -[rcx rdx]
        ; gcr arg pop 0
        xor      rax, rax
        ; gcrRegs +[rax]
-						;; size=20 bbWeight=1 PerfScore 7.50
+						;; size=18 bbWeight=1 PerfScore 7.25
 G_M12575_IG03:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 40
        ret      
 						;; size=5 bbWeight=1 PerfScore 1.25
 
-; Total bytes of code 29, prolog size 4, PerfScore 9.00, instruction count 8, allocated bytes for code 29 (MethodHash=3778cee0) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConvertedSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundConvertedSwitchExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
+; Total bytes of code 27, prolog size 4, PerfScore 8.75, instruction count 7, allocated bytes for code 27 (MethodHash=3778cee0) for method Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConvertedSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundConvertedSwitchExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
-2 (-5.13%) : 17244.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:AddLocalToScope(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
@@ -26,19 +26,18 @@ G_M50748_IG02:        ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {},
        mov      r8, gword ptr [rdx+0x38]
        ; gcrRegs +[r8]
        cmp      dword ptr [r8+0x08], 0
-       setne    r8b
+       setzune  r8b
        ; gcrRegs -[r8]
-       movzx    r8, r8b
        or       eax, r8d
        mov      byte  ptr [rcx+0x6E], al
        mov      rcx, gword ptr [rcx+0x10]
        cmp      dword ptr [rcx], ecx
-						;; size=33 bbWeight=1 PerfScore 14.50
+						;; size=31 bbWeight=1 PerfScore 14.25
 G_M50748_IG03:        ; bbWeight=1, epilog, nogc, extend
        tail.jmp [Microsoft.CodeAnalysis.CodeGen.ILBuilder+LocalScopeManager:AddLocal(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this]
 						;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 39, prolog size 0, PerfScore 16.50, instruction count 10, allocated bytes for code 39 (MethodHash=9df939c3) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder:AddLocalToScope(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
+; Total bytes of code 37, prolog size 0, PerfScore 16.25, instruction count 9, allocated bytes for code 37 (MethodHash=9df939c3) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder:AddLocalToScope(Microsoft.CodeAnalysis.CodeGen.LocalDefinition):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
-2 (-5.13%) : 17708.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:AddLocalConstantToScope(Microsoft.CodeAnalysis.CodeGen.LocalConstantDefinition):this (FullOpts)
@@ -26,19 +26,18 @@ G_M60412_IG02:        ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {},
        mov      r8, gword ptr [rdx+0x20]
        ; gcrRegs +[r8]
        cmp      dword ptr [r8+0x08], 0
-       setne    r8b
+       setzune  r8b
        ; gcrRegs -[r8]
-       movzx    r8, r8b
        or       eax, r8d
        mov      byte  ptr [rcx+0x6E], al
        mov      rcx, gword ptr [rcx+0x10]
        cmp      dword ptr [rcx], ecx
-						;; size=33 bbWeight=1 PerfScore 14.50
+						;; size=31 bbWeight=1 PerfScore 14.25
 G_M60412_IG03:        ; bbWeight=1, epilog, nogc, extend
        tail.jmp [Microsoft.CodeAnalysis.CodeGen.ILBuilder+LocalScopeManager:AddLocalConstant(Microsoft.CodeAnalysis.CodeGen.LocalConstantDefinition):this]
 						;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 39, prolog size 0, PerfScore 16.50, instruction count 10, allocated bytes for code 39 (MethodHash=39d01403) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder:AddLocalConstantToScope(Microsoft.CodeAnalysis.CodeGen.LocalConstantDefinition):this (FullOpts)
+; Total bytes of code 37, prolog size 0, PerfScore 16.25, instruction count 9, allocated bytes for code 37 (MethodHash=39d01403) for method Microsoft.CodeAnalysis.CodeGen.ILBuilder:AddLocalConstantToScope(Microsoft.CodeAnalysis.CodeGen.LocalConstantDefinition):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+3 (+15.00%) : 4681.dasm - Microsoft.ML.Data.R4Adder:IsDefault(float):bool:this (FullOpts)
@@ -18,18 +18,15 @@ G_M63379_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M63379_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vxorps   xmm0, xmm0, xmm0
        vucomiss xmm1, xmm0
-       setnp    al
+       setzunp  al
        jp       SHORT G_M63379_IG03
-       sete     al
-						;; size=16 bbWeight=1 PerfScore 5.33
-G_M63379_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       movzx    rax, al
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M63379_IG04:        ; bbWeight=1, epilog, nogc, extend
+       setzue   al
+						;; size=22 bbWeight=1 PerfScore 5.33
+G_M63379_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 20, prolog size 0, PerfScore 6.58, instruction count 7, allocated bytes for code 20 (MethodHash=aba0086c) for method Microsoft.ML.Data.R4Adder:IsDefault(float):bool:this (FullOpts)
+; Total bytes of code 23, prolog size 0, PerfScore 6.33, instruction count 6, allocated bytes for code 23 (MethodHash=aba0086c) for method Microsoft.ML.Data.R4Adder:IsDefault(float):bool:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+3 (+15.00%) : 5054.dasm - Microsoft.ML.Trainers.SdcaTrainerBase`3+<>c[System.__Canon,System.__Canon,System.__Canon]:b__20_0(float):bool:this (FullOpts)
@@ -18,18 +18,15 @@ G_M3146_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M3146_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        vxorps   xmm0, xmm0, xmm0
        vucomiss xmm1, xmm0
-       setp     al
+       setzup   al
        jp       SHORT G_M3146_IG03
-       setne    al
-						;; size=16 bbWeight=1 PerfScore 5.33
-G_M3146_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       movzx    rax, al
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M3146_IG04:        ; bbWeight=1, epilog, nogc, extend
+       setzune  al
+						;; size=22 bbWeight=1 PerfScore 5.33
+G_M3146_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 20, prolog size 0, PerfScore 6.58, instruction count 7, allocated bytes for code 20 (MethodHash=1440f3b5) for method Microsoft.ML.Trainers.SdcaTrainerBase`3+<>c[System.__Canon,System.__Canon,System.__Canon]:<CheckConvergence>b__20_0(float):bool:this (FullOpts)
+; Total bytes of code 23, prolog size 0, PerfScore 6.33, instruction count 6, allocated bytes for code 23 (MethodHash=1440f3b5) for method Microsoft.ML.Trainers.SdcaTrainerBase`3+<>c[System.__Canon,System.__Canon,System.__Canon]:<CheckConvergence>b__20_0(float):bool:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+3 (+12.50%) : 5059.dasm - Microsoft.ML.Data.Conversion.Conversions:IsDefault(byref):bool:this (FullOpts)
@@ -20,19 +20,16 @@ G_M22340_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byr
        vmovss   xmm0, dword ptr [rdx]
        vxorps   xmm1, xmm1, xmm1
        vucomiss xmm0, xmm1
-       setnp    al
+       setzunp  al
        jp       SHORT G_M22340_IG03
-       sete     al
-						;; size=20 bbWeight=1 PerfScore 9.33
-G_M22340_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       setzue   al
+						;; size=26 bbWeight=1 PerfScore 9.33
+G_M22340_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ; byrRegs -[rdx]
-       movzx    rax, al
-						;; size=3 bbWeight=1 PerfScore 0.25
-G_M22340_IG04:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 24, prolog size 0, PerfScore 10.58, instruction count 8, allocated bytes for code 24 (MethodHash=f143a8bb) for method Microsoft.ML.Data.Conversion.Conversions:IsDefault(byref):bool:this (FullOpts)
+; Total bytes of code 27, prolog size 0, PerfScore 10.33, instruction count 7, allocated bytes for code 27 (MethodHash=f143a8bb) for method Microsoft.ML.Data.Conversion.Conversions:IsDefault(byref):bool:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
smoke_tests.nativeaot.windows.x64.checked.mch
-2 (-2.02%) : 17861.dasm - System.Runtime.InternalCalls:RhCollect(int,int,bool) (FullOpts)
@@ -38,13 +38,12 @@ G_M49764_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=27 bbWeight=1 PerfScore 9.75
 G_M49764_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        test     r8b, r8b
-       setne    r8b
-       movzx    r8, r8b
+       setzune  r8b
        mov      dword ptr [rbp-0x64], ecx
        mov      dword ptr [rbp-0x68], edx
        mov      dword ptr [rbp-0x6C], r8d
        lea      rcx, [rbp-0x60]
-						;; size=25 bbWeight=1 PerfScore 5.00
+						;; size=23 bbWeight=1 PerfScore 4.75
 G_M49764_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        call     CORINFO_HELP_JIT_PINVOKE_BEGIN
        mov      ecx, dword ptr [rbp-0x64]
@@ -70,7 +69,7 @@ G_M49764_IG05:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=17 bbWeight=1 PerfScore 5.25
 
-; Total bytes of code 99, prolog size 27, PerfScore 26.75, instruction count 36, allocated bytes for code 99 (MethodHash=4d5a3d9b) for method System.Runtime.InternalCalls:RhCollect(int,int,bool) (FullOpts)
+; Total bytes of code 97, prolog size 27, PerfScore 26.50, instruction count 35, allocated bytes for code 97 (MethodHash=4d5a3d9b) for method System.Runtime.InternalCalls:RhCollect(int,int,bool) (FullOpts)
 ; ============================================================
 
 Unwind Info:
-2 (-1.89%) : 20022.dasm - System.Number:RightShiftWithRounding(ulong,int,bool):ulong (FullOpts)
@@ -37,21 +37,18 @@ G_M8046_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
        lea      r10, [rax-0x01]
        and      edx, 63
        bt       rcx, rdx
-       setb     r9b
-       movzx    r9, r9b
+       setzub   r9b
        test     rcx, rax
-       setne    al
-       movzx    rax, al
+       setzune  al
        test     r8b, r8b
        jne      SHORT G_M8046_IG04
        mov      r8d, 1
        jmp      SHORT G_M8046_IG05
-						;; size=55 bbWeight=0.50 PerfScore 4.38
+						;; size=53 bbWeight=0.50 PerfScore 4.12
 G_M8046_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        test     rcx, r10
-       setne    r8b
-       movzx    r8, r8b
-						;; size=11 bbWeight=0.50 PerfScore 0.75
+       setzune  r8b
+						;; size=9 bbWeight=0.50 PerfScore 0.62
 G_M8046_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        test     eax, eax
        jne      SHORT G_M8046_IG06
@@ -65,10 +62,10 @@ G_M8046_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
 G_M8046_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        shrx     rcx, rcx, rdx
        test     eax, eax
-       setne    al
-       movzx    rax, al
+       setzune  al
+       mov      eax, eax
        add      rax, rcx
-						;; size=16 bbWeight=0.50 PerfScore 1.12
+						;; size=18 bbWeight=0.50 PerfScore 1.12
 G_M8046_IG08:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0.50 PerfScore 0.50
@@ -79,7 +76,7 @@ G_M8046_IG10:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=1 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 106, prolog size 0, PerfScore 10.62, instruction count 34, allocated bytes for code 106 (MethodHash=aec1e091) for method System.Number:RightShiftWithRounding(ulong,int,bool):ulong (FullOpts)
+; Total bytes of code 104, prolog size 0, PerfScore 10.25, instruction count 31, allocated bytes for code 104 (MethodHash=aec1e091) for method System.Number:RightShiftWithRounding(ulong,int,bool):ulong (FullOpts)
 ; ============================================================
 
 Unwind Info:
-2 (-1.67%) : 17859.dasm - System.Runtime.InternalCalls:RhStartNoGCRegion(long,bool,long,bool):int (FullOpts)
@@ -46,17 +46,15 @@ G_M63916_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=27 bbWeight=1 PerfScore 9.75
 G_M63916_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        test     dl, dl
-       setne    dl
-       movzx    rdx, dl
+       setzune  dl
        test     r9b, r9b
-       setne    r9b
-       movzx    r9, r9b
+       setzune  r9b
        mov      qword ptr [rbp-0x70], rcx
        mov      dword ptr [rbp-0x64], edx
        mov      qword ptr [rbp-0x78], r8
        mov      dword ptr [rbp-0x68], r9d
        lea      rcx, [rbp-0x60]
-						;; size=38 bbWeight=1 PerfScore 7.50
+						;; size=36 bbWeight=1 PerfScore 7.00
 G_M63916_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        call     CORINFO_HELP_JIT_PINVOKE_BEGIN
        mov      rcx, qword ptr [rbp-0x70]
@@ -84,7 +82,7 @@ G_M63916_IG05:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=17 bbWeight=1 PerfScore 5.25
 
-; Total bytes of code 120, prolog size 27, PerfScore 30.50, instruction count 42, allocated bytes for code 120 (MethodHash=35c00653) for method System.Runtime.InternalCalls:RhStartNoGCRegion(long,bool,long,bool):int (FullOpts)
+; Total bytes of code 118, prolog size 27, PerfScore 30.00, instruction count 40, allocated bytes for code 118 (MethodHash=35c00653) for method System.Runtime.InternalCalls:RhStartNoGCRegion(long,bool,long,bool):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
+3 (+3.90%) : 18735.dasm - System.Threading.Thread:Yield():bool (FullOpts)
@@ -38,9 +38,9 @@ G_M21901_IG04:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        lea      rcx, [rbp-0x60]
        call     CORINFO_HELP_JIT_PINVOKE_END
        test     ebx, ebx
-       setne    al
+       setzune  al
        movzx    rax, al
-						;; size=24 bbWeight=1 PerfScore 4.25
+						;; size=27 bbWeight=1 PerfScore 4.25
 G_M21901_IG05:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 72
        pop      rbx
@@ -54,7 +54,7 @@ G_M21901_IG05:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=17 bbWeight=1 PerfScore 5.25
 
-; Total bytes of code 77, prolog size 27, PerfScore 20.75, instruction count 30, allocated bytes for code 77 (MethodHash=b57eaa72) for method System.Threading.Thread:Yield():bool (FullOpts)
+; Total bytes of code 80, prolog size 27, PerfScore 20.75, instruction count 30, allocated bytes for code 80 (MethodHash=b57eaa72) for method System.Threading.Thread:Yield():bool (FullOpts)
 ; ============================================================
 
 Unwind Info:
+3 (+2.63%) : 17420.dasm - Interop+Globalization:IsPredefinedLocale(System.String):bool (FullOpts)
@@ -69,9 +69,9 @@ G_M12682_IG07:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        xor      eax, eax
        mov      bword ptr [rbp-0x40], rax
        test     ebx, ebx
-       setne    al
+       setzune  al
        movzx    rax, al
-						;; size=30 bbWeight=1 PerfScore 5.50
+						;; size=33 bbWeight=1 PerfScore 5.50
 G_M12682_IG08:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 88
        pop      rbx
@@ -85,7 +85,7 @@ G_M12682_IG08:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=17 bbWeight=1 PerfScore 5.25
 
-; Total bytes of code 114, prolog size 33, PerfScore 28.75, instruction count 42, allocated bytes for code 114 (MethodHash=e749ce75) for method Interop+Globalization:IsPredefinedLocale(System.String):bool (FullOpts)
+; Total bytes of code 117, prolog size 33, PerfScore 28.75, instruction count 42, allocated bytes for code 117 (MethodHash=e749ce75) for method Interop+Globalization:IsPredefinedLocale(System.String):bool (FullOpts)
 ; ============================================================
 
 Unwind Info:
+3 (+2.31%) : 17613.dasm - Interop+Globalization:GetLocaleName(System.String,ptr,int):bool (FullOpts)
@@ -78,9 +78,9 @@ G_M61634_IG07:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        xor      eax, eax
        mov      bword ptr [rbp-0x40], rax
        test     ebx, ebx
-       setne    al
+       setzune  al
        movzx    rax, al
-						;; size=30 bbWeight=1 PerfScore 5.50
+						;; size=33 bbWeight=1 PerfScore 5.50
 G_M61634_IG08:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 104
        pop      rbx
@@ -94,7 +94,7 @@ G_M61634_IG08:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=17 bbWeight=1 PerfScore 5.25
 
-; Total bytes of code 130, prolog size 33, PerfScore 32.75, instruction count 46, allocated bytes for code 130 (MethodHash=0ab20f3d) for method Interop+Globalization:GetLocaleName(System.String,ptr,int):bool (FullOpts)
+; Total bytes of code 133, prolog size 33, PerfScore 32.75, instruction count 46, allocated bytes for code 133 (MethodHash=0ab20f3d) for method Interop+Globalization:GetLocaleName(System.String,ptr,int):bool (FullOpts)
 ; ============================================================
 
 Unwind Info:
Details

Instruction Count improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (#instructions) Regressions (#instructions)
aspnet.run.windows.x64.checked.mch 18,824 18,739 0 85 -31,008 +0
benchmarks.run.windows.x64.checked.mch 3,744 3,681 0 63 -8,171 +0
benchmarks.run_pgo.windows.x64.checked.mch 24,380 24,360 0 20 -55,633 +0
benchmarks.run_pgo_optrepeat.windows.x64.checked.mch 3,749 3,686 0 63 -8,225 +0
coreclr_tests.run.windows.x64.checked.mch 56,732 56,520 0 212 -202,141 +0
libraries.crossgen2.windows.x64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.x64.checked.mch 18,953 18,639 0 314 -26,772 +0
libraries_tests.run.windows.x64.Release.mch 68,224 67,858 0 366 -133,449 +0
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 31,236 30,939 0 297 -66,655 +0
realworld.run.windows.x64.checked.mch 3,872 3,794 0 78 -6,830 +0
smoke_tests.nativeaot.windows.x64.checked.mch 523 495 0 28 -677 +0
230,237 228,711 0 1,526 -539,561 +0

Size improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
aspnet.run.windows.x64.checked.mch 18,824 4,548 146 14,130 -15,430 +376
benchmarks.run.windows.x64.checked.mch 3,744 685 72 2,987 -2,023 +212
benchmarks.run_pgo.windows.x64.checked.mch 24,380 5,293 35 19,052 -26,878 +101
benchmarks.run_pgo_optrepeat.windows.x64.checked.mch 3,749 685 72 2,992 -2,023 +212
coreclr_tests.run.windows.x64.checked.mch 56,732 6,410 1,990 48,332 -19,929 +12,251
libraries.crossgen2.windows.x64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.x64.checked.mch 18,953 3,517 421 15,015 -10,394 +1,271
libraries_tests.run.windows.x64.Release.mch 68,224 15,801 682 51,741 -52,581 +2,017
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 31,236 5,757 486 24,993 -18,774 +2,095
realworld.run.windows.x64.checked.mch 3,872 896 99 2,877 -3,201 +286
smoke_tests.nativeaot.windows.x64.checked.mch 523 118 30 375 -404 +88
230,237 43,710 4,033 182,494 -151,637 +18,909

PerfScore improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same PerfScore Improvements (PerfScore) Regressions (PerfScore) PerfScore Overall in FullOpts
aspnet.run.windows.x64.checked.mch 18,824 15,471 0 3,353 -1.10% 0.00% -0.1205%
benchmarks.run.windows.x64.checked.mch 3,744 3,626 0 118 -0.90% 0.00% -0.1127%
benchmarks.run_pgo.windows.x64.checked.mch 24,380 18,465 0 5,915 -1.09% 0.00% -0.1555%
benchmarks.run_pgo_optrepeat.windows.x64.checked.mch 3,749 3,631 0 118 -0.89% 0.00% -0.1121%
coreclr_tests.run.windows.x64.checked.mch 56,732 54,754 0 1,978 -0.63% 0.00% -0.0619%
libraries.crossgen2.windows.x64.checked.mch 0 0 0 0 0.00% 0.00% 0.0000%
libraries.pmi.windows.x64.checked.mch 18,953 17,856 0 1,097 -1.73% 0.00% -0.1080%
libraries_tests.run.windows.x64.Release.mch 68,224 60,753 0 7,471 -0.78% 0.00% -0.1257%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 31,236 30,279 0 957 -0.69% 0.00% -0.0503%
realworld.run.windows.x64.checked.mch 3,872 3,747 0 125 -0.83% 0.00% -0.1063%
smoke_tests.nativeaot.windows.x64.checked.mch 523 491 0 32 -1.62% 0.00% -0.0235%

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
aspnet.run.windows.x64.checked.mch 197,234 107,930 89,304 819 (0.41%) 819 (0.41%)
benchmarks.run.windows.x64.checked.mch 28,935 5 28,930 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.x64.checked.mch 144,950 52,918 92,032 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo_optrepeat.windows.x64.checked.mch 29,055 5 29,050 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.x64.checked.mch 635,045 387,749 247,296 0 (0.00%) 0 (0.00%)
libraries.crossgen2.windows.x64.checked.mch 273,401 17 273,384 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.x64.checked.mch 287,546 6 287,540 1 (0.00%) 1 (0.00%)
libraries_tests.run.windows.x64.Release.mch 720,686 529,198 191,488 1 (0.00%) 1 (0.00%)
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 366,382 22,082 344,300 13 (0.00%) 13 (0.00%)
realworld.run.windows.x64.checked.mch 29,243 3 29,240 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.windows.x64.checked.mch 34,193 15 34,178 0 (0.00%) 0 (0.00%)
2,746,670 1,099,928 1,646,742 834 (0.03%) 834 (0.03%)

jit-analyze output

Copy link
Contributor

Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.

@Ruihan-Yin Ruihan-Yin changed the title Apx zu [APX] Enable APX-EVEX.ZU for SETcc instructions Jul 3, 2025
@Ruihan-Yin Ruihan-Yin marked this pull request as ready for review July 3, 2025 10:17
@Copilot Copilot AI review requested due to automatic review settings July 3, 2025 10:17
@Ruihan-Yin
Copy link
Member Author

@dotnet/intel for review

Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR enables the APX-EVEX.ZU feature for SETcc instructions, allowing the JIT to emit promoted EVEX encodings and avoid extra zeroing moves.

  • Introduce a new JIT config EnableApxZU to toggle the ZU feature.
  • Define new SETZUcc opcodes and wire them through instruction enums, emitter logic, and codegen.
  • Extend insOpts, emitter context bits, and codegen paths to carry and apply the EVEX.ZU encoding.

Reviewed Changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/coreclr/jit/jitconfigvalues.h Added EnableApxZU config flag
src/coreclr/jit/instrsxarch.h Declared new setzu* instructions next to existing SETcc exams
src/coreclr/jit/instr.h Added INS_OPTS_EVEX_zu and its mask to the insOpts enum
src/coreclr/jit/instr.cpp Updated inst_SET to accept instOptions and promote to ZU form
src/coreclr/jit/emitxarch.h Declared IsSETZUccInstruction and SetEvexZuIfNeeded
src/coreclr/jit/emitxarch.cpp Implemented ZU detection, prefix logic, and integration
src/coreclr/jit/emit.h Added EVEX.ZU context bits and setters/getters
src/coreclr/jit/compiler.h Added canUseApxEvexEncoding()
src/coreclr/jit/codegenxarch.cpp Propagated instOptions in inst_SETCC and updated prolog/epilog
src/coreclr/jit/codegen.h Extended inst_SET signature to include instOptions
Comments suppressed due to low confidence (3)

src/coreclr/jit/instr.h:305

  • [nitpick] The enum constant INS_OPTS_EVEX_zu uses lowercase letters for 'zu', deviating from the uppercase convention of other EVEX options. Consider renaming it to INS_OPTS_EVEX_ZU for consistency.
    INS_OPTS_EVEX_zu = 1 << 14,      // Zero Upper for APX-EVEX

src/coreclr/jit/codegenxarch.cpp:9457

  • Only INS_setzuo is covered in the emitter unit tests. To ensure full coverage of the new APX-EVEX.ZU feature, add tests for all SETZUcc variants (INS_setzuno, INS_setzub, etc.).
    theEmitter->emitIns_R(INS_setzuo, EA_1BYTE, REG_R11, INS_OPTS_EVEX_zu);

src/coreclr/jit/emit.h:851

  • Add a comment clarifying that _idEvexZuContext intentionally reuses the same _idCustom5 bit as _idEvexNdContext, since EVEX.ZU repurposes the EVEX.ND bit in the encoding.
#define _idEvexZuContext _idCustom5 /* bits used for the APX-EVEX.zu context for promoted legacy instructions */

@risc-vv
Copy link

risc-vv commented Jul 4, 2025

@dotnet/samsung Could you please take a look? These changes may be related to riscv64.

@Ruihan-Yin Ruihan-Yin marked this pull request as draft July 7, 2025 21:17
@tannergooding
Copy link
Member

The changes generally look good to me now. I think there's some condition ordering fixes and potential naming improvements that are warranted, but it looks to flow a lot better now and need less special handling 👍

Copy link
Member

@tannergooding tannergooding left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CC. @dotnet/jit-contrib, @EgorBo for secondary review

@risc-vv
Copy link

risc-vv commented Jul 21, 2025

@dotnet/samsung Could you please take a look? These changes may be related to riscv64.

@Ruihan-Yin
Copy link
Member Author

Hi @EgorBo, could you please take a look at this PR please, thanks! :)

Copy link
Member

@EgorBo EgorBo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the delay, LGTM

@EgorBo
Copy link
Member

EgorBo commented Jul 23, 2025

Is MinOpts TP regression unavoidable?

@Ruihan-Yin
Copy link
Member Author

Is MinOpts TP regression unavoidable?

image

tp on windows now is green, some regression found on linux, but I suppose that's acceptable.

I have one more bug fix patch, but it should not affect tp too much.

@Ruihan-Yin Ruihan-Yin requested a review from EgorBo July 24, 2025 04:04
Copy link
Member

@EgorBo EgorBo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for fixing the TP regression!

@EgorBo EgorBo enabled auto-merge (squash) July 24, 2025 15:06
@Ruihan-Yin
Copy link
Member Author

Looks like build analysis is failing due to some timeout issue.

@EgorBo
Copy link
Member

EgorBo commented Jul 24, 2025

/ba-g "timeouts on linux-x64"

@EgorBo EgorBo merged commit dd7a848 into dotnet:main Jul 24, 2025
107 of 110 checks passed
@Ruihan-Yin
Copy link
Member Author

Thanks for the reviews and suggestions! :)

@github-actions github-actions bot locked and limited conversation to collaborators Aug 24, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI community-contribution Indicates that the PR has been added by a community member

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants