File indexing completed on 2024-12-22 04:11:40

0001 /*
0002  *  SPDX-FileCopyrightText: 2012 Dmitry Kazakov <dimula73@gmail.com>
0003  *  SPDX-FileCopyrightText: 2022 L. E. Segovia <amy@amyspark.me>
0004  *
0005  * SPDX-License-Identifier: LGPL-2.1-or-later
0006  */
0007 
0008 #include "KoOptimizedCompositeOpFactoryPerArch.h"
0009 
0010 #if XSIMD_UNIVERSAL_BUILD_PASS
0011 #include "KoOptimizedCompositeOpAlphaDarken32.h"
0012 #include "KoOptimizedCompositeOpAlphaDarken128.h"
0013 #include "KoOptimizedCompositeOpOver32.h"
0014 #include "KoOptimizedCompositeOpOver128.h"
0015 #include "KoOptimizedCompositeOpCopy128.h"
0016 
0017 #include <KoCompositeOpRegistry.h>
0018 
0019 template<>
0020 template<>
0021 KoCompositeOp *
0022 KoOptimizedCompositeOpFactoryPerArch<KoOptimizedCompositeOpAlphaDarkenHard32>::
0023     create<xsimd::current_arch>(const KoColorSpace *param)
0024 {
0025     return new KoOptimizedCompositeOpAlphaDarkenHard32<xsimd::current_arch>(param);
0026 }
0027 
0028 template<>
0029 template<>
0030 KoCompositeOp *KoOptimizedCompositeOpFactoryPerArch<
0031     KoOptimizedCompositeOpAlphaDarkenCreamy32>::
0032     create<xsimd::current_arch>(const KoColorSpace *param)
0033 {
0034     return new KoOptimizedCompositeOpAlphaDarkenCreamy32<xsimd::current_arch>(param);
0035 }
0036 
0037 template<>
0038 template<>
0039 KoCompositeOp *
0040 KoOptimizedCompositeOpFactoryPerArch<KoOptimizedCompositeOpOver32>::create<
0041     xsimd::current_arch>(const KoColorSpace *param)
0042 {
0043     return new KoOptimizedCompositeOpOver32<xsimd::current_arch>(param);
0044 }
0045 
0046 template<>
0047 template<>
0048 KoCompositeOp *
0049 KoOptimizedCompositeOpFactoryPerArch<KoOptimizedCompositeOpAlphaDarkenHard128>::
0050     create<xsimd::current_arch>(const KoColorSpace *param)
0051 {
0052     return new KoOptimizedCompositeOpAlphaDarkenHard128<xsimd::current_arch>(param);
0053 }
0054 
0055 template<>
0056 template<>
0057 KoCompositeOp *KoOptimizedCompositeOpFactoryPerArch<
0058     KoOptimizedCompositeOpAlphaDarkenCreamy128>::
0059     create<xsimd::current_arch>(const KoColorSpace *param)
0060 {
0061     return new KoOptimizedCompositeOpAlphaDarkenCreamy128<xsimd::current_arch>(param);
0062 }
0063 
0064 template<>
0065 template<>
0066 KoCompositeOp *
0067 KoOptimizedCompositeOpFactoryPerArch<KoOptimizedCompositeOpOver128>::create<
0068     xsimd::current_arch>(const KoColorSpace *param)
0069 {
0070     return new KoOptimizedCompositeOpOver128<xsimd::current_arch>(param);
0071 }
0072 
0073 template<>
0074 template<>
0075 KoCompositeOp *
0076 KoOptimizedCompositeOpFactoryPerArch<KoOptimizedCompositeOpOverU64>::create<
0077     xsimd::current_arch>(const KoColorSpace *param)
0078 {
0079     return new KoOptimizedCompositeOpOverU64<xsimd::current_arch>(param);
0080 }
0081 
0082 template<>
0083 template<>
0084 KoCompositeOp *
0085 KoOptimizedCompositeOpFactoryPerArch<KoOptimizedCompositeOpCopy128>::create<
0086     xsimd::current_arch>(const KoColorSpace *param)
0087 {
0088     return new KoOptimizedCompositeOpCopy128<xsimd::current_arch>(param);
0089 }
0090 
0091 template<>
0092 template<>
0093 KoCompositeOp *
0094 KoOptimizedCompositeOpFactoryPerArch<KoOptimizedCompositeOpCopyU64>::create<
0095     xsimd::current_arch>(const KoColorSpace *param)
0096 {
0097     return new KoOptimizedCompositeOpCopyU64<xsimd::current_arch>(param);
0098 }
0099 
0100 template<>
0101 template<>
0102 KoCompositeOp *
0103 KoOptimizedCompositeOpFactoryPerArch<KoOptimizedCompositeOpCopy32>::create<
0104     xsimd::current_arch>(const KoColorSpace *param)
0105 {
0106     return new KoOptimizedCompositeOpCopy32<xsimd::current_arch>(param);
0107 }
0108 
0109 template<>
0110 template<>
0111 KoCompositeOp *
0112 KoOptimizedCompositeOpFactoryPerArch<KoOptimizedCompositeOpAlphaDarkenHardU64>::
0113     create<xsimd::current_arch>(const KoColorSpace *param)
0114 {
0115     return new KoOptimizedCompositeOpAlphaDarkenHardU64<xsimd::current_arch>(param);
0116 }
0117 
0118 template<>
0119 template<>
0120 KoCompositeOp *KoOptimizedCompositeOpFactoryPerArch<
0121     KoOptimizedCompositeOpAlphaDarkenCreamyU64>::
0122     create<xsimd::current_arch>(const KoColorSpace *param)
0123 {
0124     return new KoOptimizedCompositeOpAlphaDarkenCreamyU64<xsimd::current_arch>(param);
0125 }
0126 
0127 #endif // XSIMD_UNIVERSAL_BUILD_PASS