diff options
author | SingleAccretion <62474226+SingleAccretion@users.noreply.github.com> | 2021-11-20 05:13:35 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-20 05:13:35 +0300 |
commit | 87b92fdf5c377e12fc46062042e62b4c8cc6a651 (patch) | |
tree | 804b78e00ccc094a55d7c389fbeea2c81e4315a5 /src/libraries/System.Runtime.InteropServices | |
parent | ce93c291e48e1066534226887e1dd2df0dd8db5c (diff) |
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
Diffstat (limited to 'src/libraries/System.Runtime.InteropServices')
0 files changed, 0 insertions, 0 deletions