simd_sse.c 509 B

123456789101112131415161718192021222324252627282930
  1. #include<simdconfig.h>
  2. #include<simdfuncs.h>
  3. #ifdef _MSC_VER
  4. #include<intrin.h>
  5. int sse_available() {
  6. return 1;
  7. }
  8. #else
  9. #include<xmmintrin.h>
  10. #include<cpuid.h>
  11. #include<stdint.h>
  12. #if defined(__APPLE__)
  13. int sse_available() { return 1; }
  14. #else
  15. int sse_available() {
  16. return __builtin_cpu_supports("sse");
  17. }
  18. #endif
  19. #endif
  20. void increment_sse(float arr[4]) {
  21. __m128 val = _mm_load_ps(arr);
  22. __m128 one = _mm_set_ps1(1.0);
  23. __m128 result = _mm_add_ps(val, one);
  24. _mm_storeu_ps(arr, result);
  25. }