File: hadd.inc

package info (click to toggle)
libclc 0~git20140101-5
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 1,040 kB
  • ctags: 532
  • sloc: lisp: 863; ansic: 665; python: 578; cpp: 74; makefile: 22; pascal: 5; sh: 1
file content (6 lines) | stat: -rw-r--r-- 332 bytes parent folder | download | duplicates (27)
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);
}