File: hadd.inc

package info (click to toggle)
libclc 0.2.0%2Bgit20180917-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 3,552 kB
  • sloc: lisp: 13,186; ansic: 2,418; python: 647; cpp: 93; sh: 29; makefile: 10; pascal: 7
file content (6 lines) | stat: -rw-r--r-- 332 bytes parent folder | download | duplicates (26)
1
2
3
4
5
6
//hadd = (x+y)>>1
//This can be simplified to x>>1 + y>>1 + (1 if both x and y have the 1s bit set)
//This saves us having to do any checks for overflow in the addition sum
_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE hadd(__CLC_GENTYPE x, __CLC_GENTYPE y) {
    return (x>>(__CLC_GENTYPE)1)+(y>>(__CLC_GENTYPE)1)+(x&y&(__CLC_GENTYPE)1);
}