Home | History | Annotate | Download | only in vbit-test

Lines Matching full:bits

49 /* Return the bits of V if they fit into 64-bit. If V has fewer than
50 64 bits, the bit pattern is zero-extended to the left. */
55 case 1: return v.bits.u32;
56 case 8: return v.bits.u8;
57 case 16: return v.bits.u16;
58 case 32: return v.bits.u32;
59 case 64: return v.bits.u64;
72 case 1: fprintf(fp, "%08x", v.bits.u32); break;
73 case 8: fprintf(fp, "%02x", v.bits.u8); break;
74 case 16: fprintf(fp, "%04x", v.bits.u16); break;
75 case 32: fprintf(fp, "%08x", v.bits.u32); break;
76 case 64: fprintf(fp, "%016"PRIx64, v.bits.u64); break;
79 fprintf(fp, "%016"PRIx64, v.bits.u128[1]);
80 fprintf(fp, "%016"PRIx64, v.bits.u128[0]);
82 fprintf(fp, "%016"PRIx64, v.bits.u128[0]);
83 fprintf(fp, "%016"PRIx64, v.bits.u128[1]);
88 fprintf(fp, "%016"PRIx64, v.bits.u256[3]);
89 fprintf(fp, "%016"PRIx64, v.bits.u256[2]);
90 fprintf(fp, "%016"PRIx64, v.bits.u256[1]);
91 fprintf(fp, "%016"PRIx64, v.bits.u256[0]);
93 fprintf(fp, "%016"PRIx64, v.bits.u256[0]);
94 fprintf(fp, "%016"PRIx64, v.bits.u256[1]);
95 fprintf(fp, "%016"PRIx64, v.bits.u256[2]);
96 fprintf(fp, "%016"PRIx64, v.bits.u256[3]);
105 /* Return a value where all bits are set to undefined. */
112 case 1: new.bits.u32 = 0x01; break;
113 case 8: new.bits.u8 = 0xff; break;
114 case 16: new.bits.u16 = 0xffff; break;
115 case 32: new.bits.u32 = ~0; break;
116 case 64: new.bits.u64 = ~0ull; break;
117 case 128: new.bits.u128[0] = ~0ull;
118 new.bits.u128[1] = ~0ull;
120 case 256: new.bits.u256[0] = ~0ull;
121 new.bits.u256[1] = ~0ull;
122 new.bits.u256[2] = ~0ull;
123 new.bits.u256[3] = ~0ull;
132 /* Return a value where all bits are set to defined. */
139 case 1: new.bits.u32 = 0x0; break;
140 case 8: new.bits.u8 = 0x0; break;
141 case 16: new.bits.u16 = 0x0; break;
142 case 32: new.bits.u32 = 0x0; break;
143 case 64: new.bits.u64 = 0x0; break;
144 case 128: new.bits.u128[0] = 0x0;
145 new.bits.u128[1] = 0x0;
147 case 256: new.bits.u256[0] = 0x0;
148 new.bits.u256[1] = 0x0;
149 new.bits.u256[2] = 0x0;
150 new.bits.u256[3] = 0x0;
166 case 1: return v1.bits.u32 == v2.bits.u32;
167 case 8: return v1.bits.u8 == v2.bits.u8;
168 case 16: return v1.bits.u16 == v2.bits.u16;
169 case 32: return v1.bits.u32 == v2.bits.u32;
170 case 64: return v1.bits.u64 == v2.bits.u64;
171 case 128: return v1.bits.u128[0] == v2.bits.u128[0] &&
172 v1.bits.u128[1] == v2.bits.u128[1];
173 case 256: return v1.bits.u256[0] == v2.bits.u256[0] &&
174 v1.bits.u256[1] == v2.bits.u256[1] &&
175 v1.bits.u256[2] == v2.bits.u256[2] &&
176 v1.bits.u256[3] == v2.bits.u256[3];
183 /* Truncate the bit pattern in V1 to NUM_BITS bits */
194 uint64_t bits;
197 bits = get_bits64(v);
200 bits = v.bits.u128[0];
202 bits = v.bits.u128[1];
205 bits = v.bits.u256[0];
207 bits = v.bits.u256[3];
212 case 1: new.bits.u32 = bits & 0x01; break;
213 case 8: new.bits.u8 = bits & 0xff; break;
214 case 16: new.bits.u16 = bits & 0xffff; break;
215 case 32: new.bits.u32 = bits & ~0u; break;
216 case 64: new.bits.u64 = bits & ~0ll; break;
225 /* From 256 bits to 128 */
227 new.bits.u128[0] = v.bits.u256[0];
228 new.bits.u128[1] = v.bits.u256[1];
230 new.bits.u128[0] = v.bits.u256[2];
231 new.bits.u128[1] = v.bits.u256[3];
236 /* Cannot truncate to 256 bits from something larger */
258 uint64_t bits = left64(get_bits64(v));
261 case 8: new.bits.u8 = bits & 0xff; break;
262 case 16: new.bits.u16 = bits & 0xffff; break;
263 case 32: new.bits.u32 = bits & ~0u; break;
264 case 64: new.bits.u64 = bits & ~0ll; break;
267 new.bits.u128[0] = bits;
268 if (bits & (1ull << 63)) { // MSB is set
269 new.bits.u128[1] = ~0ull;
271 new.bits.u128[1] = 0;
274 new.bits.u128[1] = bits;
275 if (bits & (1ull << 63)) { // MSB is set
276 new.bits.u128[0] = ~0ull;
278 new.bits.u128[0] = 0;
284 new.bits.u256[0] = bits;
285 if (bits & (1ull << 63)) { // MSB is set
286 new.bits.u256[1] = ~0ull;
287 new.bits.u256[2] = ~0ull;
288 new.bits.u256[3] = ~0ull;
290 new.bits.u256[1] = 0;
291 new.bits.u256[2] = 0;
292 new.bits.u256[3] = 0;
295 new.bits.u256[3] = bits;
296 if (bits & (1ull << 63)) { // MSB is set
297 new.bits.u256[0] = ~0ull;
298 new.bits.u256[1] = ~0ull;
299 new.bits.u256[2] = ~0ull;
301 new.bits.u256[0] = 0;
302 new.bits.u256[1] = 0;
303 new.bits.u256[2] = 0;
315 if (v.bits.u128[1] != 0) {
316 new.bits.u128[0] = v.bits.u128[0];
317 new.bits.u128[1] = left64(v.bits.u128[1]);
319 new.bits.u128[0] = left64(v.bits.u128[0]);
320 if (new.bits.u128[0] & (1ull << 63)) { // MSB is set
321 new.bits.u128[1] = ~0ull;
323 new.bits.u128[1] = 0;
327 if (v.bits.u128[0] != 0) {
328 new.bits.u128[0] = left64(v.bits.u128[0]);
329 new.bits.u128[1] = v.bits.u128[1];
331 new.bits.u128[1] = left64(v.bits.u128[1]);
332 if (new.bits.u128[1] & (1ull << 63)) { // MSB is set
333 new.bits.u128[0] = ~0ull;
335 new.bits.u128[0] = 0;
344 uint64_t b1 = new.bits.u128[1];
345 uint64_t b0 = new.bits.u128[0];
347 new.bits.u256[0] = b0;
348 new.bits.u256[1] = b1;
350 if (new.bits.u256[1] & (1ull << 63)) { // MSB is set
351 new.bits.u256[2] = ~0ull;
352 new.bits.u256[3] = ~0ull;
354 new.bits.u256[2] = 0;
355 new.bits.u256[3] = 0;
358 uint64_t b1 = new.bits.u128[0];
359 uint64_t b0 = new.bits.u128[1];
361 new.bits.u256[2] = b0;
362 new.bits.u256[3] = b1;
364 if (new.bits.u256[2] & (1ull << 63)) { // MSB is set
365 new.bits.u256[0] = ~0ull;
366 new.bits.u256[1] = ~0ull;
368 new.bits.u256[0] = 0;
369 new.bits.u256[1] = 0;
387 case 8: new.bits.u8 = v1.bits.u8 | v2.bits.u8; break;
388 case 16: new.bits.u16 = v1.bits.u16 | v2.bits.u16; break;
389 case 32: new.bits.u32 = v1.bits.u32 | v2.bits.u32; break;
390 case 64: new.bits.u64 = v1.bits.u64 | v2.bits.u64; break;
391 case 128: new.bits.u128[0] = v1.bits.u128[0] | v2.bits.u128[0];
392 new.bits.u128[1] = v1.bits.u128[1] | v2.bits.u128[1];
394 case 256: new.bits.u256[0] = v1.bits.u256[0] | v2.bits.u256[0];
395 new.bits.u256[1] = v1.bits.u256[1] | v2.bits.u256[1];
396 new.bits.u256[2] = v1.bits.u256[2] | v2.bits.u256[2];
397 new.bits.u256[3] = v1.bits.u256[3] | v2.bits.u256[3];
415 case 8: new.bits.u8 = v1.bits.u8 & v2.bits.u8; break;
416 case 16: new.bits.u16 = v1.bits.u16 & v2.bits.u16; break;
417 case 32: new.bits.u32 = v1.bits.u32 & v2.bits.u32; break;
418 case 64: new.bits.u64 = v1.bits.u64 & v2.bits.u64; break;
419 case 128: new.bits.u128[0] = v1.bits.u128[0] & v2.bits.u128[0];
420 new.bits.u128[1] = v1.bits.u128[1] & v2.bits.u128[1];
422 case 256: new.bits.u256[0] = v1.bits.u256[0] & v2.bits.u256[0];
423 new.bits.u256[1] = v1.bits.u256[1] & v2.bits.u256[1];
424 new.bits.u256[2] = v1.bits.u256[2] & v2.bits.u256[2];
425 new.bits.u256[3] = v1.bits.u256[3] & v2.bits.u256[3];
443 case 8: new.bits.u16 = v1.bits.u8;
444 new.bits.u16 = (new.bits.u16 << 8) | v2.bits.u8; break;
445 case 16: new.bits.u32 = v1.bits.u16;
446 new.bits.u32 = (new.bits.u32 << 16) | v2.bits.u16; break;
447 case 32: new.bits.u64 = v1.bits.u32;
448 new.bits.u64 = (new.bits.u64 << 32) | v2.bits.u32; break;
451 new.bits.u128[0] = v2.bits.u64;
452 new.bits.u128[1] = v1.bits.u64;
454 new.bits.u128[0] = v1.bits.u64;
455 new.bits.u128[1] = v2.bits.u64;
460 new.bits.u256[0] = v2.bits.u128[0];
461 new.bits.u256[1] = v2.bits.u128[1];
462 new.bits.u256[2] = v1.bits.u128[0];
463 new.bits.u256[3] = v1.bits.u128[1];
465 new.bits.u256[0] = v1.bits.u128[0];
466 new.bits.u256[1] = v1.bits.u128[1];
467 new.bits.u256[2] = v2.bits.u128[0];
468 new.bits.u256[3] = v2.bits.u128[1];
486 case 16: new.bits.u8 = v.bits.u16 >> 8; break;
487 case 32: new.bits.u16 = v.bits.u32 >> 16; break;
488 case 64: new.bits.u32 = v.bits.u64 >> 32; break;
491 new.bits.u64 = v.bits.u128[1];
493 new.bits.u64 = v.bits.u128[0];
497 new.bits.u128[0] = v.bits.u256[2];
498 new.bits.u128[1] = v.bits.u256[3];
500 new.bits.u128[0] = v.bits.u256[0];
501 new.bits.u128[1] = v.bits.u256[1];
523 uint64_t bits = get_bits64(v);
526 case 8: new.bits.u8 = bits; break;
527 case 16: new.bits.u16 = bits; break;
528 case 32: new.bits.u32 = bits; break;
529 case 64: new.bits.u64 = bits; break;
532 new.bits.u128[0] = bits;
533 new.bits.u128[1] = 0;
535 new.bits.u128[0] = 0;
536 new.bits.u128[1] = bits;
541 new.bits.u256[0] = bits;
542 new.bits.u256[1] = 0;
543 new.bits.u256[2] = 0;
544 new.bits.u256[3] = 0;
546 new.bits.u256[0] = 0;
547 new.bits.u256[1] = 0;
548 new.bits.u256[2] = 0;
549 new.bits.u256[3] = bits;
562 new.bits.u256[0] = v.bits.u128[0];
563 new.bits.u256[1] = v.bits.u128[1];
564 new.bits.u256[2] = 0;
565 new.bits.u256[3] = 0;
567 new.bits.u256[0] = 0;
568 new.bits.u256[1] = 0;
569 new.bits.u256[2] = v.bits.u128[1];
570 new.bits.u256[3] = v.bits.u128[0];
588 case 8: if (v.bits
589 case 16: if (v.bits.u16 == 0x8000) sextend = 1; break;
590 case 32: if (v.bits.u32 == 0x80000000) sextend = 1; break;
591 case 64: if (v.bits.u64 == (1ull << 63)) sextend = 1; break;
592 case 128: if (v.bits.u128[1] == (1ull << 63)) sextend = 1; break;
593 case 256: if (v.bits.u256[3] == (1ull << 63)) sextend = 1; break;
611 case 1: new.bits.u32 = 1 << bitno; break;
612 case 8: new.bits.u8 = 1 << bitno; break;
613 case 16: new.bits.u16 = 1 << bitno; break;
614 case 32: new.bits.u32 = 1u << bitno; break;
615 case 64: new.bits.u64 = 1ull << bitno; break;
619 new.bits.u128[0] = 1ull << bitno;
620 new.bits.u128[1] = 0;
622 new.bits.u128[0] = 0;
623 new.bits.u128[1] = 1ull << (bitno - 64);
627 new.bits.u128[0] = 0;
628 new.bits.u128[1] = 1ull << bitno;
630 new.bits.u128[0] = 1ull << (bitno - 64);
631 new.bits.u128[1] = 0;
638 new.bits.u256[0] = 1ull << bitno;
639 new.bits.u256[1] = 0;
640 new.bits.u256[2] = 0;
641 new.bits.u256[3] = 0;
643 new.bits.u256[0] = 0;
644 new.bits.u256[1] = 1ull << (bitno - 64);
645 new.bits.u256[2] = 0;
646 new.bits.u256[3] = 0;
648 new.bits.u256[0] = 0;
649 new.bits.u256[1] = 0;
650 new.bits.u256[2] = 1ull << (bitno - 128);
651 new.bits.u256[3] = 0;
653 new.bits.u256[0] = 0;
654 new.bits.u256[1] = 0;
655 new.bits.u256[2] = 0;
656 new.bits.u256[3] = 1ull << (bitno - 192);
660 new.bits.u256[0] = 0;
661 new.bits.u256[1] = 0;
662 new.bits.u256[2] = 0;
663 new.bits.u256[3] = 1ull << bitno;
665 new.bits.u256[0] = 0;
666 new.bits.u256[1] = 0;
667 new.bits.u256[2] = 1ull << (bitno - 64);
668 new.bits.u256[3] = 0;
670 new.bits.u256[0] = 0;
671 new.bits.u256[1] = 1ull << (bitno - 128);
672 new.bits.u256[2] = 0;
673 new.bits.u256[3] = 0;
675 new.bits.u256[0] = 1ull << (bitno - 192);
676 new.bits.u256[1] = 0;
677 new.bits.u256[2] = 0;
678 new.bits.u256[3] = 0;
704 case 8: new.bits.u8 <<= shift_amount; break;
705 case 16: new.bits.u16 <<= shift_amount; break;
706 case 32: new.bits.u32 <<= shift_amount; break;
707 case 64: new.bits.u64 <<= shift_amount; break;
726 case 8: new.bits.u8 >>= shift_amount; break;
727 case 16: new.bits.u16 >>= shift_amount; break;
728 case 32: new.bits.u32 >>= shift_amount; break;
729 case 64: new.bits.u64 >>= shift_amount; break;
750 new.bits.u8 >>= shift_amount;
751 msb = (v.bits.u8 & 0x80) != 0;
754 new.bits.u16 >>= shift_amount;
755 msb = (v.bits.u16 & 0x8000) != 0;
758 new.bits.u32 >>= shift_amount;
759 msb = (v.bits.u32 & (1u << 31)) != 0;
762 new.bits.u64 >>= shift_amount;
763 msb = (v.bits.u64 & (1ull << 63)) != 0;
786 * the lower 3 bits are set to indicate, less than, equal and greater then.
790 new.bits.u32 = 0xE;
794 new.bits.u64 = 0xE;