diff options
| author | Vitaly Buka <vitalybuka@google.com> | 2024-09-23 15:55:29 -0700 |
|---|---|---|
| committer | Vitaly Buka <vitalybuka@google.com> | 2024-09-23 15:55:29 -0700 |
| commit | 80323f174971174928c87fb0e958a6fcfe094d59 (patch) | |
| tree | bb0862b94fc42ba636ea993820a3368b851fd334 /llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | |
| parent | 1c4f36eefcbee84fe801c6817ff4cdc7feeafd13 (diff) | |
| parent | 8dbb739ffb0880e4f739992d07dc6ba6edca9509 (diff) | |
[𝘀𝗽𝗿] changes introduced through rebaseusers/vitalybuka/spr/main.nfchwasan-remove-code-duplication-in-shadowmappinginit
Created using spr 1.3.4
[skip ci]
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index b36a1245f839..c6f6fc250805 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -508,6 +508,7 @@ namespace { SDValue visitFSQRT(SDNode *N); SDValue visitFCOPYSIGN(SDNode *N); SDValue visitFPOW(SDNode *N); + SDValue visitFCANONICALIZE(SDNode *N); SDValue visitSINT_TO_FP(SDNode *N); SDValue visitUINT_TO_FP(SDNode *N); SDValue visitFP_TO_SINT(SDNode *N); @@ -1980,6 +1981,7 @@ SDValue DAGCombiner::visit(SDNode *N) { case ISD::FREEZE: return visitFREEZE(N); case ISD::GET_FPENV_MEM: return visitGET_FPENV_MEM(N); case ISD::SET_FPENV_MEM: return visitSET_FPENV_MEM(N); + case ISD::FCANONICALIZE: return visitFCANONICALIZE(N); case ISD::VECREDUCE_FADD: case ISD::VECREDUCE_FMUL: case ISD::VECREDUCE_ADD: @@ -2090,6 +2092,19 @@ static SDValue getInputChainForNode(SDNode *N) { return SDValue(); } +SDValue DAGCombiner::visitFCANONICALIZE(SDNode *N) { + SDValue Operand = N->getOperand(0); + EVT VT = Operand.getValueType(); + SDLoc dl(N); + + // Canonicalize undef to quiet NaN. + if (Operand.isUndef()) { + APFloat CanonicalQNaN = APFloat::getQNaN(VT.getFltSemantics()); + return DAG.getConstantFP(CanonicalQNaN, dl, VT); + } + return SDValue(); +} + SDValue DAGCombiner::visitTokenFactor(SDNode *N) { // If N has two operands, where one has an input chain equal to the other, // the 'other' chain is redundant. |
