| 86 | } |
| 87 | |
| 88 | TEST(BitmapWordAlign, AlignedDataStart) { |
| 89 | alignas(8) char buf[136] = {0}; |
| 90 | |
| 91 | // A 8-byte aligned pointer |
| 92 | const uint8_t* P = reinterpret_cast<const uint8_t*>(buf); |
| 93 | const uint8_t* A = P; |
| 94 | |
| 95 | // {leading_bits, trailing_bits, trailing_bit_offset, |
| 96 | // aligned_start, aligned_bits, aligned_words} |
| 97 | CheckBitmapWordAlign<8>(P, 0, 0, {0, 0, 0, A, 0, 0}); |
| 98 | CheckBitmapWordAlign<8>(P, 0, 13, {0, 13, 0, A, 0, 0}); |
| 99 | CheckBitmapWordAlign<8>(P, 0, 63, {0, 63, 0, A, 0, 0}); |
| 100 | |
| 101 | CheckBitmapWordAlign<8>(P, 0, 64, {0, 0, 0, A, 64, 1}); |
| 102 | CheckBitmapWordAlign<8>(P, 0, 73, {0, 9, 64, A, 64, 1}); |
| 103 | CheckBitmapWordAlign<8>(P, 0, 191, {0, 63, 128, A, 128, 2}); |
| 104 | |
| 105 | CheckBitmapWordAlign<8>(P, 5, 0, {0, 0, 0, A, 0, 0}); |
| 106 | CheckBitmapWordAlign<8>(P, 5, 13, {13, 0, 0, A, 0, 0}); |
| 107 | CheckBitmapWordAlign<8>(P, 5, 59, {59, 0, 0, A, 0, 0}); |
| 108 | CheckBitmapWordAlign<8>(P, 5, 60, {59, 1, 64, A, 0, 0}); |
| 109 | CheckBitmapWordAlign<8>(P, 5, 64, {59, 5, 64, A, 0, 0}); |
| 110 | CheckBitmapWordAlign<8>(P, 5, 122, {59, 63, 64, A, 0, 0}); |
| 111 | CheckBitmapWordAlign<8>(P, 5, 123, {59, 0, 64, A + 8, 64, 1}); |
| 112 | CheckBitmapWordAlign<8>(P, 5, 314, {59, 63, 256, A + 8, 192, 3}); |
| 113 | CheckBitmapWordAlign<8>(P, 5, 315, {59, 0, 320, A + 8, 256, 4}); |
| 114 | |
| 115 | CheckBitmapWordAlign<8>(P, 63, 0, {0, 0, 0, A, 0, 0}); |
| 116 | CheckBitmapWordAlign<8>(P, 63, 1, {1, 0, 0, A, 0, 0}); |
| 117 | CheckBitmapWordAlign<8>(P, 63, 2, {1, 1, 64, A, 0, 0}); |
| 118 | CheckBitmapWordAlign<8>(P, 63, 64, {1, 63, 64, A, 0, 0}); |
| 119 | CheckBitmapWordAlign<8>(P, 63, 65, {1, 0, 128, A + 8, 64, 1}); |
| 120 | CheckBitmapWordAlign<8>(P, 63, 128, {1, 63, 128, A + 8, 64, 1}); |
| 121 | CheckBitmapWordAlign<8>(P, 63, 129, {1, 0, 192, A + 8, 128, 2}); |
| 122 | |
| 123 | CheckBitmapWordAlign<8>(P, 1024, 0, {0, 0, 0, A, 0, 0}); |
| 124 | CheckBitmapWordAlign<8>(P, 1024, 130, {0, 2, 1152, A + 128, 128, 2}); |
| 125 | |
| 126 | CheckBitmapWordAlign<8>(P, 1025, 1, {1, 0, 0, A, 0, 0}); |
| 127 | CheckBitmapWordAlign<8>(P, 1025, 63, {63, 0, 0, A, 0, 0}); |
| 128 | CheckBitmapWordAlign<8>(P, 1025, 64, {63, 1, 1088, A, 0, 0}); |
| 129 | CheckBitmapWordAlign<8>(P, 1025, 128, {63, 1, 1152, A + 136, 64, 1}); |
| 130 | } |
| 131 | |
| 132 | TEST(BitmapWordAlign, UnalignedDataStart) { |
| 133 | alignas(8) char buf[136] = {0}; |
nothing calls this directly
no test coverage detected