-
Notifications
You must be signed in to change notification settings - Fork 4.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Make intrinsic nodes multi op (aka delete
GT_LIST
) (#59912)
* Introducing GenTreeMultiOp * Rewrite gtNewSIMDNode * Rewrite gtNewSIMDVectorZero * Rewrite gtNewHWIntrinsicNode * Rewrite GenTreeSIMD::OperIsMemoryLoad * Rewrite GenTreeHWIntrinsic::OperIsMemoryLoad * Rewrite GenTreeHWIntrinsic::OperIsMemoryStore * Rewrite GenTree::IsIntegralConstVector * Rewrite GenTree::NullOp1Legal * Rewrite GenTree::IsSIMDZero * Rewrite GenTree::isCommutativeSIMDIntrinsic * Rewrite GenTree::isCommutativeHWIntrinsic * Rewrite GenTree::isContainableHWIntrinsic * Rewrite GenTree::isRMWHWIntrinsic * Rewrite GenTreeVisitor * Rewrite GenTreeUseEdgeIterator * Rewrite GenTree::VisitOperands * Rewrite GenTree::TryGetUse * Rewrite gtGetChildPointer * Rewrite gtHasRef * Rewrite fgSetTreeSeqHelper * Rewrite GenTree::NumChildren * Rewrite GenTree::GetChild * Rewrite GenTree::Compare * Rewrite gtCloneExpr * Rewrite gtSetEvalOrder * Rewrite gtHashValue * Rewrite gtDispTree * Rewrite fgDebugCheckFlags * Add genConsumeMultiOpOperands * Rewrite genConsumeRegs * Rewrite HWIntrinsic::HWIntrinsic * Rewrite HWIntrinsic::InitializeOperands * Delete HWIntrinsicInfo::lookupNumArgs * Delete HWIntrinsicInfo::lookupLastOp * Rewrite HWIntrinsicImmOpHelper ARM64 * Rewrite inst_RV_TT_IV * Rewrite inst_RV_RV_TT * Rewrite genSIMDIntrinsic XARCH * Rewrite genSIMDIntrinsicInit XARCH * Rewrite genSIMDIntrinsicInitN XARCH * Rewrite genSIMDIntrinsicUnOp XARCH * Rewrite genSIMDIntrinsic32BitConvert XARCH * Rewrite genSIMDIntrinsic64BitConvert XARCH * Rewrite genSIMDIntrinsicWiden XARCH * Rewrite genSIMDIntrinsicNarrow XARCH * Rewrite genSIMDIntrinsicBinOp XARCH * Rewrite genSIMDIntrinsicRelOp XARCH * Rewrite genSIMDIntrinsicShuffleSSE2 XARCH * Rewrite genSIMDIntrinsicUpperSave XARCH * Rewrite genSIMDIntrinsicUpperRestore XARCH * Rewrite genSIMDIntrinsic ARM64 * Rewrite genSIMDIntrinsicInit ARM64 * Rewrite genSIMDIntrinsicInitN ARM64 * Rewrite genSIMDIntrinsicUnOp ARM64 * Rewrite genSIMDIntrinsicWiden ARM64 * Rewrite genSIMDIntrinsicNarrow ARM64 * Rewrite genSIMDIntrinsicBinOp ARM64 * Rewrite genSIMDIntrinsicUpperSave ARM64 * Rewrite genSIMDIntrinsicUpperRestore ARM64 * Rewrite genHWIntrinsic_R_RM XARCH * Rewrite genHWIntrinsic_R_RM_I XARCH * Rewrite genHWIntrinsic_R_R_RM XARCH * Rewrite genHWIntrinsic_R_R_RM_I XARCH * Rewrite genHWIntrinsic_R_R_RM_R XARCH * Rewrite genHWIntrinsic_R_R_R_RM XARCH * Rewrite genHWIntrinsic XARCH * Rewrite genBaseIntrinsic XARCH * Rewrite genX86BaseIntrinsic XARCH * Rewrite genSSEIntrinsic XARCH * Rewrite genSSE2Intrinsic XARCH * Rewrite genSSE41Intrinsic XARCH * Rewrite genSSE42Intrinsic XARCH * Rewrite genAvxOrAvx2Intrinsic XARCH * Rewrite genBMI1OrBMI2Intrinsic XARCH * Rewrite genFMAIntrinsic XARCH * Rewrite genLZCNTIntrinsic XARCH * Rewrite genPOPCNTIntrinsic XARCH * Rewrite genXCNTIntrinsic XARCH * Rewrite genHWIntrinsic ARM64 * Rewrite insertUpperVectorSave * Rewrite insertUpperVectorRestore * Rewrite getKillSetForHWIntrinsic * Rewrite BuildSIMD XARCH * Rewrite BuildOperandUses/BuildDelayFreeUses * Rewrite BuildSIMD ARM64 * Rewrite BuildHWIntrinsic XARCH * Rewrite LowerSIMD XARCH * Rewrite ContainCheckSIMD XARCH * Rewrite LowerHWIntrinsicCC XARCH * Rewrite LowerFusedMultiplyAdd XARCH * Rewrite LowerHWIntrinsic XARCH * Rewrite LowerHWIntrinsicCmpOp XARCH * Rewrite LowerHWIntrinsicGetElement XARCH * Rewrite LowerHWIntrinsicWithElement XARCH * Rewrite LowerHWIntrinsicCreate XARCH * Rewrite LowerHWIntrinsicDot XARCH * Rewrite LowerHWIntrinsicToScalar XARCH * Rewrite IsContainableHWIntrinsicOp XARCH * Rewrite ContainCheckHWIntrinsic XARCH * Rewrite IsValidConstForMovImm ARM64 * Rewrite LowerHWIntrinsic ARM64 * Rewrite LowerHWIntrinsicFusedMultiplyAddScalar ARM64 * Rewrite LowerHWIntrinsicCmpOp ARM64 * Rewrite LowerHWIntrinsicCreate ARM64 * Rewrite LowerHWIntrinsicDot ARM64 * Rewrite ContainCheckStoreLoc ARM64 * Rewrite ContainCheckSIMD ARM64 * Rewrite ContainCheckHWIntrinsic ARM64 * Rewrite DecomposeHWIntrinsicGetElement X86 * Rewrite DecomposeHWIntrinsic X86 * Rewrite Rationalizer::RewriteNode * Rewrite optIsCSEcandidate * Rewrite fgValueNumberTree * Rewrite fgValueNumberSimd * Rewrite fgValueNumberHWIntrinsic * Rewrite GetVNFuncForNode * Rewrite fgMorphTree & fgMorphSmpOpOptional * Rewrite fgMorphFieldToSimdGetElement/fgMorphField * Rewrite fgMorphOneAsgBlockOp * Rewrite impInlineFetchArg * Rewrite impSIMDRelOp * Rewrite impSIMDIntrinsic * Rewrite impBaseIntrinsic XARCH * Rewrite impAvxOrAvx2Intrinsic XARCH * Rewrite impSpecialIntrinsic ARM64 * Fix SSA Builder comments * Delete GT_LIST * Support GTF_REVERSE_OPS for GenTreeMultiOp It turns out that in the time this change has been sitting there, 3 new methods in the SPMI benchmarks collection appeared, and it turns out they regress because of the lack of GTF_REVERSE_OPS. So, implement support for it.... This makes me quite sad, but it does make this change a pure zero-diff one, which is good. * Fix Linux x86 build break * Fix formatting * Improve readability through the use of a local * Support external operand arrays in GenTreeMultiOp * Fix formatting * Tweak a constructor call
- Loading branch information
1 parent
ce93c29
commit 87b92fd
Showing
42 changed files
with
2,068 additions
and
2,483 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.