Skip to content

Instantly share code, notes, and snippets.

@kunalspathak
kunalspathak / all_r.txt
Created June 27, 2024 01:10
All stress results
Starting test: D:\kpathak\Core_Root_callee_Save\Core_Root\corerun.exe -p System.Reflection.Metadata.MetadataUpdater.IsSupported=false -p System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization=true D:\kpathak\tests\callee-save-all\HardwareIntrinsics\HardwareIntrinsics_Arm_r\HardwareIntrinsics_Arm_r.dll Sve_
===================Running default===================
------------------- {} -------------------
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_Abs_float() : 16
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_Abs_double() : 16
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_Abs_sbyte() : 16
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_Abs_short() : 16
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_Abs_int() : 16
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_Abs_long() : 16
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_AbsoluteDifference_float() : 19
@kunalspathak
kunalspathak / calling_convetion.md
Last active June 25, 2024 22:25
sve_calling_convention
sve1()
{
   ; prolog - save z8-z23, p0-p3

     ...      
   ; save v0-v7                                 - LIVE-ONLY
   ; save v24-v31                               - LIVE-ONLY
   ; save p0-p3                                 - LIVE-ONLY
   
@kunalspathak
kunalspathak / HardwareIntrinsics_Arm_r.md
Last active June 22, 2024 16:03
GatherVector test failure
D:\kpathak\Core_Root_callee_Save\Core_Root\corerun.exe -p "System.Reflection.Metadata.MetadataUpdater.IsSupported=false" -p "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization=true"  D:\kpathak\tests\caller-save\HardwareIntrinsics\HardwareIntrinsics_Arm_r\HardwareIntrinsics_Arm_r.dll Sve_GatherVector_Bases_double_ulong
09:01:49.183 Running test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_GatherVector_Bases_double_ulong()
Supported ISAs:
  AdvSimd:   True
  Aes:       True
  ArmBase:   True
  Crc32:     True
  Dp:        True
  Rdm:       False
; Assembly listing for method System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (FullOpts)
; Emitting BLENDED_CODE for generic ARM64 - Windows
; FullOpts code
; optimized code
; optimized using Static PGO
; fp based frame
; fully interruptible
; with Static PGO: fgCalledCount is 100
; PGO data available, but IL did not match
@kunalspathak
kunalspathak / sve_r.txt
Created June 18, 2024 04:26
absolutecompare
Starting test: D:\kpathak\Core_Root_absolutecompare\Core_Root\corerun.exe -p System.Reflection.Metadata.MetadataUpdater.IsSupported=false -p System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization=true D:\kpathak\tests\absoluteCompare\HardwareIntrinsics\HardwareIntrinsics_Arm_r\HardwareIntrinsics_Arm_r.dll Sve_AbsoluteCompare
===================Running default===================
------------------- {} -------------------
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_AbsoluteCompareGreaterThan_float() : 21
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_AbsoluteCompareGreaterThan_double() : 21
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_AbsoluteCompareGreaterThanOrEqual_float() : 21
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_AbsoluteCompareGreaterThanOrEqual_double() : 21
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_AbsoluteCompareLessThan_float() : 21
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm
@kunalspathak
kunalspathak / sve_r.txt
Created June 12, 2024 14:47
CreateTrue
Starting test: D:\kpathak\Core_Root_createtrue\Core_Root\corerun.exe -p System.Reflection.Metadata.MetadataUpdater.IsSupported=false -p System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization=true D:\kpathak\tests\createtrue\HardwareIntrinsics\HardwareIntrinsics_Arm_r\HardwareIntrinsics_Arm_r.dll Sve_CreateTrue
===================Running default===================
------------------- {} -------------------
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_CreateTrueMaskByte() : 3
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_CreateTrueMaskDouble() : 3
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_CreateTrueMaskInt16() : 3
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_CreateTrueMaskInt32() : 3
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_CreateTrueMaskInt64() : 3
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_CreateTrueMaskSByte() : 3
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.P
@kunalspathak
kunalspathak / sve_r.txt
Created June 5, 2024 17:54
Compute*BitAddresses
Starting test: D:\kpathak\Core_Root_computeAddress\Core_Root\corerun.exe -p System.Reflection.Metadata.MetadataUpdater.IsSupported=false -p System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization=true D:\kpathak\tests\computeaddress\HardwareIntrinsics\HardwareIntrinsics_Arm_r\HardwareIntrinsics_Arm_r.dll Sve_Compute
===================Running default===================
------------------- {} -------------------
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_Compute16BitAddresses_uint_int() : 16
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_Compute16BitAddresses_uint() : 16
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_Compute16BitAddresses_ulong_long() : 16
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_Compute16BitAddresses_ulong() : 16
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_Compute32BitAddresses_uint_int() : 16
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_Compute32BitAddresse

Problem Statement

In https://github.com/dotnet/performance, we have seen lot of MicroBenchmarks regress that often is the case of Intel's JCC erratum. As such, we wanted to see if we can mitigate it or add a switch in codegen to mitigate it for experimental purpose and performance comparison.

Observation

@kunalspathak
kunalspathak / sve_r.txt
Created May 30, 2024 23:26
loadvector_nonfaulting
Starting test: D:\kpathak\Core_Root_loadnonfaulting\Core_Root\corerun.exe -p System.Reflection.Metadata.MetadataUpdater.IsSupported=false -p System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization=true D:\kpathak\tests\loadnonfaulting\HardwareIntrinsics\HardwareIntrinsics_Arm_r\HardwareIntrinsics_Arm_r.dll Sve_LoadVector
===================Running default===================
------------------- {} -------------------
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVector_float() : 1
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVector_double() : 1
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVector_sbyte() : 1
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVector_short() : 1
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVector_int() : 1
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_LoadVector_long() : 1
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve
Starting test: D:\kpathak\Core_Root_math8\Core_Root\corerun.exe -p System.Reflection.Metadata.MetadataUpdater.IsSupported=false -p System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization=true D:\kpathak\tests\math8\HardwareIntrinsics\HardwareIntrinsics_Arm_r\HardwareIntrinsics_Arm_r.dll Sve_DotProduct
===================Running default===================
------------------- {} -------------------
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_DotProduct_int() : 16
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_DotProduct_long() : 16
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_DotProduct_uint() : 16
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_DotProduct_ulong() : 16
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_DotProductBySelectedScalar_int() : 16
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sve.Program.Sve_DotProductBySelectedScalar_long() : 16
Passed test: _Sve_r::JIT.HardwareIntrinsics.Arm._Sv