Skip to content

Commit 796c135

Browse files
committed
preserve flags; use changeElementSize
1 parent 61f6583 commit 796c135

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)