brintos

brintos / llvm-project-archived public Read only

0
0
Text · 17.3 KiB · 6f964f0 Raw
471 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i386-pc-win32 -mattr=+sse | FileCheck --check-prefix=WIN32 %s3; RUN: llc < %s -mtriple=x86_64-win32 -mattr=+sse | FileCheck --check-prefix=WIN64 %s4; RUN: llc < %s -mtriple=x86_64-linux-gnu -mattr=+sse | FileCheck --check-prefix=LINUXOSX %s5 6; Test regcall when receiving/returning i17define x86_regcallcc i1 @test_argReti1(i1 %a)  {8; WIN32-LABEL: test_argReti1:9; WIN32:       # %bb.0:10; WIN32-NEXT:    xorb $1, %cl11; WIN32-NEXT:    # kill: def $cl killed $cl killed $ecx12; WIN32-NEXT:    retl13;14; WIN64-LABEL: test_argReti1:15; WIN64:       # %bb.0:16; WIN64-NEXT:    xorb $1, %al17; WIN64-NEXT:    # kill: def $al killed $al killed $eax18; WIN64-NEXT:    retq19;20; LINUXOSX-LABEL: test_argReti1:21; LINUXOSX:       # %bb.0:22; LINUXOSX-NEXT:    xorb $1, %al23; LINUXOSX-NEXT:    # kill: def $al killed $al killed $eax24; LINUXOSX-NEXT:    retq25  %add = add i1 %a, 126  ret i1 %add27}28 29; Test regcall when passing/retrieving i130define x86_regcallcc i1 @test_CallargReti1(i1 %a)  {31; WIN32-LABEL: test_CallargReti1:32; WIN32:       # %bb.0:33; WIN32-NEXT:    xorb $1, %cl34; WIN32-NEXT:    movzbl %cl, %ecx35; WIN32-NEXT:    calll _test_argReti136; WIN32-NEXT:    xorb $1, %cl37; WIN32-NEXT:    retl38;39; WIN64-LABEL: test_CallargReti1:40; WIN64:       # %bb.0:41; WIN64-NEXT:    pushq %rax42; WIN64-NEXT:    .seh_stackalloc 843; WIN64-NEXT:    .seh_endprologue44; WIN64-NEXT:    xorb $1, %al45; WIN64-NEXT:    movzbl %al, %eax46; WIN64-NEXT:    callq test_argReti147; WIN64-NEXT:    xorb $1, %al48; WIN64-NEXT:    .seh_startepilogue49; WIN64-NEXT:    popq %rcx50; WIN64-NEXT:    .seh_endepilogue51; WIN64-NEXT:    retq52; WIN64-NEXT:    .seh_endproc53;54; LINUXOSX-LABEL: test_CallargReti1:55; LINUXOSX:       # %bb.0:56; LINUXOSX-NEXT:    pushq %rax57; LINUXOSX-NEXT:    .cfi_def_cfa_offset 1658; LINUXOSX-NEXT:    xorb $1, %al59; LINUXOSX-NEXT:    movzbl %al, %eax60; LINUXOSX-NEXT:    callq *test_argReti1@GOTPCREL(%rip)61; LINUXOSX-NEXT:    xorb $1, %al62; LINUXOSX-NEXT:    popq %rcx63; LINUXOSX-NEXT:    .cfi_def_cfa_offset 864; LINUXOSX-NEXT:    retq65  %b = add i1 %a, 166  %c = call x86_regcallcc i1 @test_argReti1(i1 %b)67  %d = add i1 %c, 168  ret i1 %d69}70 71;test calling conventions - input parameters, callee saved xmms72define x86_regcallcc <16 x float> @testf32_inp(<16 x float> %a, <16 x float> %b, <16 x float> %c) nounwind {73; WIN32-LABEL: testf32_inp:74; WIN32:       # %bb.0:75; WIN32-NEXT:    pushl %ebp76; WIN32-NEXT:    movl %esp, %ebp77; WIN32-NEXT:    andl $-16, %esp78; WIN32-NEXT:    subl $32, %esp79; WIN32-NEXT:    movaps %xmm7, (%esp) # 16-byte Spill80; WIN32-NEXT:    movaps %xmm6, %xmm781; WIN32-NEXT:    movaps %xmm5, %xmm682; WIN32-NEXT:    movaps %xmm4, %xmm583; WIN32-NEXT:    movaps %xmm1, %xmm484; WIN32-NEXT:    movaps %xmm0, %xmm185; WIN32-NEXT:    addps %xmm5, %xmm086; WIN32-NEXT:    mulps %xmm5, %xmm187; WIN32-NEXT:    subps %xmm1, %xmm088; WIN32-NEXT:    movups 8(%ebp), %xmm189; WIN32-NEXT:    addps %xmm1, %xmm090; WIN32-NEXT:    movaps %xmm4, %xmm191; WIN32-NEXT:    addps %xmm6, %xmm192; WIN32-NEXT:    mulps %xmm6, %xmm493; WIN32-NEXT:    subps %xmm4, %xmm194; WIN32-NEXT:    movups 24(%ebp), %xmm495; WIN32-NEXT:    addps %xmm4, %xmm196; WIN32-NEXT:    movaps %xmm2, %xmm497; WIN32-NEXT:    addps %xmm7, %xmm498; WIN32-NEXT:    mulps %xmm7, %xmm299; WIN32-NEXT:    subps %xmm2, %xmm4100; WIN32-NEXT:    movups 40(%ebp), %xmm2101; WIN32-NEXT:    addps %xmm2, %xmm4102; WIN32-NEXT:    movaps %xmm3, %xmm5103; WIN32-NEXT:    movaps (%esp), %xmm2 # 16-byte Reload104; WIN32-NEXT:    addps %xmm2, %xmm5105; WIN32-NEXT:    mulps %xmm2, %xmm3106; WIN32-NEXT:    subps %xmm3, %xmm5107; WIN32-NEXT:    movups 56(%ebp), %xmm2108; WIN32-NEXT:    addps %xmm2, %xmm5109; WIN32-NEXT:    movaps %xmm4, %xmm2110; WIN32-NEXT:    movaps %xmm5, %xmm3111; WIN32-NEXT:    movl %ebp, %esp112; WIN32-NEXT:    popl %ebp113; WIN32-NEXT:    retl114;115; WIN64-LABEL: testf32_inp:116; WIN64:       # %bb.0:117; WIN64-NEXT:    subq $72, %rsp118; WIN64-NEXT:    movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill119; WIN64-NEXT:    movaps %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill120; WIN64-NEXT:    movaps %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill121; WIN64-NEXT:    movaps %xmm12, (%rsp) # 16-byte Spill122; WIN64-NEXT:    movaps %xmm0, %xmm12123; WIN64-NEXT:    addps %xmm4, %xmm12124; WIN64-NEXT:    movaps %xmm1, %xmm13125; WIN64-NEXT:    addps %xmm5, %xmm13126; WIN64-NEXT:    movaps %xmm2, %xmm14127; WIN64-NEXT:    addps %xmm6, %xmm14128; WIN64-NEXT:    movaps %xmm3, %xmm15129; WIN64-NEXT:    addps %xmm7, %xmm15130; WIN64-NEXT:    mulps %xmm4, %xmm0131; WIN64-NEXT:    subps %xmm0, %xmm12132; WIN64-NEXT:    mulps %xmm5, %xmm1133; WIN64-NEXT:    subps %xmm1, %xmm13134; WIN64-NEXT:    mulps %xmm6, %xmm2135; WIN64-NEXT:    subps %xmm2, %xmm14136; WIN64-NEXT:    mulps %xmm7, %xmm3137; WIN64-NEXT:    subps %xmm3, %xmm15138; WIN64-NEXT:    addps %xmm8, %xmm12139; WIN64-NEXT:    addps %xmm9, %xmm13140; WIN64-NEXT:    addps %xmm10, %xmm14141; WIN64-NEXT:    addps %xmm11, %xmm15142; WIN64-NEXT:    movaps %xmm12, %xmm0143; WIN64-NEXT:    movaps %xmm13, %xmm1144; WIN64-NEXT:    movaps %xmm14, %xmm2145; WIN64-NEXT:    movaps %xmm15, %xmm3146; WIN64-NEXT:    movaps (%rsp), %xmm12 # 16-byte Reload147; WIN64-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload148; WIN64-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload149; WIN64-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload150; WIN64-NEXT:    addq $72, %rsp151; WIN64-NEXT:    retq152;153; LINUXOSX-LABEL: testf32_inp:154; LINUXOSX:       # %bb.0:155; LINUXOSX-NEXT:    movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill156; LINUXOSX-NEXT:    movaps %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill157; LINUXOSX-NEXT:    movaps %xmm13, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill158; LINUXOSX-NEXT:    movaps %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill159; LINUXOSX-NEXT:    movaps %xmm0, %xmm12160; LINUXOSX-NEXT:    addps %xmm4, %xmm12161; LINUXOSX-NEXT:    movaps %xmm1, %xmm13162; LINUXOSX-NEXT:    addps %xmm5, %xmm13163; LINUXOSX-NEXT:    movaps %xmm2, %xmm14164; LINUXOSX-NEXT:    addps %xmm6, %xmm14165; LINUXOSX-NEXT:    movaps %xmm3, %xmm15166; LINUXOSX-NEXT:    addps %xmm7, %xmm15167; LINUXOSX-NEXT:    mulps %xmm4, %xmm0168; LINUXOSX-NEXT:    subps %xmm0, %xmm12169; LINUXOSX-NEXT:    mulps %xmm5, %xmm1170; LINUXOSX-NEXT:    subps %xmm1, %xmm13171; LINUXOSX-NEXT:    mulps %xmm6, %xmm2172; LINUXOSX-NEXT:    subps %xmm2, %xmm14173; LINUXOSX-NEXT:    mulps %xmm7, %xmm3174; LINUXOSX-NEXT:    subps %xmm3, %xmm15175; LINUXOSX-NEXT:    addps %xmm8, %xmm12176; LINUXOSX-NEXT:    addps %xmm9, %xmm13177; LINUXOSX-NEXT:    addps %xmm10, %xmm14178; LINUXOSX-NEXT:    addps %xmm11, %xmm15179; LINUXOSX-NEXT:    movaps %xmm12, %xmm0180; LINUXOSX-NEXT:    movaps %xmm13, %xmm1181; LINUXOSX-NEXT:    movaps %xmm14, %xmm2182; LINUXOSX-NEXT:    movaps %xmm15, %xmm3183; LINUXOSX-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload184; LINUXOSX-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload185; LINUXOSX-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload186; LINUXOSX-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload187; LINUXOSX-NEXT:    retq188  %x1 = fadd <16 x float> %a, %b189  %x2 = fmul <16 x float> %a, %b190  %x3 = fsub <16 x float> %x1, %x2191  %x4 = fadd <16 x float> %x3, %c192  ret <16 x float> %x4193}194 195;test calling conventions - input parameters, callee saved GPRs196define x86_regcallcc i32 @testi32_inp(i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6,197; WIN32-LABEL: testi32_inp:198; WIN32:       # %bb.0:199; WIN32-NEXT:    pushl %ebp200; WIN32-NEXT:    pushl %ebx201; WIN32-NEXT:    subl $8, %esp202; WIN32-NEXT:    movl %edi, %eax203; WIN32-NEXT:    movl %edx, (%esp) # 4-byte Spill204; WIN32-NEXT:    movl %ecx, %edi205; WIN32-NEXT:    movl {{[0-9]+}}(%esp), %ebp206; WIN32-NEXT:    leal (%eax,%esi), %ecx207; WIN32-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill208; WIN32-NEXT:    movl %eax, %ebx209; WIN32-NEXT:    subl %esi, %ebx210; WIN32-NEXT:    movl %edi, %eax211; WIN32-NEXT:    subl %edx, %eax212; WIN32-NEXT:    subl {{[0-9]+}}(%esp), %ebp213; WIN32-NEXT:    imull %eax, %ebp214; WIN32-NEXT:    movl {{[0-9]+}}(%esp), %edx215; WIN32-NEXT:    movl %edx, %esi216; WIN32-NEXT:    subl {{[0-9]+}}(%esp), %esi217; WIN32-NEXT:    imull %ebx, %esi218; WIN32-NEXT:    addl %ebp, %esi219; WIN32-NEXT:    movl {{[0-9]+}}(%esp), %ebp220; WIN32-NEXT:    movl %ebp, %ebx221; WIN32-NEXT:    subl {{[0-9]+}}(%esp), %ebx222; WIN32-NEXT:    movl {{[0-9]+}}(%esp), %ecx223; WIN32-NEXT:    movl %ecx, %eax224; WIN32-NEXT:    subl {{[0-9]+}}(%esp), %eax225; WIN32-NEXT:    imull %ebx, %eax226; WIN32-NEXT:    addl %esi, %eax227; WIN32-NEXT:    addl (%esp), %edi # 4-byte Folded Reload228; WIN32-NEXT:    addl {{[0-9]+}}(%esp), %ebp229; WIN32-NEXT:    movl {{[0-9]+}}(%esp), %esi230; WIN32-NEXT:    addl {{[0-9]+}}(%esp), %esi231; WIN32-NEXT:    imull %esi, %edi232; WIN32-NEXT:    addl {{[0-9]+}}(%esp), %edx233; WIN32-NEXT:    imull {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload234; WIN32-NEXT:    addl %edx, %edi235; WIN32-NEXT:    addl {{[0-9]+}}(%esp), %ecx236; WIN32-NEXT:    imull %ebp, %ecx237; WIN32-NEXT:    addl %ecx, %edi238; WIN32-NEXT:    addl %eax, %edi239; WIN32-NEXT:    movl %edi, %ecx240; WIN32-NEXT:    addl $8, %esp241; WIN32-NEXT:    popl %ebx242; WIN32-NEXT:    popl %ebp243; WIN32-NEXT:    retl244;245; WIN64-LABEL: testi32_inp:246; WIN64:       # %bb.0:247; WIN64-NEXT:    pushq %rbp248; WIN64-NEXT:    pushq %rbx249; WIN64-NEXT:    # kill: def $edx killed $edx def $rdx250; WIN64-NEXT:    # kill: def $esi killed $esi def $rsi251; WIN64-NEXT:    # kill: def $r14d killed $r14d def $r14252; WIN64-NEXT:    # kill: def $r12d killed $r12d def $r12253; WIN64-NEXT:    # kill: def $r11d killed $r11d def $r11254; WIN64-NEXT:    # kill: def $r9d killed $r9d def $r9255; WIN64-NEXT:    # kill: def $r8d killed $r8d def $r8256; WIN64-NEXT:    # kill: def $edi killed $edi def $rdi257; WIN64-NEXT:    leal (%rdx,%rdi), %ebx258; WIN64-NEXT:    movl %edx, %ebp259; WIN64-NEXT:    subl %edi, %ebp260; WIN64-NEXT:    leal (%rsi,%r8), %edx261; WIN64-NEXT:    # kill: def $esi killed $esi killed $rsi262; WIN64-NEXT:    subl %r8d, %esi263; WIN64-NEXT:    leal (%r9,%r11), %edi264; WIN64-NEXT:    movl %r9d, %r8d265; WIN64-NEXT:    subl %r11d, %r8d266; WIN64-NEXT:    movl %eax, %r9d267; WIN64-NEXT:    subl %ecx, %r9d268; WIN64-NEXT:    imull %r9d, %r8d269; WIN64-NEXT:    leal (%r12,%r14), %r9d270; WIN64-NEXT:    movl %r12d, %r11d271; WIN64-NEXT:    subl %r14d, %r11d272; WIN64-NEXT:    imull %ebp, %r11d273; WIN64-NEXT:    movl {{[0-9]+}}(%rsp), %r14d274; WIN64-NEXT:    addl %r8d, %r11d275; WIN64-NEXT:    movl %r15d, %r8d276; WIN64-NEXT:    subl %r14d, %r8d277; WIN64-NEXT:    imull %esi, %r8d278; WIN64-NEXT:    addl %r11d, %r8d279; WIN64-NEXT:    addl %ecx, %eax280; WIN64-NEXT:    imull %edi, %eax281; WIN64-NEXT:    imull %ebx, %r9d282; WIN64-NEXT:    addl %r9d, %eax283; WIN64-NEXT:    addl %r15d, %r14d284; WIN64-NEXT:    imull %edx, %r14d285; WIN64-NEXT:    addl %r14d, %eax286; WIN64-NEXT:    addl %r8d, %eax287; WIN64-NEXT:    popq %rbx288; WIN64-NEXT:    popq %rbp289; WIN64-NEXT:    retq290;291; LINUXOSX-LABEL: testi32_inp:292; LINUXOSX:       # %bb.0:293; LINUXOSX-NEXT:    # kill: def $edx killed $edx def $rdx294; LINUXOSX-NEXT:    # kill: def $esi killed $esi def $rsi295; LINUXOSX-NEXT:    # kill: def $r14d killed $r14d def $r14296; LINUXOSX-NEXT:    # kill: def $r13d killed $r13d def $r13297; LINUXOSX-NEXT:    # kill: def $r12d killed $r12d def $r12298; LINUXOSX-NEXT:    # kill: def $r9d killed $r9d def $r9299; LINUXOSX-NEXT:    # kill: def $r8d killed $r8d def $r8300; LINUXOSX-NEXT:    # kill: def $edi killed $edi def $rdi301; LINUXOSX-NEXT:    leal (%rdx,%rdi), %r10d302; LINUXOSX-NEXT:    movl %edx, %r11d303; LINUXOSX-NEXT:    subl %edi, %r11d304; LINUXOSX-NEXT:    leal (%rsi,%r8), %edx305; LINUXOSX-NEXT:    # kill: def $esi killed $esi killed $rsi306; LINUXOSX-NEXT:    subl %r8d, %esi307; LINUXOSX-NEXT:    leal (%r9,%r12), %edi308; LINUXOSX-NEXT:    movl %r9d, %r8d309; LINUXOSX-NEXT:    subl %r12d, %r8d310; LINUXOSX-NEXT:    movl %eax, %r9d311; LINUXOSX-NEXT:    subl %ecx, %r9d312; LINUXOSX-NEXT:    imull %r9d, %r8d313; LINUXOSX-NEXT:    leal (%r13,%r14), %r9d314; LINUXOSX-NEXT:    movl %r13d, %r12d315; LINUXOSX-NEXT:    subl %r14d, %r12d316; LINUXOSX-NEXT:    imull %r11d, %r12d317; LINUXOSX-NEXT:    movl {{[0-9]+}}(%rsp), %r11d318; LINUXOSX-NEXT:    addl %r8d, %r12d319; LINUXOSX-NEXT:    movl %r15d, %r8d320; LINUXOSX-NEXT:    subl %r11d, %r8d321; LINUXOSX-NEXT:    imull %esi, %r8d322; LINUXOSX-NEXT:    addl %r12d, %r8d323; LINUXOSX-NEXT:    addl %ecx, %eax324; LINUXOSX-NEXT:    imull %edi, %eax325; LINUXOSX-NEXT:    imull %r10d, %r9d326; LINUXOSX-NEXT:    addl %r9d, %eax327; LINUXOSX-NEXT:    addl %r15d, %r11d328; LINUXOSX-NEXT:    imull %edx, %r11d329; LINUXOSX-NEXT:    addl %r11d, %eax330; LINUXOSX-NEXT:    addl %r8d, %eax331; LINUXOSX-NEXT:    retq332                                      i32 %b1, i32 %b2, i32 %b3, i32 %b4, i32 %b5, i32 %b6) nounwind {333  %x1 = sub i32 %a1, %a2334  %x2 = sub i32 %a3, %a4335  %x3 = sub i32 %a5, %a6336  %y1 = sub i32 %b1, %b2337  %y2 = sub i32 %b3, %b4338  %y3 = sub i32 %b5, %b6339  %v1 = add i32 %a1, %a2340  %v2 = add i32 %a3, %a4341  %v3 = add i32 %a5, %a6342  %w1 = add i32 %b1, %b2343  %w2 = add i32 %b3, %b4344  %w3 = add i32 %b5, %b6345  %s1 = mul i32 %x1, %y1346  %s2 = mul i32 %x2, %y2347  %s3 = mul i32 %x3, %y3348  %t1 = mul i32 %v1, %w1349  %t2 = mul i32 %v2, %w2350  %t3 = mul i32 %v3, %w3351  %m1 = add i32 %s1, %s2352  %m2 = add i32 %m1, %s3353  %n1 = add i32 %t1, %t2354  %n2 = add i32 %n1, %t3355  %r1 = add i32 %m2, %n2356  ret i32 %r1357}358 359; Test that parameters, overflowing register capacity, are passed through the stack360define x86_regcallcc <32 x float> @testf32_stack(<32 x float> %a, <32 x float> %b, <32 x float> %c) nounwind {361; WIN32-LABEL: testf32_stack:362; WIN32:       # %bb.0:363; WIN32-NEXT:    pushl %ebp364; WIN32-NEXT:    movl %esp, %ebp365; WIN32-NEXT:    andl $-16, %esp366; WIN32-NEXT:    subl $48, %esp367; WIN32-NEXT:    movaps %xmm7, {{[-0-9]+}}(%e{{[sb]}}p) # 16-byte Spill368; WIN32-NEXT:    movaps %xmm6, (%esp) # 16-byte Spill369; WIN32-NEXT:    movaps %xmm5, %xmm6370; WIN32-NEXT:    movaps %xmm4, %xmm5371; WIN32-NEXT:    movaps %xmm3, %xmm4372; WIN32-NEXT:    movaps %xmm2, %xmm3373; WIN32-NEXT:    movaps %xmm1, %xmm2374; WIN32-NEXT:    movaps %xmm0, %xmm1375; WIN32-NEXT:    movups 120(%ebp), %xmm7376; WIN32-NEXT:    movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 # 16-byte Reload377; WIN32-NEXT:    addps %xmm7, %xmm0378; WIN32-NEXT:    movups 248(%ebp), %xmm7379; WIN32-NEXT:    addps %xmm7, %xmm0380; WIN32-NEXT:    movaps %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) # 16-byte Spill381; WIN32-NEXT:    movups 104(%ebp), %xmm7382; WIN32-NEXT:    movaps (%esp), %xmm0 # 16-byte Reload383; WIN32-NEXT:    addps %xmm7, %xmm0384; WIN32-NEXT:    movups 232(%ebp), %xmm7385; WIN32-NEXT:    addps %xmm7, %xmm0386; WIN32-NEXT:    movaps %xmm0, (%esp) # 16-byte Spill387; WIN32-NEXT:    movups 88(%ebp), %xmm7388; WIN32-NEXT:    addps %xmm7, %xmm6389; WIN32-NEXT:    movups 216(%ebp), %xmm7390; WIN32-NEXT:    addps %xmm7, %xmm6391; WIN32-NEXT:    movups 72(%ebp), %xmm7392; WIN32-NEXT:    addps %xmm7, %xmm5393; WIN32-NEXT:    movups 200(%ebp), %xmm7394; WIN32-NEXT:    addps %xmm7, %xmm5395; WIN32-NEXT:    movups 56(%ebp), %xmm7396; WIN32-NEXT:    addps %xmm7, %xmm4397; WIN32-NEXT:    movups 184(%ebp), %xmm7398; WIN32-NEXT:    addps %xmm7, %xmm4399; WIN32-NEXT:    movups 40(%ebp), %xmm7400; WIN32-NEXT:    addps %xmm7, %xmm3401; WIN32-NEXT:    movups 168(%ebp), %xmm7402; WIN32-NEXT:    addps %xmm7, %xmm3403; WIN32-NEXT:    movups 24(%ebp), %xmm7404; WIN32-NEXT:    addps %xmm7, %xmm2405; WIN32-NEXT:    movups 152(%ebp), %xmm7406; WIN32-NEXT:    addps %xmm7, %xmm2407; WIN32-NEXT:    movups 8(%ebp), %xmm7408; WIN32-NEXT:    addps %xmm7, %xmm1409; WIN32-NEXT:    movups 136(%ebp), %xmm7410; WIN32-NEXT:    addps %xmm7, %xmm1411; WIN32-NEXT:    movaps %xmm1, %xmm0412; WIN32-NEXT:    movaps %xmm2, %xmm1413; WIN32-NEXT:    movaps %xmm3, %xmm2414; WIN32-NEXT:    movaps %xmm4, %xmm3415; WIN32-NEXT:    movaps %xmm5, %xmm4416; WIN32-NEXT:    movaps %xmm6, %xmm5417; WIN32-NEXT:    movaps (%esp), %xmm6 # 16-byte Reload418; WIN32-NEXT:    movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm7 # 16-byte Reload419; WIN32-NEXT:    movl %ebp, %esp420; WIN32-NEXT:    popl %ebp421; WIN32-NEXT:    retl422;423; WIN64-LABEL: testf32_stack:424; WIN64:       # %bb.0:425; WIN64-NEXT:    pushq %rax426; WIN64-NEXT:    addps %xmm15, %xmm7427; WIN64-NEXT:    addps %xmm14, %xmm6428; WIN64-NEXT:    addps %xmm13, %xmm5429; WIN64-NEXT:    addps %xmm12, %xmm4430; WIN64-NEXT:    addps %xmm11, %xmm3431; WIN64-NEXT:    addps %xmm10, %xmm2432; WIN64-NEXT:    addps %xmm9, %xmm1433; WIN64-NEXT:    addps %xmm8, %xmm0434; WIN64-NEXT:    addps {{[0-9]+}}(%rsp), %xmm0435; WIN64-NEXT:    addps {{[0-9]+}}(%rsp), %xmm1436; WIN64-NEXT:    addps {{[0-9]+}}(%rsp), %xmm2437; WIN64-NEXT:    addps {{[0-9]+}}(%rsp), %xmm3438; WIN64-NEXT:    addps {{[0-9]+}}(%rsp), %xmm4439; WIN64-NEXT:    addps {{[0-9]+}}(%rsp), %xmm5440; WIN64-NEXT:    addps {{[0-9]+}}(%rsp), %xmm6441; WIN64-NEXT:    addps {{[0-9]+}}(%rsp), %xmm7442; WIN64-NEXT:    popq %rax443; WIN64-NEXT:    retq444;445; LINUXOSX-LABEL: testf32_stack:446; LINUXOSX:       # %bb.0:447; LINUXOSX-NEXT:    addps %xmm15, %xmm7448; LINUXOSX-NEXT:    addps %xmm14, %xmm6449; LINUXOSX-NEXT:    addps %xmm13, %xmm5450; LINUXOSX-NEXT:    addps %xmm12, %xmm4451; LINUXOSX-NEXT:    addps %xmm11, %xmm3452; LINUXOSX-NEXT:    addps %xmm10, %xmm2453; LINUXOSX-NEXT:    addps %xmm9, %xmm1454; LINUXOSX-NEXT:    addps %xmm8, %xmm0455; LINUXOSX-NEXT:    addps {{[0-9]+}}(%rsp), %xmm0456; LINUXOSX-NEXT:    addps {{[0-9]+}}(%rsp), %xmm1457; LINUXOSX-NEXT:    addps {{[0-9]+}}(%rsp), %xmm2458; LINUXOSX-NEXT:    addps {{[0-9]+}}(%rsp), %xmm3459; LINUXOSX-NEXT:    addps {{[0-9]+}}(%rsp), %xmm4460; LINUXOSX-NEXT:    addps {{[0-9]+}}(%rsp), %xmm5461; LINUXOSX-NEXT:    addps {{[0-9]+}}(%rsp), %xmm6462; LINUXOSX-NEXT:    addps {{[0-9]+}}(%rsp), %xmm7463; LINUXOSX-NEXT:    retq464  %x1 = fadd <32 x float> %a, %b465  %x2 = fadd <32 x float> %x1, %c466  ret <32 x float> %x2467}468 469!llvm.module.flags = !{!0}470!0 = !{i32 4, !"RegCallv4", i32 1}471