@@ -54158,7 +54158,6 @@ static SDValue combineFMulcFCMulc(SDNode *N, SelectionDAG &DAG,
5415854158// FADD(A, FMA(B, C, 0)) and FADD(A, FMUL(B, C)) to FMA(B, C, A)
5415954159static SDValue combineFaddCFmul(SDNode *N, SelectionDAG &DAG,
5416054160 const X86Subtarget &Subtarget) {
54161- bool AllowContract = N->getFlags().hasAllowContract();
5416254161 auto HasNoSignedZero = [&DAG](const SDNodeFlags &Flags) {
5416354162 return DAG.getTarget().Options.NoSignedZerosFPMath ||
5416454163 Flags.hasNoSignedZeros();
@@ -54170,7 +54169,7 @@ static SDValue combineFaddCFmul(SDNode *N, SelectionDAG &DAG,
5417054169 Bits.getConstant() == AI;
5417154170 };
5417254171
54173- if (N->getOpcode() != ISD::FADD || !Subtarget.hasFP16() || !AllowContract )
54172+ if (N->getOpcode() != ISD::FADD || !Subtarget.hasFP16() || !N->getFlags().hasAllowContract() )
5417454173 return SDValue();
5417554174
5417654175 EVT VT = N->getValueType(0);
@@ -54181,14 +54180,14 @@ static SDValue combineFaddCFmul(SDNode *N, SelectionDAG &DAG,
5418154180 SDValue RHS = N->getOperand(1);
5418254181 bool IsConj;
5418354182 SDValue FAddOp1, MulOp0, MulOp1;
54184- auto GetCFmulFrom = [&MulOp0, &MulOp1, &IsConj, AllowContract,
54183+ auto GetCFmulFrom = [&MulOp0, &MulOp1, &IsConj,
5418554184 &IsVectorAllNegativeZero,
5418654185 &HasNoSignedZero](SDValue N) -> bool {
5418754186 if (!N.hasOneUse() || N.getOpcode() != ISD::BITCAST)
5418854187 return false;
5418954188 SDValue Op0 = N.getOperand(0);
5419054189 unsigned Opcode = Op0.getOpcode();
54191- if (Op0.hasOneUse() && AllowContract ) {
54190+ if (Op0.hasOneUse() && Op0->getFlags().hasAllowContract() ) {
5419254191 if ((Opcode == X86ISD::VFMULC || Opcode == X86ISD::VFCMULC)) {
5419354192 MulOp0 = Op0.getOperand(0);
5419454193 MulOp1 = Op0.getOperand(1);
0 commit comments