@@ -19419,38 +19419,24 @@ class HorizontalReduction {
1941919419 return Builder.CreateBinOp((Instruction::BinaryOps)RdxOpcode, LHS, RHS,
1942019420 Name);
1942119421 }
19422- case RecurKind::FMax:
19423- return Builder.CreateBinaryIntrinsic(Intrinsic::maxnum, LHS, RHS);
19424- case RecurKind::FMin:
19425- return Builder.CreateBinaryIntrinsic(Intrinsic::minnum, LHS, RHS);
19426- case RecurKind::FMaximum:
19427- return Builder.CreateBinaryIntrinsic(Intrinsic::maximum, LHS, RHS);
19428- case RecurKind::FMinimum:
19429- return Builder.CreateBinaryIntrinsic(Intrinsic::minimum, LHS, RHS);
1943019422 case RecurKind::SMax:
19431- if (UseSelect) {
19432- Value *Cmp = Builder.CreateICmpSGT(LHS, RHS, Name);
19433- return Builder.CreateSelect(Cmp, LHS, RHS, Name);
19434- }
19435- return Builder.CreateBinaryIntrinsic(Intrinsic::smax, LHS, RHS);
1943619423 case RecurKind::SMin:
19437- if (UseSelect) {
19438- Value *Cmp = Builder.CreateICmpSLT(LHS, RHS, Name);
19439- return Builder.CreateSelect(Cmp, LHS, RHS, Name);
19440- }
19441- return Builder.CreateBinaryIntrinsic(Intrinsic::smin, LHS, RHS);
1944219424 case RecurKind::UMax:
19425+ case RecurKind::UMin: {
1944319426 if (UseSelect) {
19444- Value *Cmp = Builder.CreateICmpUGT(LHS, RHS, Name);
19445- return Builder.CreateSelect(Cmp, LHS, RHS, Name);
19446- }
19447- return Builder.CreateBinaryIntrinsic(Intrinsic::umax, LHS, RHS);
19448- case RecurKind::UMin:
19449- if (UseSelect) {
19450- Value *Cmp = Builder.CreateICmpULT(LHS, RHS, Name);
19427+ CmpInst::Predicate Pred = llvm::getMinMaxReductionPredicate(Kind);
19428+ Value *Cmp = Builder.CreateCmp(Pred, LHS, RHS, Name);
1945119429 return Builder.CreateSelect(Cmp, LHS, RHS, Name);
1945219430 }
19453- return Builder.CreateBinaryIntrinsic(Intrinsic::umin, LHS, RHS);
19431+ }
19432+ [[fallthrough]];
19433+ case RecurKind::FMax:
19434+ case RecurKind::FMin:
19435+ case RecurKind::FMaximum:
19436+ case RecurKind::FMinimum: {
19437+ Intrinsic::ID Id = llvm::getMinMaxReductionIntrinsicOp(Kind);
19438+ return Builder.CreateBinaryIntrinsic(Id, LHS, RHS);
19439+ }
1945419440 default:
1945519441 llvm_unreachable("Unknown reduction operation.");
1945619442 }
0 commit comments