Skip to content

Commit

Permalink
Fix the VN for xor operation (#92372)
Browse files Browse the repository at this point in the history
Co-authored-by: Kunal Pathak <Kunal.Pathak@microsoft.com>
  • Loading branch information
github-actions[bot] and kunalspathak committed Sep 21, 2023
1 parent 1757497 commit 12fc904
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/coreclr/jit/valuenum.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7891,7 +7891,7 @@ ValueNum ValueNumStore::EvalHWIntrinsicFunBinary(var_types type,
#endif
{
// Handle `x ^ x == 0`
return arg0VN;
return VNZeroForType(type);
}

default:
Expand Down
37 changes: 37 additions & 0 deletions src/tests/JIT/Regression/JitBlue/Runtime_91252/Runtime_91252.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
//
// This test verifies if we correctly value number the operation of
// x ^ x to zero.
//
// Found by Antigen

using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
using Xunit;

public class Issue_91252
{
static Vector64<int> s_v64_int_22 = Vector64.Create(-5);
Vector64<int> v64_int_72 = Vector64.Create(-1);

[MethodImpl(MethodImplOptions.NoInlining)]
public int Repro()
{
s_v64_int_22 = v64_int_72;
return Check(v64_int_72 ^ v64_int_72);
}

[MethodImpl(MethodImplOptions.NoInlining)]
public int Check(Vector64<int> a)
{
return (a == Vector64<int>.Zero) ? 100 : 101;
}

[Fact]
public static int EntryPoint()
{
var obj = new Issue_91252();
return obj.Repro();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Optimize>True</Optimize>
</PropertyGroup>
<ItemGroup>
<Compile Include="$(MSBuildProjectName).cs" />
</ItemGroup>
</Project>

0 comments on commit 12fc904

Please sign in to comment.