@@ -323,4 +323,31 @@ VM_UNIT_TEST_CASE(DoublesBitEqual) {
323
323
EXPECT (Utils::DoublesBitEqual (NAN, NAN));
324
324
}
325
325
326
+ VM_UNIT_TEST_CASE (NBitMask) {
327
+ #if defined(ARCH_IS_64_BIT)
328
+ EXPECT_EQ (0ull , Utils::NBitMask (0 ));
329
+ EXPECT_EQ (0x1ull , Utils::NBitMask (1 ));
330
+ EXPECT_EQ (0x3ull , Utils::NBitMask (2 ));
331
+ EXPECT_EQ (0xfull , Utils::NBitMask (4 ));
332
+ EXPECT_EQ (0xffull , Utils::NBitMask (8 ));
333
+ EXPECT_EQ (0xffffull , Utils::NBitMask (16 ));
334
+ EXPECT_EQ (0x1ffffull , Utils::NBitMask (17 ));
335
+ EXPECT_EQ (0x7fffffffull , Utils::NBitMask (31 ));
336
+ EXPECT_EQ (0xffffffffull , Utils::NBitMask (32 ));
337
+ EXPECT_EQ (0x1ffffffffull , Utils::NBitMask (33 ));
338
+ EXPECT_EQ (0x7fffffffffffffffull , Utils::NBitMask (kBitsPerWord - 1 ));
339
+ EXPECT_EQ (0xffffffffffffffffull , Utils::NBitMask (kBitsPerWord ));
340
+ #else
341
+ EXPECT_EQ (0u , Utils::NBitMask (0 ));
342
+ EXPECT_EQ (0x1u , Utils::NBitMask (1 ));
343
+ EXPECT_EQ (0x3u , Utils::NBitMask (2 ));
344
+ EXPECT_EQ (0xfu , Utils::NBitMask (4 ));
345
+ EXPECT_EQ (0xffu , Utils::NBitMask (8 ));
346
+ EXPECT_EQ (0xffffu , Utils::NBitMask (16 ));
347
+ EXPECT_EQ (0x1ffffu , Utils::NBitMask (17 ));
348
+ EXPECT_EQ (0x7fffffffu , Utils::NBitMask (kBitsPerWord - 1 ));
349
+ EXPECT_EQ (0xffffffffu , Utils::NBitMask (kBitsPerWord ));
350
+ #endif
351
+ }
352
+
326
353
} // namespace dart
0 commit comments