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
9 ; HAS-RAX-NEXT: movl $1, %edi
10 ; HAS-RAX-NEXT: xorl %eax, %eax
11 ; HAS-RAX-NEXT: jmp bar@PLT # TAILCALL
15 ; NO-RAX-NEXT: movl $1, %edi
16 ; NO-RAX-NEXT: jmp bar@PLT # TAILCALL
17 tail call void (i32, ...) @bar(i32 1)
21 define void @bar(i32, ...) nounwind {
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
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
65 call void @llvm.va_start(ptr null)
69 declare void @llvm.va_start(ptr)
71 !llvm.module.flags = !{!0}
72 !0 = !{i32 4, !"SkipRaxSetup", i32 1}