@@ -19431,38 +19431,23 @@ class HorizontalReduction {
1943119431 return Builder.CreateBinOp((Instruction::BinaryOps)RdxOpcode, LHS, RHS,
1943219432 Name);
1943319433 }
19434- case RecurKind::FMax:
19435- return Builder.CreateBinaryIntrinsic(Intrinsic::maxnum, LHS, RHS);
19436- case RecurKind::FMin:
19437- return Builder.CreateBinaryIntrinsic(Intrinsic::minnum, LHS, RHS);
19438- case RecurKind::FMaximum:
19439- return Builder.CreateBinaryIntrinsic(Intrinsic::maximum, LHS, RHS);
19440- case RecurKind::FMinimum:
19441- return Builder.CreateBinaryIntrinsic(Intrinsic::minimum, LHS, RHS);
1944219434 case RecurKind::SMax:
19443- if (UseSelect) {
19444- Value *Cmp = Builder.CreateICmpSGT(LHS, RHS, Name);
19445- return Builder.CreateSelect(Cmp, LHS, RHS, Name);
19446- }
19447- return Builder.CreateBinaryIntrinsic(Intrinsic::smax, LHS, RHS);
1944819435 case RecurKind::SMin:
19449- if (UseSelect) {
19450- Value *Cmp = Builder.CreateICmpSLT(LHS, RHS, Name);
19451- return Builder.CreateSelect(Cmp, LHS, RHS, Name);
19452- }
19453- return Builder.CreateBinaryIntrinsic(Intrinsic::smin, LHS, RHS);
1945419436 case RecurKind::UMax:
19455- if (UseSelect) {
19456- Value *Cmp = Builder.CreateICmpUGT(LHS, RHS, Name);
19457- return Builder.CreateSelect(Cmp, LHS, RHS, Name);
19458- }
19459- return Builder.CreateBinaryIntrinsic(Intrinsic::umax, LHS, RHS);
1946019437 case RecurKind::UMin:
1946119438 if (UseSelect) {
19462- Value *Cmp = Builder.CreateICmpULT(LHS, RHS, Name);
19439+ CmpInst::Predicate Pred = llvm::getMinMaxReductionPredicate(Kind);
19440+ Value *Cmp = Builder.CreateICmp(Pred, LHS, RHS, Name);
1946319441 return Builder.CreateSelect(Cmp, LHS, RHS, Name);
1946419442 }
19465- return Builder.CreateBinaryIntrinsic(Intrinsic::umin, LHS, RHS);
19443+ [[fallthrough]];
19444+ case RecurKind::FMax:
19445+ case RecurKind::FMin:
19446+ case RecurKind::FMaximum:
19447+ case RecurKind::FMinimum: {
19448+ Intrinsic::ID Id = llvm::getMinMaxReductionIntrinsicOp(Kind);
19449+ return Builder.CreateBinaryIntrinsic(Id, LHS, RHS);
19450+ }
1946619451 default:
1946719452 llvm_unreachable("Unknown reduction operation.");
1946819453 }
0 commit comments