[LLVMdev] X86TargetLowering::LowerToBT

Sanjay Patel spatel at rotateright.com
Fri Jan 23 08:32:21 PST 2015


If 'bt' is a perf sin, icc doesn't seem to know it:

$ icc -v
icc version 15.0.1 (gcc version 4.9.0 compatibility)

$ cat bt.c
unsigned long long IsBitSetB_64(unsigned long long val, int index) { return
(val & (1ULL<<index)) != 0ULL; }
unsigned int IsBitSetB_32(unsigned int val, int index) { return (val &
(1U<<index)) != 0U; }

$ icc -O3 -S bt.c -o - | grep bt
    .file "bt.c"
        btq       %rsi, %rdi
        btl       %esi, %edi

Does anyone at Intel have guidance for us?


On Thu, Jan 22, 2015 at 4:34 PM, Eric Christopher <echristo at gmail.com>
wrote:

>
>
> On Thu Jan 22 2015 at 3:32:53 PM Chris Sears <chris.sears at gmail.com>
> wrote:
>
>> The status quo is:
>>
>> a) 40b REX+BT instruction for the 64b case
>> b) 48b TEST for the 32b case
>> c) unless it's small TEST
>>
>>
>> You are currently paying a 16b penalty for TEST vs BT in the 32b case.
>> That may be worth testing the -Os flag.
>>
>
> You'll want -Oz here, Os isn't supposed to affect the runtime as much as
> this is going to.
>
> -eric
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150123/44000af5/attachment.html>


More information about the llvm-dev mailing list