// Copyright Epic Games, Inc. All Rights Reserved. #include #include namespace zen { ////////////////////////////////////////////////////////////////////////// // // Testing related code follows... // void intmath_forcelink() { } TEST_CASE("intmath") { CHECK(FloorLog2(0x00) == 0); CHECK(FloorLog2(0x01) == 0); CHECK(FloorLog2(0x0f) == 3); CHECK(FloorLog2(0x10) == 4); CHECK(FloorLog2(0x11) == 4); CHECK(FloorLog2(0x12) == 4); CHECK(FloorLog2(0x22) == 5); CHECK(FloorLog2(0x0001'0000) == 16); CHECK(FloorLog2(0x0001'000f) == 16); CHECK(FloorLog2(0x8000'0000) == 31); CHECK(FloorLog2_64(0x00ull) == 0); CHECK(FloorLog2_64(0x01ull) == 0); CHECK(FloorLog2_64(0x0full) == 3); CHECK(FloorLog2_64(0x10ull) == 4); CHECK(FloorLog2_64(0x11ull) == 4); CHECK(FloorLog2_64(0x0001'0000ull) == 16); CHECK(FloorLog2_64(0x0001'000full) == 16); CHECK(FloorLog2_64(0x8000'0000ull) == 31); CHECK(FloorLog2_64(0x0000'0001'0000'0000ull) == 32); CHECK(FloorLog2_64(0x8000'0000'0000'0000ull) == 63); CHECK(CountLeadingZeros64(0x8000'0000'0000'0000ull) == 0); CHECK(CountLeadingZeros64(0x0000'0000'0000'0000ull) == 64); CHECK(CountLeadingZeros64(0x0000'0000'0000'0001ull) == 63); CHECK(CountLeadingZeros64(0x0000'0000'8000'0000ull) == 32); CHECK(CountLeadingZeros64(0x0000'0001'0000'0000ull) == 31); CHECK(CountTrailingZeros64(0x8000'0000'0000'0000ull) == 63); CHECK(CountTrailingZeros64(0x0000'0000'0000'0000ull) == 64); CHECK(CountTrailingZeros64(0x0000'0000'0000'0001ull) == 0); CHECK(CountTrailingZeros64(0x0000'0000'8000'0000ull) == 31); CHECK(CountTrailingZeros64(0x0000'0001'0000'0000ull) == 32); } } // namespace zen