CpuGenerators.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. #endif
  17. }
  18. class mnd::CpuGeneratorFloat : public Generator
  19. {
  20. public:
  21. virtual void generate(const MandelInfo& info, float* data);
  22. };
  23. class mnd::CpuGeneratorDouble : public Generator
  24. {
  25. public:
  26. virtual void generate(const MandelInfo& info, float* data);
  27. };
  28. class mnd::CpuGenerator128 : public Generator
  29. {
  30. public:
  31. virtual void generate(const MandelInfo& info, float* data);
  32. };
  33. #if defined(__x86_64__) || defined(_M_X64) || defined(__i386) || defined(_M_IX86)
  34. class mnd::CpuGeneratorSse2Float : public Generator
  35. {
  36. public:
  37. virtual void generate(const MandelInfo& info, float* data);
  38. };
  39. class mnd::CpuGeneratorSse2Double : public Generator
  40. {
  41. public:
  42. virtual void generate(const MandelInfo& info, float* data);
  43. };
  44. class mnd::CpuGeneratorAvxFloat : public Generator
  45. {
  46. public:
  47. virtual void generate(const MandelInfo& info, float* data);
  48. };
  49. class mnd::CpuGeneratorAvxDouble : public Generator
  50. {
  51. public:
  52. virtual void generate(const MandelInfo& info, float* data);
  53. };
  54. class mnd::CpuGeneratorAvx512Float : public Generator
  55. {
  56. public:
  57. virtual void generate(const MandelInfo& info, float* data);
  58. };
  59. class mnd::CpuGeneratorAvx512Double : public Generator
  60. {
  61. public:
  62. virtual void generate(const MandelInfo& info, float* data);
  63. };
  64. #endif
  65. #endif // MANDEL_CPUGENERATORS_H