xref: /llvm-project/llvm/test/CodeGen/X86/byval6.ll (revision 2f448bf509432c1a19ec46ab8cbc7353c03c6280)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc < %s -mcpu=generic -mtriple=i686-- | FileCheck %s
3
4	%struct.W = type { x86_fp80, x86_fp80 }
5@B = global %struct.W { x86_fp80 0xK4001A000000000000000, x86_fp80 0xK4001C000000000000000 }, align 32
6@.cpx = internal constant %struct.W { x86_fp80 0xK4001E000000000000000, x86_fp80 0xK40028000000000000000 }
7
8define i32 @main() nounwind  {
9; CHECK-LABEL: main:
10; CHECK:       # %bb.0: # %entry
11; CHECK-NEXT:    pushl %ebx
12; CHECK-NEXT:    pushl %edi
13; CHECK-NEXT:    pushl %esi
14; CHECK-NEXT:    movl .cpx+20, %eax
15; CHECK-NEXT:    movl .cpx+16, %ecx
16; CHECK-NEXT:    movl .cpx+12, %edx
17; CHECK-NEXT:    movl .cpx+8, %esi
18; CHECK-NEXT:    movl .cpx+4, %edi
19; CHECK-NEXT:    movl .cpx, %ebx
20; CHECK-NEXT:    pushl %eax
21; CHECK-NEXT:    pushl %ecx
22; CHECK-NEXT:    pushl %edx
23; CHECK-NEXT:    pushl %esi
24; CHECK-NEXT:    pushl %edi
25; CHECK-NEXT:    pushl %ebx
26; CHECK-NEXT:    pushl $3
27; CHECK-NEXT:    calll bar@PLT
28; CHECK-NEXT:    addl $28, %esp
29; CHECK-NEXT:    movl B+20, %eax
30; CHECK-NEXT:    movl B+16, %ecx
31; CHECK-NEXT:    movl B+12, %edx
32; CHECK-NEXT:    movl B+8, %esi
33; CHECK-NEXT:    movl B+4, %edi
34; CHECK-NEXT:    movl B, %ebx
35; CHECK-NEXT:    pushl %eax
36; CHECK-NEXT:    pushl %ecx
37; CHECK-NEXT:    pushl %edx
38; CHECK-NEXT:    pushl %esi
39; CHECK-NEXT:    pushl %edi
40; CHECK-NEXT:    pushl %ebx
41; CHECK-NEXT:    pushl $3
42; CHECK-NEXT:    calll baz@PLT
43; CHECK-NEXT:    addl $28, %esp
44; CHECK-NEXT:    popl %esi
45; CHECK-NEXT:    popl %edi
46; CHECK-NEXT:    popl %ebx
47; CHECK-NEXT:    retl
48entry:
49	tail call void (i32, ...) @bar( i32 3, ptr byval(%struct.W) @.cpx ) nounwind
50	tail call void (i32, ...) @baz( i32 3, ptr byval(%struct.W)  @B ) nounwind
51	ret i32 undef
52}
53
54declare void @bar(i32, ...)
55
56declare void @baz(i32, ...)
57