Vitis HLS supports the following C/C++ builtin functions:
-
__builtin_clz(unsigned int x)
: Returns the number of leading 0-bits in x, starting at the most significant bit position. If x is 0, the result is undefined. -
__builtin_ctz(unsigned int x)
: Returns the number of trailing 0-bits in x, starting at the least significant bit position. If x is 0, the result is undefined.
The following example shows these functions may be used. This example returns the sum of the number of leading zeros in in0 and trailing zeros in in1:
int foo (int in0, int in1) {
int ldz0 = __builtin_clz(in0);
int ldz1 = __builtin_ctz(in1);
return (ldz0 + ldz1);
}