Chromium Code Reviews| Index: test/CodeGen/X86/fast-isel-call-x86-64.ll |
| =================================================================== |
| --- test/CodeGen/X86/fast-isel-call-x86-64.ll (revision 0) |
| +++ test/CodeGen/X86/fast-isel-call-x86-64.ll (revision 0) |
| @@ -0,0 +1,56 @@ |
| +; RUN: llc < %s -O0 -fast-isel-abort -march=x86-64 | FileCheck %s |
| + |
|
nlewycky
2011/08/01 20:49:28
Please add a comment that you'd like this to be fo
krasin
2011/08/01 20:55:37
Done.
|
| +%struct.s = type {i32, i32, i32} |
| + |
| +define i32 @test1() nounwind { |
| +tak: |
| + %tmp = call i1 @foo() |
| + br i1 %tmp, label %BB1, label %BB2 |
| +BB1: |
| + ret i32 1 |
| +BB2: |
| + ret i32 0 |
| +; CHECK: test1: |
| +; CHECK: callq |
| +; CHECK-NEXT: testb $1 |
| +} |
| +declare zeroext i1 @foo() nounwind |
| + |
| +declare void @foo2(%struct.s* byval) |
| + |
| +define void @test2(%struct.s* %d) nounwind { |
| + call void @foo2(%struct.s* byval %d ) |
| + ret void |
| + |
| +; CHECK: test2: |
| +; CHECK: subq $24, %rsp |
| +; CHECK: movq (%rdi), %rax |
| +; CHECK: movq %rax, (%rsp) |
| +; CHECK: movl 8(%rdi), %ecx |
| +; CHECK: movl %ecx, 8(%rsp) |
| +; CHECK: callq foo2 |
| +; CHECK: addq $24, %rsp |
| +; CHECK: ret |
| +} |
| + |
| +define void @test5() nounwind { |
| +entry: |
| + call void @foo5(i32 0) |
| + call void @foo5(i32 1) |
| + call void @foo5(i32 2) |
| + call void @foo5(i32 3) |
| + ret void |
| +; CHECK: test5: |
| +; CHECK: movl $0, %edi |
| +; CHECK: callq foo5 |
| +; CHECK: movl $1, %edi |
| +; CHECK: callq foo5 |
| +; CHECK: movl $2, %edi |
| +; CHECK: callq foo5 |
| +; CHECK: movl $3, %edi |
| +; CHECK: callq foo5 |
| +; CHECK: popq %rax |
| +; CHECK: ret |
| +} |
| + |
| +declare void @foo5(i32) |