From 1a2329efe82c96d3af066ad81254083f07393dc8 Mon Sep 17 00:00:00 2001 From: Mikhail Ablakatov Date: Fri, 14 Jun 2024 16:24:43 +0000 Subject: [PATCH] Fixup: wrap an intrinsic node which is used as a mask op for ConditionalSelect in another ConditionalSelect if required --- src/coreclr/jit/lowerarmarch.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/coreclr/jit/lowerarmarch.cpp b/src/coreclr/jit/lowerarmarch.cpp index 68dbe95dfa4850..58e8f1123ddad5 100644 --- a/src/coreclr/jit/lowerarmarch.cpp +++ b/src/coreclr/jit/lowerarmarch.cpp @@ -1303,7 +1303,8 @@ GenTree* Lowering::LowerHWIntrinsic(GenTreeHWIntrinsic* node) { GenTree* user = use.User(); // Wrap the intrinsic in ConditionalSelect only if it is not already inside another ConditionalSelect - if (!user->OperIsHWIntrinsic() || (user->AsHWIntrinsic()->GetHWIntrinsicId() != NI_Sve_ConditionalSelect)) + if (!user->OperIsHWIntrinsic() || (user->AsHWIntrinsic()->GetHWIntrinsicId() != NI_Sve_ConditionalSelect) || + (HWIntrinsic(user->AsHWIntrinsic()).op1 == node)) { CorInfoType simdBaseJitType = node->GetSimdBaseJitType(); unsigned simdSize = node->GetSimdSize();