#ifndef MANDEL_CPUGENERATORS_H #define MANDEL_CPUGENERATORS_H #include "Generators.h" namespace mnd { enum CpuExtension { NONE, X86_SSE2, X86_AVX, X86_AVX_FMA, X86_AVX_512, ARM_NEON, }; template class CpuGenerator; } template class mnd::CpuGenerator : public MandelGenerator { public: inline CpuGenerator(void) : MandelGenerator{ mnd::getPrecision() } { } virtual void generate(const MandelInfo& info, float* data); }; template class mnd::CpuGenerator : public MandelGenerator { public: inline CpuGenerator(void) : MandelGenerator{ mnd::getPrecision() } { } virtual void generate(const MandelInfo& info, float* data); }; #if defined(__x86_64__) || defined(_M_X64) || defined(__i386) || defined(_M_IX86) template class mnd::CpuGenerator : public MandelGenerator { public: inline CpuGenerator(void) : MandelGenerator{ mnd::getPrecision() } { } virtual void generate(const MandelInfo& info, float* data); }; template class mnd::CpuGenerator : public MandelGenerator { public: inline CpuGenerator(void) : MandelGenerator{ mnd::getPrecision() } { } virtual void generate(const MandelInfo& info, float* data); }; template class mnd::CpuGenerator : public MandelGenerator { public: inline CpuGenerator(void) : MandelGenerator{ mnd::getPrecision() } { } virtual void generate(const MandelInfo& info, float* data); }; template class mnd::CpuGenerator : public MandelGenerator { public: inline CpuGenerator(void) : MandelGenerator{ mnd::getPrecision() } { } virtual void generate(const MandelInfo& info, float* data); }; template class mnd::CpuGenerator : public MandelGenerator { public: inline CpuGenerator(void) : MandelGenerator{ mnd::getPrecision() } { } virtual void generate(const MandelInfo& info, float* data); }; #else //if defined(__arm__) || defined(__aarch64__) || defined(_M_ARM) template class mnd::CpuGenerator : public Generator { public: CpuGenerator(void); inline CpuGenerator(void) : Generator{ mnd::getPrecision() } { } virtual void generate(const MandelInfo& info, float* data); }; template class mnd::CpuGenerator : public Generator { public: inline CpuGenerator(void) : Generator{ mnd::getPrecision() } { } virtual void generate(const MandelInfo& info, float* data); }; #endif template class mnd::CpuGenerator : public MandelGenerator { public: inline CpuGenerator(void) : MandelGenerator{ mnd::getPrecision() } { } virtual void generate(const MandelInfo& info, float* data); }; template class mnd::CpuGenerator : public MandelGenerator { public: inline CpuGenerator(void) : MandelGenerator{ mnd::getPrecision() } { } virtual void generate(const MandelInfo& info, float* data); }; template class mnd::CpuGenerator : public MandelGenerator { public: inline CpuGenerator(void) : MandelGenerator{ mnd::getPrecision() } { } virtual void generate(const MandelInfo& info, float* data); }; template class mnd::CpuGenerator : public MandelGenerator { public: inline CpuGenerator(void) : MandelGenerator{ mnd::getPrecision() } { } virtual void generate(const MandelInfo& info, float* data); }; template class mnd::CpuGenerator : public MandelGenerator { public: inline CpuGenerator(void) : MandelGenerator{ mnd::getPrecision() } { } virtual void generate(const MandelInfo& info, float* data); }; #endif // MANDEL_CPUGENERATORS_H