@@ -19380,27 +19380,32 @@ class HorizontalReduction {
1938019380 /// Creates reduction operation with the current opcode.
1938119381 static Value *createOp(IRBuilderBase &Builder, RecurKind Kind, Value *LHS,
1938219382 Value *RHS, const Twine &Name, bool UseSelect) {
19383- unsigned RdxOpcode = RecurrenceDescriptor::getOpcode(Kind);
1938419383 switch (Kind) {
19385- case RecurKind::Or:
19384+ case RecurKind::Or: {
1938619385 if (UseSelect &&
1938719386 LHS->getType() == CmpInst::makeCmpResultType(LHS->getType()))
1938819387 return Builder.CreateSelect(LHS, Builder.getTrue(), RHS, Name);
19388+ unsigned RdxOpcode = RecurrenceDescriptor::getOpcode(Kind);
1938919389 return Builder.CreateBinOp((Instruction::BinaryOps)RdxOpcode, LHS, RHS,
1939019390 Name);
19391- case RecurKind::And:
19391+ }
19392+ case RecurKind::And: {
1939219393 if (UseSelect &&
1939319394 LHS->getType() == CmpInst::makeCmpResultType(LHS->getType()))
1939419395 return Builder.CreateSelect(LHS, RHS, Builder.getFalse(), Name);
19396+ unsigned RdxOpcode = RecurrenceDescriptor::getOpcode(Kind);
1939519397 return Builder.CreateBinOp((Instruction::BinaryOps)RdxOpcode, LHS, RHS,
1939619398 Name);
19399+ }
1939719400 case RecurKind::Add:
1939819401 case RecurKind::Mul:
1939919402 case RecurKind::Xor:
1940019403 case RecurKind::FAdd:
19401- case RecurKind::FMul:
19404+ case RecurKind::FMul: {
19405+ unsigned RdxOpcode = RecurrenceDescriptor::getOpcode(Kind);
1940219406 return Builder.CreateBinOp((Instruction::BinaryOps)RdxOpcode, LHS, RHS,
1940319407 Name);
19408+ }
1940419409 case RecurKind::FMax:
1940519410 return Builder.CreateBinaryIntrinsic(Intrinsic::maxnum, LHS, RHS);
1940619411 case RecurKind::FMin:
0 commit comments