Skip to content

JIT: Assertion failed (consume == 0) || (ComputeAvailableSrcCount(tree) == consume) during 'Linear scan register alloc' #113832

@jakobbotsch

Description

@jakobbotsch
// Generated by Fuzzlyn v2.5 on 2025-03-23 15:25:27
// Run on X86 Windows
// Seed: 916448399438567841-vectort,vector128,vector256,x86aes,x86avx,x86avx2,x86avx512bw,x86avx512bwvl,x86avx512cd,x86avx512cdvl,x86avx512dq,x86avx512dqvl,x86avx512f,x86avx512fvl,x86bmi1,x86bmi2,x86fma,x86lzcnt,x86pclmulqdq,x86popcnt,x86sse,x86sse2,x86sse3,x86sse41,x86sse42,x86ssse3,x86x86base
// Reduced from 63.4 KiB to 0.7 KiB in 00:02:21
// Hits JIT assert in Release:
// Assertion failed '(consume == 0) || (ComputeAvailableSrcCount(tree) == consume)' in 'Program:Main(Fuzzlyn.ExecutionServer.IRuntime)' during 'Linear scan register alloc' (IL size 68; hash 0xade6b36b; FullOpts)
// 
//     File: D:\a\_work\1\s\src\coreclr\jit\lsrabuild.cpp Line: 1776
// 
using System;
using System.Numerics;
using System.Runtime.Intrinsics;
using System.Runtime.Intrinsics.X86;

public class Program
{
    public static byte s_4;
    public static void Main()
    {
        var vr9 = Vector128.Create<ulong>(0);
        var vr10 = (ulong)s_4;
        var vr11 = Vector128.CreateScalar(vr10);
        var vr12 = Avx2.BroadcastScalarToVector128(vr11);
        var vr13 = (byte)0;
        var vr14 = Vector256.CreateScalar(vr13);
        var vr15 = (ulong)Avx2.MoveMask(vr14);
        var vr16 = Vector128.Create<ulong>(vr15);
        var vr17 = Avx512F.VL.TernaryLogic(vr9, vr12, vr16, 1);
        System.Console.WriteLine(vr17);
    }
}

Note that when I try this locally with AltJit (since I don't have an AVX512 CPU) I get a different assert:

Assert failure(PID 34784 [0x000087e0], Thread: 20004 [0x4e24]): Assertion failed 'unreached' in 'Program:Main()' during 'Generate code' (IL size 61; hash 0xcb019401; FullOpts)

    File: C:\dev\dotnet\runtime4\src\coreclr\jit\instr.cpp:1049
    Image: D:\dev\core_roots\16236fdcd417dcfc700e55dd7ae76365ceb7ff87\corerun.exe

I've bisected this to #112728, so I assume the original assert seen by Fuzzlyn is also related to that PR. cc @saucecontrol

cc @dotnet/jit-contrib

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIblocking-clean-ci-optionalBlocking optional rolling runsin-prThere is an active PR which will close this issue when it is merged

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions