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

Comparing libecb/ecb.pod (file contents):
Revision 1.64 by root, Wed Feb 18 20:48:59 2015 UTC vs.
Revision 1.65 by root, Thu Feb 19 15:45:29 2015 UTC

490 } 490 }
491 491
492=item ecb_assume (cond) 492=item ecb_assume (cond)
493 493
494Try to tell the compiler that some condition is true, even if it's not 494Try to tell the compiler that some condition is true, even if it's not
495obvious. 495obvious. This is not a function, but a statement: it cannot be used in
496another expression.
496 497
497This can be used to teach the compiler about invariants or other 498This can be used to teach the compiler about invariants or other
498conditions that might improve code generation, but which are impossible to 499conditions that might improve code generation, but which are impossible to
499deduce form the code itself. 500deduce form the code itself.
500 501
521 522
522=item ecb_unreachable () 523=item ecb_unreachable ()
523 524
524This function does nothing itself, except tell the compiler that it will 525This function does nothing itself, except tell the compiler that it will
525never be executed. Apart from suppressing a warning in some cases, this 526never be executed. Apart from suppressing a warning in some cases, this
526function can be used to implement C<ecb_assume> or similar functions. 527function can be used to implement C<ecb_assume> or similar functionality.
527 528
528=item ecb_prefetch (addr, rw, locality) 529=item ecb_prefetch (addr, rw, locality)
529 530
530Tells the compiler to try to prefetch memory at the given C<addr>ess 531Tells the compiler to try to prefetch memory at the given C<addr>ess
531for either reading (C<rw> = 0) or writing (C<rw> = 1). A C<locality> of 532for either reading (C<rw> = 0) or writing (C<rw> = 1). A C<locality> of
533the data will likely be accessed very often, and values in between mean 534the data will likely be accessed very often, and values in between mean
534something... in between. The memory pointed to by the address does not 535something... in between. The memory pointed to by the address does not
535need to be accessible (it could be a null pointer for example), but C<rw> 536need to be accessible (it could be a null pointer for example), but C<rw>
536and C<locality> must be compile-time constants. 537and C<locality> must be compile-time constants.
537 538
539This is a statement, not a function: you cannot use it as part of an
540expression.
541
538An obvious way to use this is to prefetch some data far away, in a big 542An obvious way to use this is to prefetch some data far away, in a big
539array you loop over. This prefetches memory some 128 array elements later, 543array you loop over. This prefetches memory some 128 array elements later,
540in the hope that it will be ready when the CPU arrives at that location. 544in the hope that it will be ready when the CPU arrives at that location.
541 545
542 int sum = 0; 546 int sum = 0;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines