@@ -19393,27 +19393,32 @@ class HorizontalReduction {
19393
19393
/// Creates reduction operation with the current opcode.
19394
19394
static Value *createOp(IRBuilderBase &Builder, RecurKind Kind, Value *LHS,
19395
19395
Value *RHS, const Twine &Name, bool UseSelect) {
19396
- unsigned RdxOpcode = RecurrenceDescriptor::getOpcode(Kind);
19397
19396
switch (Kind) {
19398
- case RecurKind::Or:
19397
+ case RecurKind::Or: {
19399
19398
if (UseSelect &&
19400
19399
LHS->getType() == CmpInst::makeCmpResultType(LHS->getType()))
19401
19400
return Builder.CreateSelect(LHS, Builder.getTrue(), RHS, Name);
19401
+ unsigned RdxOpcode = RecurrenceDescriptor::getOpcode(Kind);
19402
19402
return Builder.CreateBinOp((Instruction::BinaryOps)RdxOpcode, LHS, RHS,
19403
19403
Name);
19404
- case RecurKind::And:
19404
+ }
19405
+ case RecurKind::And: {
19405
19406
if (UseSelect &&
19406
19407
LHS->getType() == CmpInst::makeCmpResultType(LHS->getType()))
19407
19408
return Builder.CreateSelect(LHS, RHS, Builder.getFalse(), Name);
19409
+ unsigned RdxOpcode = RecurrenceDescriptor::getOpcode(Kind);
19408
19410
return Builder.CreateBinOp((Instruction::BinaryOps)RdxOpcode, LHS, RHS,
19409
19411
Name);
19412
+ }
19410
19413
case RecurKind::Add:
19411
19414
case RecurKind::Mul:
19412
19415
case RecurKind::Xor:
19413
19416
case RecurKind::FAdd:
19414
- case RecurKind::FMul:
19417
+ case RecurKind::FMul: {
19418
+ unsigned RdxOpcode = RecurrenceDescriptor::getOpcode(Kind);
19415
19419
return Builder.CreateBinOp((Instruction::BinaryOps)RdxOpcode, LHS, RHS,
19416
19420
Name);
19421
+ }
19417
19422
case RecurKind::FMax:
19418
19423
return Builder.CreateBinaryIntrinsic(Intrinsic::maxnum, LHS, RHS);
19419
19424
case RecurKind::FMin:
0 commit comments