@@ -132,6 +132,11 @@ struct TypePairSupportDataForProdAccumulation
132132 td_ns::NotDefinedEntry>::is_defined;
133133};
134134
135+ template <typename T>
136+ using CumProdScanOpT = std::conditional_t <std::is_same_v<T, bool >,
137+ sycl::logical_and<T>,
138+ sycl::multiplies<T>>;
139+
135140template <typename fnT, typename srcTy, typename dstTy>
136141struct CumProd1DContigFactory
137142{
@@ -140,9 +145,7 @@ struct CumProd1DContigFactory
140145 if constexpr (TypePairSupportDataForProdAccumulation<srcTy,
141146 dstTy>::is_defined)
142147 {
143- using ScanOpT = std::conditional_t <std::is_same_v<dstTy, bool >,
144- sycl::logical_and<dstTy>,
145- sycl::multiplies<dstTy>>;
148+ using ScanOpT = CumProdScanOpT<dstTy>;
146149 constexpr bool include_initial = false ;
147150 if constexpr (std::is_same_v<srcTy, dstTy>) {
148151 using dpctl::tensor::kernels::accumulators::NoOpTransformer;
@@ -175,9 +178,7 @@ struct CumProd1DIncludeInitialContigFactory
175178 if constexpr (TypePairSupportDataForProdAccumulation<srcTy,
176179 dstTy>::is_defined)
177180 {
178- using ScanOpT = std::conditional_t <std::is_same_v<dstTy, bool >,
179- sycl::logical_and<dstTy>,
180- sycl::multiplies<dstTy>>;
181+ using ScanOpT = CumProdScanOpT<dstTy>;
181182 constexpr bool include_initial = true ;
182183 if constexpr (std::is_same_v<srcTy, dstTy>) {
183184 using dpctl::tensor::kernels::accumulators::NoOpTransformer;
@@ -210,9 +211,7 @@ struct CumProdStridedFactory
210211 if constexpr (TypePairSupportDataForProdAccumulation<srcTy,
211212 dstTy>::is_defined)
212213 {
213- using ScanOpT = std::conditional_t <std::is_same_v<dstTy, bool >,
214- sycl::logical_and<dstTy>,
215- sycl::multiplies<dstTy>>;
214+ using ScanOpT = CumProdScanOpT<dstTy>;
216215 constexpr bool include_initial = false ;
217216 if constexpr (std::is_same_v<srcTy, dstTy>) {
218217 using dpctl::tensor::kernels::accumulators::NoOpTransformer;
@@ -245,9 +244,7 @@ struct CumProdIncludeInitialStridedFactory
245244 if constexpr (TypePairSupportDataForProdAccumulation<srcTy,
246245 dstTy>::is_defined)
247246 {
248- using ScanOpT = std::conditional_t <std::is_same_v<dstTy, bool >,
249- sycl::logical_and<dstTy>,
250- sycl::multiplies<dstTy>>;
247+ using ScanOpT = CumProdScanOpT<dstTy>;
251248 constexpr bool include_initial = true ;
252249 if constexpr (std::is_same_v<srcTy, dstTy>) {
253250 using dpctl::tensor::kernels::accumulators::NoOpTransformer;
0 commit comments