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

[Fuzzlyn] JIT: Assertion failed 'IsMultiRegNode()' during 'Head and tail merge' #110316

Closed
amanasifkhalid opened this issue Dec 2, 2024 · 2 comments · Fixed by #110535
Closed
Assignees
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI blocking-clean-ci-optional Blocking optional rolling runs in-pr There is an active PR which will close this issue when it is merged
Milestone

Comments

@amanasifkhalid
Copy link
Member

Fuzzlyn run

// Generated by Fuzzlyn v2.4 on 2024-11-30 16:54:32
// Run on Arm64 MacOS
// Seed: 15678297652937587188-vectort,vector64,vector128,armadvsimd,armadvsimdarm64,armaes,armarmbase,armarmbasearm64,armcrc32,armcrc32arm64,armdp,armrdm,armrdmarm64,armsha1,armsha256
// Reduced from 463.1 KiB to 0.9 KiB in 00:02:29
// Hits JIT assert in Release:
// Assertion failed 'IsMultiRegNode()' in 'Program:Main(Fuzzlyn.ExecutionServer.IRuntime)' during 'Head and tail merge' (IL size 79; hash 0xade6b36b; FullOpts)
// 
//     File: /Users/runner/work/1/s/src/coreclr/jit/gentree.h Line: 6370
// 
using System;
using System.Numerics;
using System.Runtime.Intrinsics;
using System.Runtime.Intrinsics.Arm;

public struct S0
{
    public sbyte F3;
}

public struct S2
{
    public ulong F1;
}

public class Program
{
    public static Vector128<sbyte> s_1;
    public static void Main()
    {
        S2 vr6 = default(S2);
        S0 vr7 = default(S0);
        if ((0 != vr6.F1))
        {
            var vr8 = (sbyte)0;
            var vr9 = Vector128.CreateScalar(vr8);
            var vr10 = Vector128.Create<sbyte>(0);
            s_1 = AdvSimd.Arm64.VectorTableLookup(vr9, vr10);
        }
        else
        {
            var vr11 = Vector128.Create<sbyte>(0);
            var vr12 = vr7.F3;
            var vr13 = Vector128.CreateScalar(vr12);
            s_1 = AdvSimd.Arm64.VectorTableLookup(vr11, vr13);
        }
    }
}

cc @dotnet/jit-contrib

@amanasifkhalid amanasifkhalid added area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI blocking-clean-ci-optional Blocking optional rolling runs labels Dec 2, 2024
@amanasifkhalid amanasifkhalid added this to the 10.0.0 milestone Dec 2, 2024
Copy link
Contributor

Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.

@JulieLeeMSFT
Copy link
Member

@jakobbotsch, PTAL.

jakobbotsch added a commit to jakobbotsch/runtime that referenced this issue Dec 9, 2024
Register numbers are not part of the syntax of JIT IR, so it does not
need to be compared for the purpose of this function. At the same time
we can hit asserts for nodes that aren't multi-reg nodes.

Fix dotnet#110316
@dotnet-policy-service dotnet-policy-service bot added the in-pr There is an active PR which will close this issue when it is merged label Dec 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI blocking-clean-ci-optional Blocking optional rolling runs in-pr There is an active PR which will close this issue when it is merged
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants