Skip to content

Commit 9559b2a

Browse files
authored
Remove CreateFalse node during lowering, if MaskToVector is getting removed (#114272)
* Remove CreateFalse node during lowering, if MaskToVector is getting deleted * fix SVE.experimental warning * review feedback
1 parent af39659 commit 9559b2a

File tree

3 files changed

+47
-16
lines changed

3 files changed

+47
-16
lines changed

src/coreclr/jit/lowerarmarch.cpp

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4158,14 +4158,7 @@ GenTree* Lowering::LowerHWIntrinsicCndSel(GenTreeHWIntrinsic* cndSelNode)
41584158
// CndSel(mask, embedded(trueValOp2), op3)
41594159
//
41604160
cndSelNode->Op(2) = nestedCndSel->Op(2);
4161-
if (nestedOp3->IsMaskZero())
4162-
{
4163-
BlockRange().Remove(nestedOp3);
4164-
}
4165-
else
4166-
{
4167-
nestedOp3->SetUnusedValue();
4168-
}
4161+
nestedOp3->SetUnusedValue();
41694162

41704163
BlockRange().Remove(nestedOp1);
41714164
BlockRange().Remove(nestedCndSel);
@@ -4202,14 +4195,7 @@ GenTree* Lowering::LowerHWIntrinsicCndSel(GenTreeHWIntrinsic* cndSelNode)
42024195
op2->SetUnusedValue();
42034196
}
42044197

4205-
if (op3->IsMaskZero())
4206-
{
4207-
BlockRange().Remove(op3);
4208-
}
4209-
else
4210-
{
4211-
op3->SetUnusedValue();
4212-
}
4198+
op3->SetUnusedValue();
42134199
op1->SetUnusedValue();
42144200

42154201
GenTree* next = cndSelNode->gtNext;
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
// Generated by Fuzzlyn v2.5 on 2025-03-30 17:25:31
5+
// Run on Arm64 Windows
6+
// Seed: 6164687101299398040-vectort,vector64,vector128,armadvsimd,armadvsimdarm64,armaes,armarmbase,armarmbasearm64,armcrc32,armcrc32arm64,armdp,armrdm,armrdmarm64,armsha1,armsha256,armsve
7+
// Reduced from 35.7 KiB to 0.7 KiB in 00:00:46
8+
// Hits JIT assert in Release:
9+
// Assertion failed 'node->IsUnusedValue() && "found an unmarked unused value"' in 'Program:Main(Fuzzlyn.ExecutionServer.IRuntime)' during 'Lowering nodeinfo' (IL size 95; hash 0xade6b36b; FullOpts)
10+
//
11+
// File: D:\a\_work\1\s\src\coreclr\jit\lir.cpp Line: 1706
12+
//
13+
using System;
14+
using System.Numerics;
15+
using System.Runtime.Intrinsics;
16+
using System.Runtime.Intrinsics.Arm;
17+
18+
public class Program
19+
{
20+
public static uint s_1;
21+
public static void Main()
22+
{
23+
var vr7 = Sve.CreateTrueMaskInt32();
24+
var vr8 = Vector.Create<int>(0);
25+
var vr9 = Sve.CreateFalseMaskInt32();
26+
var vr10 = Sve.ConditionalSelect(vr7, vr8, vr9);
27+
var vr11 = Vector128.CreateScalar(12616752854119074364UL).AsVector();
28+
var vr12 = (int)Sve.SaturatingIncrementByActiveElementCount(0, vr11);
29+
var vr13 = Vector128.CreateScalar(vr12).AsVector();
30+
if (Sve.TestLastTrue(vr10, vr13))
31+
{
32+
System.Console.WriteLine(s_1);
33+
}
34+
}
35+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<Optimize>True</Optimize>
4+
<!-- SYSLIB50003: System.Runtime.Intrinsics.Arm.Sve is experimental -->
5+
<NoWarn>$(NoWarn);SYSLIB5003</NoWarn>
6+
</PropertyGroup>
7+
<ItemGroup>
8+
<Compile Include="$(MSBuildProjectName).cs" />
9+
</ItemGroup>
10+
</Project>

0 commit comments

Comments
 (0)