From 592e01f5619a21e331d8b1fcf129f05cf8626816 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 30 Aug 2023 12:48:03 -0700 Subject: [PATCH] Ensure the relevant containable nodes are handled (#91334) Co-authored-by: Tanner Gooding --- src/coreclr/jit/lowerxarch.cpp | 16 +++++ .../JitBlue/Runtime_91170/Runtime_91170.cs | 63 +++++++++++++++++++ .../Runtime_91170/Runtime_91170.csproj | 8 +++ 3 files changed, 87 insertions(+) create mode 100644 src/tests/JIT/Regression/JitBlue/Runtime_91170/Runtime_91170.cs create mode 100644 src/tests/JIT/Regression/JitBlue/Runtime_91170/Runtime_91170.csproj diff --git a/src/coreclr/jit/lowerxarch.cpp b/src/coreclr/jit/lowerxarch.cpp index c1b5079f124..00143839a44 100644 --- a/src/coreclr/jit/lowerxarch.cpp +++ b/src/coreclr/jit/lowerxarch.cpp @@ -8135,7 +8135,16 @@ bool Lowering::IsContainableHWIntrinsicOp(GenTreeHWIntrinsic* parentNode, GenTre case NI_Vector128_ToScalar: case NI_Vector256_ToScalar: case NI_Vector512_ToScalar: + case NI_SSE2_ConvertToInt32: + case NI_SSE2_ConvertToUInt32: + case NI_SSE2_X64_ConvertToInt64: + case NI_SSE2_X64_ConvertToUInt64: + case NI_SSE2_Extract: + case NI_SSE41_Extract: + case NI_SSE41_X64_Extract: case NI_AVX_ExtractVector128: + case NI_AVX2_ConvertToInt32: + case NI_AVX2_ConvertToUInt32: case NI_AVX2_ExtractVector128: case NI_AVX512F_ExtractVector128: case NI_AVX512F_ExtractVector256: @@ -8178,6 +8187,13 @@ bool Lowering::IsContainableHWIntrinsicOp(GenTreeHWIntrinsic* parentNode, GenTre return false; } + case NI_Vector128_get_Zero: + case NI_Vector256_get_Zero: + { + // These are only containable as part of Sse41.Insert + return false; + } + case NI_SSE3_MoveAndDuplicate: case NI_AVX2_BroadcastScalarToVector128: case NI_AVX2_BroadcastScalarToVector256: diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_91170/Runtime_91170.cs b/src/tests/JIT/Regression/JitBlue/Runtime_91170/Runtime_91170.cs new file mode 100644 index 00000000000..afb26b6def0 --- /dev/null +++ b/src/tests/JIT/Regression/JitBlue/Runtime_91170/Runtime_91170.cs @@ -0,0 +1,63 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license.aa + +// Found by Antigen + +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.X86; +using System.Numerics; +using Xunit; + +public class TestClass +{ + public struct S1 + { + } + + static short s_short_8 = 5; + static int s_int_9 = -2; + long long_59 = 4; + uint uint_64 = 1; + Vector256 v256_int_90 = Vector256.Create(2, -5, 4, 4, 5, 0, -1, 5); + S1 s1_99 = new S1(); + + private uint Method4(out short p_short_161, S1 p_s1_162, bool p_bool_163, ref int p_int_164) + { + unchecked + { + p_short_161 = 15|4; + if ((long_59 *= 15>>4)!= (long_59 |= 15^4)) + { + } + else + { + Vector128.CreateScalarUnsafe(Vector256.Sum(v256_int_90)); + } + return 15|4; + } + } + + private void Method0() + { + unchecked + { + uint_64 = Method4(out s_short_8, s1_99, 15<4, ref s_int_9); + return; + } + } + + [Fact] + public static void TestEntryPoint() + { + new TestClass().Method0(); + } +} +/* + +Assert failure(PID 34336 [0x00008620], Thread: 38576 [0x96b0]): Assertion failed '!childNode->isContainableHWIntrinsic()' in 'TestClass:Method4(byref,TestClass+S1,bool,byref):uint:this' during 'Lowering nodeinfo' (IL size 63; hash 0xa4e6dede; Tier0) + File: D:\git\runtime\src\coreclr\jit\lowerxarch.cpp Line: 8201 + Image: D:\git\runtime\artifacts\tests\coreclr\windows.x64.Checked\tests\Core_Root\CoreRun.exe +*/ diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_91170/Runtime_91170.csproj b/src/tests/JIT/Regression/JitBlue/Runtime_91170/Runtime_91170.csproj new file mode 100644 index 00000000000..de6d5e08882 --- /dev/null +++ b/src/tests/JIT/Regression/JitBlue/Runtime_91170/Runtime_91170.csproj @@ -0,0 +1,8 @@ + + + True + + + + + -- GitLab