On 07/11/2022 06:58, Michael Paquier wrote:
  #if defined(_WIN64)
  static __forceinline void
  spin_delay(void)
  {
+#ifdef _M_ARM64
+       /*
+        * arm64 way of hinting processor for spin loops optimisations
+        * ref: 
https://community.arm.com/support-forums/f/infrastructure-solutions-forum/48654/ssetoneon-faq
+       */
+       __isb(_ARM64_BARRIER_SY);
+#else
        _mm_pause();
+#endif
  }
  #else
  static __forceinline void

I think we should just apply this, there seems very little risk of making
anything worse, given the gating to _WIN64 && _M_ARM64.

Seems so.  Hmm, where does _ARM64_BARRIER_SY come from?  Perhaps it
would be better to have a comment referring to it from a different
place than the forums of arm, like some actual docs?


_ARM64_BARRIER_SY is defined in Microsoft Arm64 intrinsic documentation - https://learn.microsoft.com/en-us/cpp/intrinsics/arm64-intrinsics?view=msvc-170#BarrierRestrictions

I couldn't find something more official for the sse2neon library part.

--
Niyas


Reply via email to