sse.h 826 B

123456789101112131415161718192021222324252627282930313233343536
  1. // Copyright 2009-2021 Intel Corporation
  2. // SPDX-License-Identifier: Apache-2.0
  3. #pragma once
  4. #include "../sys/platform.h"
  5. #include "../sys/intrinsics.h"
  6. #include "../sys/alloc.h"
  7. #include "../math/constants.h"
  8. #include "varying.h"
  9. namespace embree
  10. {
  11. #if defined(__aarch64__) || defined(__SSE4_1__)
  12. __forceinline __m128 blendv_ps(__m128 f, __m128 t, __m128 mask) {
  13. return _mm_blendv_ps(f,t,mask);
  14. }
  15. #else
  16. __forceinline __m128 blendv_ps(__m128 f, __m128 t, __m128 mask) {
  17. return _mm_or_ps(_mm_and_ps(mask, t), _mm_andnot_ps(mask, f));
  18. }
  19. #endif
  20. extern const __m128 mm_lookupmask_ps[16];
  21. extern const __m128d mm_lookupmask_pd[4];
  22. }
  23. #if defined(__AVX512VL__)
  24. #include "vboolf4_avx512.h"
  25. #else
  26. #include "vboolf4_sse2.h"
  27. #endif
  28. #include "vint4_sse2.h"
  29. #include "vuint4_sse2.h"
  30. #include "vfloat4_sse2.h"