summaryrefslogtreecommitdiff
path: root/tests/src/JIT/Performance/CodeQuality
AgeCommit message (Collapse)AuthorFilesLines
2020-07-23[Tizen] Set obj dir to be TargetRid specificGleb Balykov79-85/+85
This allows to perform build for different arches in the same repository
2019-04-12[master] Update dependencies from dotnet/corefx (#23893)dotnet-maestro[bot]6-19/+19
* Update dependencies from https://github.com/dotnet/corefx build 20190411.2 - Microsoft.NETCore.Platforms - 3.0.0-preview5.19211.2 - Microsoft.Private.CoreFx.NETCoreApp - 4.6.0-preview5.19211.2 * Update dependencies from https://github.com/dotnet/corefx build 20190411.22 - Microsoft.NETCore.Platforms - 3.0.0-preview5.19211.22 - Microsoft.Private.CoreFx.NETCoreApp - 4.6.0-preview5.19211.22 * Removing renamed HWIntrinsic APIs from S.P.Corelib * Updating the hwintrinsiclistxarch to match the new intrinsic API names * Updating the HWIntrinsic generated tests to use the new API names
2019-03-16Fix typo (#23300)Nikita Potapenko1-1/+1
.Net -> .NET
2019-02-28Removing the ExtractVector128 and InsertVector128 APIs that take an address. ↵Tanner Gooding1-3/+3
(#22886) * Removing the InsertVector128 and ExtractVector128 overloads that take an address from S.P.Corelib * Removing the ExtractStore and InsertLoad tests. * Fixing the PacketTracer test to use the appropriate Extract/InsertVector128 overloads * Removing the JIT support for the Extract/InsertVector128 overloads that take an address.
2019-02-15Manually update the dependencies.props and move S.P.Corelib to use ↵Tanner Gooding2-2/+0
LangVersion=8.0 (#22452) * Update BuildTools to preview1-03713-01 (master) * Updating CoreCLR to use LangVersion=8.0 * Moving the Windows scripts to default to `dotnet msbuild` for managed components * Setting UseSharedCompilation=true * Changing some additional callsites that were using msbuild to use dotnet msbuild * Revert packages.builds to use Desktop msbuild on Windows * Fixing runtest.cmd to always set DotNetCli
2019-02-06Add option to run tests in unloadable context (#22332)Jan Vorlicek1-0/+2
This change adds new "runincontext" option to the tests/runtest.cmd that allows running tests inside of an unloadable AssemblyLoadContext. It also adds new property that allows tests to be marked as incompatible with running this way. All known tests that have such issue are marked in this PR too.
2018-12-17Switch to using resources in BenchmarksGames tests (#21554)Egor Chesakov15-246/+57
Embed the following test files as the resources in their corresponding test assemblies: * regexdna-input25.txt regexdna-input25000.txt in BenchmarksGame/regex-redux * knucleotide-input.txt knucleotide-input-big.txt in BenchmarksGame/k-nucleotide * revcomp-input25.txt revcomp-input25000.txt in BenchmarksGame/reverse-complement
2018-11-17Removing the legacy helper intrinsics and adding tests for their ↵Tanner Gooding11-91/+92
replacements (#20994) * Removing helper intrinsics from the x86 APIs in S.P.Corelib * Removing JIT support for the removed x86 helper intrinsics * Removing the x86 HardwareIntrinsics tests for the removed helper APIs * Fixing up existing usages to no longer use the removed x86 helper intrinsics * Skip CoreFX tests dependent on the removed x86 helper intrinsics * Adding a GenerateTests.csx and templates for the new shared helper intrinsics * Generating the new shared helper intrinsics from their templates * Disabling some tests for arm and arm64 that are failing due to an assert
2018-10-23Re-enable hardware intrinsic testsFei Peng1-0/+58
2018-10-09Disable tests for generic hardware intrinsicFei Peng1-58/+0
2018-08-29using struct for VectorPacket in PacketTracer benchmarkFei Peng1-1/+1
2018-08-10Add SoA raytracer as a CQ test for Intel hardware intrinsicFei Peng20-0/+1364
2018-08-03Fix performance tests and HW intrinsics test referencesJacek Blaszczynski4-11/+2
2018-07-19Build xunit wrappers the same way on windows and unix (#18695)Sven Boemer2-3/+3
* Initial change to allow build wrappers and runtest.py * Build xunit wrappers on unix The generated wrapper needs to target netcoreapp on unix. I had to exclude assets from the xunit package and introduce a dependency on the private corefx bits, to resolve a dependency conflict in which the generated wrapper was depending on an older System.Runtime.dll than the helper library. I also disabled binclash logging, because the wrapper build binplaces the helper library to the same location multiple times. I couldn't find a simple way to disable binclash logging for the wrapper build only, since that requires passing an empty switch to run.exe, and bash word splitting makes this nontrivial from build-test. * Correctly generate TestEnv xplat Note that this will still require changes to the test wrapper to actually source the TestEnv on unix * Build xunit wrappers using SDK * Target netcoreapp2.0 in xunit wrappers This way, the wrappers can build even if the 2.1 SDK isn't installed on the machine. * Restore to packages directory for xunit wrappers * Move common properties out to dir.common.props When building wrappers using the SDK, we need some basic properties (like the build os/arch/config, and the output directories) to be set. I factored out properties used by both the old test build and the new SDK-project test build. At first I tried using Directory.Build.props (which is automatically imported by the SDK), but our test build already imports SDK targets in various places, so this was resulting in duplicate imports. Instead, I used dir.common.props, and made the imports explicit. * Remove desktop-specific test wrapper csproj * Pass build os/arch/type and logsdir to msbuild from runtest.py * Remove xunit wrapper helper library from traversal build * Fix parameter passing in build-test.sh Use bash arrays to pass parameters for the build command. This makes it possible to pass arguments with spaces to build_Tests_internal. We use this to disable binclashlogging selectively (for the xunit wrapper build only). * Clean up factored .props files * Undo runtest.sh changes * Use latest xunit console runner everywhere * Remove extra StaticDependency on xunit.runner.console * Eliminate tests/src/dir.common.props, and rename dir.sdkbuild.props tests/src/dir.common.props was only used for the desktop-specific xunit wrapper helper library. There's no need for it any more, so its properties have been moved into tests/src/dir.props. dir.sdkbuild.props has been renamed to dir.common.props, since it contains properties used by SDK projects and buildtools projects. This change also re-enables the test build. * Reintroduce dir.sdkbuild.props as a place for SDK-only props With this, some properties shared by SDK projects can go in a global location. The TargetFramework is shared by all SDK projects in the test tree. This change also uses a property for the xunit package directory that contains the xunit.console.dll we copy to core_root. * Add xml namespace to dir.common.props This fixes a failure in the windows build. * Satisfy xunit analyzer * Satisfy xunit analyzer again * Use SDK msbuild to build wrappers On windows, the use of run.exe, config.json, and msbuild.cmd uses msbuild.exe on the path. This change will build wrappers using the local SDK via "dotnet msbuild", bypassing run.exe. Run.exe will go away entirely with the move from buildtools to arcade, so other build invocatios should follow suit. * Remove Microsoft.CSharp.Core.targets workaround UseBuildTools used to be true all the time. Now that we are building wrappers on core, UseBuildTools becomes false. However, the rest of the runtest.proj expects to build using buildtools, so we keep UseBuildTools true until we switch to arcade. The CSharpCoreTargetsPath was imported when running on core only. This used to happen only on unix, but now it also happens when building runtest.proj for the xunit wrappers on windows. On unix, this targets file was a symlink to itself to work around some buildtools logic that expected the file to exist. This workaround no longer appears necessary, and on windows, this was never used in the first place, so this change removes it. * Remove UseRoslynCompilers prop and unify roslyn import UseRoslynCompilers was introduced in buildtools by https://github.com/dotnet/buildtools/pull/947, with different behaviors on windows/unix. It was removed by https://github.com/dotnet/buildtools/pull/1974, so we can unify our roslyn imports now. * Don't copy xunit dlls to corefx test host The corefx tests run on specific versions of xunit dlls, defined in CoreFX.depproj. We want to use these versions in the test host, not those in CORE_ROOT, so exclude these from being copied to the test host directory. This fixes the failing corefx tests. * Don't pass run.exe arguments through build-test.cmd in test pipeline These arguments get passed along to the xunit wrapper build as unprocessed build args. They need to work for "dotnet msbuild" (used for the wrapper build) as well as for run.exe. * Fix parameter passing of priority arg in build-test.cmd UnprocessedBuildArgs should contain arguments in the format expected by msbuild, not by run.exe. * Fix parameter passing of unprocessed args in build-test.cmd The "--" syntax is used by run.exe to pass everything following to msbuild directly. It should not be a part of unprocessed args. * Pass TargetsWindowsArg to wrapper build in build-test.cmd Helix builds tests on windows and runs them on unix using the xunit wrappers. When cross-building the wrappers like this, TargetsWindows is set to false by the test build pipeline. This variable ensures that the wrapper uses correct directory separators when invoking the test .sh file. * Pass BuildTestsAgainstPackages arg to exclude unix tests Helix builds xunit wrappers on windows, and runs them on unix. The BuildTestsAgainstPackages should currently be set to true in the windows wrapper build to properly filter the .cmd files based on exclusions in issues.targets.
2018-03-25Update use of AsBytes in perf tests to use MemoryMarshal.AsBytes. (#17214)Ahson Khan1-1/+1
2018-02-28Revert: Simplify test dependencies for benchmarks (#16647)Andy Ayers82-0/+403
This reverts commit 0598b6b8af0fb560837ce0bb8f3c8236c05bbdc9. Updates to xunit console runner break things in Helix. So reverting until we can get that part sorted. Also undoes version updates from #16597; we can't move these forward yet as we're back to netstandard 1.4 for the time being.
2018-02-26Simplify test dependencies for benchmarks (#16378)Andy Ayers82-403/+0
Remove the special benchmark configs and update benchmark projects accordingly. Also update other random projects that were referencing benchmark configs. Benchmarks now build against the default standard. Addresses #14124, #16126.
2018-02-21Rename AsReadOnlySpan -> SpanJan Kotas1-7/+7
2018-01-31Disable MemoryMarshal.CreateSpan testsJan Kotas1-0/+2
2018-01-31Remove replaced Span/ReadOnlySpan methods.Ian Hays1-21/+21
2017-12-23Make DangerousGetPinnableReference internal and remove DangerousTryGetArray ↵Ahson Khan1-10/+10
(#15557) * Make DangerousGetPinnableReference internal and remove DangerousTryGetArray * Change DangerousGetPinnableReference to return ref readonly
2017-12-15Convert uses of the Dangerous APIs to use MemoryMarshal.GetReference (#15532)Ahson Khan1-3/+3
* Convert uses of the Dangerous APIs to use MemoryMarshal.GetReference * Adding Unsafe.AsRef(in...) and using that for ReadOnlySpan GetReference * Fix typo - add missing bracket. * Change AsRef(ref...) to AsRef(in...) * Remove unnecessary whitespace * Remove Unsafe.AsRef(in...) and its uses. * Revert "Remove unnecessary whitespace" This reverts commit 4dbe38cae472e868f74afbabde358f3a7609f6ae. * Revert "Revert "Remove unnecessary whitespace"" This reverts commit 44d79483423ac9ffcf7c566b79d4a42c6aa15dac. * Remove extra space to fix formatting.
2017-12-15Enabling temporarily disabled tests that call ReadOnlySpan indexer (#15546)Ahson Khan2-4/+0
2017-12-14Change ReadOnlySpan indexer to return ref readonly (#14727)Ahson Khan2-0/+4
* Change ReadOnlySpan indexer to return ref readonly. Update JIT to handle changes to ReadOnlySpan indexer Resolving merge conflict and fixing jit importer Update ReadOnlySpan Enumerator Current to use indexer. Removing readonly keyword. * Temporarily disabling Span perf and other tests that use ReadOnlySpan * Isolating the ref readonly indexer change only to CoreCLR for now. Reverting the change to Enumerator Current for now Fix file formatting Enable Alpine CI (#15502) * Enable Alpine CI This enables Alpine CI leg on every PR using the pipelines. compare type size instead of var_types get rid of TYP_CHAR Adding support for Acosh, Asinh, Atanh, and Cbrt to Math and MathF Updating the PAL layer to support acosh, asinh, atanh, and cbrt Adding some PAL tests for acosh, asinh, atanh, and cbrt Adding valuenum support for acosh, asinh, atanh, and cbrt Lsra Documentation Update LinearScan section of ryujit-overview.md, and add lsra-detail.md Refactor Unsafe.cs to get it more in sync with CoreRT. (#15510) * Refactor Unsafe.cs to get it more in sync with CoreRT. * Format the document. * Unifying the copies of Unsafe using ifdefs * Change exception thrown to PlatformNotSupportedException * Addressing PR feedback and moving Unsafe to shared. * Addressing PR feedback * Addressing PR review - adding intrinsic attribute Update CoreClr, CoreFx to preview1-26014-01, preview1-26013-12, respectively (#15513) Revert "Add optional integer offset to OwnedMemory Pin (#15410)" This reverts commit 8931cfa4ebe94f57698b4c1b3ab5689cd467cb8e. Get rid of old -altjitcrossgen argument now that CI has been updated Merge pull request dotnet/corert#5109 from dotnet/nmirror (#15518) Merge nmirror to master Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com> Revert " Revert "[Local GC] Move knowledge of overlapped I/O objects to the EE through four callbacks (#14982)"" Fix typo `_TARGET_ARM` to `_TARGET_ARM_`. This happens mostly in comments except lsra.cpp. Update CoreClr, CoreFx, PgoData to preview1-26014-04, preview1-26014-03, master-20171214-0043, respectively (#15520) * Disabling a test that uses ReadOnlySpan indexer * Temporarily disabling the superpmi test and fixing nit * Remove debug statements.
2017-12-04Separate large perf benchmarks into their own legs (#15231)Michelle McDaniel89-0/+0
Separate large perf benchmarks into their own legs This change splits the windows perf test stages into 6 pipelined legs per flavor to reduce the amount of time we spend running the perf tests and reduce the total time of the job. This change also decreases the size of the stashed bin directory by deleting the obj directory. Finally, we move the benchstones suite into one directory (moving BenchF and BenchI into a shared dir called Benchstones)
2017-10-07Adding the new fastest mandelbrot implementation to benchmarks-game.Tanner Gooding2-0/+247
2017-10-03Removing the mandelbrot-4 implementation.Tanner Gooding2-163/+0
2017-09-27JIT: devirtualization support for EqualityComparer<T>.Default (#14125)Andy Ayers2-0/+247
Mark `EqualityComparer<T>.Default`'s getter as `[Intrinsic]` so the jit knows there is something special about it. Extend the jit's named intrinsic recognizer to recognize this method. Add a new jit interface method to determine the exact type returned by `EqualityComparer<T>.Default`, given `T`. Compute the return type by mirroring the logic used in the actual implementation. Bail out when `T` is not final as those cases won't simplify down much and lead to code bloat. Invoke this interface method when trying to devirtualize calls where the 'this' object in the call comes from `EqualityComparer<T>.Default`. The devirtualized methods can then be inlined. Since the specific comparer `Equal` and `GetHashCode` methods look more complicated in IL than they really are, mark them with AggressiveInlining attributes. If devirtualization and inlining happen, it is quite likely that the value of the comparer object itself is not used in the body of the comparer. This value comes from a static field cache on the comparer helper. When the comparer value is ignored, the jit removes the field access since it is non-faulting. It also removes the the class init helper that is there to ensure that the (no-longer accessed) field is properly initialized. This helper has relatively high overhead even in the fast case where the class has been initialized aready. Add a perf test. Closes #6688.
2017-09-20Change base of literals in k-nucleotide-9Joseph Tremoulet1-6/+6
This keeps it in sync with the copies in the release branches (the release/1.1.0 branch required this since older C# compilers don't accept the binary literals), and improves readability.
2017-09-20Reset static state per iteration for k-nucleotide-9 (#14081)Andy Ayers1-1/+6
Otherwise iterations keep getting slower and slower. Also bump inner iteration count to 10 to restore the nominal one second duration per iteration.
2017-09-19Fix expected values in fannkuch-redux-5Joseph Tremoulet1-3/+3
The validation logic was testing against `chksum`, which actually can vary depending on the number of processors (as that is used to determine the number of threads across which the work is partitioned, and the checksum is sensitive to the bucketing). Change it to test against `maxflips` instead, which is stable. Fixes #14040.
2017-09-19Update BenchmarksGames README.txtJoseph Tremoulet1-17/+17
Reflecting recent updates to the snapshot of these tests.
2017-09-15Manual formatting adjustmentsJoseph Tremoulet4-65/+68
Auto-formatting was leaving some new array expressions oddly indented.
2017-09-15Add references to source CVSJoseph Tremoulet18-0/+18
This will make it easier to track changes in the future.
2017-09-15Rename BenchmarksGame filesJoseph Tremoulet36-0/+0
Name each variant after its index on the site, not its comparative status.
2017-09-15Remove old versions of BenchmarksGame benchmarksJoseph Tremoulet30-6838/+0
2017-09-15Modify benchmarks to run in perf test harnessJoseph Tremoulet41-221/+6013
- Add result validation - Add [Benchmark] attributes and appropriate iteration counts - Minor edits here and there to target .NET Standard 1.4 - Exception: pi-digits rewritten to use managed BitInteger instead of p/invoke out to GMP.
2017-09-15Apply default VS formattingJoseph Tremoulet18-1583/+1755
Also insert namespace BenchmarksGame.
2017-09-15Update BenchmarksGame benchmarks to latestJoseph Tremoulet28-0/+2451
For each benchmark, grab the current best C# .NET entry, and also grab the current best serial implementation (since these are easier to work with from the benchmarking perspective).
2017-08-30Move performance tests back into Priority 0.Pat Gavlin52-104/+52
Just what it says on the tin. Should fix #13697.
2017-08-27Refactor AsSpan to AsReadOnlySpan (#13608)Adrian Godong1-5/+5
* Refactor AsSpan to AsReadOnlySpan * Updated usages. * Renamed test methods. * Bring back AsSpan as obsolete method.
2017-08-26Merge pull request #13411 from pgavlin/RepriTestsPat Gavlin52-22/+73
Reprioritize tests to improve inner-loop throughput.
2017-08-22Add InnerIterationCount to layout benchmarksJoseph Tremoulet1-2/+2
These tests were too short-running to measure effectively. Add an inner iteration count that makes the running time around 1 second (measured locally).
2017-08-17Add perf testJoseph Tremoulet2-0/+159
2017-08-16Move less valuable tests to priority 1.Pat Gavlin52-22/+73
2017-07-31Add benchmarks mandelbrot and fannkuch (#12933)Victor "Nate" Graf4-0/+342
* Add benchmarks mandelbrot and fannkuch Adding mandelbrot and fankuch-redux from Benchmarks Game to complete the representation of benchmarks from this list http://benchmarksgame.alioth.debian.org/u64q/csharp.html * Update source acknolegments and edit return codes * Add checksums to verify benchmark runs This commit adds checksums, which are pre-computed for each input case, to verify that the fannkuch and mandelbrot benchmarks actualy compute the desired function * Revert version bump * Remove XunitPerfHarness from Main * Remove an unnecessary line * Add iterations to fannkuch to inscrease runtime
2017-07-25Completelly fix build of tests on LinuxRoman Artemev2-4/+4
2017-07-04Update to latest System.MemoryJan Kotas1-2/+2
2017-06-07Modify iteration behavior some benchmarksAndy Ayers43-185/+245
This change updates the iteration behavior for the following benchmarks, so that they generally run for about 1 second per iteration: * Inline/InlineGCStruct * Inline/NoThrowInline * Span/IndexerBench/Indexer4 * Functions/MathTests/* It also removes the length 1, 10, and 1000 variants of the Span/SpanBench tests, leaving just the length 100 variants. Analysis has shown that there is no need to test varying lengths here. Iteration counts for these tests have been left as is and will be fixed subsequently. Partially addresses #11654.
2017-05-26Enable linux perf runs (#11905)José Rivero72-108/+36
- Removing `[assembly: MeasureInstructionsRetired]` from performance tests. - Due to this issue: https://github.com/Microsoft/xunit-performance/issues/231, we are blocked from running on performance tests on Linux. The tag is not used by infrastructure and it is passed during runtime when profiling on Windows. - Adding the option to execute CoreRun with the stability prefix. - Moving file to be archived by Jenkins and updating groovy file. - Setting the maximum number of iterations.