Blob Blame History Raw
diff -rupN --no-dereference netgen-6.2.2007/libsrc/core/taskmanager.cpp netgen-6.2.2007-new/libsrc/core/taskmanager.cpp
--- netgen-6.2.2007/libsrc/core/taskmanager.cpp	2020-07-23 20:51:48.000000000 +0200
+++ netgen-6.2.2007-new/libsrc/core/taskmanager.cpp	2020-07-23 23:12:18.056198572 +0200
@@ -212,14 +212,22 @@ namespace ngcore
       ;
   }
 
+#if defined(__i386__) || defined(__x86_64__)
   static size_t calibrate_init_tsc = __rdtsc();
+#else
+  static size_t calibrate_init_tsc = clock();
+#endif
   typedef std::chrono::system_clock TClock;
   static TClock::time_point calibrate_init_clock = TClock::now();
   
   void TaskManager :: StopWorkers()
   {
     done = true;
+#if defined(__i386__) || defined(__x86_64__)
     double delta_tsc = __rdtsc()-calibrate_init_tsc;
+#else
+    double delta_tsc = clock()-calibrate_init_tsc;
+#endif
     double delta_sec = std::chrono::duration<double>(TClock::now()-calibrate_init_clock).count();
     double frequ = (delta_sec != 0) ? delta_tsc/delta_sec : 2.7e9;
     
@@ -411,8 +419,10 @@ namespace ngcore
     for (int j = 0; j < num_nodes; j++)
       if (workers_on_node[j])
         {
+#if defined(__i386__) || defined(__x86_64__)
           while (complete[j] != jobnr)
-            _mm_pause();
+             _mm_pause();;
+#endif
         }
 
     func = nullptr;
diff -rupN --no-dereference netgen-6.2.2007/libsrc/core/utils.cpp netgen-6.2.2007-new/libsrc/core/utils.cpp
--- netgen-6.2.2007/libsrc/core/utils.cpp	2020-07-23 20:51:48.000000000 +0200
+++ netgen-6.2.2007-new/libsrc/core/utils.cpp	2020-07-23 23:12:18.056198572 +0200
@@ -35,6 +35,7 @@ namespace ngcore
 
   double seconds_per_tick = [] () noexcept
   {
+#if defined(__i386__) || defined(__x86_64__)
       auto tick_start = GetTimeCounter();
       double tstart = WallTime();
       double tend = WallTime()+0.001;
@@ -46,6 +47,9 @@ namespace ngcore
       tend = WallTime();
 
       return (tend-tstart)/static_cast<double>(tick_end-tick_start);
+#else
+      return 1. / CLOCKS_PER_SEC;
+#endif
   }();
 
   const std::chrono::time_point<TClock> wall_time_start = TClock::now();
diff -rupN --no-dereference netgen-6.2.2007/libsrc/core/utils.hpp netgen-6.2.2007-new/libsrc/core/utils.hpp
--- netgen-6.2.2007/libsrc/core/utils.hpp	2020-07-23 20:51:48.000000000 +0200
+++ netgen-6.2.2007-new/libsrc/core/utils.hpp	2020-07-23 23:12:18.056198572 +0200
@@ -11,7 +11,11 @@
 #ifdef WIN32
 #include <intrin.h>   // for __rdtsc()  CPU time step counter
 #else
-#include <x86intrin.h>   // for __rdtsc()  CPU time step counter
+#if defined(__i386__) || defined(__x86_64__)
+# include <x86intrin.h>   // for __rdtsc()  CPU time step counter
+#else
+# include <ctime>
+#endif
 #endif // WIN32
 
 #include "ngcore_api.hpp"       // for NGCORE_API
@@ -52,7 +56,11 @@ namespace ngcore
 
   inline TTimePoint GetTimeCounter() noexcept
   {
+#if defined(__i386__) || defined(__x86_64__)
       return TTimePoint(__rdtsc());
+#else
+      return TTimePoint(clock());
+#endif
   }
 
   template <class T>
@@ -161,7 +169,9 @@ namespace ngcore
       while (!m.compare_exchange_weak(should, true))
         {
           should = false;
+#if defined(__i386__) || defined(__x86_64__)
           _mm_pause();
+#endif
         }
     }
     void unlock()
diff -rupN --no-dereference netgen-6.2.2007/libsrc/general/ngsimd.hpp netgen-6.2.2007-new/libsrc/general/ngsimd.hpp
--- netgen-6.2.2007/libsrc/general/ngsimd.hpp	2020-07-23 20:51:48.000000000 +0200
+++ netgen-6.2.2007-new/libsrc/general/ngsimd.hpp	2020-07-23 23:12:18.057198572 +0200
@@ -6,7 +6,9 @@
 /* Date:   25. Mar. 16                                                    */
 /**************************************************************************/
 
-#include <immintrin.h>
+#if defined(__i386__) || defined(__x86_64__)
+# include <immintrin.h>
+#endif
 #include <tuple>
 #include <ostream>
 #include <stdexcept>