Skip to content

Commit

Permalink
Ensure CNS_VEC and BLK are handled for setLclRelatedToSIMDIntrinsic (
Browse files Browse the repository at this point in the history
  • Loading branch information
tannergooding authored Feb 8, 2023
1 parent bd54093 commit 1f8eabf
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/coreclr/jit/gentree.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8166,11 +8166,12 @@ GenTree* Compiler::gtNewBlkOpNode(GenTree* dst, GenTree* srcOrFillVal, bool isVo
// should be labeled as simd intrinsic related struct. This is done so that
// we do not promote the local, thus avoiding conflicting access methods
// (fields vs. whole-register).
if (varTypeIsSIMD(srcOrFillVal) && srcOrFillVal->OperIsHWIntrinsic())
if (varTypeIsSIMD(srcOrFillVal) && srcOrFillVal->OperIs(GT_HWINTRINSIC, GT_CNS_VEC))
{
// TODO-Cleanup: similar logic already exists in "gtNewAssignNode",
// however, it is not enabled for x86. Fix that and delete this code.
GenTreeLclVar* dstLclNode = nullptr;

if (dst->OperIs(GT_LCL_VAR))
{
dstLclNode = dst->AsLclVar();
Expand Down Expand Up @@ -18853,7 +18854,7 @@ void Compiler::SetOpLclRelatedToSIMDIntrinsic(GenTree* op)
{
setLclRelatedToSIMDIntrinsic(op);
}
else if (op->OperIs(GT_OBJ) && op->AsIndir()->Addr()->OperIs(GT_LCL_VAR_ADDR))
else if (op->OperIsBlk() && op->AsIndir()->Addr()->OperIs(GT_LCL_VAR_ADDR))
{
setLclRelatedToSIMDIntrinsic(op->AsIndir()->Addr());
}
Expand Down

0 comments on commit 1f8eabf

Please sign in to comment.