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