diff --git a/src/coreclr/jit/lowerxarch.cpp b/src/coreclr/jit/lowerxarch.cpp
index 319238aaec628f..150ad04a55d99f 100644
--- a/src/coreclr/jit/lowerxarch.cpp
+++ b/src/coreclr/jit/lowerxarch.cpp
@@ -6504,7 +6504,7 @@ void Lowering::ContainCheckStoreIndir(GenTreeStoreInd* node)
case NI_AVX2_ConvertToUInt32:
{
// These intrinsics are "ins reg/mem, xmm"
- isContainable = varTypeIsIntegral(simdBaseType);
+ isContainable = varTypeIsIntegral(simdBaseType) && (genTypeSize(src) == genTypeSize(node));
break;
}
@@ -6568,7 +6568,8 @@ void Lowering::ContainCheckStoreIndir(GenTreeStoreInd* node)
size_t numArgs = hwintrinsic->GetOperandCount();
GenTree* lastOp = hwintrinsic->Op(numArgs);
- isContainable = HWIntrinsicInfo::isImmOp(intrinsicId, lastOp) && lastOp->IsCnsIntOrI();
+ isContainable = HWIntrinsicInfo::isImmOp(intrinsicId, lastOp) && lastOp->IsCnsIntOrI() &&
+ (genTypeSize(simdBaseType) == genTypeSize(node));
if (isContainable && (intrinsicId == NI_SSE2_Extract))
{
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_92349/Runtime_92349.cs b/src/tests/JIT/Regression/JitBlue/Runtime_92349/Runtime_92349.cs
new file mode 100644
index 00000000000000..5de0a28895b268
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_92349/Runtime_92349.cs
@@ -0,0 +1,29 @@
+// 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.Intrinsics.X86;
+using System.Runtime.Intrinsics;
+using System.Runtime.CompilerServices;
+using System.Threading;
+using Xunit;
+
+public static class Runtime_92349
+{
+ [MethodImpl(MethodImplOptions.AggressiveOptimization)]
+ unsafe static void Test(byte* pValue)
+ {
+ *pValue = (byte)Sse2.ConvertToInt32(Vector128.Create(-10, 0, 0, 0));
+ }
+
+ [Fact]
+ public unsafe static void EntryPoint()
+ {
+ if (Sse2.IsSupported)
+ {
+ ulong value = 0;
+ Test((byte*)Unsafe.AsPointer(ref value));
+ Assert.True(value == 246);
+ }
+ }
+}
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_92349/Runtime_92349.csproj b/src/tests/JIT/Regression/JitBlue/Runtime_92349/Runtime_92349.csproj
new file mode 100644
index 00000000000000..6bb210527e0797
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_92349/Runtime_92349.csproj
@@ -0,0 +1,9 @@
+
+
+ True
+ True
+
+
+
+
+
\ No newline at end of file
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_92590/Runtime_92590.cs b/src/tests/JIT/Regression/JitBlue/Runtime_92590/Runtime_92590.cs
new file mode 100644
index 00000000000000..99a5ef2ee5d18d
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_92590/Runtime_92590.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.
+
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.Intrinsics;
+using Xunit;
+
+public class Runtime_92590
+{
+ [Fact]
+ public static void TestEntryPoint()
+ {
+ Span bytes = stackalloc byte[4];
+ bytes.Fill(0xff);
+ TestByteByte(ref bytes[0], 0, Vector256.Create((byte)1));
+
+ Assert.True(bytes.SequenceEqual(stackalloc byte[] { 0x2, 0xff, 0xff, 0xff }));
+
+ bytes.Fill(0xff);
+ TestByteInt(ref bytes[0], 0, Vector256.Create(1));
+
+ Assert.True(bytes.SequenceEqual(stackalloc byte[] { 0x2, 0xff, 0xff, 0xff }));
+
+ int i = int.MaxValue;
+ TestIntByte(ref i, 0, Vector256.Create((byte)1));
+
+ Assert.Equal(2, i);
+
+ i = int.MaxValue;
+ TestIntInt(ref i, 0, Vector256.Create(1));
+
+ Assert.Equal(2, i);
+ }
+
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ private static void TestByteByte(ref byte b, int x, Vector256 vin)
+ {
+ Vector256 v = vin + vin;
+ Unsafe.Add(ref b, x) = v[3];
+ }
+
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ private static void TestByteInt(ref byte b, int x, Vector256 vin)
+ {
+ Vector256 v = vin + vin;
+ Unsafe.Add(ref b, x) = (byte)v[3];
+ }
+
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ private static void TestIntByte(ref int b, int x, Vector256 vin)
+ {
+ Vector256 v = vin + vin;
+ Unsafe.Add(ref b, x) = v[3];
+ }
+
+ [MethodImpl(MethodImplOptions.NoInlining)]
+ private static void TestIntInt(ref int b, int x, Vector256 vin)
+ {
+ Vector256 v = vin + vin;
+ Unsafe.Add(ref b, x) = v[3];
+ }
+}
diff --git a/src/tests/JIT/Regression/JitBlue/Runtime_92590/Runtime_92590.csproj b/src/tests/JIT/Regression/JitBlue/Runtime_92590/Runtime_92590.csproj
new file mode 100644
index 00000000000000..15edd99711a1a4
--- /dev/null
+++ b/src/tests/JIT/Regression/JitBlue/Runtime_92590/Runtime_92590.csproj
@@ -0,0 +1,8 @@
+
+
+ True
+
+
+
+
+
\ No newline at end of file