Skip to content

Commit

Permalink
[release/7.0] Ensure that the shuffle zero mask copies all bits (#86453)
Browse files Browse the repository at this point in the history
* Ensure that the shuffle zero mask copies all bits

* Ensure we don't try to validate Vector512 on .NET 7 as it is a .NET 8 API

* Don't remove too many braces from the test

* Don't use the xunit based test approach that was introduced in the .NET 8 branch
  • Loading branch information
tannergooding authored May 22, 2023
1 parent a12825a commit 2a63c9d
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 5 deletions.
8 changes: 3 additions & 5 deletions src/coreclr/jit/gentree.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21830,13 +21830,11 @@ GenTree* Compiler::gtNewSimdShuffleNode(var_types type,

if (needsZero)
{
assert(!compIsaSupportedDebugOnly(InstructionSet_SSSE3));
assert((simdSize == 32) || !compIsaSupportedDebugOnly(InstructionSet_SSSE3));

op2 = gtNewVconNode(type, simdBaseJitType);
op2->AsVecCon()->gtSimd16Val = mskCns.v128[0];

GenTree* zero = gtNewZeroConNode(type, simdBaseJitType);
retNode = gtNewSimdCndSelNode(type, op2, retNode, zero, simdBaseJitType, simdSize, isSimdAsHWIntrinsic);
op2->AsVecCon()->gtSimd32Val = mskCns;
retNode = gtNewSimdBinOpNode(GT_AND, type, op2, retNode, simdBaseJitType, simdSize, isSimdAsHWIntrinsic);
}

return retNode;
Expand Down
32 changes: 32 additions & 0 deletions src/tests/JIT/Regression/JitBlue/GitHub_85129/GitHub_85129.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
//

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

public class Program_85129
{
public static int Main()
{
Vector256<int> v256Shuffle = Vector256.Create(100, 101, 102, 103, 104, 105, 106, 107);
Vector256<int> v256ShuffleExpectedResult = Vector256.Create(107, 105, 0, 101, 106, 104, 0, 100);
Vector256<int> v256ShuffleActualResult = Vector256Shuffle(v256Shuffle);
if(v256ShuffleExpectedResult != v256ShuffleActualResult)
{
return 1;
}

return 100;
}


[MethodImpl(MethodImplOptions.NoInlining)]
public static Vector256<int> Vector256Shuffle(Vector256<int> v1)
{
return Vector256.Shuffle(v1, Vector256.Create(7, 5, 132, 1, 6, 4, -3, 0));
}
}
11 changes: 11 additions & 0 deletions src/tests/JIT/Regression/JitBlue/GitHub_85129/GitHub_85129.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
</PropertyGroup>
<PropertyGroup>
<DebugType>PdbOnly</DebugType>
</PropertyGroup>
<ItemGroup>
<Compile Include="$(MSBuildProjectName).cs" />
</ItemGroup>
</Project>

0 comments on commit 2a63c9d

Please sign in to comment.