Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vixl #4

Closed
wants to merge 562 commits into from
Closed

Vixl #4

wants to merge 562 commits into from

Conversation

a74nh
Copy link
Owner

@a74nh a74nh commented Oct 4, 2023

No description provided.

vitek-karas and others added 30 commits September 8, 2023 00:46
…otnet#88986)

* [mono][interp] Remove dead code

* [tests] Move issue to interp only

* [mono][jit] Fix bounds check when index is nint

Previous code was assuming index is i4. Remove MONO_ARCH_EMIT_BOUNDS_CHECK on amd64 since it was doing a I4 comparison, while the index reg is i8. Use MONO_EMIT_DEFAULT_BOUNDS_CHECK instead also on amd64.

On llvm we might not be able to insert the sign extending because it apparently interferes with abcrem optimization. We therefore split OP_BOUNDS_CHECK into two separate opcodes, so, after abcrem, we know whether we have to insert the sext or not.

* [mono][interp] Add missing sign extend

Fix passing of i4 to wrapper accepting native int. The wrapper no longer does the sign extend in order to not lose high bits of native int.

* feedback
* Moving towards DivRem intrinsic.

* DivRem for x64.

* Typos.

* Fixed intrinsic name.

* Fix.

* x86Base intrinsics in mini and LLVM.

* Assert on unconsumed remainder in fused DivRem.

* Reenable x86base tests.

* Fixed narrowing assignment.

