Skip to content

Commit 5992cc8

Browse files
committed
[NFC][libclc] Refine clz to use __builtin_clzg
It looks simpler to use __builtin_clzg for all unsigned types.
1 parent 862e719 commit 5992cc8

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

libclc/clc/lib/generic/integer/clc_clz.cl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,35 +11,35 @@
1111
#include <clc/internal/clc.h>
1212

1313
_CLC_OVERLOAD _CLC_DEF char __clc_clz(char x) {
14-
return __clc_clz((ushort)(uchar)x) - 8;
14+
return __clc_clz(__clc_as_uchar(x));
1515
}
1616

1717
_CLC_OVERLOAD _CLC_DEF uchar __clc_clz(uchar x) {
18-
return __clc_clz((ushort)x) - 8;
18+
return __builtin_clzg(x, 8);
1919
}
2020

2121
_CLC_OVERLOAD _CLC_DEF short __clc_clz(short x) {
22-
return x ? __builtin_clzs(x) : 16;
22+
return __clc_clz(__clc_as_ushort(x));
2323
}
2424

2525
_CLC_OVERLOAD _CLC_DEF ushort __clc_clz(ushort x) {
26-
return x ? __builtin_clzs(x) : 16;
26+
return __builtin_clzg(x, 16);
2727
}
2828

2929
_CLC_OVERLOAD _CLC_DEF int __clc_clz(int x) {
30-
return x ? __builtin_clz(x) : 32;
30+
return __clc_clz(__clc_as_uint(x));
3131
}
3232

3333
_CLC_OVERLOAD _CLC_DEF uint __clc_clz(uint x) {
34-
return x ? __builtin_clz(x) : 32;
34+
return __builtin_clzg(x, 32);
3535
}
3636

3737
_CLC_OVERLOAD _CLC_DEF long __clc_clz(long x) {
38-
return x ? __builtin_clzl(x) : 64;
38+
return __clc_clz(__clc_as_ulong(x));
3939
}
4040

4141
_CLC_OVERLOAD _CLC_DEF ulong __clc_clz(ulong x) {
42-
return x ? __builtin_clzl(x) : 64;
42+
return __builtin_clzg(x, 64);
4343
}
4444

4545
_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, char, __clc_clz, char)

0 commit comments

Comments
 (0)