102 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --no_x86_scrub_sp --no_x86_scrub_mem_shuffle2; RUN: llc < %s -mtriple=i386-pc-windows-msvc | FileCheck %s --check-prefix=MSVC3; RUN: llc < %s -mtriple=i386-pc-mingw32 | FileCheck %s --check-prefix=MINGW4; RUN: llc < %s -mtriple=i386-pc-linux-gnu | FileCheck %s --check-prefix=LINUX5; RUN: llc < %s -mtriple=i386--apple-darwin | FileCheck %s --check-prefix=DARWIN6 7define void @foo(i32 %0, x86_fp80 %1, i32 %2) nounwind {8; MSVC-LABEL: foo:9; MSVC: # %bb.0:10; MSVC-NEXT: pushl %ebp11; MSVC-NEXT: movl %esp, %ebp12; MSVC-NEXT: andl $-16, %esp13; MSVC-NEXT: subl $32, %esp14; MSVC-NEXT: fldt 24(%ebp)15; MSVC-NEXT: fstpt (%esp)16; MSVC-NEXT: leal 8(%ebp), %eax17; MSVC-NEXT: pushl %eax18; MSVC-NEXT: calll _escape19; MSVC-NEXT: addl $4, %esp20; MSVC-NEXT: movl %esp, %eax21; MSVC-NEXT: pushl %eax22; MSVC-NEXT: calll _escape23; MSVC-NEXT: addl $4, %esp24; MSVC-NEXT: leal 40(%ebp), %eax25; MSVC-NEXT: pushl %eax26; MSVC-NEXT: calll _escape27; MSVC-NEXT: addl $4, %esp28; MSVC-NEXT: movl %ebp, %esp29; MSVC-NEXT: popl %ebp30; MSVC-NEXT: retl31;32; MINGW-LABEL: foo:33; MINGW: # %bb.0:34; MINGW-NEXT: pushl %ebp35; MINGW-NEXT: movl %esp, %ebp36; MINGW-NEXT: andl $-16, %esp37; MINGW-NEXT: subl $32, %esp38; MINGW-NEXT: fldt 12(%ebp)39; MINGW-NEXT: fstpt (%esp)40; MINGW-NEXT: leal 8(%ebp), %eax41; MINGW-NEXT: pushl %eax42; MINGW-NEXT: calll _escape43; MINGW-NEXT: addl $4, %esp44; MINGW-NEXT: movl %esp, %eax45; MINGW-NEXT: pushl %eax46; MINGW-NEXT: calll _escape47; MINGW-NEXT: addl $4, %esp48; MINGW-NEXT: leal 24(%ebp), %eax49; MINGW-NEXT: pushl %eax50; MINGW-NEXT: calll _escape51; MINGW-NEXT: addl $4, %esp52; MINGW-NEXT: movl %ebp, %esp53; MINGW-NEXT: popl %ebp54; MINGW-NEXT: retl55;56; LINUX-LABEL: foo:57; LINUX: # %bb.0:58; LINUX-NEXT: subl $28, %esp59; LINUX-NEXT: fldt 36(%esp)60; LINUX-NEXT: fstpt 16(%esp)61; LINUX-NEXT: leal 32(%esp), %eax62; LINUX-NEXT: movl %eax, (%esp)63; LINUX-NEXT: calll escape@PLT64; LINUX-NEXT: leal 16(%esp), %eax65; LINUX-NEXT: movl %eax, (%esp)66; LINUX-NEXT: calll escape@PLT67; LINUX-NEXT: leal 48(%esp), %eax68; LINUX-NEXT: movl %eax, (%esp)69; LINUX-NEXT: calll escape@PLT70; LINUX-NEXT: addl $28, %esp71; LINUX-NEXT: retl72;73; DARWIN-LABEL: foo:74; DARWIN: ## %bb.0:75; DARWIN-NEXT: subl $44, %esp76; DARWIN-NEXT: fldt 52(%esp)77; DARWIN-NEXT: fstpt 16(%esp)78; DARWIN-NEXT: leal 48(%esp), %eax79; DARWIN-NEXT: movl %eax, (%esp)80; DARWIN-NEXT: calll _escape81; DARWIN-NEXT: leal 16(%esp), %eax82; DARWIN-NEXT: movl %eax, (%esp)83; DARWIN-NEXT: calll _escape84; DARWIN-NEXT: leal 68(%esp), %eax85; DARWIN-NEXT: movl %eax, (%esp)86; DARWIN-NEXT: calll _escape87; DARWIN-NEXT: addl $44, %esp88; DARWIN-NEXT: retl89 %4 = alloca i32, align 490 %5 = alloca x86_fp80, align 1691 %6 = alloca i32, align 492 store i32 %0, ptr %4, align 493 store x86_fp80 %1, ptr %5, align 1694 store i32 %2, ptr %6, align 495 call void @escape(ptr nonnull %4)96 call void @escape(ptr nonnull %5)97 call void @escape(ptr nonnull %6)98 ret void99}100 101declare void @escape(ptr)102