@@ -782,29 +782,18 @@ bool VectorCombine::scalarizeVPIntrinsic(Instruction &I) {
782
782
std::optional<unsigned > FunctionalOpcode =
783
783
VPI.getFunctionalOpcode ();
784
784
bool ScalarIsIntr = false ;
785
- Intrinsic::ID ScalarIntrID;
785
+ std::optional< Intrinsic::ID> ScalarIntrID;
786
786
if (!FunctionalOpcode) {
787
- // Explicitly handle supported instructions (i.e. those that return
788
- // isVPBinOp above, that do not have functional nor constrained opcodes due
789
- // their intrinsic definitions.
790
- DenseMap<Intrinsic::ID, Intrinsic::ID> VPIntrToIntr (
791
- {{Intrinsic::vp_smax, Intrinsic::smax},
792
- {Intrinsic::vp_smin, Intrinsic::smin},
793
- {Intrinsic::vp_umax, Intrinsic::umax},
794
- {Intrinsic::vp_umin, Intrinsic::umin},
795
- {Intrinsic::vp_copysign, Intrinsic::copysign},
796
- {Intrinsic::vp_minnum, Intrinsic::minnum},
797
- {Intrinsic::vp_maxnum, Intrinsic::maxnum}});
787
+ ScalarIntrID = VPI.getFunctionalIntrinsicID ();
788
+ if (!ScalarIntrID)
789
+ return false ;
798
790
ScalarIsIntr = true ;
799
- assert (VPIntrToIntr.contains (IntrID) &&
800
- " Unable to determine scalar opcode" );
801
- ScalarIntrID = VPIntrToIntr[IntrID];
802
791
}
803
792
804
793
// Calculate cost of scalarizing
805
794
InstructionCost ScalarOpCost = 0 ;
806
795
if (ScalarIsIntr) {
807
- IntrinsicCostAttributes Attrs (ScalarIntrID, VecTy->getScalarType (), Args);
796
+ IntrinsicCostAttributes Attrs (* ScalarIntrID, VecTy->getScalarType (), Args);
808
797
ScalarOpCost = TTI.getIntrinsicInstrCost (Attrs, CostKind);
809
798
} else {
810
799
ScalarOpCost =
@@ -840,7 +829,7 @@ bool VectorCombine::scalarizeVPIntrinsic(Instruction &I) {
840
829
Value *ScalarOp1 = getSplatValue (Op1);
841
830
Value *ScalarVal =
842
831
ScalarIsIntr
843
- ? Builder.CreateIntrinsic (VecTy->getScalarType (), ScalarIntrID,
832
+ ? Builder.CreateIntrinsic (VecTy->getScalarType (), * ScalarIntrID,
844
833
{ScalarOp0, ScalarOp1})
845
834
: Builder.CreateBinOp ((Instruction::BinaryOps)(*FunctionalOpcode),
846
835
ScalarOp0, ScalarOp1);
0 commit comments