Skip to content

Commit ab4c222

Browse files
committed
Split patch
1 parent 64e4f22 commit ab4c222

File tree

1 file changed

+12
-26
lines changed

1 file changed

+12
-26
lines changed

llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp

Lines changed: 12 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -19401,38 +19401,24 @@ class HorizontalReduction {
1940119401
case RecurKind::FMul:
1940219402
return Builder.CreateBinOp((Instruction::BinaryOps)RdxOpcode, LHS, RHS,
1940319403
Name);
19404-
case RecurKind::FMax:
19405-
return Builder.CreateBinaryIntrinsic(Intrinsic::maxnum, LHS, RHS);
19406-
case RecurKind::FMin:
19407-
return Builder.CreateBinaryIntrinsic(Intrinsic::minnum, LHS, RHS);
19408-
case RecurKind::FMaximum:
19409-
return Builder.CreateBinaryIntrinsic(Intrinsic::maximum, LHS, RHS);
19410-
case RecurKind::FMinimum:
19411-
return Builder.CreateBinaryIntrinsic(Intrinsic::minimum, LHS, RHS);
1941219404
case RecurKind::SMax:
19413-
if (UseSelect) {
19414-
Value *Cmp = Builder.CreateICmpSGT(LHS, RHS, Name);
19415-
return Builder.CreateSelect(Cmp, LHS, RHS, Name);
19416-
}
19417-
return Builder.CreateBinaryIntrinsic(Intrinsic::smax, LHS, RHS);
1941819405
case RecurKind::SMin:
19419-
if (UseSelect) {
19420-
Value *Cmp = Builder.CreateICmpSLT(LHS, RHS, Name);
19421-
return Builder.CreateSelect(Cmp, LHS, RHS, Name);
19422-
}
19423-
return Builder.CreateBinaryIntrinsic(Intrinsic::smin, LHS, RHS);
1942419406
case RecurKind::UMax:
19407+
case RecurKind::UMin: {
1942519408
if (UseSelect) {
19426-
Value *Cmp = Builder.CreateICmpUGT(LHS, RHS, Name);
19427-
return Builder.CreateSelect(Cmp, LHS, RHS, Name);
19428-
}
19429-
return Builder.CreateBinaryIntrinsic(Intrinsic::umax, LHS, RHS);
19430-
case RecurKind::UMin:
19431-
if (UseSelect) {
19432-
Value *Cmp = Builder.CreateICmpULT(LHS, RHS, Name);
19409+
CmpInst::Predicate Pred = llvm::getMinMaxReductionPredicate(Kind);
19410+
Value *Cmp = Builder.CreateCmp(Pred, LHS, RHS, Name);
1943319411
return Builder.CreateSelect(Cmp, LHS, RHS, Name);
1943419412
}
19435-
return Builder.CreateBinaryIntrinsic(Intrinsic::umin, LHS, RHS);
19413+
}
19414+
[[fallthrough]];
19415+
case RecurKind::FMax:
19416+
case RecurKind::FMin:
19417+
case RecurKind::FMaximum:
19418+
case RecurKind::FMinimum: {
19419+
Intrinsic::ID Id = llvm::getMinMaxReductionIntrinsicOp(Kind);
19420+
return Builder.CreateBinaryIntrinsic(Id, LHS, RHS);
19421+
}
1943619422
default:
1943719423
llvm_unreachable("Unknown reduction operation.");
1943819424
}

0 commit comments

Comments
 (0)