@@ -8785,8 +8785,7 @@ LegalizerHelper::lowerFMinimumMaximum(MachineInstr &MI) {
87858785 unsigned Opc = MI.getOpcode ();
87868786 auto [Dst, Src0, Src1] = MI.getFirst3Regs ();
87878787 LLT Ty = MRI.getType (Dst);
8788- LLT CmpTy =
8789- Ty.isScalar () ? LLT::scalar (1 ) : LLT::vector (Ty.getElementCount (), 1 );
8788+ LLT CmpTy = Ty.changeElementSize (1 );
87908789
87918790 bool IsMax = (Opc == TargetOpcode::G_FMAXIMUM);
87928791 unsigned OpcIeee =
@@ -8829,18 +8828,21 @@ LegalizerHelper::lowerFMinimumMaximum(MachineInstr &MI) {
88298828 KnownFPClass Src1Info = VT.computeKnownFPClass (Src1, fcZero);
88308829
88318830 if (!Src0Info.isKnownNeverZero () && !Src1Info.isKnownNeverZero ()) {
8831+ const unsigned Flags = MI.getFlags ();
88328832 Register Zero = MIRBuilder.buildFConstant (Ty, 0.0 ).getReg (0 );
88338833 auto IsZero = MIRBuilder.buildFCmp (CmpInst::FCMP_OEQ, CmpTy, Res, Zero);
88348834
88358835 unsigned TestClass = IsMax ? fcPosZero : fcNegZero;
88368836
88378837 auto LHSTestZero = MIRBuilder.buildIsFPClass (CmpTy, Src0, TestClass);
8838- auto LHSSelect = MIRBuilder.buildSelect (Ty, LHSTestZero, Src0, Res);
8838+ auto LHSSelect =
8839+ MIRBuilder.buildSelect (Ty, LHSTestZero, Src0, Res, Flags);
88398840
88408841 auto RHSTestZero = MIRBuilder.buildIsFPClass (CmpTy, Src1, TestClass);
8841- auto RHSSelect = MIRBuilder.buildSelect (Ty, RHSTestZero, Src1, LHSSelect);
8842+ auto RHSSelect =
8843+ MIRBuilder.buildSelect (Ty, RHSTestZero, Src1, LHSSelect, Flags);
88428844
8843- Res = MIRBuilder.buildSelect (Ty, IsZero, RHSSelect, Res).getReg (0 );
8845+ Res = MIRBuilder.buildSelect (Ty, IsZero, RHSSelect, Res, Flags ).getReg (0 );
88448846 }
88458847 }
88468848
0 commit comments