@@ -451,6 +451,7 @@ bool AMDGPUCombinerHelper::matchCombineFmulWithSelectToFldexp(
451451 std::function<void (MachineIRBuilder &)> &MatchInfo) {
452452 assert (MI.getOpcode () == TargetOpcode::G_FMUL);
453453 assert (Sel.getOpcode () == TargetOpcode::G_SELECT);
454+ assert (MI.getOperand (2 ).getReg () == Sel.getOperand (0 ).getReg ());
454455
455456 Register Dst = MI.getOperand (0 ).getReg ();
456457 LLT DestTy = MRI.getType (Dst);
@@ -501,14 +502,13 @@ bool AMDGPUCombinerHelper::matchCombineFmulWithSelectToFldexp(
501502 Builder.buildConstant (IntDestTy, SelectTrueVal),
502503 Builder.buildConstant (IntDestTy, SelectFalseVal));
503504
505+ Register XReg = MI.getOperand (1 ).getReg ();
504506 if (SelectTrueCst->Value .isNegative ()) {
505- auto NegX = Builder.buildFNeg (
506- DestTy, MI.getOperand (1 ).getReg (),
507- MRI.getVRegDef (MI.getOperand (1 ).getReg ())->getFlags ());
507+ auto NegX =
508+ Builder.buildFNeg (DestTy, XReg, MRI.getVRegDef (XReg)->getFlags ());
508509 Builder.buildFLdexp (Dst, NegX, NewSel, MI.getFlags ());
509510 } else {
510- Builder.buildFLdexp (Dst, MI.getOperand (1 ).getReg (), NewSel,
511- MI.getFlags ());
511+ Builder.buildFLdexp (Dst, XReg, NewSel, MI.getFlags ());
512512 }
513513 };
514514
0 commit comments