Lines Matching refs:bit_length

49   ALWAYS_INLINE BitMemoryRegion(MemoryRegion region, size_t bit_offset, size_t bit_length)  in BitMemoryRegion()  argument
51 *this = Subregion(bit_offset, bit_length); in BitMemoryRegion()
69 ALWAYS_INLINE BitMemoryRegion Subregion(size_t bit_offset, size_t bit_length) const { in Subregion() argument
71 DCHECK_LE(bit_length, bit_size_ - bit_offset); in Subregion()
74 result.bit_size_ = bit_length; in Subregion()
109 ALWAYS_INLINE Result LoadBits(size_t bit_offset, size_t bit_length) const { in LoadBits() argument
114 DCHECK_LE(bit_length, bit_size_ - bit_offset); in LoadBits()
115 DCHECK_LE(bit_length, BitSizeOf<Result>()); in LoadBits()
116 if (bit_length == 0) { in LoadBits()
127 Result extra = data[index + (shift + (bit_length - 1)) / width]; in LoadBits()
129 Result clear = (std::numeric_limits<Result>::max() << 1) << (bit_length - 1); in LoadBits()
139 ALWAYS_INLINE void StoreBits(size_t bit_offset, uint32_t value, size_t bit_length) { in StoreBits() argument
141 DCHECK_LE(bit_length, bit_size_ - bit_offset); in StoreBits()
142 DCHECK_LE(bit_length, BitSizeOf<uint32_t>()); in StoreBits()
143 DCHECK_LE(value, MaxInt<uint32_t>(bit_length)); in StoreBits()
144 if (bit_length == 0) { in StoreBits()
149 uint32_t mask = std::numeric_limits<uint32_t>::max() >> (BitSizeOf<uint32_t>() - bit_length); in StoreBits()
155 for (int i = 1; finished_bits < bit_length; i++, finished_bits += kBitsPerByte) { in StoreBits()
159 DCHECK_EQ(value, LoadBits(bit_offset, bit_length)); in StoreBits()
163 ALWAYS_INLINE void StoreBits(size_t bit_offset, const BitMemoryRegion& src, size_t bit_length) { in StoreBits() argument
165 DCHECK_LE(bit_length, bit_size_ - bit_offset); in StoreBits()
168 for (; bit + kNumBits <= bit_length; bit += kNumBits) { in StoreBits()
171 size_t num_bits = bit_length - bit; in StoreBits()
176 ALWAYS_INLINE void OrBits(size_t bit_offset, const BitMemoryRegion& src, size_t bit_length) { in OrBits() argument
181 DCHECK_LE(bit_length, bit_size_ - bit_offset); in OrBits()
184 for (; bit + kNumBits <= bit_length; bit += kNumBits) { in OrBits()
188 size_t num_bits = bit_length - bit; in OrBits()
194 ALWAYS_INLINE size_t PopCount(size_t bit_offset, size_t bit_length) const { in PopCount() argument
196 DCHECK_LE(bit_length, bit_size_ - bit_offset); in PopCount()
200 for (; bit + kNumBits <= bit_length; bit += kNumBits) { in PopCount()
203 count += POPCOUNT(LoadBits(bit_offset + bit, bit_length - bit)); in PopCount()
208 ALWAYS_INLINE bool HasSomeBitSet(size_t bit_offset, size_t bit_length) const { in HasSomeBitSet() argument
213 DCHECK_LE(bit_length, bit_size_ - bit_offset); in HasSomeBitSet()
216 for (; bit + kNumBits <= bit_length; bit += kNumBits) { in HasSomeBitSet()
221 return LoadBits(bit_offset + bit, bit_length - bit) != 0u; in HasSomeBitSet()
271 ALWAYS_INLINE BitMemoryRegion ReadRegion(size_t bit_length) { in ReadRegion() argument
273 finished_region_.Resize(bit_offset + bit_length); in ReadRegion()
274 return finished_region_.Subregion(bit_offset, bit_length); in ReadRegion()
278 ALWAYS_INLINE Result ReadBits(size_t bit_length) { in ReadBits() argument
279 return ReadRegion(bit_length).LoadBits<Result>(/* bit_offset */ 0, bit_length); in ReadBits()
340 ALWAYS_INLINE BitMemoryRegion Allocate(size_t bit_length) { in Allocate() argument
341 out_->resize(BitsToBytesRoundUp(bit_offset_ + bit_length)); in Allocate()
342 BitMemoryRegion region(out_->data(), bit_offset_, bit_length); in Allocate()
343 DCHECK_LE(bit_length, std::numeric_limits<size_t>::max() - bit_offset_) << "Overflow"; in Allocate()
344 bit_offset_ += bit_length; in Allocate()
352 ALWAYS_INLINE void WriteBits(uint32_t value, size_t bit_length) { in WriteBits() argument
353 Allocate(bit_length).StoreBits(/* bit_offset */ 0, value, bit_length); in WriteBits()