ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libecb/ecb.pod
(Generate patch)

Comparing libecb/ecb.pod (file contents):
Revision 1.32 by sf-exg, Fri Jun 17 15:55:41 2011 UTC vs.
Revision 1.35 by root, Fri Jun 17 21:38:31 2011 UTC

412 412
413On systems that are neither, their return values are unspecified. 413On systems that are neither, their return values are unspecified.
414 414
415=item int ecb_ctz32 (uint32_t x) 415=item int ecb_ctz32 (uint32_t x)
416 416
417=item int ecb_ctz64 (uint64_t x)
418
417Returns the index of the least significant bit set in C<x> (or 419Returns the index of the least significant bit set in C<x> (or
418equivalently the number of bits set to 0 before the least significant bit 420equivalently the number of bits set to 0 before the least significant bit
419set), starting from 0. If C<x> is 0 the result is undefined. For example: 421set), starting from 0. If C<x> is 0 the result is undefined.
422
423For example:
420 424
421 ecb_ctz32 (3) = 0 425 ecb_ctz32 (3) = 0
422 ecb_ctz32 (6) = 1 426 ecb_ctz32 (6) = 1
423 427
428=item int ecb_ld32 (uint32_t x)
429
430=item int ecb_ld64 (uint64_t x)
431
432Returns the index of the most significant bit set in C<x>, or the number
433of digits the number requires in binary (so that C<< 2**ld <= x <
4342**(ld+1) >>). If C<x> is 0 the result is undefined. A common use case is
435to compute the integer binary logarithm, i.e. C<floor (log2 (n))>, for
436example to see how many bits a certain number requires to be encoded.
437
438This function is similar to the "count leading zero bits" function, except
439that that one returns how many zero bits are "in front" of the number (in
440the given data type), while C<ecb_ld> returns how many bits the number
441itself requires.
442
424=item int ecb_popcount32 (uint32_t x) 443=item int ecb_popcount32 (uint32_t x)
444
445=item int ecb_popcount64 (uint64_t x)
425 446
426Returns the number of bits set to 1 in C<x>. For example: 447Returns the number of bits set to 1 in C<x>. For example:
427 448
428 ecb_popcount32 (7) = 3 449 ecb_popcount32 (7) = 3
429 ecb_popcount32 (255) = 8 450 ecb_popcount32 (255) = 8
430 451
431=item uint32_t ecb_bswap16 (uint32_t x) 452=item uint32_t ecb_bswap16 (uint32_t x)
432 453
433=item uint32_t ecb_bswap32 (uint32_t x) 454=item uint32_t ecb_bswap32 (uint32_t x)
434 455
456=item uint64_t ecb_bswap64 (uint64_t x)
457
435These two functions return the value of the 16-bit (32-bit) value C<x> 458These functions return the value of the 16-bit (32-bit, 64-bit) value
436after reversing the order of bytes (0x11223344 becomes 0x44332211). 459C<x> after reversing the order of bytes (0x11223344 becomes 0x44332211 in
460C<ecb_bswap32>).
461
462=item uint8_t ecb_rotl8 (uint8_t x, unsigned int count)
463
464=item uint16_t ecb_rotl16 (uint16_t x, unsigned int count)
465
466=item uint32_t ecb_rotl32 (uint32_t x, unsigned int count)
467
468=item uint64_t ecb_rotl64 (uint64_t x, unsigned int count)
469
470=item uint8_t ecb_rotr8 (uint8_t x, unsigned int count)
471
472=item uint16_t ecb_rotr16 (uint16_t x, unsigned int count)
437 473
438=item uint32_t ecb_rotr32 (uint32_t x, unsigned int count) 474=item uint32_t ecb_rotr32 (uint32_t x, unsigned int count)
439 475
440=item uint32_t ecb_rotl32 (uint32_t x, unsigned int count) 476=item uint64_t ecb_rotr64 (uint64_t x, unsigned int count)
441 477
442These two functions return the value of C<x> after rotating all the bits 478These two families of functions return the value of C<x> after rotating
443by C<count> positions to the right or left respectively. 479all the bits by C<count> positions to the right (C<ecb_rotr>) or left
480(C<ecb_rotl>).
444 481
445Current GCC versions understand these functions and usually compile them 482Current GCC versions understand these functions and usually compile them
446to "optimal" code (e.g. a single C<roll> on x86). 483to "optimal" code (e.g. a single C<rol> or a combination of C<shld> on
484x86).
447 485
448=back 486=back
449 487
450=head2 ARITHMETIC 488=head2 ARITHMETIC
451 489

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines