[llvm-commits] [llvm] r144267 - in /llvm/trunk: lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp test/CodeGen/X86/2006-05-11-InstrSched.ll test/CodeGen/X86/2009-04-21-NoReloadImpDef.ll test/CodeGen/X86/change-compare-stride-1.ll test/CodeGen/X86/fold-pcmpeqd-0.ll test/CodeGen/X86/iv-users-in-other-loops.ll test/CodeGen/X86/lsr-loop-exit-cond.ll test/CodeGen/X86/lsr-reuse-trunc.ll test/CodeGen/X86/masked-iv-safe.ll test/CodeGen/X86/multiple-loop-post-inc.ll test/CodeGen/X86/sse2.ll test/CodeGen/X86/sse3.ll
Evan Cheng
evan.cheng at apple.com
Thu Nov 10 10:29:59 PST 2011
That's really bizarre. It's obviously exposing a unrelated bug. Thanks for looking into this.
Evan
On Nov 10, 2011, at 3:13 AM, Duncan Sands wrote:
> Hi Evan, this also broke the buildbot
>
> http://lab.llvm.org:8011/builders/dragonegg-i386-linux/builds/365
>
> I'm trying to work out what is wrong.
>
> Ciao, Duncan.
>
> On 10/11/11 08:43, Evan Cheng wrote:
>> Author: evancheng
>> Date: Thu Nov 10 01:43:16 2011
>> New Revision: 144267
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=144267&view=rev
>> Log:
>> Use a bigger hammer to fix PR11314 by disabling the "forcing two-address
>> instruction lower optimization" in the pre-RA scheduler.
>>
>> The optimization, rather the hack, was done before MI use-list was available.
>> Now we should be able to implement it in a better way, perhaps in the
>> two-address pass until a MI scheduler is available.
>>
>> Now that the scheduler has to backtrack to handle call sequences. Adding
>> artificial scheduling constraints is just not safe. Furthermore, the hack
>> is not taking all the other scheduling decisions into consideration so it's just
>> as likely to pessimize code. So I view disabling this optimization goodness
>> regardless of PR11314.
>>
>> Modified:
>> llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
>> llvm/trunk/test/CodeGen/X86/2006-05-11-InstrSched.ll
>> llvm/trunk/test/CodeGen/X86/2009-04-21-NoReloadImpDef.ll
>> llvm/trunk/test/CodeGen/X86/change-compare-stride-1.ll
>> llvm/trunk/test/CodeGen/X86/fold-pcmpeqd-0.ll
>> llvm/trunk/test/CodeGen/X86/iv-users-in-other-loops.ll
>> llvm/trunk/test/CodeGen/X86/lsr-loop-exit-cond.ll
>> llvm/trunk/test/CodeGen/X86/lsr-reuse-trunc.ll
>> llvm/trunk/test/CodeGen/X86/masked-iv-safe.ll
>> llvm/trunk/test/CodeGen/X86/multiple-loop-post-inc.ll
>> llvm/trunk/test/CodeGen/X86/sse2.ll
>> llvm/trunk/test/CodeGen/X86/sse3.ll
>>
>> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp?rev=144267&r1=144266&r2=144267&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp Thu Nov 10 01:43:16 2011
>> @@ -89,6 +89,9 @@
>> static cl::opt<bool> DisableSchedHeight(
>> "disable-sched-height", cl::Hidden, cl::init(false),
>> cl::desc("Disable scheduled-height priority in sched=list-ilp"));
>> +static cl::opt<bool> Disable2AddrHack(
>> + "disable-2addr-hack", cl::Hidden, cl::init(true),
>> + cl::desc("Disable scheduler's two-address hack"));
>>
>> static cl::opt<int> MaxReorderWindow(
>> "max-sched-reorder", cl::Hidden, cl::init(6),
>> @@ -2628,7 +2631,8 @@
>> void RegReductionPQBase::initNodes(std::vector<SUnit> &sunits) {
>> SUnits =&sunits;
>> // Add pseudo dependency edges for two-address nodes.
>> - AddPseudoTwoAddrDeps();
>> + if (!Disable2AddrHack)
>> + AddPseudoTwoAddrDeps();
>> // Reroute edges to nodes with multiple uses.
>> if (!TracksRegPressure)
>> PrescheduleNodesWithMultipleUses();
>>
>> Modified: llvm/trunk/test/CodeGen/X86/2006-05-11-InstrSched.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2006-05-11-InstrSched.ll?rev=144267&r1=144266&r2=144267&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/CodeGen/X86/2006-05-11-InstrSched.ll (original)
>> +++ llvm/trunk/test/CodeGen/X86/2006-05-11-InstrSched.ll Thu Nov 10 01:43:16 2011
>> @@ -1,5 +1,5 @@
>> ; RUN: llc< %s -march=x86 -mtriple=i386-linux-gnu -mattr=+sse2 -stats -realign-stack=0 |&\
>> -; RUN: grep {asm-printer} | grep 34
>> +; RUN: grep {asm-printer} | grep 35
>>
>> target datalayout = "e-p:32:32"
>> define void @foo(i32* %mc, i32* %bp, i32* %ms, i32* %xmb, i32* %mpp, i32* %tpmm, i32* %ip, i32* %tpim, i32* %dpp, i32* %tpdm, i32* %bpi, i32 %M) nounwind {
>>
>> Modified: llvm/trunk/test/CodeGen/X86/2009-04-21-NoReloadImpDef.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/2009-04-21-NoReloadImpDef.ll?rev=144267&r1=144266&r2=144267&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/CodeGen/X86/2009-04-21-NoReloadImpDef.ll (original)
>> +++ llvm/trunk/test/CodeGen/X86/2009-04-21-NoReloadImpDef.ll Thu Nov 10 01:43:16 2011
>> @@ -5,7 +5,6 @@
>>
>> ; CHECK: pextrw $14
>> ; CHECK-NEXT: shrl $8
>> -; CHECK-NEXT: (%ebp)
>> ; CHECK-NEXT: pinsrw
>>
>> define void @update(i8** %args_list) nounwind {
>>
>> Modified: llvm/trunk/test/CodeGen/X86/change-compare-stride-1.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/change-compare-stride-1.ll?rev=144267&r1=144266&r2=144267&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/CodeGen/X86/change-compare-stride-1.ll (original)
>> +++ llvm/trunk/test/CodeGen/X86/change-compare-stride-1.ll Thu Nov 10 01:43:16 2011
>> @@ -3,6 +3,10 @@
>> ; Nested LSR is required to optimize this case.
>> ; We do not expect to see this form of IR without -enable-iv-rewrite.
>>
>> +; xfailed for now because the scheduler two-address hack has been disabled.
>> +; Now it's generating a leal -1 rather than a decq.
>> +; XFAIL: *
>> +
>> define void @borf(i8* nocapture %in, i8* nocapture %out) nounwind {
>> ; CHECK: borf:
>> ; CHECK-NOT: inc
>>
>> Modified: llvm/trunk/test/CodeGen/X86/fold-pcmpeqd-0.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/fold-pcmpeqd-0.ll?rev=144267&r1=144266&r2=144267&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/CodeGen/X86/fold-pcmpeqd-0.ll (original)
>> +++ llvm/trunk/test/CodeGen/X86/fold-pcmpeqd-0.ll Thu Nov 10 01:43:16 2011
>> @@ -1,5 +1,7 @@
>> -; RUN: llc< %s -mtriple=i386-apple-darwin -mcpu=yonah -regalloc=linearscan | FileCheck --check-prefix=I386 %s
>> ; RUN: llc< %s -mtriple=x86_64-apple-darwin | FileCheck --check-prefix=X86-64 %s
>> +; DISABLED: llc< %s -mtriple=i386-apple-darwin -mcpu=yonah -regalloc=linearscan | FileCheck --check-prefix=I386 %s
>> +
>> +; i386 test has been disabled when scheduler 2-addr hack is disabled.
>>
>> ; This testcase shouldn't need to spill the -1 value,
>> ; so it should just use pcmpeqd to materialize an all-ones vector.
>>
>> Modified: llvm/trunk/test/CodeGen/X86/iv-users-in-other-loops.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/iv-users-in-other-loops.ll?rev=144267&r1=144266&r2=144267&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/CodeGen/X86/iv-users-in-other-loops.ll (original)
>> +++ llvm/trunk/test/CodeGen/X86/iv-users-in-other-loops.ll Thu Nov 10 01:43:16 2011
>> @@ -1,9 +1,8 @@
>> ; RUN: llc< %s -march=x86-64 -enable-lsr-nested -o %t
>> ; RUN: not grep inc %t
>> ; RUN: grep dec %t | count 2
>> -; RUN: grep addq %t | count 12
>> +; RUN: grep addq %t | count 10
>> ; RUN: not grep addb %t
>> -; RUN: not grep leaq %t
>> ; RUN: not grep leal %t
>> ; RUN: not grep movq %t
>>
>>
>> Modified: llvm/trunk/test/CodeGen/X86/lsr-loop-exit-cond.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/lsr-loop-exit-cond.ll?rev=144267&r1=144266&r2=144267&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/CodeGen/X86/lsr-loop-exit-cond.ll (original)
>> +++ llvm/trunk/test/CodeGen/X86/lsr-loop-exit-cond.ll Thu Nov 10 01:43:16 2011
>> @@ -1,6 +1,7 @@
>> ; RUN: llc -march=x86-64< %s | FileCheck %s
>>
>> ; CHECK: decq
>> +; CHECK-NEXT: movl (
>> ; CHECK-NEXT: jne
>>
>> @Te0 = external global [256 x i32] ;<[256 x i32]*> [#uses=5]
>>
>> Modified: llvm/trunk/test/CodeGen/X86/lsr-reuse-trunc.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/lsr-reuse-trunc.ll?rev=144267&r1=144266&r2=144267&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/CodeGen/X86/lsr-reuse-trunc.ll (original)
>> +++ llvm/trunk/test/CodeGen/X86/lsr-reuse-trunc.ll Thu Nov 10 01:43:16 2011
>> @@ -4,13 +4,14 @@
>> ; Full strength reduction wouldn't reduce register pressure, so LSR should
>> ; stick with indexing here.
>>
>> +; FIXME: This is worse off from disabling of scheduler 2-address hack.
>> ; CHECK: movaps (%{{rsi|rdx}},%rax,4), [[X3:%xmm[0-9]+]]
>> +; CHECK: leaq 4(%rax), %{{rcx|r9}}
>> ; CHECK: cvtdq2ps
>> ; CHECK: orps {{%xmm[0-9]+}}, [[X4:%xmm[0-9]+]]
>> ; CHECK: movaps [[X4]], (%{{rdi|rcx}},%rax,4)
>> -; CHECK: addq $4, %rax
>> -; CHECK: cmpl %eax, (%{{rdx|r8}})
>> -; CHECK-NEXT: jg
>> +; CHECK: cmpl %{{ecx|r9d}}, (%{{rdx|r8}})
>> +; CHECK: jg
>>
>> define void @vvfloorf(float* nocapture %y, float* nocapture %x, i32* nocapture %n) nounwind {
>> entry:
>>
>> Modified: llvm/trunk/test/CodeGen/X86/masked-iv-safe.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/masked-iv-safe.ll?rev=144267&r1=144266&r2=144267&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/CodeGen/X86/masked-iv-safe.ll (original)
>> +++ llvm/trunk/test/CodeGen/X86/masked-iv-safe.ll Thu Nov 10 01:43:16 2011
>> @@ -3,10 +3,10 @@
>> ; RUN: not grep movz %t
>> ; RUN: not grep sar %t
>> ; RUN: not grep shl %t
>> -; RUN: grep add %t | count 2
>> +; RUN: grep add %t | count 1
>> ; RUN: grep inc %t | count 4
>> ; RUN: grep dec %t | count 2
>> -; RUN: grep lea %t | count 2
>> +; RUN: grep lea %t | count 3
>>
>> ; Optimize away zext-inreg and sext-inreg on the loop induction
>> ; variable using trip-count information.
>>
>> Modified: llvm/trunk/test/CodeGen/X86/multiple-loop-post-inc.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/multiple-loop-post-inc.ll?rev=144267&r1=144266&r2=144267&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/CodeGen/X86/multiple-loop-post-inc.ll (original)
>> +++ llvm/trunk/test/CodeGen/X86/multiple-loop-post-inc.ll Thu Nov 10 01:43:16 2011
>> @@ -1,6 +1,10 @@
>> ; RUN: llc -asm-verbose=false -disable-branch-fold -disable-code-place -disable-tail-duplicate -march=x86-64< %s | FileCheck %s
>> ; rdar://7236213
>>
>> +; Xfailed now that scheduler 2-address hack is disabled a lea is generated.
>> +; The code isn't any worse though.
>> +; XFAIL: *
>> +
>> ; CodeGen shouldn't require any lea instructions inside the marked loop.
>> ; It should properly set up post-increment uses and do coalescing for
>> ; the induction variables.
>>
>> Modified: llvm/trunk/test/CodeGen/X86/sse2.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/sse2.ll?rev=144267&r1=144266&r2=144267&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/CodeGen/X86/sse2.ll (original)
>> +++ llvm/trunk/test/CodeGen/X86/sse2.ll Thu Nov 10 01:43:16 2011
>> @@ -178,8 +178,8 @@
>> %tmp27 = shufflevector<4 x float> %tmp9,<4 x float> %tmp21,<4 x i32> < i32 0, i32 1, i32 4, i32 5> ;<<4 x float>> [#uses=1]
>> ret<4 x float> %tmp27
>> ; CHECK: test14:
>> -; CHECK: addps [[X1:%xmm[0-9]+]], [[X0:%xmm[0-9]+]]
>> -; CHECK: subps [[X1]], [[X2:%xmm[0-9]+]]
>> +; CHECK: subps [[X1:%xmm[0-9]+]], [[X2:%xmm[0-9]+]]
>> +; CHECK: addps [[X1]], [[X0:%xmm[0-9]+]]
>> ; CHECK: movlhps [[X2]], [[X0]]
>> }
>>
>>
>> Modified: llvm/trunk/test/CodeGen/X86/sse3.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/sse3.ll?rev=144267&r1=144266&r2=144267&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/CodeGen/X86/sse3.ll (original)
>> +++ llvm/trunk/test/CodeGen/X86/sse3.ll Thu Nov 10 01:43:16 2011
>> @@ -226,15 +226,16 @@
>> }
>>
>>
>> -
>> +; FIXME: t15 is worse off from disabling of scheduler 2-address hack.
>> define<8 x i16> @t15(<8 x i16> %T0,<8 x i16> %T1) nounwind readnone {
>> entry:
>> %tmp8 = shufflevector<8 x i16> %T0,<8 x i16> %T1,<8 x i32> < i32 undef, i32 undef, i32 7, i32 2, i32 8, i32 undef, i32 undef , i32 undef>
>> ret<8 x i16> %tmp8
>> ; X64: t15:
>> -; X64: pextrw $7, %xmm0, %eax
>> +; X64: movdqa %xmm0, %xmm2
>> ; X64: punpcklqdq %xmm1, %xmm0
>> ; X64: pshuflw $-128, %xmm0, %xmm0
>> +; X64: pextrw $7, %xmm2, %eax
>> ; X64: pinsrw $2, %eax, %xmm0
>> ; X64: ret
>> }
>> @@ -247,12 +248,12 @@
>> %tmp9 = shufflevector<16 x i8> %tmp8,<16 x i8> %T0,<16 x i32> < i32 0, i32 1, i32 2, i32 17, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef , i32 undef>
>> ret<16 x i8> %tmp9
>> ; X64: t16:
>> -; X64: movdqa %xmm1, %xmm0
>> -; X64: pslldq $2, %xmm0
>> -; X64: pextrw $1, %xmm0, %eax
>> -; X64: movd %xmm0, %ecx
>> -; X64: pinsrw $0, %ecx, %xmm0
>> -; X64: pextrw $8, %xmm1, %ecx
>> +; X64: movdqa %xmm1, %xmm2
>> +; X64: pslldq $2, %xmm2
>> +; X64: movd %xmm2, %eax
>> +; X64: pinsrw $0, %eax, %xmm0
>> +; X64: pextrw $8, %xmm1, %eax
>> +; X64: pextrw $1, %xmm2, %ecx
>> ; X64: ret
>> }
>>
>>
>>
>> _______________________________________________
>> 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
More information about the llvm-commits
mailing list