[llvm-commits] [llvm] r48356 - /llvm/trunk/lib/Target/X86/README.txt

Evan Cheng evan.cheng at apple.com
Tue Mar 18 10:13:24 PDT 2008


On Mar 17, 2008, at 10:52 PM, Christopher Lamb wrote:

>
> On Mar 17, 2008, at 11:44 AM, Evan Cheng wrote:
>
>>
>> On Mar 16, 2008, at 7:24 PM, Chris Lattner wrote:
>>
>>>
>>> On Mar 15, 2008, at 2:01 PM, Christopher Lamb wrote:
>>>
>>>> Here's a proposed solution. It seems to work OK for me. It'll be
>>>> even better when the undef and insert_subreg coalescing support  
>>>> gets
>>>> done.
>>>
>>> Thanks for tackling this!  Could this be done as a target  
>>> independent
>>> dag combine by selecting to "sext_in_reg(shrl)" when sext_in_reg is
>>> available (or before legalize)?  This avoids the apparent size  
>>> changes
>>> of the register.  On PPC, for example, this would codegen to:
>>
>> I am not sure about utilizing sext_in_reg, is that correct?
>
> I looked at this and settled on sext, rather than sext_in_reg.
>
>> However, this can definitely be target independent. There is a
>> TLI.isTruncateFree() that you can check to ensure using truncate is
>> profitable.
>>
>> +      if (CN->getValue() == ValueSize - 8) {
>> +        TruncVT  = MVT::i8;
>> +      } else if (CN->getValue() == ValueSize - 16) {
>> +        TruncVT  = MVT::i16;
>> +      } else if (CN->getValue() == ValueSize - 32) {
>> +        TruncVT  = MVT::i32;
>> +      }
>> +
>> +      if (TruncVT != MVT::isVoid) {
>>
>> Please just use early exit:
>>
>> } else {
>>    return SDOperand();
>> }
>
> You are correct, for now. I was thinking of the future when there  
> may be other xforms that the function would need to handle! But we  
> can cross that bridge when we come to it.
>
>> It's just a matter of style, but checking TruncVT is not MVT::isVoid
>> seems weird to me.
>
> It is. What would you suggest if I needed to not exit early, say  
> because of other xforms that follow?

Not sure! :-) We'll worry about it in the future!

Evan

> --
> Chris
>
>>> _test:
>>> 	srwi r2, r3, 16
>>> 	extsb r3, r2
>>> 	blr
>>>
>>> instead of:
>>>
>>> _test2:
>>> 	slwi r2, r3, 8
>>> 	srawi r3, r2, 24
>>> 	blr
>>>
>>> On X86, this is a win because sextinreg (aka movsbl and friends) are
>>> 3-
>>> address, but sar is 2-address, giving:
>>>
>>> _test:
>>> 	shrl	$16, %edi
>>> 	movsbl	%dil, %eax
>>> 	ret
>>>
>>> instead of:
>>>
>>> _test2:
>>> 	shll	$8, %edi
>>> 	movl	%edi, %eax
>>> 	sarl	$24, %eax
>>> 	ret
>>>
>>> What do you think?
>>>
>>> -Chris
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
> --
> Christopher Lamb
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20080318/7362dc6e/attachment.html>


More information about the llvm-commits mailing list