未验证 提交 605cd300 编写于 作者: G github-actions[bot] 提交者: GitHub

[release/8.0] JIT: Fix various HW intrinsic lowerings for unused values (#91266)

* JIT: Fix LowerHWIntrinsicToScalar with unused values

Fix #91173

* Fix more cases

---------
Co-authored-by: NJakob Botsch Nielsen <jakob.botsch.nielsen@gmail.com>
上级 bbaba101
......@@ -1900,6 +1900,10 @@ GenTree* Lowering::LowerHWIntrinsicDot(GenTreeHWIntrinsic* node)
{
use.ReplaceWith(tmp2);
}
else
{
tmp2->SetUnusedValue();
}
BlockRange().Remove(node);
return tmp2->gtNext;
......
......@@ -3868,6 +3868,10 @@ GenTree* Lowering::LowerHWIntrinsicGetElement(GenTreeHWIntrinsic* node)
{
use.ReplaceWith(newIndir);
}
else
{
newIndir->SetUnusedValue();
}
BlockRange().Remove(op1);
BlockRange().Remove(node);
......@@ -3916,6 +3920,10 @@ GenTree* Lowering::LowerHWIntrinsicGetElement(GenTreeHWIntrinsic* node)
{
use.ReplaceWith(lclFld);
}
else
{
lclFld->SetUnusedValue();
}
BlockRange().Remove(op1);
BlockRange().Remove(op2);
......@@ -4158,6 +4166,11 @@ GenTree* Lowering::LowerHWIntrinsicGetElement(GenTreeHWIntrinsic* node)
{
use.ReplaceWith(cast);
}
else
{
node->ClearUnusedValue();
cast->SetUnusedValue();
}
next = LowerNode(cast);
}
......@@ -4737,6 +4750,10 @@ GenTree* Lowering::LowerHWIntrinsicDot(GenTreeHWIntrinsic* node)
{
use.ReplaceWith(tmp1);
}
else
{
tmp1->SetUnusedValue();
}
BlockRange().Remove(node);
return LowerNode(tmp1);
......@@ -5267,6 +5284,10 @@ GenTree* Lowering::LowerHWIntrinsicDot(GenTreeHWIntrinsic* node)
{
use.ReplaceWith(tmp1);
}
else
{
tmp1->SetUnusedValue();
}
BlockRange().Remove(node);
return tmp1->gtNext;
......@@ -5314,6 +5335,10 @@ GenTree* Lowering::LowerHWIntrinsicToScalar(GenTreeHWIntrinsic* node)
{
use.ReplaceWith(newIndir);
}
else
{
newIndir->SetUnusedValue();
}
BlockRange().Remove(op1);
BlockRange().Remove(node);
......@@ -5342,6 +5367,10 @@ GenTree* Lowering::LowerHWIntrinsicToScalar(GenTreeHWIntrinsic* node)
{
use.ReplaceWith(lclFld);
}
else
{
lclFld->SetUnusedValue();
}
BlockRange().Remove(op1);
BlockRange().Remove(node);
......@@ -5426,6 +5455,11 @@ GenTree* Lowering::LowerHWIntrinsicToScalar(GenTreeHWIntrinsic* node)
{
use.ReplaceWith(cast);
}
else
{
node->ClearUnusedValue();
cast->SetUnusedValue();
}
next = LowerNode(cast);
}
......@@ -8332,8 +8366,15 @@ void Lowering::TryFoldCnsVecForEmbeddedBroadcast(GenTreeHWIntrinsic* parentNode,
BlockRange().InsertBefore(broadcastNode, createScalar);
BlockRange().InsertBefore(createScalar, constScalar);
LIR::Use use;
BlockRange().TryGetUse(childNode, &use);
use.ReplaceWith(broadcastNode);
if (BlockRange().TryGetUse(childNode, &use))
{
use.ReplaceWith(broadcastNode);
}
else
{
broadcastNode->SetUnusedValue();
}
BlockRange().Remove(childNode);
LowerNode(createScalar);
LowerNode(broadcastNode);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册