* Documented the divrem operation pair.
Co-authored-by: Bruce Forstall <brucefo@microsoft.com>
Co-authored-by: Manicka <manicka@Manickas-MacBook-Pro.local>
Use Microsoft.CodeAnalysis.Analyzer in our builds, to help validate our analyzers and source generators. A few projects were doing this explicitly; this does it for all.
… platforms (dotnet#91790)

* Disable unsupported test

* Fix test path
…ation (dotnet#91785)

* Invoke mono_gc_init_finalizer_thread from the embedder to create the finalizer thread

* Enable runtime test
…mage (dotnet#91019)

* Use host rootfs when TARGET_BUILD_ARCH matches
* Separate running PAL tests out to their own jobs/steps.

* Remove PAL tests running infra from the CoreCLR build job and the runtime tests templates.

* !drop Strip out all jobs from runtime.yml and replace with the new PAL tests job to make it easier to test

* Remove dependency on EvaluatePaths

* Reparent job parameters correctly.

* Add back EvaluatePaths step for simplicity

* Set missing properties

* Capitalize build config

* Make a tarball to preserve permission bits.

* Make the output path directory before trying to use it

* Double timeout

* Double timeout again. Looks like Mac needs it.

* Fix metadata name and put back to 10 minutes.

* Move changes to the correct pipeline and revert changes to runtime.yml

* Remove reference to deleted target
Pulled from dotnet#91029

- Add `FinalizerStartSeg`, `FinalizerMaxSeg`, and `MaxSeg` to make some of the code resilient to changes in the layout of the finalization queue.  Also make `WalkFReachableObjects` resilient to layout changes.
- Add `FreeListSeg` as redundant entry for `FreeList`
  - The free list section is a segment; it just has its boundary stored differently. In dotnet#91029 it will be moved to the middle of the queue.
  - This provides a convenient audit point for all references to `FreeList` for dotnet#91029. The ones that are renamed here should be independent of the queue layout.
  - dotnet#91029 will remove `FreeList` when the other uses are updated.
- Add case for `SegQueueLimit` of last segment.  Add helper `UsedCount`.
- Fix `GetNumberFinalizableObjects` to include critical finalizers, though this method isn't called anywhere today.
- Add `const int INITIAL_FINALIZER_ARRAY_SIZE = 100;`
)

* Unconditionally supress trimming warnings when calling InvokeNativeHandlerMethod

* Update HttpClientHandler
Co-authored-by: MSDN.WhiteKnight <35516665+MSDN-WhiteKnight@users.noreply.github.com>
Co-authored-by: Anton Firszov <Anton.Firszov@microsoft.com>
Co-authored-by: Shay Rojansky <roji@roji.org>
…ally on the stack (dotnet#91797)

* [RISC-V] Additional corner-cases for ELT profiler argument reading

* [RISC-V] Cover the case where struct is partially spilled on the stack
…fix some errors for RISCV64. (dotnet#91722)

* [LoongArch64-RISCV64] Refactor the profiler for LoongArch64
and also fix some errors for RISCV64.

* add aligned assert for `SIZEOF__PROFILE_PLATFORM_SPECIFIC_DATA`

* update the args registers within the GenerateProfileHelper.
fix some conflicts within registers.

* add `assert(!compiler->compProfilerMethHndIndirected)` within the
`genProfilingLeaveCallback()` and `genProfilingEnterCallback()`.
JongHeonChoi and others added 26 commits September 21, 2023 02:38
This avoids calling `opt` and `llc` on Windows, where the .exe extension is needed

Closes: dotnet#92031
* [CI][Android] Build mono runtime for Android on PRs

* [CI][Android] Build and run smoke tests

* Mimic ios/tvos devices job
* Move simd+eh check after emcripten provided build time values

* Call cwraps.mono_wasm_abort from runtimeHelpers.abort when cwraps are ready (onRuntimeInitializedAsync)

* Assign early mono_wasm_exit and abort even earlier

* Fire feature check before awaiting wasm download, but await it after.

* Whitespaces
* Add missing System.Net.Http.Json comments

* Wording
* Upgrading And, OR, XOR, NOT and CopyTo using Vector512

* making m_array private again

* adding test for AVX512 and Making sure we are shifting the bits correctly

* Changing BitArray.CopyTo for Bool Array using Avx512BW

* Optimizing the code further and avoiding fallback to smaller size once larger vec size if processed

* Upgrading And, OR, XOR, NOT and CopyTo using Vector512
- merging with main

* making m_array private again

* Changing BitArray.CopyTo for Bool Array using Avx512BW
merging with main

* Optimizing the code further and avoiding fallback to smaller size once larger vec size if processed
merging with main

* reverting the wrong test case

* converting int to uint and tghen to ulong for zero extension

* Upgrading the BitArray(bool[]) API with Vector512 and making the suggested changes so the i in the for loop can use a single register

* organising imports
This makes IsPEImage, GetWindowsGraphicalUserInterfaceBit, and SetWindowsGraphicalUserInterfaceBit in PEUtils explicitly read / write in little endian (per PE format) instead of whatever the system is.
* Ensure Bind can handle null from GetSection

IConfiguration instances may return a null value from GetSection.
We were not handling this and would throw a NullReferenceException.

* Address feedback

* Remove Moq from ConfigBinder tests
* Address feedback and fix some TensorPrimitives issues

- Added a few APIs based on initial feedback: Abs (vectorized), Log2, and element-wise Max/Min{Magnitude}
- Renamed L2Normalize to Norm
- Fixed semantics of Min/MaxMagnitude to return original value rather than the absolute value
- Renamed a few helper types for consistency
- Added tests

* Add a few more uses of Tolerance
* Add an overload of `AllocateObject` that accepts a `GC_ALLOC_FLAGS`.

* Allocate pinned static boxes in the POH.

* Stop tracking pinning handles in `ThreadLocalBlock`.
Now that we don't pin `FixedAddressValueType` fields, this mechanism is unused.

* Support `FixedAddressValueTypeAttribute` in unloadable assemblies.
We remove the check that blocked it, enable a test and update a design document.

* Fix compile errors.

* Remove another check.
Fixes dotnet#88547

```csharp
using System.Runtime.CompilerServices;

public class ClassA
{
    public virtual int GetValue() => 42;
}

public class ClassB : ClassA
{
    // we don't even need to override GetValue here
}

class MyClass
{
    static void Main()
    {
        Test(new ClassB());
    }

    [MethodImpl(MethodImplOptions.NoInlining)]
    static int Test(ClassA c) => c.GetValue();
}
```

Old codegen:

```
; Method MyClass:Test(ClassA):int (FullOpts)
       sub      rsp, 40
       mov      rax, qword ptr [rcx]
       call     [rax+30H]ClassA:GetValue():int:this
       nop
       add      rsp, 40
       ret
; Total bytes of code: 16
```

New codegen:

```
00007FF66DD8AFB0  cmp         dword ptr [rcx],ecx
00007FF66DD8AFB2  mov         eax,2Ah
00007FF66DD8AFB7  ret
```
dotnet#92414)

* Ensure that embedded broadcast checks the base type of the parent node

* Ensure the regression test exits if AVX2 is not supported

* Also handle embedded broadcasts for mismatched memory sizes
* Change the macos signing steps to use the same sigining tool version as the Windows signing steps.

* Upgrade code signing task version
…mahaproxy' (dotnet#92436)

* [wasm] Use chromium dash to get the versions, instead of the obsoleted

.. omahaproxy.

The older way to get versions hasn't been removed yet, to wait to see
how stable this method is.

* [wasm] update sln

* fix windows build
Block morphing would create oddly typed trees (mixing up
TYP_BYREF/TYP_I_IMPL, e.g. creating LCL_VAR<I_IMPL> for a TYP_BYREF
typed local). The only effect of this was that it would avoid some
constant propagation. Make this more explicit by setting GTF_DONT_CSE
instead.
…eTo` (dotnet#90074)

* Avoid string allocation in WriteTo when possible.

System.Text.Json.JsonProperty.WriteTo uses get_Name, calling
JsonElement.GetPropertyName() which would allocate a string.

Use ReadOnlySpan<byte> from the underlying UTF8 json, when possible,
by adding helper methods into JsonDocument & JsonElement.

Fix dotnet#88767

* Avoid alloc in unescaping & escaping.

Current code unescapes & escapes property names and uses ToArray.
Avoid alloc by adding internal GetRaw/WriteRaw methods.

* Fix bugs on escaped property names

Original code doesn't handle GetRaw/WriteRaw on escaped
property names correctly.

* Change IndexOf to Contains if possible.

* Further avoid alloc by inlining GetUnescapedSpan

Allocations are further avoided when the property name is shorter than
JsonConstants.StackallocByteThreshold, by inlining
JsonReaderHelper.GetUnescapedSpan.

* Move writing logic to JsonElement;
Shorten names of new methods;
Add a test of writing out special names.

* Move logic into JsonDocument

* fix format

* fix format 2

* improve comment

* removed unused stub

* added assertion

* removed unnecessary test
No changes to any of the files. Not added to the build.

TEST_IMG: ubuntu/dotnet-build
TEST_CMD: safe ./projects/dotnet/build-runtime.sh

Change-Id: I80174799bb833c0edd517bfb9e7b57dd114f0ab7
Jira: ENTLLT-6871
TEST_IMG: ubuntu/dotnet-build
TEST_CMD: safe ./projects/dotnet/build-runtime.sh

Jira: ENTLLT-6871
Change-Id: Ic5445f3378ac9d3fa4e79d4ae1649504819d27e2
TEST_IMG: ubuntu/dotnet-build
TEST_CMD: safe ./projects/dotnet/build-runtime.sh

Jira: ENTLLT-6871
Change-Id: Ifa04a618ccb50ee906eb10dead9dd4fbe4a3b736
@a74nh a74nh closed this Oct 4, 2023
@a74nh a74nh deleted the vixl branch October 4, 2023 11:30
@a74nh a74nh restored the vixl branch October 4, 2023 11:31
a74nh pushed a commit that referenced this pull request Sep 9, 2024
* bug #1: don't allow for values out of the SerializationRecordType enum range

* bug #2: throw SerializationException rather than KeyNotFoundException when the referenced record is missing or it points to a record of different type

* bug #3: throw SerializationException rather than FormatException when it's being thrown by BinaryReader (or sth else that we use)

* bug #4: document the fact that IOException can be thrown

* bug #5: throw SerializationException rather than OverflowException when parsing the decimal fails

* bug #6: 0 and 17 are illegal values for PrimitiveType enum

* bug #7: throw SerializationException when a surrogate character is read (so far an ArgumentException was thrown)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.