32 for (uint64_t bits = 0; bits <= 0xffffffff; bits++) {
33 if (bits % (1 << 24) == 0) {
34 SkDebugf(
"progress 0x%08X\n", (
int) bits);
39 static constexpr int kTestCount = 2 * 255 * 1024 * 8;
41 for (
int i = 0; i < kTestCount; ++i) {
42 uint32_t
sign = (i & 1) << 31;
43 uint32_t exp = ((i >> 1) & 255) << 23;
44 uint32_t man = ((i >> 9) & 1023) << 13;
45 uint32_t frac = ((i >> 19) & 7);
46 uint64_t bits =
sign | exp | man | ((frac == 0) ? 0 :
47 (frac == 1) ? (1 << 13) - 1
66 uint32_t s32 = (uint32_t) bits &
kF32_Sign;
67 uint32_t e32 = (uint32_t) bits &
kF32_Exp;
68 uint32_t m32 = (uint32_t) bits &
kF32_Mant;
74 uint32_t s16 = s32 >> 16;
81 }
else if ((e32 | m32) < 0x38fe'0000) {
84 m16 = 0xffff & sk_bit_cast<uint32_t>(0.5f +
SkBits2Float(e32 | m32));
85 }
else if ((e32 | m32) < 0x3880'0000) {
99 m32 += 0xfff + ((m32>>13)&1);
111 uint16_t expected = s16 | e16 | m16;
130 for (uint32_t bits = 0; bits <= 0xffff; bits++) {
135 float actual2 = from_half(
skvx::half2{(uint16_t) bits})[0];
136 float actual4 = from_half(
skvx::half4{(uint16_t) bits})[0];
140 float expected = (1.f / (1 << 14)) * (1.f / (1 << 10)) * m16;
163 uint32_t s32 = s16 << 16;
165 uint32_t m32 = m16 << 13;