diff options
| author | Carlos Maiolino <[email protected]> | 2025-07-10 22:18:39 +0200 |
|---|---|---|
| committer | Carlos Maiolino <[email protected]> | 2025-07-10 22:18:39 +0200 |
| commit | 8c6fc0c15415b32080a848bbde640e104098cf13 (patch) | |
| tree | 04a21bd28f9dc82c8e216390d6208ed93b9bcd11 /riscv/riscv-probe/libfemto/std/ctz.c | |
Initial drop
Add some riscv code
Signed-off-by: Carlos Maiolino <[email protected]>
Diffstat (limited to 'riscv/riscv-probe/libfemto/std/ctz.c')
| -rw-r--r-- | riscv/riscv-probe/libfemto/std/ctz.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/riscv/riscv-probe/libfemto/std/ctz.c b/riscv/riscv-probe/libfemto/std/ctz.c new file mode 100644 index 0000000..098687c --- /dev/null +++ b/riscv/riscv-probe/libfemto/std/ctz.c @@ -0,0 +1,22 @@ +// See LICENSE for license details. + +#include <stdint.h> + +#define GLUE_HELPER(x, y) x##y +#define GLUE(x, y) GLUE_HELPER(x, y) + +#define DEFINE_CTZ(T,bits) \ +int GLUE(ctz,bits)(T val) \ +{ \ + int n = 0; \ + for (n = 0; n < bits; n++) { \ + if (val & 1) break; \ + val >>= 1; \ + } \ + return n; \ +} + +DEFINE_CTZ(int8_t,8) +DEFINE_CTZ(int16_t,16) +DEFINE_CTZ(int32_t,32) +DEFINE_CTZ(int64_t,64) |
