Skip to content

JIT: Bad optimization with SaturatingIncrement #124094

@jakobbotsch

Description

@jakobbotsch
// Generated by Fuzzlyn v3.3 on 2026-02-06 16:01:23
// Run on Arm64 Linux
// Seed: 7440674543284077175-vectort,vector64,vector128,armadvsimd,armadvsimdarm64,armaes,armarmbase,armarmbasearm64,armcrc32,armcrc32arm64,armdp,armrdm,armrdmarm64,armsha1,armsha256,armsve,armsve2
// Reduced from 363.0 KiB to 0.4 KiB in 00:08:22
// Debug: Outputs -1
// Release: Outputs 4294967295
using System.Numerics;
using System.Runtime.Intrinsics.Arm;

public class Program
{
    public static sbyte s_62 = 1;
    public static short[] s_63 = new short[]
    {
        0
    };
    public static void Main()
    {
        short vr3 = s_63[0];
        var vr5 = Vector.Create<uint>(0);
        long vr6 = (sbyte)(-s_62) * (ushort)Sve.SaturatingIncrementByActiveElementCount(1, vr5);
        System.Console.WriteLine(vr6);
    }
}

Similar looking examples with similar SVE APIs in https://dev.azure.com/dnceng-public/public/_build/results?buildId=1282878&view=ms.vss-build-web.run-extensions-tab.

cc @dotnet/jit-contrib @dotnet/arm64-contrib

Metadata

Metadata

Assignees

Labels

area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions