Skip to content

Commit

Permalink
Ensure constant evaluation of shifts on xarch broadcast the operand t…
Browse files Browse the repository at this point in the history
…o the correct size (#105487)

* Ensure constant evaluation of shifts on xarch broadcast the operand to the correct size

* Ensure we don't try to execute AVX2 code on unsupported platforms
  • Loading branch information
tannergooding authored and pull[bot] committed Nov 27, 2024
1 parent 5b8236d commit 64654da
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/coreclr/jit/gentree.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30917,6 +30917,10 @@ GenTree* Compiler::gtFoldExprHWIntrinsic(GenTreeHWIntrinsic* tree)
// Ensure we don't lose track the the amount is an overshift
shiftAmount = -1;
}

// Ensure we broadcast to the right vector size
otherNode->gtType = retType;

otherNode->AsVecCon()->EvaluateBroadcastInPlace(simdBaseType, shiftAmount);
}
}
Expand Down
26 changes: 26 additions & 0 deletions src/tests/JIT/Regression/JitBlue/Runtime_105465/Runtime_105465.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Generated by Fuzzlyn v1.7 on 2024-07-25 11:06:17
// Run on X64 Windows
// Seed: 1535747306914661768-vectort,vector128,vector256,x86aes,x86avx,x86avx2,x86bmi1,x86bmi1x64,x86bmi2,x86bmi2x64,x86fma,x86lzcnt,x86lzcntx64,x86pclmulqdq,x86popcnt,x86popcntx64,x86sse,x86ssex64,x86sse2,x86sse2x64,x86sse3,x86sse41,x86sse41x64,x86sse42,x86sse42x64,x86ssse3,x86x86base
// Reduced from 95.3 KiB to 0.6 KiB in 00:00:29
// Debug: Outputs <0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0>
// Release: Outputs <0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1>
using System;
using System.Runtime.Intrinsics;
using System.Runtime.Intrinsics.X86;
using Xunit;

public class Runtime_105465
{
[Fact]
public static void TestEntryPoint()
{
if (Avx2.IsSupported)
{
var vr2 = Vector256.Create<ushort>(1);
var vr3 = Vector128.Create<ushort>(1);
Vector256<ushort> vr4 = Avx2.ShiftLeftLogical(vr2, vr3);
Assert.Equal(Vector256<ushort>.Zero, vr4);
}
}
}

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 64654da

Please sign in to comment.