@@ -884,6 +884,9 @@ class TargetTransformInfo {
884884
885885 bool isTargetIntrinsicTriviallyScalarizable (Intrinsic::ID ID) const ;
886886
887+ bool isTargetIntrinsicWithScalarOpAtArg (Intrinsic::ID ID,
888+ unsigned ScalarOpdIdx) const ;
889+
887890 // / Estimate the overhead of scalarizing an instruction. Insert and Extract
888891 // / are set if the demanded result elements need to be inserted and/or
889892 // / extracted from vectors.
@@ -1935,6 +1938,8 @@ class TargetTransformInfo::Concept {
19351938 virtual bool shouldBuildRelLookupTables () = 0;
19361939 virtual bool useColdCCForColdCall (Function &F) = 0;
19371940 virtual bool isTargetIntrinsicTriviallyScalarizable (Intrinsic::ID ID) = 0;
1941+ virtual bool isTargetIntrinsicWithScalarOpAtArg (Intrinsic::ID ID,
1942+ unsigned ScalarOpdIdx) = 0;
19381943 virtual InstructionCost getScalarizationOverhead (VectorType *Ty,
19391944 const APInt &DemandedElts,
19401945 bool Insert, bool Extract,
@@ -2477,6 +2482,12 @@ class TargetTransformInfo::Model final : public TargetTransformInfo::Concept {
24772482 bool isTargetIntrinsicTriviallyScalarizable (Intrinsic::ID ID) override {
24782483 return Impl.isTargetIntrinsicTriviallyScalarizable (ID);
24792484 }
2485+
2486+ bool isTargetIntrinsicWithScalarOpAtArg (Intrinsic::ID ID,
2487+ unsigned ScalarOpdIdx) override {
2488+ return Impl.isTargetIntrinsicWithScalarOpAtArg (ID, ScalarOpdIdx);
2489+ }
2490+
24802491 InstructionCost getScalarizationOverhead (VectorType *Ty,
24812492 const APInt &DemandedElts,
24822493 bool Insert, bool Extract,
0 commit comments