[LLVMdev] Why are imm shifts where imm >= width type eliminated entirely?

Ryan Taylor ryta1203 at gmail.com
Mon Apr 20 13:28:43 PDT 2015


As in O0, I see.

Thanks.

On Mon, Apr 20, 2015 at 4:25 PM, David Majnemer <david.majnemer at gmail.com>
wrote:

>
>
> On Mon, Apr 20, 2015 at 1:19 PM, Ryan Taylor <ryta1203 at gmail.com> wrote:
>
>> Ok, this makes sense.
>>
>> So, my follow up is then why, as in Mips, R600, etc... the bit value is
>> checked in the tablegen. Seems that we should expect it to fit anyways if
>> it still exists at this point?
>>
>
> These optimizations are not always run on IR that is fed to the backend.
>
>
>> I'm having a hard time trying to get shl to take a PatLeaf for Imm
>> instead of an ImmLeaf.
>>
>> On Mon, Apr 20, 2015 at 4:11 PM, David Majnemer <david.majnemer at gmail.com
>> > wrote:
>>
>>>
>>>
>>> On Mon, Apr 20, 2015 at 1:00 PM, Ryan Taylor <ryta1203 at gmail.com> wrote:
>>>
>>>> For example:
>>>>
>>>> unsigned int x, y;
>>>>
>>>> void foo()
>>>> {
>>>>      y = x >> 129;
>>>> }
>>>>
>>>> Where int is a 16bit type, the .ll is producing only 'ret void' at O3.
>>>> At O0 the .ll looks fine but then llc gets rid of it an simply returns.
>>>>
>>>> I'm just curious what the reasoning is for this? It isn't trying to set
>>>> y to anything at all.
>>>>
>>>
>>> The optimization is performed here:
>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/InstructionSimplify.cpp?revision=233938&view=markup#l1278
>>>
>>> What will happen is:
>>>   %shr = lshr i16, %x, 129
>>>   store i16 %shr, i16* @y
>>>
>>> will get transformed into:
>>>   store i16 undef, i16* @y
>>>
>>> Then we will delete the store of undef using the following:
>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp?revision=234601&view=markup#l978
>>>
>>>
>>>> Thanks.
>>>>
>>>> _______________________________________________
>>>> 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/20150420/04c07113/attachment.html>


More information about the llvm-dev mailing list