2
0

FPFlushDenormalsTest.cpp 758 B

123456789101112131415161718192021222324252627282930313233343536
  1. // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
  2. // SPDX-License-Identifier: MIT
  3. #include "UnitTestFramework.h"
  4. #include <Jolt/Core/FPFlushDenormals.h>
  5. #include <atomic>
  6. // Implemented as a global atomic so the compiler can't optimize it to a constant
  7. extern atomic<float> TestFltMin;
  8. atomic<float> TestFltMin = FLT_MIN;
  9. TEST_SUITE("FlushDenormalsTests")
  10. {
  11. TEST_CASE("TestFlushDenormals")
  12. {
  13. // By default flush denormals should be off
  14. {
  15. float value = TestFltMin * 0.1f;
  16. CHECK(value > 0.0f);
  17. }
  18. // Turn flush denormal on
  19. {
  20. FPFlushDenormals flush_denormals;
  21. float value = TestFltMin * 0.1f;
  22. CHECK(value == 0.0f);
  23. }
  24. // Check if state was properly restored
  25. {
  26. float value = TestFltMin * 0.1f;
  27. CHECK(value > 0.0f);
  28. }
  29. }
  30. }