[llvm-commits] [llvm] r142644 - /llvm/trunk/test/CodeGen/X86/block-placement.ll

Chandler Carruth chandlerc at gmail.com
Fri Oct 21 09:41:59 PDT 2011


This is from a second batch of tests I added; I'm testing a fix now. Sorry
for the fallout, I didn't check enough of the bots before crashing!

-Chandler

On Fri, Oct 21, 2011 at 8:56 AM, Jim Grosbach <grosbach at apple.com> wrote:

> Hey Chandler,
>
> I think this test needs a target triple, not just -march. It's failing on
> Darwin with:
>
> /Users/grosbaj/sources/llvm/test/CodeGen/X86/block-placement.ll:82:10:
> error: expected string not found in input
> ; CHECK: .align 16,
>         ^
> <stdin>:90:2: note: scanning from here
>  xorl %eax, %eax
>  ^
> <stdin>:93:2: note: possible intended match here
>  .align 4, 0x90
>
> -Jim
>
> On Oct 21, 2011, at 1:01 AM, Chandler Carruth wrote:
>
> > Author: chandlerc
> > Date: Fri Oct 21 03:01:56 2011
> > New Revision: 142644
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=142644&view=rev
> > Log:
> > Add a very basic test for MachineBlockPlacement. This is essentially the
> > canonical example I used when developing it, and is one of the primary
> > motivating real-world use cases for __builtin_expect (when burried under
> > a macro).
> >
> > I'm working on more test cases here, but I'm trying to make sure both
> > that the pass is doing the right thing with the test cases and that they
> > aren't too brittle to changes elsewhere in the code generation pipeline.
> >
> > Feedback and/or suggestions on how to test this are very welcome.
> > Especially feedback on whether testing the block comments is a good
> > strategy; I couldn't find any good examples to steal from but all the
> > other ideas I had were a lot uglier or more fragile.
> >
> > Added:
> >    llvm/trunk/test/CodeGen/X86/block-placement.ll
> >
> > Added: llvm/trunk/test/CodeGen/X86/block-placement.ll
> > URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/block-placement.ll?rev=142644&view=auto
> >
> ==============================================================================
> > --- llvm/trunk/test/CodeGen/X86/block-placement.ll (added)
> > +++ llvm/trunk/test/CodeGen/X86/block-placement.ll Fri Oct 21 03:01:56
> 2011
> > @@ -0,0 +1,75 @@
> > +; RUN: llc -march=x86 -enable-block-placement < %s | FileCheck %s
> > +
> > +declare void @error(i32 %i, i32 %a, i32 %b)
> > +
> > +define i32 @test1(i32 %i, i32* %a, i32 %b) {
> > +; Test a chain of ifs, where the block guarded by the if is error
> handling code
> > +; that is not expected to run.
> > +; CHECK: test1:
> > +; CHECK: %entry
> > +; CHECK: %else1
> > +; CHECK: %else2
> > +; CHECK: %else3
> > +; CHECK: %else4
> > +; CHECK: %exit
> > +; CHECK: %then1
> > +; CHECK: %then2
> > +; CHECK: %then3
> > +; CHECK: %then4
> > +; CHECK: %then5
> > +
> > +entry:
> > +  %gep1 = getelementptr i32* %a, i32 1
> > +  %val1 = load i32* %gep1
> > +  %cond1 = icmp ugt i32 %val1, 1
> > +  br i1 %cond1, label %then1, label %else1, !prof !0
> > +
> > +then1:
> > +  call void @error(i32 %i, i32 1, i32 %b)
> > +  br label %else1
> > +
> > +else1:
> > +  %gep2 = getelementptr i32* %a, i32 2
> > +  %val2 = load i32* %gep2
> > +  %cond2 = icmp ugt i32 %val2, 2
> > +  br i1 %cond2, label %then2, label %else2, !prof !0
> > +
> > +then2:
> > +  call void @error(i32 %i, i32 1, i32 %b)
> > +  br label %else2
> > +
> > +else2:
> > +  %gep3 = getelementptr i32* %a, i32 3
> > +  %val3 = load i32* %gep3
> > +  %cond3 = icmp ugt i32 %val3, 3
> > +  br i1 %cond3, label %then3, label %else3, !prof !0
> > +
> > +then3:
> > +  call void @error(i32 %i, i32 1, i32 %b)
> > +  br label %else3
> > +
> > +else3:
> > +  %gep4 = getelementptr i32* %a, i32 4
> > +  %val4 = load i32* %gep4
> > +  %cond4 = icmp ugt i32 %val4, 4
> > +  br i1 %cond4, label %then4, label %else4, !prof !0
> > +
> > +then4:
> > +  call void @error(i32 %i, i32 1, i32 %b)
> > +  br label %else4
> > +
> > +else4:
> > +  %gep5 = getelementptr i32* %a, i32 3
> > +  %val5 = load i32* %gep5
> > +  %cond5 = icmp ugt i32 %val5, 3
> > +  br i1 %cond5, label %then5, label %exit, !prof !0
> > +
> > +then5:
> > +  call void @error(i32 %i, i32 1, i32 %b)
> > +  br label %exit
> > +
> > +exit:
> > +  ret i32 %b
> > +}
> > +
> > +!0 = metadata !{metadata !"branch_weights", i32 4, i32 64}
> >
> >
> > _______________________________________________
> > 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20111021/d9b4fe75/attachment.html>


More information about the llvm-commits mailing list