Skip to content

Commit 64d27bb

Browse files
authored
Disable matching constants for vectors that needs upper half to be save/restore (#74110)
* Revert "Ensure that GT_CNS_VEC is handled in LinearScan::isMatchingConstant (#70171)" This reverts commit 24f5de4. * Revert "Revert "Ensure that GT_CNS_VEC is handled in LinearScan::isMatchingConstant (#70171)"" This reverts commit 984120f. * Add partial save check * Use the correct register type
1 parent 7704f8b commit 64d27bb

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

src/coreclr/jit/lsra.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2721,7 +2721,11 @@ bool LinearScan::isMatchingConstant(RegRecord* physRegRecord, RefPosition* refPo
27212721

27222722
case GT_CNS_VEC:
27232723
{
2724-
return GenTreeVecCon::Equals(refPosition->treeNode->AsVecCon(), otherTreeNode->AsVecCon());
2724+
return
2725+
#if FEATURE_PARTIAL_SIMD_CALLEE_SAVE
2726+
!Compiler::varTypeNeedsPartialCalleeSave(physRegRecord->assignedInterval->registerType) &&
2727+
#endif
2728+
GenTreeVecCon::Equals(refPosition->treeNode->AsVecCon(), otherTreeNode->AsVecCon());
27252729
}
27262730

27272731
default:

0 commit comments

Comments
 (0)