Age | Commit message (Collapse) | Author | Files | Lines |
|
Handle cases where a `GetType()` call on a generically typed object
feeds into a type equality comparison.
These calls have constraint prefixes. For value classes the constraint
tells us the type and so we can avoid the box and call and just construct
that type directly. For ref classes the type test can usually reduce to
a method table comparison.
Also, handle cases that arise in prejiited code better, by generalizing
how the jit looks for class handles from type construction trees.
Added test cases.
Closes #14304.
|
|
- In the lab, the path where the JitBench sources are downloaded is already too long, which eventially causes `dotnet-install.ps1` to fail. Part of the changes are to reduce the PATH where the tests are placed.
- Updated the JitBench version/commit being used. This one is already on 2.1
- Fixing typo on `perf.groovy`
- Increasing the timeout value as JitBench keeps failing on the lab.
|
|
This optimization is not valid for unsigned LT/LE/GT/GE relops. Using the Carry flag this way indicates that the operation overflowed, not that the result is less than 0, that's impossible for unsigned integers.
This is also not valid for signed LT/LE/GT/GE relops due to integer overflow.
|
|
* Update Buildtools and Roslyn
* Fixing importing of the roslyn files on msbuild 14.0
* Correctly looking for the latest VS Installation
|
|
When AliasSet adds a node, it should also add all its nodes that are
executed inside it (marked as contained).
|
|
* Imporove runtest.sh concurrency
`runtest.sh` runs next tests immediately after any of child processes is done
* Fix runtest.sh getting number of processors
For linux, check if `nproc` or `getconf` exists
when getting number of processors.
* Add tests that fail with OOM to unsupported list
Add several tests that consumes a lot of memory to unsupported test list(arm32).
This change is temporary until we properly handle these test with memory issue.
|
|
|
|
|
|
Handle GT_SIMD in GenTree::Compare
|
|
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.
|
|
Fixed Linux test build
|
|
Fix #14028
|
|
|
|
* [Tizen/ARM32] Update armel rootfs for Tizen
- Add lttng-ust-dev to Tizen rootfs for cross build
- Use rootfs of the latest Tizen 4.0
Signed-off-by: Hyung-Kyu Choi <hk0110.choi@samsung.com>
* [Tizen/ARM32] Update Tizen CI script
- Update arm32 CI script for Tizen to use the latest environment
Signed-off-by: Hyung-Kyu Choi <hk0110.choi@samsung.com>
|
|
* Add CI PR triggers for x86_arm and x64_arm64 testing
* Fix bug
* Don't do GC stress with altjit
|
|
Re-enable tests that should now pass
|
|
newarr expects int32 or native int on the stack. x64 JIT hapilly allows an int64 as well but the x86 JIT asserts.
Also change the constant to 0xFFFFFFF1FFFFFFFF so OverflowException is thrown on 32 bit as well.
|
|
|
|
Fixed return constant value cache on 32 bit VMs
|
|
Don't early-propagate negative array lengths
|
|
* [WIP] First version of SoDBench. Contains bugs
* [WIP] Move SoDBench files and increase error checking
* [WIP] Add NugetConfig to enable pulling packages from myget
* [WIP] Remove unhelpful templates and add back oses
* [WIP] Add ability to specify channel
* [WIP] Improve CSV writing
* [WIP] Improve options parsing
* Fix syntax error
* [WIP] Add test leg to perf.groovy
* [WIP] Adjust label to target an existing machine pool
* Change label to run on virtual machine
* Use setMachineAffinity
* Add ASP.NET-Core feed and deafult to master as the channel
* Change channel to master in perf.groovy
* Move NuGet.Config up a directory so it only needs to be written once
* Add CommandLine to external dependencies
* Remove CommandLine as it is now in external.depproj
* Adjust wget command to work more consistantly
* Change calculation of relative paths for clarity
* Set job to run daily instead of on push/PR
* Build sodbench on job run
* Remove MSBuild from job
* Fix quote placement
* Change metadata to be more accurate
* Add rollup totals for each measured category
* Refactor to use a tree rather than a dictionary
* Limit report size
* Publish in release configuration
|
|
[RyuJIT/ARM32] Remove LEA[b+0]
|
|
|
|
|
|
* extract CheckLclVarSemantics from CheckLIR.
* add a test that shows the silent bad execution.
* fix the checker.
* add the test to the exclude list.
* rename consumed to used
|
|
|
|
Add support for priority and update x64 client
|
|
|
|
|
|
add repro for DevDiv_495792.
fix the issue.
|
|
There's no need for that and if the negative array length is not representable in 32 bit we'll end up producing a GT_CNS_INT node that has TYP_INT and a 64 bit value.
That's because the original type (always TYP_INT) of the GT_ARR_LENGTH is preserved when changing the node to GT_CNS_INT.
|
|
LEA[b+0] was not eliminated on ARM which cause assertion on code generation
|
|
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.
|
|
Restore packages for every Windows architecture by default
|
|
Fix marshaling IntPtr.Zero to UTF8 strings, add unit tests
|
|
Otherwise iterations keep getting slower and slower.
Also bump inner iteration count to 10 to restore the nominal one second
duration per iteration.
|
|
|
|
Refine ARM64 CI stress modes allowed
|
|
For JitStressRegs, allow 0x10, 0x80, 0x1000; don't use simple 10 or 80
in names (to match netci.groovy).
Remove "tieredcompilation" from allowed modes; it is not supported in the
CI smarty helper currently.
|
|
Change #13994 moved some tests that were excluded from Helix runs, but
failed to update the exclusion list; fix that oversight and exclude the
tests in their new locations.
Fixes #14034.
|
|
|
|
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.
|
|
Reflecting recent updates to the snapshot of these tests.
|
|
Fix test StackCommitCommon
|
|
|
|
Renames arm legacy backend jobs to "armlb" and keeps "arm"
for RyuJIT/arm32 testing.
|
|
Update BenchmarksGame benchmarks to latest
|
|
The next update to the Tests.lst files will need to include the new
variants of these tests.
|
|
The check for recursive call was incorrect when processing an inlineee.
The change had no diffs with jit-diff --frameworks --tests so I added a test where
this change results in a codegen diff: the call to C is inlined with this change but
is not inlined without it.
|
|
This test will hang if run with non-optimized jitted code because it takes a dependency on exactly when locally allocated objects go out of scope. Although I doubt CLI spec guarantees the new code will always work either, it does work with the runtime/JIT as currently implemented.
|