Skip to content

Commit 1559f12

Browse files
committed
Split patch
1 parent 4adeb6c commit 1559f12

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
@@ -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

Comments
 (0)