[llvm-commits] [llvm] r142644 - /llvm/trunk/test/CodeGen/X86/block-placement.ll
Jim Grosbach
grosbach at apple.com
Fri Oct 21 08:56:21 PDT 2011
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
More information about the llvm-commits
mailing list