[LLVMdev] Making a CopyToReg/CopyFromReg into a zext/sext?

Ryan Taylor ryta1203 at gmail.com
Tue Jan 27 12:50:53 PST 2015


I have a CopyToReg that is moving a 16bit reg to a 32bit reg, it's
currently being mapped out as a simple mov (not an ext), I would like to
change that to an ext. It seemed that the SelDAG was the easiest and
cleanest way to do this.

I can change the mov to an extension MI in the .td file; however, I can't
tell at that point whether it's a sext or a zext, so it seemed the SelDAG
was the better place to fix this.

Thanks.

On Tue, Jan 27, 2015 at 3:38 PM, Matt Arsenault <Matthew.Arsenault at amd.com>
wrote:

>  On 01/27/2015 12:28 PM, Ryan Taylor wrote:
>
>  Thanks for getting back to me.
>
>  So those nodes record if the type has already been expanded from a
> narrower type. Can you elaborate how I could use these to help? Again, I'm
> pretty unfamiliar with the SDNodes.
>
>  Thanks.
>
> What is the problem you are trying to solve? These should allow
> SimplifyDemandedBits type optimizations understand that your copy
> implicitly extended the source
>
>
>
>
> On Tue, Jan 27, 2015 at 3:22 PM, Matt Arsenault <Matthew.Arsenault at amd.com
> > wrote:
>
>>   On 01/27/2015 12:16 PM, Ryan Taylor wrote:
>>
>>  I have a CopyToReg that is copying from different size types, what's
>> the best way to change that to a zext or sext node based on signed or
>> unsigned?
>>
>>  I'm fairly unfamiliar with SelectionDAG process (outside of the docs on
>> llvm website).
>>
>>  It seems like I should be able to insert a custom hook using the
>> register class to identify the type, potentially in ISelDAGToDag.cpp or is
>> there a better place for this to be done?
>>
>>  Thanks.
>>
>>
>>  It sounds to me like you are looking for the AssertSext / AssertZext
>> nodes
>>
>> -Matt
>>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150127/67f2b164/attachment.html>


More information about the llvm-dev mailing list