[llvm] r184222 - During SelectionDAG building explicitly set a node to constant zero when the

Quentin Colombet qcolombet at apple.com
Thu Jun 20 09:21:14 PDT 2013


On Jun 20, 2013, at 5:14 AM, Duncan Sands <duncan.sands at gmail.com> wrote:

> Hi Quentin,
> 
> On 18/06/13 22:14, Quentin Colombet wrote:
>> Author: qcolombet
>> Date: Tue Jun 18 15:14:39 2013
>> New Revision: 184222
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=184222&view=rev
>> Log:
>> During SelectionDAG building explicitly set a node to constant zero when the
>> value is zero.
> 
> you could also set it explicitly to -1 when all bits are sign bits.
Yes, you are right.
> 
>> This allows optmizations to kick in more easily.
>> Fix some test cases so that they remain meaningful (i.e., not completely dead
>> coded) when optimizations apply.
>> 
>> <rdar://problem/14096009> superfluous multiply by high part of zero-extended
>> value.
> 
> ...
> 
>> Modified: llvm/trunk/test/CodeGen/ARM/mvn.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/mvn.ll?rev=184222&r1=184221&r2=184222&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/CodeGen/ARM/mvn.ll (original)
>> +++ llvm/trunk/test/CodeGen/ARM/mvn.ll Tue Jun 18 15:14:39 2013
>> @@ -1,4 +1,4 @@
>> -; RUN: llc < %s -march=arm | grep mvn | count 8
>> +; RUN: llc < %s -march=arm | grep mvn | count 9
> 
> Is this an improvement?
Yes, but it is not obvious from the way the check is written though.
Indeed, the sequence:
mov	r0, #0
sub	r0, r0, #3
becomes
mvn	r0, #2

> 
> ...
>> Modified: llvm/trunk/test/CodeGen/X86/2007-10-12-CoalesceExtSubReg.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2007-10-12-CoalesceExtSubReg.ll?rev=184222&r1=184221&r2=184222&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/CodeGen/X86/2007-10-12-CoalesceExtSubReg.ll (original)
>> +++ llvm/trunk/test/CodeGen/X86/2007-10-12-CoalesceExtSubReg.ll Tue Jun 18 15:14:39 2013
>> @@ -7,8 +7,10 @@ entry:
>>  cond_next127:		; preds = %cond_next391, %entry
>>  	%v.1 = phi i32 [ undef, %entry ], [ %tmp411, %cond_next391 ]		; <i32> [#uses=1]
>>  	%tmp149 = mul i32 0, %v.1		; <i32> [#uses=0]
>> -	%tmp254 = and i32 0, 15		; <i32> [#uses=1]
>> -	%tmp256 = and i32 0, 15		; <i32> [#uses=2]
>> +	%tmpss = load i32* %ss, align 4		; <i32> [#uses=1]
>> +	%tmpbp = load i32* %bp, align 4		; <i32> [#uses=2]
>> +	%tmp254 = and i32 %tmpss, 15		; <i32> [#uses=1]
>> +	%tmp256 = and i32 %tmpbp, 15		; <i32> [#uses=2]
> 
> This looks like a regression.
No, it is not, I have to modify the input of test to prevent dead code eliminate to remove everything.
Thus, this is a complexification (is that a word?) of the test to exerce something... I have to admit what I was about to remove this test has the code was completely dead before the change in the input.

-Quentin

> 
> Ciao, Duncan.
> _______________________________________________
> 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/20130620/cca476bd/attachment.html>


More information about the llvm-commits mailing list