Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / X86 / pr23258.ll
blob3b996a9e39e036277c7f3a2fc108292d46b6acc5
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu | FileCheck %s --check-prefix=HAS-RAX
3 ; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=+sse | FileCheck %s --check-prefix=HAS-RAX
4 ; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=-sse | FileCheck %s --check-prefix=NO-RAX
6 define void @foo() {
7 ; HAS-RAX-LABEL: foo:
8 ; HAS-RAX:       # %bb.0:
9 ; HAS-RAX-NEXT:    movl $1, %edi
10 ; HAS-RAX-NEXT:    xorl %eax, %eax
11 ; HAS-RAX-NEXT:    jmp bar@PLT # TAILCALL
13 ; NO-RAX-LABEL: foo:
14 ; NO-RAX:       # %bb.0:
15 ; NO-RAX-NEXT:    movl $1, %edi
16 ; NO-RAX-NEXT:    jmp bar@PLT # TAILCALL
17   tail call void (i32, ...) @bar(i32 1)
18   ret void
21 define void @bar(i32, ...) nounwind {
22 ; HAS-RAX-LABEL: bar:
23 ; HAS-RAX:       # %bb.0:
24 ; HAS-RAX-NEXT:    subq $56, %rsp
25 ; HAS-RAX-NEXT:    movq %rsi, -{{[0-9]+}}(%rsp)
26 ; HAS-RAX-NEXT:    movq %rdx, -{{[0-9]+}}(%rsp)
27 ; HAS-RAX-NEXT:    movq %rcx, -{{[0-9]+}}(%rsp)
28 ; HAS-RAX-NEXT:    movq %r8, -{{[0-9]+}}(%rsp)
29 ; HAS-RAX-NEXT:    movq %r9, -{{[0-9]+}}(%rsp)
30 ; HAS-RAX-NEXT:    testb %al, %al
31 ; HAS-RAX-NEXT:    je .LBB1_2
32 ; HAS-RAX-NEXT:  # %bb.1:
33 ; HAS-RAX-NEXT:    movaps %xmm0, -{{[0-9]+}}(%rsp)
34 ; HAS-RAX-NEXT:    movaps %xmm1, -{{[0-9]+}}(%rsp)
35 ; HAS-RAX-NEXT:    movaps %xmm2, -{{[0-9]+}}(%rsp)
36 ; HAS-RAX-NEXT:    movaps %xmm3, -{{[0-9]+}}(%rsp)
37 ; HAS-RAX-NEXT:    movaps %xmm4, -{{[0-9]+}}(%rsp)
38 ; HAS-RAX-NEXT:    movaps %xmm5, (%rsp)
39 ; HAS-RAX-NEXT:    movaps %xmm6, {{[0-9]+}}(%rsp)
40 ; HAS-RAX-NEXT:    movaps %xmm7, {{[0-9]+}}(%rsp)
41 ; HAS-RAX-NEXT:  .LBB1_2:
42 ; HAS-RAX-NEXT:    leaq {{[0-9]+}}(%rsp), %rax
43 ; HAS-RAX-NEXT:    movq %rax, 8
44 ; HAS-RAX-NEXT:    leaq -{{[0-9]+}}(%rsp), %rax
45 ; HAS-RAX-NEXT:    movq %rax, 16
46 ; HAS-RAX-NEXT:    movl $8, 0
47 ; HAS-RAX-NEXT:    movl $48, 4
48 ; HAS-RAX-NEXT:    addq $56, %rsp
49 ; HAS-RAX-NEXT:    retq
51 ; NO-RAX-LABEL: bar:
52 ; NO-RAX:       # %bb.0:
53 ; NO-RAX-NEXT:    movq %rsi, -{{[0-9]+}}(%rsp)
54 ; NO-RAX-NEXT:    movq %rdx, -{{[0-9]+}}(%rsp)
55 ; NO-RAX-NEXT:    movq %rcx, -{{[0-9]+}}(%rsp)
56 ; NO-RAX-NEXT:    movq %r8, -{{[0-9]+}}(%rsp)
57 ; NO-RAX-NEXT:    movq %r9, -{{[0-9]+}}(%rsp)
58 ; NO-RAX-NEXT:    leaq {{[0-9]+}}(%rsp), %rax
59 ; NO-RAX-NEXT:    movq %rax, 8
60 ; NO-RAX-NEXT:    leaq -{{[0-9]+}}(%rsp), %rax
61 ; NO-RAX-NEXT:    movq %rax, 16
62 ; NO-RAX-NEXT:    movl $8, 0
63 ; NO-RAX-NEXT:    movl $48, 4
64 ; NO-RAX-NEXT:    retq
65   call void @llvm.va_start(ptr null)
66   ret void
69 declare void @llvm.va_start(ptr)
71 !llvm.module.flags = !{!0}
72 !0 = !{i32 4, !"SkipRaxSetup", i32 1}