Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
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.
|
|
Delete a bad test (b06435) for double to long conversion
|
|
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.
|
|
Fix license header for test files
|
|
Add support for emitting GC-ness of the second return register for 16…
|
|
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.
|
|
ARM64: Fix for pow test
|
|
Move devdiv374539 out of test priority 0.
|
|
This skips Pow(Double.Epsilon,1) test for ARM64 same as ARM.
|
|
|
|
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.
|
|
some JIT tests
|
|
Change binding of System.IO.FileSystem
|
|
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.
|
|
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.
|
|
Removes unnecessary (and unsupported) dependency and makes the test
consistent with its peers.
|
|
|
|
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.
|
|
We test ilasm/ildasm separately, so no reason to round trip when
building these benchmarks.
Closes #3202.
|
|
Dll project files need extra properties to avoid being run as tests.
|
|
This change adds dynamic link libraries that are referenced
by other tests.
|
|
Restore original dll names, use Define constants.
|
|
Preserve value numbers when discarding a cast.
|
|
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.
|
|
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.
|
|
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.
|
|
```
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
```
|
|
Some tests for caller/callee type mismatches
|
|
Add unit test for issue 2580
|
|
- The test checks if code generation for ushort is correct.
|
|
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.
|
|
|
|
Add 15 more Benchstone floating-point (BenchF) benchmarks in Xunit fo…
|
|
- 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
|
|
Update all BenchF sources with CodeFormatter tool.
|
|
|
|
|
|
Add the bytemark benchmarks
|
|
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.
|
|
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.
|
|
|
|
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.
|
|
Original code was implicitly assuming Vector<>.Count == 2, which isn't true once AVX kicks in.
Closes #2679.
|
|
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.
|
|
Add miscellaneous benchmarks
|
|
Fix for bug 2610 Incorrect copy prop substitution.
|
|
Do loop cloning only if zero trip test can be ensured
|
|
Add a subset of benchmark game benchmarks
|