dimforge / simba

Set of mathematical traits to facilitate the use of SIMD-based AoSoA (Array of Struct of Array) storage pattern.
Apache License 2.0
295 stars 29 forks source link

Add SIMD floats based on auto-vectorization. #13

Closed sebcrozet closed 4 years ago

sebcrozet commented 4 years ago

This adds types implementing SIMD-related traits, but without relying on any SIMD intrinsic. This leaves auto-vectorization do all the job.

This is different from what, e.g., wide or packed_simd do because we have:

  1. The guarantee that no explicit SIMD is performed, even on platforms that would support them.
  2. The guarantee that we use the libm carte for all float operations when libm_force is enabled, even on platforms with std enabled (this can be needed for cross-platform determinism).