Skip to content

Commit 9766957

Browse files
committed
[LoopUtils] reduce code for creatng reduction; NFC
We can return from each case instead creating a temporary variable just to have a common return.
1 parent 58b6c5d commit 9766957

File tree

1 file changed

+16
-40
lines changed

1 file changed

+16
-40
lines changed

llvm/lib/Transforms/Utils/LoopUtils.cpp

Lines changed: 16 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -983,77 +983,53 @@ Value *llvm::createSimpleTargetReduction(IRBuilderBase &Builder,
983983
RecurKind RdxKind,
984984
ArrayRef<Value *> RedOps) {
985985
TargetTransformInfo::ReductionFlags RdxFlags;
986-
RdxFlags.IsMaxOp = RdxKind == RecurKind::SMax ||
987-
RdxKind == RecurKind::UMax ||
986+
RdxFlags.IsMaxOp = RdxKind == RecurKind::SMax || RdxKind == RecurKind::UMax ||
988987
RdxKind == RecurKind::FMax;
989988
RdxFlags.IsSigned = RdxKind == RecurKind::SMax || RdxKind == RecurKind::SMin;
990989
if (!ForceReductionIntrinsic &&
991990
!TTI->useReductionIntrinsic(Opcode, Src->getType(), RdxFlags))
992991
return getShuffleReduction(Builder, Src, Opcode, RdxKind, RedOps);
993992

994-
auto *SrcVTy = cast<VectorType>(Src->getType());
995-
996-
std::function<Value *()> BuildFunc;
993+
auto *SrcVecEltTy = cast<VectorType>(Src->getType())->getElementType();
997994
switch (Opcode) {
998995
case Instruction::Add:
999-
BuildFunc = [&]() { return Builder.CreateAddReduce(Src); };
1000-
break;
996+
return Builder.CreateAddReduce(Src);
1001997
case Instruction::Mul:
1002-
BuildFunc = [&]() { return Builder.CreateMulReduce(Src); };
1003-
break;
998+
return Builder.CreateMulReduce(Src);
1004999
case Instruction::And:
1005-
BuildFunc = [&]() { return Builder.CreateAndReduce(Src); };
1006-
break;
1000+
return Builder.CreateAndReduce(Src);
10071001
case Instruction::Or:
1008-
BuildFunc = [&]() { return Builder.CreateOrReduce(Src); };
1009-
break;
1002+
return Builder.CreateOrReduce(Src);
10101003
case Instruction::Xor:
1011-
BuildFunc = [&]() { return Builder.CreateXorReduce(Src); };
1012-
break;
1004+
return Builder.CreateXorReduce(Src);
10131005
case Instruction::FAdd:
1014-
BuildFunc = [&]() {
1015-
auto Rdx = Builder.CreateFAddReduce(
1016-
ConstantFP::getNegativeZero(SrcVTy->getElementType()), Src);
1017-
return Rdx;
1018-
};
1019-
break;
1006+
return Builder.CreateFAddReduce(ConstantFP::getNegativeZero(SrcVecEltTy),
1007+
Src);
10201008
case Instruction::FMul:
1021-
BuildFunc = [&]() {
1022-
Type *Ty = SrcVTy->getElementType();
1023-
auto Rdx = Builder.CreateFMulReduce(ConstantFP::get(Ty, 1.0), Src);
1024-
return Rdx;
1025-
};
1026-
break;
1009+
return Builder.CreateFMulReduce(ConstantFP::get(SrcVecEltTy, 1.0), Src);
10271010
case Instruction::ICmp:
10281011
switch (RdxKind) {
10291012
case RecurKind::SMax:
1030-
BuildFunc = [&]() { return Builder.CreateIntMaxReduce(Src, true); };
1031-
break;
1013+
return Builder.CreateIntMaxReduce(Src, true);
10321014
case RecurKind::SMin:
1033-
BuildFunc = [&]() { return Builder.CreateIntMinReduce(Src, true); };
1034-
break;
1015+
return Builder.CreateIntMinReduce(Src, true);
10351016
case RecurKind::UMax:
1036-
BuildFunc = [&]() { return Builder.CreateIntMaxReduce(Src, false); };
1037-
break;
1017+
return Builder.CreateIntMaxReduce(Src, false);
10381018
case RecurKind::UMin:
1039-
BuildFunc = [&]() { return Builder.CreateIntMinReduce(Src, false); };
1040-
break;
1019+
return Builder.CreateIntMinReduce(Src, false);
10411020
default:
10421021
llvm_unreachable("Unexpected min/max reduction type");
10431022
}
1044-
break;
10451023
case Instruction::FCmp:
10461024
assert((RdxKind == RecurKind::FMax || RdxKind == RecurKind::FMin) &&
10471025
"Unexpected min/max reduction type");
10481026
if (RdxKind == RecurKind::FMax)
1049-
BuildFunc = [&]() { return Builder.CreateFPMaxReduce(Src); };
1027+
return Builder.CreateFPMaxReduce(Src);
10501028
else
1051-
BuildFunc = [&]() { return Builder.CreateFPMinReduce(Src); };
1052-
break;
1029+
return Builder.CreateFPMinReduce(Src);
10531030
default:
10541031
llvm_unreachable("Unhandled opcode");
10551032
}
1056-
return BuildFunc();
10571033
}
10581034

10591035
Value *llvm::createTargetReduction(IRBuilderBase &B,

0 commit comments

Comments
 (0)