CpuGenerators.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #ifndef MANDEL_CPUGENERATORS_H
  2. #define MANDEL_CPUGENERATORS_H
  3. #include "Generators.h"
  4. namespace mnd
  5. {
  6. class CpuGeneratorFloat;
  7. class CpuGeneratorDouble;
  8. class CpuGenerator128;
  9. #if defined(__x86_64__) || defined(_M_X64) || defined(__i386) || defined(_M_IX86)
  10. class CpuGeneratorSse2Float;
  11. class CpuGeneratorSse2Double;
  12. class CpuGeneratorAvxFloat;
  13. class CpuGeneratorAvxDouble;
  14. class CpuGeneratorAvx512Float;
  15. class CpuGeneratorAvx512Double;
  16. #elif defined(__arm__) || defined(__aarch64__) || defined(_M_ARM)
  17. class CpuGeneratorNeonFloat;
  18. class CpuGeneratorNeonDouble;
  19. #endif
  20. }
  21. class mnd::CpuGeneratorFloat : public Generator
  22. {
  23. public:
  24. virtual void generate(const MandelInfo& info, float* data);
  25. };
  26. class mnd::CpuGeneratorDouble : public Generator
  27. {
  28. public:
  29. virtual void generate(const MandelInfo& info, float* data);
  30. };
  31. class mnd::CpuGenerator128 : public Generator
  32. {
  33. public:
  34. virtual void generate(const MandelInfo& info, float* data);
  35. };
  36. #if defined(__x86_64__) || defined(_M_X64) || defined(__i386) || defined(_M_IX86)
  37. class mnd::CpuGeneratorSse2Float : public Generator
  38. {
  39. public:
  40. virtual void generate(const MandelInfo& info, float* data);
  41. };
  42. class mnd::CpuGeneratorSse2Double : public Generator
  43. {
  44. public:
  45. virtual void generate(const MandelInfo& info, float* data);
  46. };
  47. class mnd::CpuGeneratorAvxFloat : public Generator
  48. {
  49. public:
  50. virtual void generate(const MandelInfo& info, float* data);
  51. };
  52. class mnd::CpuGeneratorAvxDouble : public Generator
  53. {
  54. public:
  55. virtual void generate(const MandelInfo& info, float* data);
  56. };
  57. class mnd::CpuGeneratorAvx512Float : public Generator
  58. {
  59. public:
  60. virtual void generate(const MandelInfo& info, float* data);
  61. };
  62. class mnd::CpuGeneratorAvx512Double : public Generator
  63. {
  64. public:
  65. virtual void generate(const MandelInfo& info, float* data);
  66. };
  67. #elif defined(__arm__) || defined(__aarch64__) || defined(_M_ARM)
  68. class mnd::CpuGeneratorNeonFloat : public Generator
  69. {
  70. public:
  71. virtual void generate(const MandelInfo& info, float* data);
  72. };
  73. class mnd::CpuGeneratorNeonDouble : public Generator
  74. {
  75. public:
  76. virtual void generate(const MandelInfo& info, float* data);
  77. };
  78. #endif
  79. #endif // MANDEL_CPUGENERATORS_H