summaryrefslogtreecommitdiff
path: root/tests/src/JIT
AgeCommit message (Collapse)AuthorFilesLines
2016-03-02Use tooling to add Platforms dependencies and imports where necessary.Davis Goodin19-56/+93
2016-03-02Remove all lockfiles from source control.Davis Goodin19-34729/+0
2016-03-02Upgrade CLI version and buildtools, and make build file changes.Davis Goodin1-0/+1
Unset CORE_ROOT in environment on Windows before doing restore so that dotnet CLI doesn't try to run using binaries from the test CORE_ROOT. Restore the xunit wrapper projects in a batch rather than individually to save a lot of time. Work around xunit.runner.msbuild not having compatible package layout by ignoring errors and adding import so that a future fix will work. Hard-code C# language for generated wrapper projects: the $(Language) property wasn't set. Also Change www.myget.org to dotnet.myget.org, as we switched to enterprise myget. Add System.ObjectModel to tests\src\JIT\config\benchmark+serialize\project.json to manually upgrade it to a version that doesn't require lifting for runtime. This fixes System.ObjectModel.dll being missing from CORE_ROOT and causing the test to fail. Switch to v3 nuget feeds and sync NuGet.Configs.
2016-03-02Merge pull request #3464 from kyulee1/deltestPat Gavlin3-115/+0
Delete a bad test (b06435) for double to long conversion
2016-03-02Delete a bad test (b06435) for double to long conversionKyungwoo Lee3-115/+0
This test relies on unspecified value when a large double value is converted to a long value where overflow occurs. For x64(cvttsd2si), this value is MIN_INT(0x8000000000000000) while ARM64(fcvtzs) produces MAX_INT(0x7fffffffffffffff). According to ECMA spec, the value is unspecified, so I simply delete this test.
2016-03-01Merge pull request #3448 from swgillespie/license_headersSean Gillespie91-40/+293
Fix license header for test files
2016-02-29Merge pull request #3351 from LLITCHEV/Issue2757Lubomir Litchev1-0/+40
Add support for emitting GC-ness of the second return register for 16…
2016-02-29Add support for emitting GC-ness of the second return register for 16 byteLubomir Litchev1-0/+40
structs. This changeset adds support for emitting the GC-ness of the second return register (RDX for System V Amd64) for multi-register return structs. It closes a hole in the GC info and resolves multiple GC stress failures. Fixes #2757.
2016-02-29Merge pull request #3429 from kyulee1/powPat Gavlin1-7/+9
ARM64: Fix for pow test
2016-02-29Merge pull request #3399 from pgavlin/Disable374539Pat Gavlin1-1/+4
Move devdiv374539 out of test priority 0.
2016-02-29ARM64: Fix for pow testKyungwoo Lee1-7/+9
This skips Pow(Double.Epsilon,1) test for ARM64 same as ARM.
2016-02-26Fix license header for test filesSean Gillespie91-40/+293
2016-02-26Move devdiv374539 out of test priority 0.Pat Gavlin1-1/+4
This test takes a very long time to execute (~60% of the total time spent in JIT tests on my machine) and does not seem to be providing an enormous amount of value. This change moves the test into priority 1, which excludes it from the build by default. If you already have a test build, you will need to do a clean build in order to avoid running this test.
2016-02-26Add reference to System.Runtime.InteropServices.RuntimeInformation.dll for ↵Bruce Forstall2-0/+87
some JIT tests
2016-02-26Merge pull request #3383 from BruceForstall/FixJitSystemIOFilesystemBindingBruce Forstall2-200/+129
Change binding of System.IO.FileSystem
2016-02-26Change binding of System.IO.FileSystemBruce Forstall2-200/+129
Change the binding from 4.0.1-beta-* to 4.0.0-beta-23302 to match all other JIT configs. This allows a not-yet-committed test to successfully run, and doesn't seem to negatively affect existing tests.
2016-02-26Fix bug in optOptimizeBools for equality of 0/1.Chris McKinsey3-0/+120
The method optIsBoolCond had a clever way to test for a constant of value 0/1 by casting the resulting gtIconVal to (unsigned) and comparing for <= 1. Unfortunately, for 64-bit targets gtIconVal as ssize_t holds 64-bits and the cast to (unsigned) results in truncating significant bits and results in the optimization falsely recognizing legal patterns of bit-tests comparing against 0/1. Because 32-bit targets represent 64-bit long constants as GT_CNS_LNG they do not suffer from this problem as the code already had exclusions for them.
2016-02-24Replace reference to msvcr110.dll with msvcrt.dll in test b286991Russ Keldorph1-1/+1
Removes unnecessary (and unsupported) dependency and makes the test consistent with its peers.
2016-02-18Delete 'do not port' test, add non-windows exclusionsRichard L Ford3-109/+0
2016-02-17Port desktop tests that had referencesRichard L Ford174-77/+13764
This change ports desktop tests that had references to dlls. It also fixes some of the dll project files. In addition there are some additional tests that were not previously ported (but that do not reference dlls). There are 4 tests that are excluded because of issue #3216.
2016-02-17Remove IlasmRoundTrip from these project filesAndy Ayers16-16/+0
We test ilasm/ildasm separately, so no reason to round trip when building these benchmarks. Closes #3202.
2016-02-16Make dll project files build-only.Richard L Ford28-0/+56
Dll project files need extra properties to avoid being run as tests.
2016-02-16Add libraries for tests that reference them.Richard L Ford62-0/+3313
This change adds dynamic link libraries that are referenced by other tests.
2016-02-12Merge pull request #3161 from richardlford/restoredllnames0212Richard L Ford109-5343/+2014
Restore original dll names, use Define constants.
2016-02-12Merge pull request #3145 from erozenfeld/PreserveCastVNEugene Rozenfeld3-0/+105
Preserve value numbers when discarding a cast.
2016-02-12Fix hfa_interop to omit ".dll" from DLLNameRichard L Ford1-1/+1
For interoperability cross platform, the DLL name given to the DllImport attribute should not include the suffix since dynamic link libraries use a different suffix on different systems.
2016-02-12Restore original dll names, use Define constants.Richard L Ford109-5343/+2014
This changes set has no functional change, rather it cleans up some aspects of a previous port. When the hfa dlls were originally ported it was not known that C# #defines could be used in the tests, so source files that use #if were expanded to multiple source files with the preprocessing being done manually. This changes goes back to using the original files with appropriate define constants in the project files. In addition, when these dlls were ported abbreviated names were used. This change restores the dll names to the originals.
2016-02-11Preserve value numbers when discarding a cast.Eugene Rozenfeld3-0/+105
This is a fix for an assert during CSE. After processing a CSE definition the tree got morphed. During morphing a cast was discarded by narrowing the operand of the cast. The value number of the operand was cleared. Later, when processing a use of the CSE, the code was attempting to process the side effects in the tree of the use and was encountering a node with no value number resulting in an assert. The fix is to transfer the value number from the cast node to the narrowed operand.
2016-02-10Fix warnings in test buildRuss Keldorph8-23/+22
``` warning : Layout specified for auto-layout class C:\git\coreclr\tests\src\JIT\Directed\PREFIX\unaligned\1\add.ilproj C:\git\coreclr\tests\src\JIT\Directed\PREFIX\volatile\1\add.ilproj warning : Non-nested class has nested visibility (0x00000102), changed to non-nested (0x00000101) C:\git\coreclr\tests\src\JIT\jit64\regress\vsw\153682\test.ilproj warning : Reference to undeclared extern assembly '<assembly>'. Attempting autodetect C:\git\coreclr\tests\src\JIT\Methodical\explicit\misc\_il_dbgrefarg_box_f8.ilproj (System.Console) C:\git\coreclr\tests\src\JIT\Methodical\explicit\misc\_il_relrefarg_box_f8.ilproj (System.Console) C:\git\coreclr\tests\src\JIT\Methodical\tailcall_v4\hijacking.ilproj (mscorlib, System.Threading, System.Threading.Thread) warning : Undefined implementation in ExportedType '<type>' -- ExportType not emitted C:\git\coreclr\tests\src\JIT\Regression\CLR-x86-JIT\V1-M09.5-PDC\b32879\b32879.ilproj (HiDad, _vbProject) C:\git\coreclr\tests\src\JIT\Regression\CLR-x86-JIT\V1-M12-Beta2\b65423\b65423.ilproj (b1904) warning C4311: 'type cast': pointer truncation from 'void *' to 'unsigned int' (+redundant C4302) C:\git\coreclr\bin\Native\src\JIT\Directed\pinning\object-pin\mirror.vcxproj ```
2016-02-08Merge pull request #2905 from AndyAyersMS/NewILTestsAndy Ayers6-0/+254
Some tests for caller/callee type mismatches
2016-02-06Merge pull request #3048 from sejongoh/add_unit_test_for_issue_2580Sejong Oh3-0/+147
Add unit test for issue 2580
2016-02-06Add unit test for issue 2580Sejong Oh3-0/+147
- The test checks if code generation for ushort is correct.
2016-02-04Some tests for caller/callee type mismatchesAndy Ayers6-0/+254
Ensure the jit can avoid or back out of inlines where types are mismatched. Remove some assertion checking that was looking at call actuals versus formals and instead let the newly added inline bail out handle cases where there are mismatches.
2016-02-03Fix version issue with System.IO for serialization testsAndy Ayers2-41/+36
2016-02-02Merge pull request #2956 from cmckinsey/BenchF2Chris McKinsey35-124/+3899
Add 15 more Benchstone floating-point (BenchF) benchmarks in Xunit fo…
2016-02-01Fix build breaks in Linux ARM buildJan Kotas6-6/+6
- Delete redundant WAITORTIMERCALLBACK declarations. These redundant declarations were needed for very old versions of Windows SDK that are no longer supported. - Remove unnecessary __cdecl modifiers - Add default case to switch statement
2016-02-01Add 15 more Benchstone floating-point (BenchF) benchmarks in Xunit format.Chris McKinsey35-124/+3899
Update all BenchF sources with CodeFormatter tool.
2016-01-27Update license headersdotnet-bot1932-3927/+5859
2016-01-26Modify deltablue to avoid gratuitous exception at runtimeAndy Ayers1-8/+13
2016-01-23Merge pull request #2614 from AndyAyersMS/BytemarkAndy Ayers32-0/+10893
Add the bytemark benchmarks
2016-01-22Fix a bug in JIT value numbering.Eugene Rozenfeld3-0/+134
This is a fix for a silent bad codegen bug in value numbering. The value numbering algorithm tries to check whether heap PHI arguments evaluate to the same value for the given query. In doing so, it may encounter PHIs that recursively depend on each other (this corresponds to cycles in control flow graph). A special value RecursiveVN is returned in such cases. The algorithm uses the following rule: if some PHI arguments evaluate to RecursiveVN but all others evaluate to the same value that's not RecursiveVN, then that value can be used as the result. Furthermore, in order to avoid exponential searches in case of many PHI's the results of all PHI evaluations are memoized. The bug was that if RecursiveVN was used to get the result, it can't always be memoized. In particular, if the loop causing recursive PHIs is a multi-entry loop, intermediate PHI results shouldn't be memoized. The fix is conservative in that it always disables memoization if RecursiveVN was involved. Note that we also have another mechanism (budget) to mitigate expensive PHI evaluations. There were no diffs in SuperPMI and no measurable throughput impact. I added a test with a simplified repro. The original bug had code with yield return. I also fixed some formatting and added several function headers.
2016-01-21Add the bytemark benchmarksAndy Ayers32-0/+10893
These are C# versions of benchmarks that originally appeared in BYTE magazine in 1995. See file headers for attribution. I've added [Benchmark] entry points for xunit-performance, and tuned each portion to run for about 1 second per xunit-performance iteration. Note a couple of the tests have variant implementations in C# -- either jagged vs MD arrays, or class vs struct, so there are more numbers reported than in the original benchmark. When run under xunit the work per test is fixed. When run as a command line app this will auto-tune (adjust iterations to try and hit some running time threshold). We may want to reduce the running time here some; I'll see what it ends up being in the lab. I've also tried to enable validation code where possible, both to ensure that the compiler gets the right answers, and also so it can't cheat and remove computation. The two assign benchmarks seem to report varying times in xunit mode, and may need to be investigated further.
2016-01-21Add the RayTracer benchmarkAndy Ayers17-0/+1017
2016-01-15Enable FEATURE_SIMD on Linux.Carol Eidt96-48/+2715
Most of the changes involve checking varTypeIsStruct instead of TYP_STRUCT in cases where the SIMD types are treated like other structs, and then adding a few special cases for SIMD types. The UNIX ABI implementation currently requires that struct handles be preserved through code generation, so this required some additional changes. Finally, the code that "homes" incoming arguments required changes to handle incoming SIMD register args that need to be reassembled into their assigned registers. That method was slightly refactored, primarily because it had cases that should have been ifdef'd out for 64 bits. It needs further refactoring, but that is left for future work. This fixes half of issue #983. A previous version of this PR exposed issues with JIT/SIMD tests being inconsistently compiled wrt optimization. This change modifies those tests to always compile both with and without optimization.
2016-01-15Fix exception in Burgers on AVX-capable HWAndy Ayers1-1/+1
Original code was implicitly assuming Vector<>.Count == 2, which isn't true once AVX kicks in. Closes #2679.
2016-01-14For the repro case the method being compiled is a generic methodsivarv1-0/+28
whose generic context is derived from thisptr. For this reason JIT is asked to keep thisptr alive and report in gc-info. For such methods JIT, caches thisptr to a stack slot in prolog and that stack slot gets reported in gc-info. Due to tail call loop optimization, the recursive method call at the end is converted into a loop. This transformation assigns all the arguments to temps and temps back to incoming parameters of the method and finally branches to the first basic block (see fgMorphRecursiveFastTailCallIntoLoop()). This will leads to the following basic block tmp = GT_INDIR(thisptr+24) thisptr = tmp That is thisptr is changing while looping. But the thisptr stores in cached stack slot is not updated. So potentially there is a mismatch in generic context reported in gc-info to VM and the one used within the method body. The same issue exists in case of methods that have generic context passed in a hidden argument instead of derived from thisptr. Fix: For now disabling tail call loop optimization for methods that need generic context till we the above mentioned issue.
2016-01-13Merge pull request #2622 from AndyAyersMS/MiscBenchmarksAndy Ayers10-0/+4524
Add miscellaneous benchmarks
2016-01-12Merge pull request #2612 from hoyMS/Bug2610Hongtao Yu3-0/+155
Fix for bug 2610 Incorrect copy prop substitution.
2016-01-12Merge pull request #2627 from RussKeldorph/dowhilebndchkSenthil3-0/+109
Do loop cloning only if zero trip test can be ensured
2016-01-12Merge pull request #2581 from AndyAyersMS/BenchmarkGameAndy Ayers14-0/+1256
Add a subset of benchmark game benchmarks