It enables
you to perform two unsigned 16-bit integer additions, halving the
results.
Syntax
unsigned int __uhadd16(unsigned int val1
, unsigned int val2
)
Where:
val1
holds the first two 16-bit summands
val2
holds the second two 16-bit summands.
Return value
The __uhadd16
intrinsic returns:
The halved addition of the low halfwords in each
operand, in the low halfword of the return value.
The halved addition of the high halfwords in each
operand, in the high halfword of the return value.
Examples
unsigned int add_halfwords_then_halve(unsigned int val1, unsigned int val2)
{
unsigned int res;
res = __uhadd16(val1,val2); /* res[15:0] = (val1[15:0] + val2[15:0]) >> 1
res[31:16] = (val1[31:16] + val2[31:16]) >> 1
*/
return res;
}