constants.cpp 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // Copyright 2009-2020 Intel Corporation
  2. // SPDX-License-Identifier: Apache-2.0
  3. #if defined(__aarch64__)
  4. #include <arm_neon.h>
  5. #endif
  6. #include "constants.h"
  7. namespace embree
  8. {
  9. TrueTy True;
  10. FalseTy False;
  11. ZeroTy zero;
  12. OneTy one;
  13. NegInfTy neg_inf;
  14. PosInfTy inf;
  15. PosInfTy pos_inf;
  16. NaNTy nan;
  17. UlpTy ulp;
  18. PiTy pi;
  19. OneOverPiTy one_over_pi;
  20. TwoPiTy two_pi;
  21. OneOverTwoPiTy one_over_two_pi;
  22. FourPiTy four_pi;
  23. OneOverFourPiTy one_over_four_pi;
  24. StepTy step;
  25. ReverseStepTy reverse_step;
  26. EmptyTy empty;
  27. UndefinedTy undefined;
  28. #if defined(__aarch64__)
  29. const uint32x4_t movemask_mask = { 1, 2, 4, 8 };
  30. const uint32x4_t vzero = { 0, 0, 0, 0 };
  31. const uint32x4_t v0x80000000 = { 0x80000000, 0x80000000, 0x80000000, 0x80000000 };
  32. const uint32x4_t v0x7fffffff = { 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff };
  33. const uint32x4_t v000F = { 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF };
  34. const uint32x4_t v00F0 = { 0x00000000, 0x00000000, 0xFFFFFFFF, 0x00000000 };
  35. const uint32x4_t v00FF = { 0x00000000, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF };
  36. const uint32x4_t v0F00 = { 0x00000000, 0xFFFFFFFF, 0x00000000, 0x00000000 };
  37. const uint32x4_t v0F0F = { 0x00000000, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF };
  38. const uint32x4_t v0FF0 = { 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000 };
  39. const uint32x4_t v0FFF = { 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF };
  40. const uint32x4_t vF000 = { 0xFFFFFFFF, 0x00000000, 0x00000000, 0x00000000 };
  41. const uint32x4_t vF00F = { 0xFFFFFFFF, 0x00000000, 0x00000000, 0xFFFFFFFF };
  42. const uint32x4_t vF0F0 = { 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0x00000000 };
  43. const uint32x4_t vF0FF = { 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF, 0xFFFFFFFF };
  44. const uint32x4_t vFF00 = { 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0x00000000 };
  45. const uint32x4_t vFF0F = { 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF };
  46. const uint32x4_t vFFF0 = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000 };
  47. const uint32x4_t vFFFF = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF };
  48. const uint8x16_t v0022 = {0,1,2,3, 0,1,2,3, 8,9,10,11, 8,9,10,11};
  49. const uint8x16_t v1133 = {4,5,6,7, 4,5,6,7, 12,13,14,15, 12,13,14,15};
  50. const uint8x16_t v0101 = {0,1,2,3, 4,5,6,7, 0,1,2,3, 4,5,6,7};
  51. const float32x4_t vOne = { 1.0f, 1.0f, 1.0f, 1.0f };
  52. const float32x4_t vmOne = { -1.0f, -1.0f, -1.0f, -1.0f };
  53. const float32x4_t vInf = { INFINITY, INFINITY, INFINITY, INFINITY };
  54. const float32x4_t vmInf = { -INFINITY, -INFINITY, -INFINITY, -INFINITY };
  55. #endif
  56. }