Using the leading_zeros hint, I can access the first bit as follows:

firstbit(x) = leading_ones(x) > 0

This seems indirect however. And the code native also seems longer then 
what I would have hoped for:

@code_native firstbit(x)

        .text
Filename: In[78]
Source line: 1
        pushq   %rbp
        movq    %rsp, %rbp
Source line: 1
        notb    %dil
        movzbl  %dil, %eax
        movl    $15, %ecx
        bsrl    %eax, %eax
        cmovel  %ecx, %eax
        xorl    $7, %eax
        testb   %al, %al
        setne   %al
        popq    %rbp
        ret
Is there a more efficient way in julia?



On Friday, August 12, 2016 at 2:10:37 PM UTC+2, jw3126 wrote:
>
> Thank you both!
>
> On Thursday, August 11, 2016 at 9:17:13 PM UTC+2, Erik Schnetter wrote:
>>
>> See also "leading_zeros".
>>
>> -erik
>>
>> On Thu, Aug 11, 2016 at 1:52 PM, Tom Breloff <[email protected]> wrote:
>>
>>> help?> count_ones
>>> search: count_ones count_zeros
>>>
>>>   count_ones(x::Integer) -> Integer
>>>
>>>   Number of ones in the binary representation of x.
>>>
>>>   julia> count_ones(7)
>>>   3
>>>
>>>
>>> On Thu, Aug 11, 2016 at 1:48 PM, jw3126 <[email protected]> wrote:
>>>
>>>> I have a bitstype and want to know the number of ones in its bit 
>>>> representation as well as the first bit. How to accomplish these in a 
>>>> performant way?
>>>>
>>>
>>>
>>
>>
>> -- 
>> Erik Schnetter <[email protected]> 
>> http://www.perimeterinstitute.ca/personal/eschnetter/
>>
>

Reply via email to