@@ -18230,42 +18230,40 @@ SDValue DAGCombiner::visitFP_ROUND(SDNode *N) {
18230
18230
SDValue DAGCombiner::visitFP_EXTEND(SDNode *N) {
18231
18231
SDValue N0 = N->getOperand(0);
18232
18232
EVT VT = N->getValueType(0);
18233
+ SDLoc DL(N);
18233
18234
18234
18235
if (VT.isVector())
18235
- if (SDValue FoldedVOp = SimplifyVCastOp(N, SDLoc(N) ))
18236
+ if (SDValue FoldedVOp = SimplifyVCastOp(N, DL ))
18236
18237
return FoldedVOp;
18237
18238
18238
18239
// If this is fp_round(fpextend), don't fold it, allow ourselves to be folded.
18239
- if (N->hasOneUse() &&
18240
- N->use_begin()->getOpcode() == ISD::FP_ROUND)
18240
+ if (N->hasOneUse() && N->use_begin()->getOpcode() == ISD::FP_ROUND)
18241
18241
return SDValue();
18242
18242
18243
18243
// fold (fp_extend c1fp) -> c1fp
18244
- if (DAG.isConstantFPBuildVectorOrConstantFP(N0 ))
18245
- return DAG.getNode(ISD::FP_EXTEND, SDLoc(N), VT, N0) ;
18244
+ if (SDValue C = DAG.FoldConstantArithmetic(ISD::FP_EXTEND, DL, VT, {N0} ))
18245
+ return C ;
18246
18246
18247
18247
// fold (fp_extend (fp16_to_fp op)) -> (fp16_to_fp op)
18248
18248
if (N0.getOpcode() == ISD::FP16_TO_FP &&
18249
18249
TLI.getOperationAction(ISD::FP16_TO_FP, VT) == TargetLowering::Legal)
18250
- return DAG.getNode(ISD::FP16_TO_FP, SDLoc(N) , VT, N0.getOperand(0));
18250
+ return DAG.getNode(ISD::FP16_TO_FP, DL , VT, N0.getOperand(0));
18251
18251
18252
18252
// Turn fp_extend(fp_round(X, 1)) -> x since the fp_round doesn't affect the
18253
18253
// value of X.
18254
- if (N0.getOpcode() == ISD::FP_ROUND
18255
- && N0.getConstantOperandVal(1) == 1) {
18254
+ if (N0.getOpcode() == ISD::FP_ROUND && N0.getConstantOperandVal(1) == 1) {
18256
18255
SDValue In = N0.getOperand(0);
18257
18256
if (In.getValueType() == VT) return In;
18258
18257
if (VT.bitsLT(In.getValueType()))
18259
- return DAG.getNode(ISD::FP_ROUND, SDLoc(N), VT,
18260
- In, N0.getOperand(1));
18261
- return DAG.getNode(ISD::FP_EXTEND, SDLoc(N), VT, In);
18258
+ return DAG.getNode(ISD::FP_ROUND, DL, VT, In, N0.getOperand(1));
18259
+ return DAG.getNode(ISD::FP_EXTEND, DL, VT, In);
18262
18260
}
18263
18261
18264
18262
// fold (fpext (load x)) -> (fpext (fptrunc (extload x)))
18265
18263
if (ISD::isNormalLoad(N0.getNode()) && N0.hasOneUse() &&
18266
18264
TLI.isLoadExtLegalOrCustom(ISD::EXTLOAD, VT, N0.getValueType())) {
18267
18265
LoadSDNode *LN0 = cast<LoadSDNode>(N0);
18268
- SDValue ExtLoad = DAG.getExtLoad(ISD::EXTLOAD, SDLoc(N) , VT,
18266
+ SDValue ExtLoad = DAG.getExtLoad(ISD::EXTLOAD, DL , VT,
18269
18267
LN0->getChain(),
18270
18268
LN0->getBasePtr(), N0.getValueType(),
18271
18269
LN0->getMemOperand());
0 commit comments