[X86] Remove isel patterns that include a vselect/X86selects and a strict FP node.

A vselect+strictfp node is not equivalent to a masked operation.
The exceptions of the strictfp node are not masked by a vselect
after it so we can't match it to a masked operation.

We already had a hack in IsLegalToFold to prevent these patterns from
matching. This patch removes that hack and removes the patterns.
This commit is contained in:
Craig Topper 2020-02-08 21:35:21 -08:00
parent 85e2fa44c6
commit dbcc1392b3
2 changed files with 387 additions and 264 deletions

View File

@ -581,12 +581,6 @@ X86DAGToDAGISel::IsProfitableToFold(SDValue N, SDNode *U, SDNode *Root) const {
if (!N.hasOneUse())
return false;
// FIXME: Temporary hack to prevent strict floating point nodes from
// folding into masked operations illegally.
if (U == Root && Root->getOpcode() == ISD::VSELECT &&
N.getOpcode() != ISD::LOAD && N.getOpcode() != X86ISD::VBROADCAST_LOAD)
return false;
if (N.getOpcode() != ISD::LOAD)
return true;

File diff suppressed because it is too large Load Diff