FPFlushDenormalsTest.cpp 730 B

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