brintos

brintos / llvm-project-archived public Read only

0
0
Text · 98.3 KiB · 4b0449f Raw
2984 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -O2 -mtriple=x86_64-linux-android \3; RUN:     -enable-legalize-types-checking | FileCheck %s --check-prefix=ANDROID4; RUN: llc < %s -O2 -mtriple=x86_64-linux-gnu \5; RUN:     -enable-legalize-types-checking | FileCheck %s --check-prefix=GNU6; RUN: llc < %s -O2 -mtriple=i686-linux-gnu -mattr=sse2 \7; RUN:     -enable-legalize-types-checking | FileCheck %s --check-prefix=X868; RUN: llc < %s -O2 -mtriple=x86_64-pc-windows-msvc \9; RUN:     -enable-legalize-types-checking | FileCheck %s --check-prefix=WIN10; RUN: llc < %s -O2 -mtriple=i686-pc-windows-msvc \11; RUN:     -enable-legalize-types-checking | FileCheck %s --check-prefix=WIN-X8612 13; Check all soft floating point library function calls.14 15@vf64 = common dso_local global double 0.000000e+00, align 816@vf128 = common dso_local global fp128 0xL00000000000000000000000000000000, align 1617 18define dso_local void @Test128Add(fp128 %d1, fp128 %d2) nounwind {19; CHECK-LABEL: Test128Add:20; CHECK:       # %bb.0: # %entry21; CHECK-NEXT:    pushq %rax22; CHECK-NEXT:    callq __addtf3@PLT23; CHECK-NEXT:    movaps %xmm0, vf128(%rip)24; CHECK-NEXT:    popq %rax25; CHECK-NEXT:    retq26;27; ANDROID-LABEL: Test128Add:28; ANDROID:       # %bb.0: # %entry29; ANDROID-NEXT:    pushq %rax30; ANDROID-NEXT:    callq __addtf3@PLT31; ANDROID-NEXT:    movaps %xmm0, vf128(%rip)32; ANDROID-NEXT:    popq %rax33; ANDROID-NEXT:    retq34;35; GNU-LABEL: Test128Add:36; GNU:       # %bb.0: # %entry37; GNU-NEXT:    pushq %rax38; GNU-NEXT:    callq __addtf3@PLT39; GNU-NEXT:    movaps %xmm0, vf128(%rip)40; GNU-NEXT:    popq %rax41; GNU-NEXT:    retq42;43; X86-LABEL: Test128Add:44; X86:       # %bb.0: # %entry45; X86-NEXT:    pushl %ebp46; X86-NEXT:    pushl %ebx47; X86-NEXT:    pushl %edi48; X86-NEXT:    pushl %esi49; X86-NEXT:    subl $76, %esp50; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx51; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx52; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi53; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi54; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx55; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp56; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax57; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)58; X86-NEXT:    movl %ebp, {{[0-9]+}}(%esp)59; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)60; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)61; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)62; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)63; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)64; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax65; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)66; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax67; X86-NEXT:    movl %eax, (%esp)68; X86-NEXT:    calll __addtf369; X86-NEXT:    subl $4, %esp70; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm071; X86-NEXT:    movaps %xmm0, vf12872; X86-NEXT:    addl $76, %esp73; X86-NEXT:    popl %esi74; X86-NEXT:    popl %edi75; X86-NEXT:    popl %ebx76; X86-NEXT:    popl %ebp77; X86-NEXT:    retl78;79; WIN-LABEL: Test128Add:80; WIN:       # %bb.0: # %entry81; WIN-NEXT:    subq $72, %rsp82; WIN-NEXT:    movaps (%rcx), %xmm083; WIN-NEXT:    movaps (%rdx), %xmm184; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)85; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)86; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx87; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx88; WIN-NEXT:    callq __addtf389; WIN-NEXT:    movaps %xmm0, vf128(%rip)90; WIN-NEXT:    addq $72, %rsp91; WIN-NEXT:    retq92;93; WIN-X86-LABEL: Test128Add:94; WIN-X86:       # %bb.0: # %entry95; WIN-X86-NEXT:    pushl %ebp96; WIN-X86-NEXT:    movl %esp, %ebp97; WIN-X86-NEXT:    pushl %ebx98; WIN-X86-NEXT:    pushl %edi99; WIN-X86-NEXT:    pushl %esi100; WIN-X86-NEXT:    andl $-16, %esp101; WIN-X86-NEXT:    subl $80, %esp102; WIN-X86-NEXT:    movl 16(%ebp), %edx103; WIN-X86-NEXT:    movl 20(%ebp), %esi104; WIN-X86-NEXT:    movl 24(%ebp), %edi105; WIN-X86-NEXT:    movl 28(%ebp), %ebx106; WIN-X86-NEXT:    movl 32(%ebp), %ecx107; WIN-X86-NEXT:    movl 36(%ebp), %eax108; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)109; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)110; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)111; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)112; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)113; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)114; WIN-X86-NEXT:    movl 12(%ebp), %eax115; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)116; WIN-X86-NEXT:    movl 8(%ebp), %eax117; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)118; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax119; WIN-X86-NEXT:    movl %eax, (%esp)120; WIN-X86-NEXT:    calll ___addtf3121; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax122; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx123; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx124; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi125; WIN-X86-NEXT:    movl %esi, _vf128+12126; WIN-X86-NEXT:    movl %edx, _vf128+8127; WIN-X86-NEXT:    movl %ecx, _vf128+4128; WIN-X86-NEXT:    movl %eax, _vf128129; WIN-X86-NEXT:    leal -12(%ebp), %esp130; WIN-X86-NEXT:    popl %esi131; WIN-X86-NEXT:    popl %edi132; WIN-X86-NEXT:    popl %ebx133; WIN-X86-NEXT:    popl %ebp134; WIN-X86-NEXT:    retl135entry:136  %add = fadd fp128 %d1, %d2137  store fp128 %add, ptr @vf128, align 16138  ret void139}140 141define dso_local void @Test128_1Add(fp128 %d1) nounwind {142; CHECK-LABEL: Test128_1Add:143; CHECK:       # %bb.0: # %entry144; CHECK-NEXT:    pushq %rax145; CHECK-NEXT:    movaps %xmm0, %xmm1146; CHECK-NEXT:    movaps vf128(%rip), %xmm0147; CHECK-NEXT:    callq __addtf3@PLT148; CHECK-NEXT:    movaps %xmm0, vf128(%rip)149; CHECK-NEXT:    popq %rax150; CHECK-NEXT:    retq151;152; ANDROID-LABEL: Test128_1Add:153; ANDROID:       # %bb.0: # %entry154; ANDROID-NEXT:    pushq %rax155; ANDROID-NEXT:    movaps %xmm0, %xmm1156; ANDROID-NEXT:    movaps vf128(%rip), %xmm0157; ANDROID-NEXT:    callq __addtf3@PLT158; ANDROID-NEXT:    movaps %xmm0, vf128(%rip)159; ANDROID-NEXT:    popq %rax160; ANDROID-NEXT:    retq161;162; GNU-LABEL: Test128_1Add:163; GNU:       # %bb.0: # %entry164; GNU-NEXT:    pushq %rax165; GNU-NEXT:    movaps %xmm0, %xmm1166; GNU-NEXT:    movaps vf128(%rip), %xmm0167; GNU-NEXT:    callq __addtf3@PLT168; GNU-NEXT:    movaps %xmm0, vf128(%rip)169; GNU-NEXT:    popq %rax170; GNU-NEXT:    retq171;172; X86-LABEL: Test128_1Add:173; X86:       # %bb.0: # %entry174; X86-NEXT:    pushl %ebp175; X86-NEXT:    pushl %ebx176; X86-NEXT:    pushl %edi177; X86-NEXT:    pushl %esi178; X86-NEXT:    subl $76, %esp179; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx180; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx181; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi182; X86-NEXT:    movl vf128, %edi183; X86-NEXT:    movl vf128+4, %ebx184; X86-NEXT:    movl vf128+8, %ebp185; X86-NEXT:    movl vf128+12, %eax186; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)187; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)188; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)189; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx190; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)191; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)192; X86-NEXT:    movl %ebp, {{[0-9]+}}(%esp)193; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)194; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)195; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax196; X86-NEXT:    movl %eax, (%esp)197; X86-NEXT:    calll __addtf3198; X86-NEXT:    subl $4, %esp199; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm0200; X86-NEXT:    movaps %xmm0, vf128201; X86-NEXT:    addl $76, %esp202; X86-NEXT:    popl %esi203; X86-NEXT:    popl %edi204; X86-NEXT:    popl %ebx205; X86-NEXT:    popl %ebp206; X86-NEXT:    retl207;208; WIN-LABEL: Test128_1Add:209; WIN:       # %bb.0: # %entry210; WIN-NEXT:    subq $72, %rsp211; WIN-NEXT:    movaps (%rcx), %xmm0212; WIN-NEXT:    movaps vf128(%rip), %xmm1213; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)214; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)215; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx216; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx217; WIN-NEXT:    callq __addtf3218; WIN-NEXT:    movaps %xmm0, vf128(%rip)219; WIN-NEXT:    addq $72, %rsp220; WIN-NEXT:    retq221;222; WIN-X86-LABEL: Test128_1Add:223; WIN-X86:       # %bb.0: # %entry224; WIN-X86-NEXT:    pushl %ebp225; WIN-X86-NEXT:    movl %esp, %ebp226; WIN-X86-NEXT:    pushl %ebx227; WIN-X86-NEXT:    pushl %edi228; WIN-X86-NEXT:    pushl %esi229; WIN-X86-NEXT:    andl $-16, %esp230; WIN-X86-NEXT:    subl $80, %esp231; WIN-X86-NEXT:    movl 16(%ebp), %esi232; WIN-X86-NEXT:    movl 20(%ebp), %edi233; WIN-X86-NEXT:    movl _vf128, %edx234; WIN-X86-NEXT:    movl _vf128+4, %ebx235; WIN-X86-NEXT:    movl _vf128+8, %ecx236; WIN-X86-NEXT:    movl _vf128+12, %eax237; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)238; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)239; WIN-X86-NEXT:    movl 12(%ebp), %esi240; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)241; WIN-X86-NEXT:    movl 8(%ebp), %esi242; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)243; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)244; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)245; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)246; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)247; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax248; WIN-X86-NEXT:    movl %eax, (%esp)249; WIN-X86-NEXT:    calll ___addtf3250; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax251; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx252; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx253; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi254; WIN-X86-NEXT:    movl %esi, _vf128+8255; WIN-X86-NEXT:    movl %edx, _vf128+12256; WIN-X86-NEXT:    movl %eax, _vf128257; WIN-X86-NEXT:    movl %ecx, _vf128+4258; WIN-X86-NEXT:    leal -12(%ebp), %esp259; WIN-X86-NEXT:    popl %esi260; WIN-X86-NEXT:    popl %edi261; WIN-X86-NEXT:    popl %ebx262; WIN-X86-NEXT:    popl %ebp263; WIN-X86-NEXT:    retl264entry:265  %0 = load fp128, ptr @vf128, align 16266  %add = fadd fp128 %0, %d1267  store fp128 %add, ptr @vf128, align 16268  ret void269}270 271define dso_local void @Test128Sub(fp128 %d1, fp128 %d2) nounwind {272; CHECK-LABEL: Test128Sub:273; CHECK:       # %bb.0: # %entry274; CHECK-NEXT:    pushq %rax275; CHECK-NEXT:    callq __subtf3@PLT276; CHECK-NEXT:    movaps %xmm0, vf128(%rip)277; CHECK-NEXT:    popq %rax278; CHECK-NEXT:    retq279;280; ANDROID-LABEL: Test128Sub:281; ANDROID:       # %bb.0: # %entry282; ANDROID-NEXT:    pushq %rax283; ANDROID-NEXT:    callq __subtf3@PLT284; ANDROID-NEXT:    movaps %xmm0, vf128(%rip)285; ANDROID-NEXT:    popq %rax286; ANDROID-NEXT:    retq287;288; GNU-LABEL: Test128Sub:289; GNU:       # %bb.0: # %entry290; GNU-NEXT:    pushq %rax291; GNU-NEXT:    callq __subtf3@PLT292; GNU-NEXT:    movaps %xmm0, vf128(%rip)293; GNU-NEXT:    popq %rax294; GNU-NEXT:    retq295;296; X86-LABEL: Test128Sub:297; X86:       # %bb.0: # %entry298; X86-NEXT:    pushl %ebp299; X86-NEXT:    pushl %ebx300; X86-NEXT:    pushl %edi301; X86-NEXT:    pushl %esi302; X86-NEXT:    subl $76, %esp303; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx304; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx305; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi306; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi307; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx308; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp309; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax310; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)311; X86-NEXT:    movl %ebp, {{[0-9]+}}(%esp)312; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)313; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)314; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)315; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)316; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)317; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax318; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)319; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax320; X86-NEXT:    movl %eax, (%esp)321; X86-NEXT:    calll __subtf3322; X86-NEXT:    subl $4, %esp323; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm0324; X86-NEXT:    movaps %xmm0, vf128325; X86-NEXT:    addl $76, %esp326; X86-NEXT:    popl %esi327; X86-NEXT:    popl %edi328; X86-NEXT:    popl %ebx329; X86-NEXT:    popl %ebp330; X86-NEXT:    retl331;332; WIN-LABEL: Test128Sub:333; WIN:       # %bb.0: # %entry334; WIN-NEXT:    subq $72, %rsp335; WIN-NEXT:    movaps (%rcx), %xmm0336; WIN-NEXT:    movaps (%rdx), %xmm1337; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)338; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)339; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx340; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx341; WIN-NEXT:    callq __subtf3342; WIN-NEXT:    movaps %xmm0, vf128(%rip)343; WIN-NEXT:    addq $72, %rsp344; WIN-NEXT:    retq345;346; WIN-X86-LABEL: Test128Sub:347; WIN-X86:       # %bb.0: # %entry348; WIN-X86-NEXT:    pushl %ebp349; WIN-X86-NEXT:    movl %esp, %ebp350; WIN-X86-NEXT:    pushl %ebx351; WIN-X86-NEXT:    pushl %edi352; WIN-X86-NEXT:    pushl %esi353; WIN-X86-NEXT:    andl $-16, %esp354; WIN-X86-NEXT:    subl $80, %esp355; WIN-X86-NEXT:    movl 16(%ebp), %edx356; WIN-X86-NEXT:    movl 20(%ebp), %esi357; WIN-X86-NEXT:    movl 24(%ebp), %edi358; WIN-X86-NEXT:    movl 28(%ebp), %ebx359; WIN-X86-NEXT:    movl 32(%ebp), %ecx360; WIN-X86-NEXT:    movl 36(%ebp), %eax361; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)362; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)363; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)364; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)365; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)366; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)367; WIN-X86-NEXT:    movl 12(%ebp), %eax368; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)369; WIN-X86-NEXT:    movl 8(%ebp), %eax370; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)371; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax372; WIN-X86-NEXT:    movl %eax, (%esp)373; WIN-X86-NEXT:    calll ___subtf3374; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax375; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx376; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx377; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi378; WIN-X86-NEXT:    movl %esi, _vf128+12379; WIN-X86-NEXT:    movl %edx, _vf128+8380; WIN-X86-NEXT:    movl %ecx, _vf128+4381; WIN-X86-NEXT:    movl %eax, _vf128382; WIN-X86-NEXT:    leal -12(%ebp), %esp383; WIN-X86-NEXT:    popl %esi384; WIN-X86-NEXT:    popl %edi385; WIN-X86-NEXT:    popl %ebx386; WIN-X86-NEXT:    popl %ebp387; WIN-X86-NEXT:    retl388entry:389  %sub = fsub fp128 %d1, %d2390  store fp128 %sub, ptr @vf128, align 16391  ret void392}393 394define dso_local void @Test128_1Sub(fp128 %d1) nounwind {395; CHECK-LABEL: Test128_1Sub:396; CHECK:       # %bb.0: # %entry397; CHECK-NEXT:    pushq %rax398; CHECK-NEXT:    movaps %xmm0, %xmm1399; CHECK-NEXT:    movaps vf128(%rip), %xmm0400; CHECK-NEXT:    callq __subtf3@PLT401; CHECK-NEXT:    movaps %xmm0, vf128(%rip)402; CHECK-NEXT:    popq %rax403; CHECK-NEXT:    retq404;405; ANDROID-LABEL: Test128_1Sub:406; ANDROID:       # %bb.0: # %entry407; ANDROID-NEXT:    pushq %rax408; ANDROID-NEXT:    movaps %xmm0, %xmm1409; ANDROID-NEXT:    movaps vf128(%rip), %xmm0410; ANDROID-NEXT:    callq __subtf3@PLT411; ANDROID-NEXT:    movaps %xmm0, vf128(%rip)412; ANDROID-NEXT:    popq %rax413; ANDROID-NEXT:    retq414;415; GNU-LABEL: Test128_1Sub:416; GNU:       # %bb.0: # %entry417; GNU-NEXT:    pushq %rax418; GNU-NEXT:    movaps %xmm0, %xmm1419; GNU-NEXT:    movaps vf128(%rip), %xmm0420; GNU-NEXT:    callq __subtf3@PLT421; GNU-NEXT:    movaps %xmm0, vf128(%rip)422; GNU-NEXT:    popq %rax423; GNU-NEXT:    retq424;425; X86-LABEL: Test128_1Sub:426; X86:       # %bb.0: # %entry427; X86-NEXT:    pushl %ebp428; X86-NEXT:    pushl %ebx429; X86-NEXT:    pushl %edi430; X86-NEXT:    pushl %esi431; X86-NEXT:    subl $76, %esp432; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx433; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx434; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi435; X86-NEXT:    movl vf128, %edi436; X86-NEXT:    movl vf128+4, %ebx437; X86-NEXT:    movl vf128+8, %ebp438; X86-NEXT:    movl vf128+12, %eax439; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)440; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)441; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)442; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx443; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)444; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)445; X86-NEXT:    movl %ebp, {{[0-9]+}}(%esp)446; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)447; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)448; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax449; X86-NEXT:    movl %eax, (%esp)450; X86-NEXT:    calll __subtf3451; X86-NEXT:    subl $4, %esp452; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm0453; X86-NEXT:    movaps %xmm0, vf128454; X86-NEXT:    addl $76, %esp455; X86-NEXT:    popl %esi456; X86-NEXT:    popl %edi457; X86-NEXT:    popl %ebx458; X86-NEXT:    popl %ebp459; X86-NEXT:    retl460;461; WIN-LABEL: Test128_1Sub:462; WIN:       # %bb.0: # %entry463; WIN-NEXT:    subq $72, %rsp464; WIN-NEXT:    movaps (%rcx), %xmm0465; WIN-NEXT:    movaps vf128(%rip), %xmm1466; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)467; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)468; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx469; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx470; WIN-NEXT:    callq __subtf3471; WIN-NEXT:    movaps %xmm0, vf128(%rip)472; WIN-NEXT:    addq $72, %rsp473; WIN-NEXT:    retq474;475; WIN-X86-LABEL: Test128_1Sub:476; WIN-X86:       # %bb.0: # %entry477; WIN-X86-NEXT:    pushl %ebp478; WIN-X86-NEXT:    movl %esp, %ebp479; WIN-X86-NEXT:    pushl %ebx480; WIN-X86-NEXT:    pushl %edi481; WIN-X86-NEXT:    pushl %esi482; WIN-X86-NEXT:    andl $-16, %esp483; WIN-X86-NEXT:    subl $80, %esp484; WIN-X86-NEXT:    movl 16(%ebp), %esi485; WIN-X86-NEXT:    movl 20(%ebp), %edi486; WIN-X86-NEXT:    movl _vf128, %edx487; WIN-X86-NEXT:    movl _vf128+4, %ebx488; WIN-X86-NEXT:    movl _vf128+8, %ecx489; WIN-X86-NEXT:    movl _vf128+12, %eax490; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)491; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)492; WIN-X86-NEXT:    movl 12(%ebp), %esi493; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)494; WIN-X86-NEXT:    movl 8(%ebp), %esi495; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)496; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)497; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)498; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)499; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)500; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax501; WIN-X86-NEXT:    movl %eax, (%esp)502; WIN-X86-NEXT:    calll ___subtf3503; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax504; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx505; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx506; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi507; WIN-X86-NEXT:    movl %esi, _vf128+8508; WIN-X86-NEXT:    movl %edx, _vf128+12509; WIN-X86-NEXT:    movl %eax, _vf128510; WIN-X86-NEXT:    movl %ecx, _vf128+4511; WIN-X86-NEXT:    leal -12(%ebp), %esp512; WIN-X86-NEXT:    popl %esi513; WIN-X86-NEXT:    popl %edi514; WIN-X86-NEXT:    popl %ebx515; WIN-X86-NEXT:    popl %ebp516; WIN-X86-NEXT:    retl517entry:518  %0 = load fp128, ptr @vf128, align 16519  %sub = fsub fp128 %0, %d1520  store fp128 %sub, ptr @vf128, align 16521  ret void522}523 524define dso_local void @Test128Mul(fp128 %d1, fp128 %d2) nounwind {525; CHECK-LABEL: Test128Mul:526; CHECK:       # %bb.0: # %entry527; CHECK-NEXT:    pushq %rax528; CHECK-NEXT:    callq __multf3@PLT529; CHECK-NEXT:    movaps %xmm0, vf128(%rip)530; CHECK-NEXT:    popq %rax531; CHECK-NEXT:    retq532;533; ANDROID-LABEL: Test128Mul:534; ANDROID:       # %bb.0: # %entry535; ANDROID-NEXT:    pushq %rax536; ANDROID-NEXT:    callq __multf3@PLT537; ANDROID-NEXT:    movaps %xmm0, vf128(%rip)538; ANDROID-NEXT:    popq %rax539; ANDROID-NEXT:    retq540;541; GNU-LABEL: Test128Mul:542; GNU:       # %bb.0: # %entry543; GNU-NEXT:    pushq %rax544; GNU-NEXT:    callq __multf3@PLT545; GNU-NEXT:    movaps %xmm0, vf128(%rip)546; GNU-NEXT:    popq %rax547; GNU-NEXT:    retq548;549; X86-LABEL: Test128Mul:550; X86:       # %bb.0: # %entry551; X86-NEXT:    pushl %ebp552; X86-NEXT:    pushl %ebx553; X86-NEXT:    pushl %edi554; X86-NEXT:    pushl %esi555; X86-NEXT:    subl $76, %esp556; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx557; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx558; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi559; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi560; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx561; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp562; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax563; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)564; X86-NEXT:    movl %ebp, {{[0-9]+}}(%esp)565; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)566; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)567; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)568; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)569; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)570; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax571; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)572; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax573; X86-NEXT:    movl %eax, (%esp)574; X86-NEXT:    calll __multf3575; X86-NEXT:    subl $4, %esp576; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm0577; X86-NEXT:    movaps %xmm0, vf128578; X86-NEXT:    addl $76, %esp579; X86-NEXT:    popl %esi580; X86-NEXT:    popl %edi581; X86-NEXT:    popl %ebx582; X86-NEXT:    popl %ebp583; X86-NEXT:    retl584;585; WIN-LABEL: Test128Mul:586; WIN:       # %bb.0: # %entry587; WIN-NEXT:    subq $72, %rsp588; WIN-NEXT:    movaps (%rcx), %xmm0589; WIN-NEXT:    movaps (%rdx), %xmm1590; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)591; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)592; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx593; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx594; WIN-NEXT:    callq __multf3595; WIN-NEXT:    movaps %xmm0, vf128(%rip)596; WIN-NEXT:    addq $72, %rsp597; WIN-NEXT:    retq598;599; WIN-X86-LABEL: Test128Mul:600; WIN-X86:       # %bb.0: # %entry601; WIN-X86-NEXT:    pushl %ebp602; WIN-X86-NEXT:    movl %esp, %ebp603; WIN-X86-NEXT:    pushl %ebx604; WIN-X86-NEXT:    pushl %edi605; WIN-X86-NEXT:    pushl %esi606; WIN-X86-NEXT:    andl $-16, %esp607; WIN-X86-NEXT:    subl $80, %esp608; WIN-X86-NEXT:    movl 16(%ebp), %edx609; WIN-X86-NEXT:    movl 20(%ebp), %esi610; WIN-X86-NEXT:    movl 24(%ebp), %edi611; WIN-X86-NEXT:    movl 28(%ebp), %ebx612; WIN-X86-NEXT:    movl 32(%ebp), %ecx613; WIN-X86-NEXT:    movl 36(%ebp), %eax614; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)615; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)616; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)617; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)618; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)619; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)620; WIN-X86-NEXT:    movl 12(%ebp), %eax621; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)622; WIN-X86-NEXT:    movl 8(%ebp), %eax623; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)624; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax625; WIN-X86-NEXT:    movl %eax, (%esp)626; WIN-X86-NEXT:    calll ___multf3627; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax628; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx629; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx630; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi631; WIN-X86-NEXT:    movl %esi, _vf128+12632; WIN-X86-NEXT:    movl %edx, _vf128+8633; WIN-X86-NEXT:    movl %ecx, _vf128+4634; WIN-X86-NEXT:    movl %eax, _vf128635; WIN-X86-NEXT:    leal -12(%ebp), %esp636; WIN-X86-NEXT:    popl %esi637; WIN-X86-NEXT:    popl %edi638; WIN-X86-NEXT:    popl %ebx639; WIN-X86-NEXT:    popl %ebp640; WIN-X86-NEXT:    retl641entry:642  %mul = fmul fp128 %d1, %d2643  store fp128 %mul, ptr @vf128, align 16644  ret void645}646 647define dso_local void @Test128_1Mul(fp128 %d1) nounwind {648; CHECK-LABEL: Test128_1Mul:649; CHECK:       # %bb.0: # %entry650; CHECK-NEXT:    pushq %rax651; CHECK-NEXT:    movaps %xmm0, %xmm1652; CHECK-NEXT:    movaps vf128(%rip), %xmm0653; CHECK-NEXT:    callq __multf3@PLT654; CHECK-NEXT:    movaps %xmm0, vf128(%rip)655; CHECK-NEXT:    popq %rax656; CHECK-NEXT:    retq657;658; ANDROID-LABEL: Test128_1Mul:659; ANDROID:       # %bb.0: # %entry660; ANDROID-NEXT:    pushq %rax661; ANDROID-NEXT:    movaps %xmm0, %xmm1662; ANDROID-NEXT:    movaps vf128(%rip), %xmm0663; ANDROID-NEXT:    callq __multf3@PLT664; ANDROID-NEXT:    movaps %xmm0, vf128(%rip)665; ANDROID-NEXT:    popq %rax666; ANDROID-NEXT:    retq667;668; GNU-LABEL: Test128_1Mul:669; GNU:       # %bb.0: # %entry670; GNU-NEXT:    pushq %rax671; GNU-NEXT:    movaps %xmm0, %xmm1672; GNU-NEXT:    movaps vf128(%rip), %xmm0673; GNU-NEXT:    callq __multf3@PLT674; GNU-NEXT:    movaps %xmm0, vf128(%rip)675; GNU-NEXT:    popq %rax676; GNU-NEXT:    retq677;678; X86-LABEL: Test128_1Mul:679; X86:       # %bb.0: # %entry680; X86-NEXT:    pushl %ebp681; X86-NEXT:    pushl %ebx682; X86-NEXT:    pushl %edi683; X86-NEXT:    pushl %esi684; X86-NEXT:    subl $76, %esp685; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx686; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx687; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi688; X86-NEXT:    movl vf128, %edi689; X86-NEXT:    movl vf128+4, %ebx690; X86-NEXT:    movl vf128+8, %ebp691; X86-NEXT:    movl vf128+12, %eax692; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)693; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)694; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)695; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx696; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)697; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)698; X86-NEXT:    movl %ebp, {{[0-9]+}}(%esp)699; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)700; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)701; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax702; X86-NEXT:    movl %eax, (%esp)703; X86-NEXT:    calll __multf3704; X86-NEXT:    subl $4, %esp705; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm0706; X86-NEXT:    movaps %xmm0, vf128707; X86-NEXT:    addl $76, %esp708; X86-NEXT:    popl %esi709; X86-NEXT:    popl %edi710; X86-NEXT:    popl %ebx711; X86-NEXT:    popl %ebp712; X86-NEXT:    retl713;714; WIN-LABEL: Test128_1Mul:715; WIN:       # %bb.0: # %entry716; WIN-NEXT:    subq $72, %rsp717; WIN-NEXT:    movaps (%rcx), %xmm0718; WIN-NEXT:    movaps vf128(%rip), %xmm1719; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)720; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)721; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx722; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx723; WIN-NEXT:    callq __multf3724; WIN-NEXT:    movaps %xmm0, vf128(%rip)725; WIN-NEXT:    addq $72, %rsp726; WIN-NEXT:    retq727;728; WIN-X86-LABEL: Test128_1Mul:729; WIN-X86:       # %bb.0: # %entry730; WIN-X86-NEXT:    pushl %ebp731; WIN-X86-NEXT:    movl %esp, %ebp732; WIN-X86-NEXT:    pushl %ebx733; WIN-X86-NEXT:    pushl %edi734; WIN-X86-NEXT:    pushl %esi735; WIN-X86-NEXT:    andl $-16, %esp736; WIN-X86-NEXT:    subl $80, %esp737; WIN-X86-NEXT:    movl 16(%ebp), %esi738; WIN-X86-NEXT:    movl 20(%ebp), %edi739; WIN-X86-NEXT:    movl _vf128, %edx740; WIN-X86-NEXT:    movl _vf128+4, %ebx741; WIN-X86-NEXT:    movl _vf128+8, %ecx742; WIN-X86-NEXT:    movl _vf128+12, %eax743; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)744; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)745; WIN-X86-NEXT:    movl 12(%ebp), %esi746; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)747; WIN-X86-NEXT:    movl 8(%ebp), %esi748; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)749; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)750; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)751; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)752; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)753; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax754; WIN-X86-NEXT:    movl %eax, (%esp)755; WIN-X86-NEXT:    calll ___multf3756; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax757; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx758; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx759; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi760; WIN-X86-NEXT:    movl %esi, _vf128+8761; WIN-X86-NEXT:    movl %edx, _vf128+12762; WIN-X86-NEXT:    movl %eax, _vf128763; WIN-X86-NEXT:    movl %ecx, _vf128+4764; WIN-X86-NEXT:    leal -12(%ebp), %esp765; WIN-X86-NEXT:    popl %esi766; WIN-X86-NEXT:    popl %edi767; WIN-X86-NEXT:    popl %ebx768; WIN-X86-NEXT:    popl %ebp769; WIN-X86-NEXT:    retl770entry:771  %0 = load fp128, ptr @vf128, align 16772  %mul = fmul fp128 %0, %d1773  store fp128 %mul, ptr @vf128, align 16774  ret void775}776 777define dso_local void @Test128Div(fp128 %d1, fp128 %d2) nounwind {778; CHECK-LABEL: Test128Div:779; CHECK:       # %bb.0: # %entry780; CHECK-NEXT:    pushq %rax781; CHECK-NEXT:    callq __divtf3@PLT782; CHECK-NEXT:    movaps %xmm0, vf128(%rip)783; CHECK-NEXT:    popq %rax784; CHECK-NEXT:    retq785;786; ANDROID-LABEL: Test128Div:787; ANDROID:       # %bb.0: # %entry788; ANDROID-NEXT:    pushq %rax789; ANDROID-NEXT:    callq __divtf3@PLT790; ANDROID-NEXT:    movaps %xmm0, vf128(%rip)791; ANDROID-NEXT:    popq %rax792; ANDROID-NEXT:    retq793;794; GNU-LABEL: Test128Div:795; GNU:       # %bb.0: # %entry796; GNU-NEXT:    pushq %rax797; GNU-NEXT:    callq __divtf3@PLT798; GNU-NEXT:    movaps %xmm0, vf128(%rip)799; GNU-NEXT:    popq %rax800; GNU-NEXT:    retq801;802; X86-LABEL: Test128Div:803; X86:       # %bb.0: # %entry804; X86-NEXT:    pushl %ebp805; X86-NEXT:    pushl %ebx806; X86-NEXT:    pushl %edi807; X86-NEXT:    pushl %esi808; X86-NEXT:    subl $76, %esp809; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx810; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx811; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi812; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi813; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx814; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp815; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax816; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)817; X86-NEXT:    movl %ebp, {{[0-9]+}}(%esp)818; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)819; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)820; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)821; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)822; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)823; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax824; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)825; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax826; X86-NEXT:    movl %eax, (%esp)827; X86-NEXT:    calll __divtf3828; X86-NEXT:    subl $4, %esp829; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm0830; X86-NEXT:    movaps %xmm0, vf128831; X86-NEXT:    addl $76, %esp832; X86-NEXT:    popl %esi833; X86-NEXT:    popl %edi834; X86-NEXT:    popl %ebx835; X86-NEXT:    popl %ebp836; X86-NEXT:    retl837;838; WIN-LABEL: Test128Div:839; WIN:       # %bb.0: # %entry840; WIN-NEXT:    subq $72, %rsp841; WIN-NEXT:    movaps (%rcx), %xmm0842; WIN-NEXT:    movaps (%rdx), %xmm1843; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)844; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)845; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx846; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx847; WIN-NEXT:    callq __divtf3848; WIN-NEXT:    movaps %xmm0, vf128(%rip)849; WIN-NEXT:    addq $72, %rsp850; WIN-NEXT:    retq851;852; WIN-X86-LABEL: Test128Div:853; WIN-X86:       # %bb.0: # %entry854; WIN-X86-NEXT:    pushl %ebp855; WIN-X86-NEXT:    movl %esp, %ebp856; WIN-X86-NEXT:    pushl %ebx857; WIN-X86-NEXT:    pushl %edi858; WIN-X86-NEXT:    pushl %esi859; WIN-X86-NEXT:    andl $-16, %esp860; WIN-X86-NEXT:    subl $80, %esp861; WIN-X86-NEXT:    movl 16(%ebp), %edx862; WIN-X86-NEXT:    movl 20(%ebp), %esi863; WIN-X86-NEXT:    movl 24(%ebp), %edi864; WIN-X86-NEXT:    movl 28(%ebp), %ebx865; WIN-X86-NEXT:    movl 32(%ebp), %ecx866; WIN-X86-NEXT:    movl 36(%ebp), %eax867; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)868; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)869; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)870; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)871; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)872; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)873; WIN-X86-NEXT:    movl 12(%ebp), %eax874; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)875; WIN-X86-NEXT:    movl 8(%ebp), %eax876; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)877; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax878; WIN-X86-NEXT:    movl %eax, (%esp)879; WIN-X86-NEXT:    calll ___divtf3880; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax881; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx882; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx883; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi884; WIN-X86-NEXT:    movl %esi, _vf128+12885; WIN-X86-NEXT:    movl %edx, _vf128+8886; WIN-X86-NEXT:    movl %ecx, _vf128+4887; WIN-X86-NEXT:    movl %eax, _vf128888; WIN-X86-NEXT:    leal -12(%ebp), %esp889; WIN-X86-NEXT:    popl %esi890; WIN-X86-NEXT:    popl %edi891; WIN-X86-NEXT:    popl %ebx892; WIN-X86-NEXT:    popl %ebp893; WIN-X86-NEXT:    retl894entry:895  %div = fdiv fp128 %d1, %d2896  store fp128 %div, ptr @vf128, align 16897  ret void898}899 900define dso_local void @Test128_1Div(fp128 %d1) nounwind {901; CHECK-LABEL: Test128_1Div:902; CHECK:       # %bb.0: # %entry903; CHECK-NEXT:    pushq %rax904; CHECK-NEXT:    movaps %xmm0, %xmm1905; CHECK-NEXT:    movaps vf128(%rip), %xmm0906; CHECK-NEXT:    callq __divtf3@PLT907; CHECK-NEXT:    movaps %xmm0, vf128(%rip)908; CHECK-NEXT:    popq %rax909; CHECK-NEXT:    retq910;911; ANDROID-LABEL: Test128_1Div:912; ANDROID:       # %bb.0: # %entry913; ANDROID-NEXT:    pushq %rax914; ANDROID-NEXT:    movaps %xmm0, %xmm1915; ANDROID-NEXT:    movaps vf128(%rip), %xmm0916; ANDROID-NEXT:    callq __divtf3@PLT917; ANDROID-NEXT:    movaps %xmm0, vf128(%rip)918; ANDROID-NEXT:    popq %rax919; ANDROID-NEXT:    retq920;921; GNU-LABEL: Test128_1Div:922; GNU:       # %bb.0: # %entry923; GNU-NEXT:    pushq %rax924; GNU-NEXT:    movaps %xmm0, %xmm1925; GNU-NEXT:    movaps vf128(%rip), %xmm0926; GNU-NEXT:    callq __divtf3@PLT927; GNU-NEXT:    movaps %xmm0, vf128(%rip)928; GNU-NEXT:    popq %rax929; GNU-NEXT:    retq930;931; X86-LABEL: Test128_1Div:932; X86:       # %bb.0: # %entry933; X86-NEXT:    pushl %ebp934; X86-NEXT:    pushl %ebx935; X86-NEXT:    pushl %edi936; X86-NEXT:    pushl %esi937; X86-NEXT:    subl $76, %esp938; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx939; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx940; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi941; X86-NEXT:    movl vf128, %edi942; X86-NEXT:    movl vf128+4, %ebx943; X86-NEXT:    movl vf128+8, %ebp944; X86-NEXT:    movl vf128+12, %eax945; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)946; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)947; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)948; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx949; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)950; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)951; X86-NEXT:    movl %ebp, {{[0-9]+}}(%esp)952; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)953; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)954; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax955; X86-NEXT:    movl %eax, (%esp)956; X86-NEXT:    calll __divtf3957; X86-NEXT:    subl $4, %esp958; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm0959; X86-NEXT:    movaps %xmm0, vf128960; X86-NEXT:    addl $76, %esp961; X86-NEXT:    popl %esi962; X86-NEXT:    popl %edi963; X86-NEXT:    popl %ebx964; X86-NEXT:    popl %ebp965; X86-NEXT:    retl966;967; WIN-LABEL: Test128_1Div:968; WIN:       # %bb.0: # %entry969; WIN-NEXT:    subq $72, %rsp970; WIN-NEXT:    movaps (%rcx), %xmm0971; WIN-NEXT:    movaps vf128(%rip), %xmm1972; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)973; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)974; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx975; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx976; WIN-NEXT:    callq __divtf3977; WIN-NEXT:    movaps %xmm0, vf128(%rip)978; WIN-NEXT:    addq $72, %rsp979; WIN-NEXT:    retq980;981; WIN-X86-LABEL: Test128_1Div:982; WIN-X86:       # %bb.0: # %entry983; WIN-X86-NEXT:    pushl %ebp984; WIN-X86-NEXT:    movl %esp, %ebp985; WIN-X86-NEXT:    pushl %ebx986; WIN-X86-NEXT:    pushl %edi987; WIN-X86-NEXT:    pushl %esi988; WIN-X86-NEXT:    andl $-16, %esp989; WIN-X86-NEXT:    subl $80, %esp990; WIN-X86-NEXT:    movl 16(%ebp), %esi991; WIN-X86-NEXT:    movl 20(%ebp), %edi992; WIN-X86-NEXT:    movl _vf128, %edx993; WIN-X86-NEXT:    movl _vf128+4, %ebx994; WIN-X86-NEXT:    movl _vf128+8, %ecx995; WIN-X86-NEXT:    movl _vf128+12, %eax996; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)997; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)998; WIN-X86-NEXT:    movl 12(%ebp), %esi999; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1000; WIN-X86-NEXT:    movl 8(%ebp), %esi1001; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1002; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1003; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1004; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)1005; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1006; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1007; WIN-X86-NEXT:    movl %eax, (%esp)1008; WIN-X86-NEXT:    calll ___divtf31009; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1010; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1011; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1012; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1013; WIN-X86-NEXT:    movl %esi, _vf128+81014; WIN-X86-NEXT:    movl %edx, _vf128+121015; WIN-X86-NEXT:    movl %eax, _vf1281016; WIN-X86-NEXT:    movl %ecx, _vf128+41017; WIN-X86-NEXT:    leal -12(%ebp), %esp1018; WIN-X86-NEXT:    popl %esi1019; WIN-X86-NEXT:    popl %edi1020; WIN-X86-NEXT:    popl %ebx1021; WIN-X86-NEXT:    popl %ebp1022; WIN-X86-NEXT:    retl1023entry:1024  %0 = load fp128, ptr @vf128, align 161025  %div = fdiv fp128 %0, %d11026  store fp128 %div, ptr @vf128, align 161027  ret void1028}1029 1030define dso_local void @Test128Rem(fp128 %d1, fp128 %d2) nounwind {1031; ANDROID-LABEL: Test128Rem:1032; ANDROID:       # %bb.0: # %entry1033; ANDROID-NEXT:    pushq %rax1034; ANDROID-NEXT:    callq fmodl@PLT1035; ANDROID-NEXT:    movaps %xmm0, vf128(%rip)1036; ANDROID-NEXT:    popq %rax1037; ANDROID-NEXT:    retq1038;1039; GNU-LABEL: Test128Rem:1040; GNU:       # %bb.0: # %entry1041; GNU-NEXT:    pushq %rax1042; GNU-NEXT:    callq fmodf128@PLT1043; GNU-NEXT:    movaps %xmm0, vf128(%rip)1044; GNU-NEXT:    popq %rax1045; GNU-NEXT:    retq1046;1047; X86-LABEL: Test128Rem:1048; X86:       # %bb.0: # %entry1049; X86-NEXT:    pushl %ebp1050; X86-NEXT:    pushl %ebx1051; X86-NEXT:    pushl %edi1052; X86-NEXT:    pushl %esi1053; X86-NEXT:    subl $76, %esp1054; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1055; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1056; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1057; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1058; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx1059; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp1060; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1061; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1062; X86-NEXT:    movl %ebp, {{[0-9]+}}(%esp)1063; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)1064; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1065; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1066; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1067; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1068; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1069; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1070; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1071; X86-NEXT:    movl %eax, (%esp)1072; X86-NEXT:    calll fmodf1281073; X86-NEXT:    subl $4, %esp1074; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm01075; X86-NEXT:    movaps %xmm0, vf1281076; X86-NEXT:    addl $76, %esp1077; X86-NEXT:    popl %esi1078; X86-NEXT:    popl %edi1079; X86-NEXT:    popl %ebx1080; X86-NEXT:    popl %ebp1081; X86-NEXT:    retl1082;1083; WIN-LABEL: Test128Rem:1084; WIN:       # %bb.0: # %entry1085; WIN-NEXT:    subq $72, %rsp1086; WIN-NEXT:    movaps (%rcx), %xmm01087; WIN-NEXT:    movaps (%rdx), %xmm11088; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)1089; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)1090; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx1091; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx1092; WIN-NEXT:    callq fmodl1093; WIN-NEXT:    movaps %xmm0, vf128(%rip)1094; WIN-NEXT:    addq $72, %rsp1095; WIN-NEXT:    retq1096;1097; WIN-X86-LABEL: Test128Rem:1098; WIN-X86:       # %bb.0: # %entry1099; WIN-X86-NEXT:    pushl %ebp1100; WIN-X86-NEXT:    movl %esp, %ebp1101; WIN-X86-NEXT:    pushl %ebx1102; WIN-X86-NEXT:    pushl %edi1103; WIN-X86-NEXT:    pushl %esi1104; WIN-X86-NEXT:    andl $-16, %esp1105; WIN-X86-NEXT:    subl $80, %esp1106; WIN-X86-NEXT:    movl 16(%ebp), %edx1107; WIN-X86-NEXT:    movl 20(%ebp), %esi1108; WIN-X86-NEXT:    movl 24(%ebp), %edi1109; WIN-X86-NEXT:    movl 28(%ebp), %ebx1110; WIN-X86-NEXT:    movl 32(%ebp), %ecx1111; WIN-X86-NEXT:    movl 36(%ebp), %eax1112; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1113; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1114; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)1115; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1116; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1117; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1118; WIN-X86-NEXT:    movl 12(%ebp), %eax1119; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1120; WIN-X86-NEXT:    movl 8(%ebp), %eax1121; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1122; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1123; WIN-X86-NEXT:    movl %eax, (%esp)1124; WIN-X86-NEXT:    calll _fmodl1125; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1126; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1127; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1128; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1129; WIN-X86-NEXT:    movl %esi, _vf128+121130; WIN-X86-NEXT:    movl %edx, _vf128+81131; WIN-X86-NEXT:    movl %ecx, _vf128+41132; WIN-X86-NEXT:    movl %eax, _vf1281133; WIN-X86-NEXT:    leal -12(%ebp), %esp1134; WIN-X86-NEXT:    popl %esi1135; WIN-X86-NEXT:    popl %edi1136; WIN-X86-NEXT:    popl %ebx1137; WIN-X86-NEXT:    popl %ebp1138; WIN-X86-NEXT:    retl1139entry:1140  %div = frem fp128 %d1, %d21141  store fp128 %div, ptr @vf128, align 161142  ret void1143}1144 1145define dso_local void @Test128_1Rem(fp128 %d1) nounwind {1146; ANDROID-LABEL: Test128_1Rem:1147; ANDROID:       # %bb.0: # %entry1148; ANDROID-NEXT:    pushq %rax1149; ANDROID-NEXT:    movaps %xmm0, %xmm11150; ANDROID-NEXT:    movaps vf128(%rip), %xmm01151; ANDROID-NEXT:    callq fmodl@PLT1152; ANDROID-NEXT:    movaps %xmm0, vf128(%rip)1153; ANDROID-NEXT:    popq %rax1154; ANDROID-NEXT:    retq1155;1156; GNU-LABEL: Test128_1Rem:1157; GNU:       # %bb.0: # %entry1158; GNU-NEXT:    pushq %rax1159; GNU-NEXT:    movaps %xmm0, %xmm11160; GNU-NEXT:    movaps vf128(%rip), %xmm01161; GNU-NEXT:    callq fmodf128@PLT1162; GNU-NEXT:    movaps %xmm0, vf128(%rip)1163; GNU-NEXT:    popq %rax1164; GNU-NEXT:    retq1165;1166; X86-LABEL: Test128_1Rem:1167; X86:       # %bb.0: # %entry1168; X86-NEXT:    pushl %ebp1169; X86-NEXT:    pushl %ebx1170; X86-NEXT:    pushl %edi1171; X86-NEXT:    pushl %esi1172; X86-NEXT:    subl $76, %esp1173; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1174; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1175; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1176; X86-NEXT:    movl vf128, %edi1177; X86-NEXT:    movl vf128+4, %ebx1178; X86-NEXT:    movl vf128+8, %ebp1179; X86-NEXT:    movl vf128+12, %eax1180; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1181; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1182; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1183; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1184; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1185; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1186; X86-NEXT:    movl %ebp, {{[0-9]+}}(%esp)1187; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)1188; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1189; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1190; X86-NEXT:    movl %eax, (%esp)1191; X86-NEXT:    calll fmodf1281192; X86-NEXT:    subl $4, %esp1193; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm01194; X86-NEXT:    movaps %xmm0, vf1281195; X86-NEXT:    addl $76, %esp1196; X86-NEXT:    popl %esi1197; X86-NEXT:    popl %edi1198; X86-NEXT:    popl %ebx1199; X86-NEXT:    popl %ebp1200; X86-NEXT:    retl1201;1202; WIN-LABEL: Test128_1Rem:1203; WIN:       # %bb.0: # %entry1204; WIN-NEXT:    subq $72, %rsp1205; WIN-NEXT:    movaps (%rcx), %xmm01206; WIN-NEXT:    movaps vf128(%rip), %xmm11207; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)1208; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)1209; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx1210; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx1211; WIN-NEXT:    callq fmodl1212; WIN-NEXT:    movaps %xmm0, vf128(%rip)1213; WIN-NEXT:    addq $72, %rsp1214; WIN-NEXT:    retq1215;1216; WIN-X86-LABEL: Test128_1Rem:1217; WIN-X86:       # %bb.0: # %entry1218; WIN-X86-NEXT:    pushl %ebp1219; WIN-X86-NEXT:    movl %esp, %ebp1220; WIN-X86-NEXT:    pushl %ebx1221; WIN-X86-NEXT:    pushl %edi1222; WIN-X86-NEXT:    pushl %esi1223; WIN-X86-NEXT:    andl $-16, %esp1224; WIN-X86-NEXT:    subl $80, %esp1225; WIN-X86-NEXT:    movl 16(%ebp), %esi1226; WIN-X86-NEXT:    movl 20(%ebp), %edi1227; WIN-X86-NEXT:    movl _vf128, %edx1228; WIN-X86-NEXT:    movl _vf128+4, %ebx1229; WIN-X86-NEXT:    movl _vf128+8, %ecx1230; WIN-X86-NEXT:    movl _vf128+12, %eax1231; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1232; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1233; WIN-X86-NEXT:    movl 12(%ebp), %esi1234; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1235; WIN-X86-NEXT:    movl 8(%ebp), %esi1236; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1237; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1238; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1239; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)1240; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1241; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1242; WIN-X86-NEXT:    movl %eax, (%esp)1243; WIN-X86-NEXT:    calll _fmodl1244; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1245; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1246; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1247; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1248; WIN-X86-NEXT:    movl %esi, _vf128+81249; WIN-X86-NEXT:    movl %edx, _vf128+121250; WIN-X86-NEXT:    movl %eax, _vf1281251; WIN-X86-NEXT:    movl %ecx, _vf128+41252; WIN-X86-NEXT:    leal -12(%ebp), %esp1253; WIN-X86-NEXT:    popl %esi1254; WIN-X86-NEXT:    popl %edi1255; WIN-X86-NEXT:    popl %ebx1256; WIN-X86-NEXT:    popl %ebp1257; WIN-X86-NEXT:    retl1258entry:1259  %0 = load fp128, ptr @vf128, align 161260  %div = frem fp128 %0, %d11261  store fp128 %div, ptr @vf128, align 161262  ret void1263}1264 1265define dso_local void @Test128Sqrt(fp128 %d1) nounwind {1266; ANDROID-LABEL: Test128Sqrt:1267; ANDROID:       # %bb.0: # %entry1268; ANDROID-NEXT:    pushq %rax1269; ANDROID-NEXT:    callq sqrtl@PLT1270; ANDROID-NEXT:    movaps %xmm0, vf128(%rip)1271; ANDROID-NEXT:    popq %rax1272; ANDROID-NEXT:    retq1273;1274; GNU-LABEL: Test128Sqrt:1275; GNU:       # %bb.0: # %entry1276; GNU-NEXT:    pushq %rax1277; GNU-NEXT:    callq sqrtf128@PLT1278; GNU-NEXT:    movaps %xmm0, vf128(%rip)1279; GNU-NEXT:    popq %rax1280; GNU-NEXT:    retq1281;1282; X86-LABEL: Test128Sqrt:1283; X86:       # %bb.0: # %entry1284; X86-NEXT:    pushl %esi1285; X86-NEXT:    subl $56, %esp1286; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1287; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1288; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1289; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1290; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1291; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1292; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1293; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1294; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1295; X86-NEXT:    movl %eax, (%esp)1296; X86-NEXT:    calll sqrtf1281297; X86-NEXT:    subl $4, %esp1298; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm01299; X86-NEXT:    movaps %xmm0, vf1281300; X86-NEXT:    addl $56, %esp1301; X86-NEXT:    popl %esi1302; X86-NEXT:    retl1303;1304; WIN-LABEL: Test128Sqrt:1305; WIN:       # %bb.0: # %entry1306; WIN-NEXT:    subq $56, %rsp1307; WIN-NEXT:    movaps (%rcx), %xmm01308; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)1309; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx1310; WIN-NEXT:    callq sqrtl1311; WIN-NEXT:    movaps %xmm0, vf128(%rip)1312; WIN-NEXT:    addq $56, %rsp1313; WIN-NEXT:    retq1314;1315; WIN-X86-LABEL: Test128Sqrt:1316; WIN-X86:       # %bb.0: # %entry1317; WIN-X86-NEXT:    pushl %ebp1318; WIN-X86-NEXT:    movl %esp, %ebp1319; WIN-X86-NEXT:    pushl %esi1320; WIN-X86-NEXT:    andl $-16, %esp1321; WIN-X86-NEXT:    subl $64, %esp1322; WIN-X86-NEXT:    movl 8(%ebp), %eax1323; WIN-X86-NEXT:    movl 12(%ebp), %ecx1324; WIN-X86-NEXT:    movl 16(%ebp), %edx1325; WIN-X86-NEXT:    movl 20(%ebp), %esi1326; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1327; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1328; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1329; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1330; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1331; WIN-X86-NEXT:    movl %eax, (%esp)1332; WIN-X86-NEXT:    calll _sqrtl1333; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1334; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1335; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1336; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1337; WIN-X86-NEXT:    movl %esi, _vf128+121338; WIN-X86-NEXT:    movl %edx, _vf128+81339; WIN-X86-NEXT:    movl %ecx, _vf128+41340; WIN-X86-NEXT:    movl %eax, _vf1281341; WIN-X86-NEXT:    leal -4(%ebp), %esp1342; WIN-X86-NEXT:    popl %esi1343; WIN-X86-NEXT:    popl %ebp1344; WIN-X86-NEXT:    retl1345entry:1346  %sqrt = call fp128 @llvm.sqrt.f128(fp128 %d1)1347  store fp128 %sqrt, ptr @vf128, align 161348  ret void1349}1350declare fp128 @llvm.sqrt.f128(fp128)1351 1352define dso_local void @Test128Sin(fp128 %d1) nounwind {1353; ANDROID-LABEL: Test128Sin:1354; ANDROID:       # %bb.0: # %entry1355; ANDROID-NEXT:    pushq %rax1356; ANDROID-NEXT:    callq sinl@PLT1357; ANDROID-NEXT:    movaps %xmm0, vf128(%rip)1358; ANDROID-NEXT:    popq %rax1359; ANDROID-NEXT:    retq1360;1361; GNU-LABEL: Test128Sin:1362; GNU:       # %bb.0: # %entry1363; GNU-NEXT:    pushq %rax1364; GNU-NEXT:    callq sinf128@PLT1365; GNU-NEXT:    movaps %xmm0, vf128(%rip)1366; GNU-NEXT:    popq %rax1367; GNU-NEXT:    retq1368;1369; X86-LABEL: Test128Sin:1370; X86:       # %bb.0: # %entry1371; X86-NEXT:    pushl %esi1372; X86-NEXT:    subl $56, %esp1373; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1374; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1375; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1376; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1377; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1378; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1379; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1380; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1381; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1382; X86-NEXT:    movl %eax, (%esp)1383; X86-NEXT:    calll sinf1281384; X86-NEXT:    subl $4, %esp1385; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm01386; X86-NEXT:    movaps %xmm0, vf1281387; X86-NEXT:    addl $56, %esp1388; X86-NEXT:    popl %esi1389; X86-NEXT:    retl1390;1391; WIN-LABEL: Test128Sin:1392; WIN:       # %bb.0: # %entry1393; WIN-NEXT:    subq $56, %rsp1394; WIN-NEXT:    movaps (%rcx), %xmm01395; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)1396; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx1397; WIN-NEXT:    callq sinl1398; WIN-NEXT:    movaps %xmm0, vf128(%rip)1399; WIN-NEXT:    addq $56, %rsp1400; WIN-NEXT:    retq1401;1402; WIN-X86-LABEL: Test128Sin:1403; WIN-X86:       # %bb.0: # %entry1404; WIN-X86-NEXT:    pushl %ebp1405; WIN-X86-NEXT:    movl %esp, %ebp1406; WIN-X86-NEXT:    pushl %esi1407; WIN-X86-NEXT:    andl $-16, %esp1408; WIN-X86-NEXT:    subl $64, %esp1409; WIN-X86-NEXT:    movl 8(%ebp), %eax1410; WIN-X86-NEXT:    movl 12(%ebp), %ecx1411; WIN-X86-NEXT:    movl 16(%ebp), %edx1412; WIN-X86-NEXT:    movl 20(%ebp), %esi1413; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1414; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1415; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1416; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1417; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1418; WIN-X86-NEXT:    movl %eax, (%esp)1419; WIN-X86-NEXT:    calll _sinl1420; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1421; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1422; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1423; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1424; WIN-X86-NEXT:    movl %esi, _vf128+121425; WIN-X86-NEXT:    movl %edx, _vf128+81426; WIN-X86-NEXT:    movl %ecx, _vf128+41427; WIN-X86-NEXT:    movl %eax, _vf1281428; WIN-X86-NEXT:    leal -4(%ebp), %esp1429; WIN-X86-NEXT:    popl %esi1430; WIN-X86-NEXT:    popl %ebp1431; WIN-X86-NEXT:    retl1432entry:1433  %sqrt = call fp128 @llvm.sin.f128(fp128 %d1)1434  store fp128 %sqrt, ptr @vf128, align 161435  ret void1436}1437declare fp128 @llvm.sin.f128(fp128)1438 1439define dso_local void @Test128Cos(fp128 %d1) nounwind {1440; ANDROID-LABEL: Test128Cos:1441; ANDROID:       # %bb.0: # %entry1442; ANDROID-NEXT:    pushq %rax1443; ANDROID-NEXT:    callq cosl@PLT1444; ANDROID-NEXT:    movaps %xmm0, vf128(%rip)1445; ANDROID-NEXT:    popq %rax1446; ANDROID-NEXT:    retq1447;1448; GNU-LABEL: Test128Cos:1449; GNU:       # %bb.0: # %entry1450; GNU-NEXT:    pushq %rax1451; GNU-NEXT:    callq cosf128@PLT1452; GNU-NEXT:    movaps %xmm0, vf128(%rip)1453; GNU-NEXT:    popq %rax1454; GNU-NEXT:    retq1455;1456; X86-LABEL: Test128Cos:1457; X86:       # %bb.0: # %entry1458; X86-NEXT:    pushl %esi1459; X86-NEXT:    subl $56, %esp1460; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1461; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1462; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1463; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1464; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1465; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1466; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1467; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1468; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1469; X86-NEXT:    movl %eax, (%esp)1470; X86-NEXT:    calll cosf1281471; X86-NEXT:    subl $4, %esp1472; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm01473; X86-NEXT:    movaps %xmm0, vf1281474; X86-NEXT:    addl $56, %esp1475; X86-NEXT:    popl %esi1476; X86-NEXT:    retl1477;1478; WIN-LABEL: Test128Cos:1479; WIN:       # %bb.0: # %entry1480; WIN-NEXT:    subq $56, %rsp1481; WIN-NEXT:    movaps (%rcx), %xmm01482; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)1483; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx1484; WIN-NEXT:    callq cosl1485; WIN-NEXT:    movaps %xmm0, vf128(%rip)1486; WIN-NEXT:    addq $56, %rsp1487; WIN-NEXT:    retq1488;1489; WIN-X86-LABEL: Test128Cos:1490; WIN-X86:       # %bb.0: # %entry1491; WIN-X86-NEXT:    pushl %ebp1492; WIN-X86-NEXT:    movl %esp, %ebp1493; WIN-X86-NEXT:    pushl %esi1494; WIN-X86-NEXT:    andl $-16, %esp1495; WIN-X86-NEXT:    subl $64, %esp1496; WIN-X86-NEXT:    movl 8(%ebp), %eax1497; WIN-X86-NEXT:    movl 12(%ebp), %ecx1498; WIN-X86-NEXT:    movl 16(%ebp), %edx1499; WIN-X86-NEXT:    movl 20(%ebp), %esi1500; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1501; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1502; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1503; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1504; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1505; WIN-X86-NEXT:    movl %eax, (%esp)1506; WIN-X86-NEXT:    calll _cosl1507; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1508; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1509; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1510; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1511; WIN-X86-NEXT:    movl %esi, _vf128+121512; WIN-X86-NEXT:    movl %edx, _vf128+81513; WIN-X86-NEXT:    movl %ecx, _vf128+41514; WIN-X86-NEXT:    movl %eax, _vf1281515; WIN-X86-NEXT:    leal -4(%ebp), %esp1516; WIN-X86-NEXT:    popl %esi1517; WIN-X86-NEXT:    popl %ebp1518; WIN-X86-NEXT:    retl1519entry:1520  %sqrt = call fp128 @llvm.cos.f128(fp128 %d1)1521  store fp128 %sqrt, ptr @vf128, align 161522  ret void1523}1524declare fp128 @llvm.cos.f128(fp128)1525 1526define dso_local void @Test128Ceil(fp128 %d1) nounwind {1527; ANDROID-LABEL: Test128Ceil:1528; ANDROID:       # %bb.0: # %entry1529; ANDROID-NEXT:    pushq %rax1530; ANDROID-NEXT:    callq ceill@PLT1531; ANDROID-NEXT:    movaps %xmm0, vf128(%rip)1532; ANDROID-NEXT:    popq %rax1533; ANDROID-NEXT:    retq1534;1535; GNU-LABEL: Test128Ceil:1536; GNU:       # %bb.0: # %entry1537; GNU-NEXT:    pushq %rax1538; GNU-NEXT:    callq ceilf128@PLT1539; GNU-NEXT:    movaps %xmm0, vf128(%rip)1540; GNU-NEXT:    popq %rax1541; GNU-NEXT:    retq1542;1543; X86-LABEL: Test128Ceil:1544; X86:       # %bb.0: # %entry1545; X86-NEXT:    pushl %esi1546; X86-NEXT:    subl $56, %esp1547; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1548; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1549; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1550; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1551; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1552; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1553; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1554; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1555; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1556; X86-NEXT:    movl %eax, (%esp)1557; X86-NEXT:    calll ceilf1281558; X86-NEXT:    subl $4, %esp1559; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm01560; X86-NEXT:    movaps %xmm0, vf1281561; X86-NEXT:    addl $56, %esp1562; X86-NEXT:    popl %esi1563; X86-NEXT:    retl1564;1565; WIN-LABEL: Test128Ceil:1566; WIN:       # %bb.0: # %entry1567; WIN-NEXT:    subq $56, %rsp1568; WIN-NEXT:    movaps (%rcx), %xmm01569; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)1570; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx1571; WIN-NEXT:    callq ceill1572; WIN-NEXT:    movaps %xmm0, vf128(%rip)1573; WIN-NEXT:    addq $56, %rsp1574; WIN-NEXT:    retq1575;1576; WIN-X86-LABEL: Test128Ceil:1577; WIN-X86:       # %bb.0: # %entry1578; WIN-X86-NEXT:    pushl %ebp1579; WIN-X86-NEXT:    movl %esp, %ebp1580; WIN-X86-NEXT:    pushl %esi1581; WIN-X86-NEXT:    andl $-16, %esp1582; WIN-X86-NEXT:    subl $64, %esp1583; WIN-X86-NEXT:    movl 8(%ebp), %eax1584; WIN-X86-NEXT:    movl 12(%ebp), %ecx1585; WIN-X86-NEXT:    movl 16(%ebp), %edx1586; WIN-X86-NEXT:    movl 20(%ebp), %esi1587; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1588; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1589; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1590; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1591; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1592; WIN-X86-NEXT:    movl %eax, (%esp)1593; WIN-X86-NEXT:    calll _ceill1594; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1595; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1596; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1597; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1598; WIN-X86-NEXT:    movl %esi, _vf128+121599; WIN-X86-NEXT:    movl %edx, _vf128+81600; WIN-X86-NEXT:    movl %ecx, _vf128+41601; WIN-X86-NEXT:    movl %eax, _vf1281602; WIN-X86-NEXT:    leal -4(%ebp), %esp1603; WIN-X86-NEXT:    popl %esi1604; WIN-X86-NEXT:    popl %ebp1605; WIN-X86-NEXT:    retl1606entry:1607  %sqrt = call fp128 @llvm.ceil.f128(fp128 %d1)1608  store fp128 %sqrt, ptr @vf128, align 161609  ret void1610}1611declare fp128 @llvm.ceil.f128(fp128)1612 1613define dso_local void @Test128Floor(fp128 %d1) nounwind {1614; ANDROID-LABEL: Test128Floor:1615; ANDROID:       # %bb.0: # %entry1616; ANDROID-NEXT:    pushq %rax1617; ANDROID-NEXT:    callq floorl@PLT1618; ANDROID-NEXT:    movaps %xmm0, vf128(%rip)1619; ANDROID-NEXT:    popq %rax1620; ANDROID-NEXT:    retq1621;1622; GNU-LABEL: Test128Floor:1623; GNU:       # %bb.0: # %entry1624; GNU-NEXT:    pushq %rax1625; GNU-NEXT:    callq floorf128@PLT1626; GNU-NEXT:    movaps %xmm0, vf128(%rip)1627; GNU-NEXT:    popq %rax1628; GNU-NEXT:    retq1629;1630; X86-LABEL: Test128Floor:1631; X86:       # %bb.0: # %entry1632; X86-NEXT:    pushl %esi1633; X86-NEXT:    subl $56, %esp1634; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1635; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1636; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1637; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1638; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1639; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1640; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1641; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1642; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1643; X86-NEXT:    movl %eax, (%esp)1644; X86-NEXT:    calll floorf1281645; X86-NEXT:    subl $4, %esp1646; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm01647; X86-NEXT:    movaps %xmm0, vf1281648; X86-NEXT:    addl $56, %esp1649; X86-NEXT:    popl %esi1650; X86-NEXT:    retl1651;1652; WIN-LABEL: Test128Floor:1653; WIN:       # %bb.0: # %entry1654; WIN-NEXT:    subq $56, %rsp1655; WIN-NEXT:    movaps (%rcx), %xmm01656; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)1657; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx1658; WIN-NEXT:    callq floorl1659; WIN-NEXT:    movaps %xmm0, vf128(%rip)1660; WIN-NEXT:    addq $56, %rsp1661; WIN-NEXT:    retq1662;1663; WIN-X86-LABEL: Test128Floor:1664; WIN-X86:       # %bb.0: # %entry1665; WIN-X86-NEXT:    pushl %ebp1666; WIN-X86-NEXT:    movl %esp, %ebp1667; WIN-X86-NEXT:    pushl %esi1668; WIN-X86-NEXT:    andl $-16, %esp1669; WIN-X86-NEXT:    subl $64, %esp1670; WIN-X86-NEXT:    movl 8(%ebp), %eax1671; WIN-X86-NEXT:    movl 12(%ebp), %ecx1672; WIN-X86-NEXT:    movl 16(%ebp), %edx1673; WIN-X86-NEXT:    movl 20(%ebp), %esi1674; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1675; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1676; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1677; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1678; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1679; WIN-X86-NEXT:    movl %eax, (%esp)1680; WIN-X86-NEXT:    calll _floorl1681; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1682; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1683; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1684; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1685; WIN-X86-NEXT:    movl %esi, _vf128+121686; WIN-X86-NEXT:    movl %edx, _vf128+81687; WIN-X86-NEXT:    movl %ecx, _vf128+41688; WIN-X86-NEXT:    movl %eax, _vf1281689; WIN-X86-NEXT:    leal -4(%ebp), %esp1690; WIN-X86-NEXT:    popl %esi1691; WIN-X86-NEXT:    popl %ebp1692; WIN-X86-NEXT:    retl1693entry:1694  %sqrt = call fp128 @llvm.floor.f128(fp128 %d1)1695  store fp128 %sqrt, ptr @vf128, align 161696  ret void1697}1698declare fp128 @llvm.floor.f128(fp128)1699 1700define dso_local void @Test128Trunc(fp128 %d1) nounwind {1701; ANDROID-LABEL: Test128Trunc:1702; ANDROID:       # %bb.0: # %entry1703; ANDROID-NEXT:    pushq %rax1704; ANDROID-NEXT:    callq truncl@PLT1705; ANDROID-NEXT:    movaps %xmm0, vf128(%rip)1706; ANDROID-NEXT:    popq %rax1707; ANDROID-NEXT:    retq1708;1709; GNU-LABEL: Test128Trunc:1710; GNU:       # %bb.0: # %entry1711; GNU-NEXT:    pushq %rax1712; GNU-NEXT:    callq truncf128@PLT1713; GNU-NEXT:    movaps %xmm0, vf128(%rip)1714; GNU-NEXT:    popq %rax1715; GNU-NEXT:    retq1716;1717; X86-LABEL: Test128Trunc:1718; X86:       # %bb.0: # %entry1719; X86-NEXT:    pushl %esi1720; X86-NEXT:    subl $56, %esp1721; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1722; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1723; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1724; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1725; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1726; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1727; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1728; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1729; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1730; X86-NEXT:    movl %eax, (%esp)1731; X86-NEXT:    calll truncf1281732; X86-NEXT:    subl $4, %esp1733; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm01734; X86-NEXT:    movaps %xmm0, vf1281735; X86-NEXT:    addl $56, %esp1736; X86-NEXT:    popl %esi1737; X86-NEXT:    retl1738;1739; WIN-LABEL: Test128Trunc:1740; WIN:       # %bb.0: # %entry1741; WIN-NEXT:    subq $56, %rsp1742; WIN-NEXT:    movaps (%rcx), %xmm01743; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)1744; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx1745; WIN-NEXT:    callq truncl1746; WIN-NEXT:    movaps %xmm0, vf128(%rip)1747; WIN-NEXT:    addq $56, %rsp1748; WIN-NEXT:    retq1749;1750; WIN-X86-LABEL: Test128Trunc:1751; WIN-X86:       # %bb.0: # %entry1752; WIN-X86-NEXT:    pushl %ebp1753; WIN-X86-NEXT:    movl %esp, %ebp1754; WIN-X86-NEXT:    pushl %esi1755; WIN-X86-NEXT:    andl $-16, %esp1756; WIN-X86-NEXT:    subl $64, %esp1757; WIN-X86-NEXT:    movl 8(%ebp), %eax1758; WIN-X86-NEXT:    movl 12(%ebp), %ecx1759; WIN-X86-NEXT:    movl 16(%ebp), %edx1760; WIN-X86-NEXT:    movl 20(%ebp), %esi1761; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1762; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1763; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1764; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1765; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1766; WIN-X86-NEXT:    movl %eax, (%esp)1767; WIN-X86-NEXT:    calll _truncl1768; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1769; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1770; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1771; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1772; WIN-X86-NEXT:    movl %esi, _vf128+121773; WIN-X86-NEXT:    movl %edx, _vf128+81774; WIN-X86-NEXT:    movl %ecx, _vf128+41775; WIN-X86-NEXT:    movl %eax, _vf1281776; WIN-X86-NEXT:    leal -4(%ebp), %esp1777; WIN-X86-NEXT:    popl %esi1778; WIN-X86-NEXT:    popl %ebp1779; WIN-X86-NEXT:    retl1780entry:1781  %sqrt = call fp128 @llvm.trunc.f128(fp128 %d1)1782  store fp128 %sqrt, ptr @vf128, align 161783  ret void1784}1785declare fp128 @llvm.trunc.f128(fp128)1786 1787define dso_local void @Test128Nearbyint(fp128 %d1) nounwind {1788; ANDROID-LABEL: Test128Nearbyint:1789; ANDROID:       # %bb.0: # %entry1790; ANDROID-NEXT:    pushq %rax1791; ANDROID-NEXT:    callq nearbyintl@PLT1792; ANDROID-NEXT:    movaps %xmm0, vf128(%rip)1793; ANDROID-NEXT:    popq %rax1794; ANDROID-NEXT:    retq1795;1796; GNU-LABEL: Test128Nearbyint:1797; GNU:       # %bb.0: # %entry1798; GNU-NEXT:    pushq %rax1799; GNU-NEXT:    callq nearbyintf128@PLT1800; GNU-NEXT:    movaps %xmm0, vf128(%rip)1801; GNU-NEXT:    popq %rax1802; GNU-NEXT:    retq1803;1804; X86-LABEL: Test128Nearbyint:1805; X86:       # %bb.0: # %entry1806; X86-NEXT:    pushl %esi1807; X86-NEXT:    subl $56, %esp1808; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1809; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1810; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1811; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1812; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1813; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1814; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1815; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1816; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1817; X86-NEXT:    movl %eax, (%esp)1818; X86-NEXT:    calll nearbyintf1281819; X86-NEXT:    subl $4, %esp1820; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm01821; X86-NEXT:    movaps %xmm0, vf1281822; X86-NEXT:    addl $56, %esp1823; X86-NEXT:    popl %esi1824; X86-NEXT:    retl1825;1826; WIN-LABEL: Test128Nearbyint:1827; WIN:       # %bb.0: # %entry1828; WIN-NEXT:    subq $56, %rsp1829; WIN-NEXT:    movaps (%rcx), %xmm01830; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)1831; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx1832; WIN-NEXT:    callq nearbyintl1833; WIN-NEXT:    movaps %xmm0, vf128(%rip)1834; WIN-NEXT:    addq $56, %rsp1835; WIN-NEXT:    retq1836;1837; WIN-X86-LABEL: Test128Nearbyint:1838; WIN-X86:       # %bb.0: # %entry1839; WIN-X86-NEXT:    pushl %ebp1840; WIN-X86-NEXT:    movl %esp, %ebp1841; WIN-X86-NEXT:    pushl %esi1842; WIN-X86-NEXT:    andl $-16, %esp1843; WIN-X86-NEXT:    subl $64, %esp1844; WIN-X86-NEXT:    movl 8(%ebp), %eax1845; WIN-X86-NEXT:    movl 12(%ebp), %ecx1846; WIN-X86-NEXT:    movl 16(%ebp), %edx1847; WIN-X86-NEXT:    movl 20(%ebp), %esi1848; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1849; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1850; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1851; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1852; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1853; WIN-X86-NEXT:    movl %eax, (%esp)1854; WIN-X86-NEXT:    calll _nearbyintl1855; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1856; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1857; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1858; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1859; WIN-X86-NEXT:    movl %esi, _vf128+121860; WIN-X86-NEXT:    movl %edx, _vf128+81861; WIN-X86-NEXT:    movl %ecx, _vf128+41862; WIN-X86-NEXT:    movl %eax, _vf1281863; WIN-X86-NEXT:    leal -4(%ebp), %esp1864; WIN-X86-NEXT:    popl %esi1865; WIN-X86-NEXT:    popl %ebp1866; WIN-X86-NEXT:    retl1867entry:1868  %sqrt = call fp128 @llvm.nearbyint.f128(fp128 %d1)1869  store fp128 %sqrt, ptr @vf128, align 161870  ret void1871}1872declare fp128 @llvm.nearbyint.f128(fp128)1873 1874define dso_local void @Test128Rint(fp128 %d1) nounwind {1875; ANDROID-LABEL: Test128Rint:1876; ANDROID:       # %bb.0: # %entry1877; ANDROID-NEXT:    pushq %rax1878; ANDROID-NEXT:    callq rintl@PLT1879; ANDROID-NEXT:    movaps %xmm0, vf128(%rip)1880; ANDROID-NEXT:    popq %rax1881; ANDROID-NEXT:    retq1882;1883; GNU-LABEL: Test128Rint:1884; GNU:       # %bb.0: # %entry1885; GNU-NEXT:    pushq %rax1886; GNU-NEXT:    callq rintf128@PLT1887; GNU-NEXT:    movaps %xmm0, vf128(%rip)1888; GNU-NEXT:    popq %rax1889; GNU-NEXT:    retq1890;1891; X86-LABEL: Test128Rint:1892; X86:       # %bb.0: # %entry1893; X86-NEXT:    pushl %esi1894; X86-NEXT:    subl $56, %esp1895; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1896; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1897; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1898; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1899; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1900; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1901; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1902; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1903; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1904; X86-NEXT:    movl %eax, (%esp)1905; X86-NEXT:    calll rintf1281906; X86-NEXT:    subl $4, %esp1907; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm01908; X86-NEXT:    movaps %xmm0, vf1281909; X86-NEXT:    addl $56, %esp1910; X86-NEXT:    popl %esi1911; X86-NEXT:    retl1912;1913; WIN-LABEL: Test128Rint:1914; WIN:       # %bb.0: # %entry1915; WIN-NEXT:    subq $56, %rsp1916; WIN-NEXT:    movaps (%rcx), %xmm01917; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)1918; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx1919; WIN-NEXT:    callq rintl1920; WIN-NEXT:    movaps %xmm0, vf128(%rip)1921; WIN-NEXT:    addq $56, %rsp1922; WIN-NEXT:    retq1923;1924; WIN-X86-LABEL: Test128Rint:1925; WIN-X86:       # %bb.0: # %entry1926; WIN-X86-NEXT:    pushl %ebp1927; WIN-X86-NEXT:    movl %esp, %ebp1928; WIN-X86-NEXT:    pushl %esi1929; WIN-X86-NEXT:    andl $-16, %esp1930; WIN-X86-NEXT:    subl $64, %esp1931; WIN-X86-NEXT:    movl 8(%ebp), %eax1932; WIN-X86-NEXT:    movl 12(%ebp), %ecx1933; WIN-X86-NEXT:    movl 16(%ebp), %edx1934; WIN-X86-NEXT:    movl 20(%ebp), %esi1935; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1936; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1937; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1938; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1939; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1940; WIN-X86-NEXT:    movl %eax, (%esp)1941; WIN-X86-NEXT:    calll _rintl1942; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1943; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1944; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1945; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1946; WIN-X86-NEXT:    movl %esi, _vf128+121947; WIN-X86-NEXT:    movl %edx, _vf128+81948; WIN-X86-NEXT:    movl %ecx, _vf128+41949; WIN-X86-NEXT:    movl %eax, _vf1281950; WIN-X86-NEXT:    leal -4(%ebp), %esp1951; WIN-X86-NEXT:    popl %esi1952; WIN-X86-NEXT:    popl %ebp1953; WIN-X86-NEXT:    retl1954entry:1955  %sqrt = call fp128 @llvm.rint.f128(fp128 %d1)1956  store fp128 %sqrt, ptr @vf128, align 161957  ret void1958}1959declare fp128 @llvm.rint.f128(fp128)1960 1961define dso_local void @Test128Round(fp128 %d1) nounwind {1962; ANDROID-LABEL: Test128Round:1963; ANDROID:       # %bb.0: # %entry1964; ANDROID-NEXT:    pushq %rax1965; ANDROID-NEXT:    callq roundl@PLT1966; ANDROID-NEXT:    movaps %xmm0, vf128(%rip)1967; ANDROID-NEXT:    popq %rax1968; ANDROID-NEXT:    retq1969;1970; GNU-LABEL: Test128Round:1971; GNU:       # %bb.0: # %entry1972; GNU-NEXT:    pushq %rax1973; GNU-NEXT:    callq roundf128@PLT1974; GNU-NEXT:    movaps %xmm0, vf128(%rip)1975; GNU-NEXT:    popq %rax1976; GNU-NEXT:    retq1977;1978; X86-LABEL: Test128Round:1979; X86:       # %bb.0: # %entry1980; X86-NEXT:    pushl %esi1981; X86-NEXT:    subl $56, %esp1982; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1983; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1984; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1985; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1986; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)1987; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1988; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1989; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1990; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1991; X86-NEXT:    movl %eax, (%esp)1992; X86-NEXT:    calll roundf1281993; X86-NEXT:    subl $4, %esp1994; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm01995; X86-NEXT:    movaps %xmm0, vf1281996; X86-NEXT:    addl $56, %esp1997; X86-NEXT:    popl %esi1998; X86-NEXT:    retl1999;2000; WIN-LABEL: Test128Round:2001; WIN:       # %bb.0: # %entry2002; WIN-NEXT:    subq $56, %rsp2003; WIN-NEXT:    movaps (%rcx), %xmm02004; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2005; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2006; WIN-NEXT:    callq roundl2007; WIN-NEXT:    movaps %xmm0, vf128(%rip)2008; WIN-NEXT:    addq $56, %rsp2009; WIN-NEXT:    retq2010;2011; WIN-X86-LABEL: Test128Round:2012; WIN-X86:       # %bb.0: # %entry2013; WIN-X86-NEXT:    pushl %ebp2014; WIN-X86-NEXT:    movl %esp, %ebp2015; WIN-X86-NEXT:    pushl %esi2016; WIN-X86-NEXT:    andl $-16, %esp2017; WIN-X86-NEXT:    subl $64, %esp2018; WIN-X86-NEXT:    movl 8(%ebp), %eax2019; WIN-X86-NEXT:    movl 12(%ebp), %ecx2020; WIN-X86-NEXT:    movl 16(%ebp), %edx2021; WIN-X86-NEXT:    movl 20(%ebp), %esi2022; WIN-X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)2023; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2024; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2025; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2026; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2027; WIN-X86-NEXT:    movl %eax, (%esp)2028; WIN-X86-NEXT:    calll _roundl2029; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2030; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2031; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2032; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2033; WIN-X86-NEXT:    movl %esi, _vf128+122034; WIN-X86-NEXT:    movl %edx, _vf128+82035; WIN-X86-NEXT:    movl %ecx, _vf128+42036; WIN-X86-NEXT:    movl %eax, _vf1282037; WIN-X86-NEXT:    leal -4(%ebp), %esp2038; WIN-X86-NEXT:    popl %esi2039; WIN-X86-NEXT:    popl %ebp2040; WIN-X86-NEXT:    retl2041entry:2042  %sqrt = call fp128 @llvm.round.f128(fp128 %d1)2043  store fp128 %sqrt, ptr @vf128, align 162044  ret void2045}2046declare fp128 @llvm.round.f128(fp128)2047 2048define fp128 @Test128FMA(fp128 %a, fp128 %b, fp128 %c) nounwind {2049; ANDROID-LABEL: Test128FMA:2050; ANDROID:       # %bb.0: # %entry2051; ANDROID-NEXT:    jmp fmal@PLT # TAILCALL2052;2053; GNU-LABEL: Test128FMA:2054; GNU:       # %bb.0: # %entry2055; GNU-NEXT:    jmp fmaf128@PLT # TAILCALL2056;2057; X86-LABEL: Test128FMA:2058; X86:       # %bb.0: # %entry2059; X86-NEXT:    pushl %ebp2060; X86-NEXT:    pushl %ebx2061; X86-NEXT:    pushl %edi2062; X86-NEXT:    pushl %esi2063; X86-NEXT:    subl $92, %esp2064; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp2065; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx2066; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2067; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2068; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2069; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2070; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2071; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2072; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2073; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2074; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)2075; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2076; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)2077; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2078; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2079; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2080; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2081; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2082; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2083; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2084; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2085; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2086; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2087; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2088; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2089; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2090; X86-NEXT:    movl %eax, (%esp)2091; X86-NEXT:    calll fmaf1282092; X86-NEXT:    subl $4, %esp2093; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm02094; X86-NEXT:    movaps %xmm0, (%ebp)2095; X86-NEXT:    movl %ebp, %eax2096; X86-NEXT:    addl $92, %esp2097; X86-NEXT:    popl %esi2098; X86-NEXT:    popl %edi2099; X86-NEXT:    popl %ebx2100; X86-NEXT:    popl %ebp2101; X86-NEXT:    retl $42102;2103; WIN-LABEL: Test128FMA:2104; WIN:       # %bb.0: # %entry2105; WIN-NEXT:    subq $88, %rsp2106; WIN-NEXT:    movaps (%r8), %xmm02107; WIN-NEXT:    movaps (%rcx), %xmm12108; WIN-NEXT:    movaps (%rdx), %xmm22109; WIN-NEXT:    movaps %xmm2, {{[0-9]+}}(%rsp)2110; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)2111; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2112; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2113; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx2114; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %r82115; WIN-NEXT:    callq fmal2116; WIN-NEXT:    addq $88, %rsp2117; WIN-NEXT:    retq2118;2119; WIN-X86-LABEL: Test128FMA:2120; WIN-X86:       # %bb.0: # %entry2121; WIN-X86-NEXT:    pushl %ebp2122; WIN-X86-NEXT:    movl %esp, %ebp2123; WIN-X86-NEXT:    pushl %ebx2124; WIN-X86-NEXT:    pushl %edi2125; WIN-X86-NEXT:    pushl %esi2126; WIN-X86-NEXT:    andl $-16, %esp2127; WIN-X86-NEXT:    subl $96, %esp2128; WIN-X86-NEXT:    movl 8(%ebp), %esi2129; WIN-X86-NEXT:    movl 52(%ebp), %ebx2130; WIN-X86-NEXT:    movl 56(%ebp), %edi2131; WIN-X86-NEXT:    movl 60(%ebp), %edx2132; WIN-X86-NEXT:    movl 64(%ebp), %ecx2133; WIN-X86-NEXT:    movl 68(%ebp), %eax2134; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2135; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2136; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2137; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2138; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)2139; WIN-X86-NEXT:    movl 48(%ebp), %eax2140; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2141; WIN-X86-NEXT:    movl 44(%ebp), %eax2142; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2143; WIN-X86-NEXT:    movl 40(%ebp), %eax2144; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2145; WIN-X86-NEXT:    movl 36(%ebp), %eax2146; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2147; WIN-X86-NEXT:    movl 32(%ebp), %eax2148; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2149; WIN-X86-NEXT:    movl 28(%ebp), %eax2150; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2151; WIN-X86-NEXT:    movl 24(%ebp), %eax2152; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2153; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2154; WIN-X86-NEXT:    movl %eax, (%esp)2155; WIN-X86-NEXT:    calll _fmal2156; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2157; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2158; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2159; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2160; WIN-X86-NEXT:    movl %edi, 12(%esi)2161; WIN-X86-NEXT:    movl %edx, 8(%esi)2162; WIN-X86-NEXT:    movl %ecx, 4(%esi)2163; WIN-X86-NEXT:    movl %eax, (%esi)2164; WIN-X86-NEXT:    movl %esi, %eax2165; WIN-X86-NEXT:    leal -12(%ebp), %esp2166; WIN-X86-NEXT:    popl %esi2167; WIN-X86-NEXT:    popl %edi2168; WIN-X86-NEXT:    popl %ebx2169; WIN-X86-NEXT:    popl %ebp2170; WIN-X86-NEXT:    retl2171entry:2172  %call = call fp128 @llvm.fma.f128(fp128 %a, fp128 %b, fp128 %c)2173  ret fp128 %call2174}2175declare fp128 @llvm.fma.f128(fp128, fp128, fp128)2176 2177define fp128 @Test128Acos(fp128 %a) nounwind {2178; ANDROID-LABEL: Test128Acos:2179; ANDROID:       # %bb.0:2180; ANDROID-NEXT:    jmp acosl@PLT # TAILCALL2181;2182; GNU-LABEL: Test128Acos:2183; GNU:       # %bb.0:2184; GNU-NEXT:    jmp acosf128@PLT # TAILCALL2185;2186; X86-LABEL: Test128Acos:2187; X86:       # %bb.0:2188; X86-NEXT:    pushl %edi2189; X86-NEXT:    pushl %esi2190; X86-NEXT:    subl $52, %esp2191; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2192; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2193; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2194; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2195; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2196; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2197; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2198; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2199; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2200; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2201; X86-NEXT:    movl %eax, (%esp)2202; X86-NEXT:    calll acosf1282203; X86-NEXT:    subl $4, %esp2204; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm02205; X86-NEXT:    movaps %xmm0, (%esi)2206; X86-NEXT:    movl %esi, %eax2207; X86-NEXT:    addl $52, %esp2208; X86-NEXT:    popl %esi2209; X86-NEXT:    popl %edi2210; X86-NEXT:    retl $42211;2212; WIN-LABEL: Test128Acos:2213; WIN:       # %bb.0:2214; WIN-NEXT:    subq $56, %rsp2215; WIN-NEXT:    movaps (%rcx), %xmm02216; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2217; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2218; WIN-NEXT:    callq acosl2219; WIN-NEXT:    addq $56, %rsp2220; WIN-NEXT:    retq2221;2222; WIN-X86-LABEL: Test128Acos:2223; WIN-X86:       # %bb.0:2224; WIN-X86-NEXT:    pushl %ebp2225; WIN-X86-NEXT:    movl %esp, %ebp2226; WIN-X86-NEXT:    pushl %edi2227; WIN-X86-NEXT:    pushl %esi2228; WIN-X86-NEXT:    andl $-16, %esp2229; WIN-X86-NEXT:    subl $48, %esp2230; WIN-X86-NEXT:    movl 8(%ebp), %esi2231; WIN-X86-NEXT:    movl 24(%ebp), %eax2232; WIN-X86-NEXT:    movl 28(%ebp), %ecx2233; WIN-X86-NEXT:    movl 32(%ebp), %edx2234; WIN-X86-NEXT:    movl 36(%ebp), %edi2235; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2236; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2237; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2238; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2239; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2240; WIN-X86-NEXT:    movl %eax, (%esp)2241; WIN-X86-NEXT:    calll _acosl2242; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2243; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2244; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2245; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2246; WIN-X86-NEXT:    movl %edi, 12(%esi)2247; WIN-X86-NEXT:    movl %edx, 8(%esi)2248; WIN-X86-NEXT:    movl %ecx, 4(%esi)2249; WIN-X86-NEXT:    movl %eax, (%esi)2250; WIN-X86-NEXT:    movl %esi, %eax2251; WIN-X86-NEXT:    leal -8(%ebp), %esp2252; WIN-X86-NEXT:    popl %esi2253; WIN-X86-NEXT:    popl %edi2254; WIN-X86-NEXT:    popl %ebp2255; WIN-X86-NEXT:    retl2256  %x = call fp128 @llvm.acos.f128(fp128 %a)2257  ret fp128 %x2258}2259 2260define fp128 @Test128Asin(fp128 %a) nounwind {2261; ANDROID-LABEL: Test128Asin:2262; ANDROID:       # %bb.0:2263; ANDROID-NEXT:    jmp asinl@PLT # TAILCALL2264;2265; GNU-LABEL: Test128Asin:2266; GNU:       # %bb.0:2267; GNU-NEXT:    jmp asinf128@PLT # TAILCALL2268;2269; X86-LABEL: Test128Asin:2270; X86:       # %bb.0:2271; X86-NEXT:    pushl %edi2272; X86-NEXT:    pushl %esi2273; X86-NEXT:    subl $52, %esp2274; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2275; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2276; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2277; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2278; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2279; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2280; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2281; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2282; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2283; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2284; X86-NEXT:    movl %eax, (%esp)2285; X86-NEXT:    calll asinf1282286; X86-NEXT:    subl $4, %esp2287; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm02288; X86-NEXT:    movaps %xmm0, (%esi)2289; X86-NEXT:    movl %esi, %eax2290; X86-NEXT:    addl $52, %esp2291; X86-NEXT:    popl %esi2292; X86-NEXT:    popl %edi2293; X86-NEXT:    retl $42294;2295; WIN-LABEL: Test128Asin:2296; WIN:       # %bb.0:2297; WIN-NEXT:    subq $56, %rsp2298; WIN-NEXT:    movaps (%rcx), %xmm02299; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2300; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2301; WIN-NEXT:    callq asinl2302; WIN-NEXT:    addq $56, %rsp2303; WIN-NEXT:    retq2304;2305; WIN-X86-LABEL: Test128Asin:2306; WIN-X86:       # %bb.0:2307; WIN-X86-NEXT:    pushl %ebp2308; WIN-X86-NEXT:    movl %esp, %ebp2309; WIN-X86-NEXT:    pushl %edi2310; WIN-X86-NEXT:    pushl %esi2311; WIN-X86-NEXT:    andl $-16, %esp2312; WIN-X86-NEXT:    subl $48, %esp2313; WIN-X86-NEXT:    movl 8(%ebp), %esi2314; WIN-X86-NEXT:    movl 24(%ebp), %eax2315; WIN-X86-NEXT:    movl 28(%ebp), %ecx2316; WIN-X86-NEXT:    movl 32(%ebp), %edx2317; WIN-X86-NEXT:    movl 36(%ebp), %edi2318; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2319; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2320; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2321; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2322; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2323; WIN-X86-NEXT:    movl %eax, (%esp)2324; WIN-X86-NEXT:    calll _asinl2325; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2326; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2327; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2328; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2329; WIN-X86-NEXT:    movl %edi, 12(%esi)2330; WIN-X86-NEXT:    movl %edx, 8(%esi)2331; WIN-X86-NEXT:    movl %ecx, 4(%esi)2332; WIN-X86-NEXT:    movl %eax, (%esi)2333; WIN-X86-NEXT:    movl %esi, %eax2334; WIN-X86-NEXT:    leal -8(%ebp), %esp2335; WIN-X86-NEXT:    popl %esi2336; WIN-X86-NEXT:    popl %edi2337; WIN-X86-NEXT:    popl %ebp2338; WIN-X86-NEXT:    retl2339  %x = call fp128 @llvm.asin.f128(fp128 %a)2340  ret fp128 %x2341}2342 2343define fp128 @Test128Atan(fp128 %a) nounwind {2344; ANDROID-LABEL: Test128Atan:2345; ANDROID:       # %bb.0:2346; ANDROID-NEXT:    jmp atanl@PLT # TAILCALL2347;2348; GNU-LABEL: Test128Atan:2349; GNU:       # %bb.0:2350; GNU-NEXT:    jmp atanf128@PLT # TAILCALL2351;2352; X86-LABEL: Test128Atan:2353; X86:       # %bb.0:2354; X86-NEXT:    pushl %edi2355; X86-NEXT:    pushl %esi2356; X86-NEXT:    subl $52, %esp2357; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2358; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2359; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2360; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2361; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2362; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2363; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2364; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2365; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2366; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2367; X86-NEXT:    movl %eax, (%esp)2368; X86-NEXT:    calll atanf1282369; X86-NEXT:    subl $4, %esp2370; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm02371; X86-NEXT:    movaps %xmm0, (%esi)2372; X86-NEXT:    movl %esi, %eax2373; X86-NEXT:    addl $52, %esp2374; X86-NEXT:    popl %esi2375; X86-NEXT:    popl %edi2376; X86-NEXT:    retl $42377;2378; WIN-LABEL: Test128Atan:2379; WIN:       # %bb.0:2380; WIN-NEXT:    subq $56, %rsp2381; WIN-NEXT:    movaps (%rcx), %xmm02382; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2383; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2384; WIN-NEXT:    callq atanl2385; WIN-NEXT:    addq $56, %rsp2386; WIN-NEXT:    retq2387;2388; WIN-X86-LABEL: Test128Atan:2389; WIN-X86:       # %bb.0:2390; WIN-X86-NEXT:    pushl %ebp2391; WIN-X86-NEXT:    movl %esp, %ebp2392; WIN-X86-NEXT:    pushl %edi2393; WIN-X86-NEXT:    pushl %esi2394; WIN-X86-NEXT:    andl $-16, %esp2395; WIN-X86-NEXT:    subl $48, %esp2396; WIN-X86-NEXT:    movl 8(%ebp), %esi2397; WIN-X86-NEXT:    movl 24(%ebp), %eax2398; WIN-X86-NEXT:    movl 28(%ebp), %ecx2399; WIN-X86-NEXT:    movl 32(%ebp), %edx2400; WIN-X86-NEXT:    movl 36(%ebp), %edi2401; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2402; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2403; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2404; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2405; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2406; WIN-X86-NEXT:    movl %eax, (%esp)2407; WIN-X86-NEXT:    calll _atanl2408; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2409; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2410; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2411; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2412; WIN-X86-NEXT:    movl %edi, 12(%esi)2413; WIN-X86-NEXT:    movl %edx, 8(%esi)2414; WIN-X86-NEXT:    movl %ecx, 4(%esi)2415; WIN-X86-NEXT:    movl %eax, (%esi)2416; WIN-X86-NEXT:    movl %esi, %eax2417; WIN-X86-NEXT:    leal -8(%ebp), %esp2418; WIN-X86-NEXT:    popl %esi2419; WIN-X86-NEXT:    popl %edi2420; WIN-X86-NEXT:    popl %ebp2421; WIN-X86-NEXT:    retl2422  %x = call fp128 @llvm.atan.f128(fp128 %a)2423  ret fp128 %x2424}2425 2426define fp128 @Test128Atan2(fp128 %a, fp128 %b) nounwind {2427; ANDROID-LABEL: Test128Atan2:2428; ANDROID:       # %bb.0:2429; ANDROID-NEXT:    jmp atan2l@PLT # TAILCALL2430;2431; GNU-LABEL: Test128Atan2:2432; GNU:       # %bb.0:2433; GNU-NEXT:    jmp atan2f128@PLT # TAILCALL2434;2435; X86-LABEL: Test128Atan2:2436; X86:       # %bb.0:2437; X86-NEXT:    pushl %ebp2438; X86-NEXT:    pushl %ebx2439; X86-NEXT:    pushl %edi2440; X86-NEXT:    pushl %esi2441; X86-NEXT:    subl $76, %esp2442; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2443; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2444; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2445; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx2446; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp2447; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2448; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2449; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2450; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2451; X86-NEXT:    movl %ebp, {{[0-9]+}}(%esp)2452; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)2453; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2454; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2455; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2456; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2457; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2458; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2459; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2460; X86-NEXT:    movl %eax, (%esp)2461; X86-NEXT:    calll atan2f1282462; X86-NEXT:    subl $4, %esp2463; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm02464; X86-NEXT:    movaps %xmm0, (%esi)2465; X86-NEXT:    movl %esi, %eax2466; X86-NEXT:    addl $76, %esp2467; X86-NEXT:    popl %esi2468; X86-NEXT:    popl %edi2469; X86-NEXT:    popl %ebx2470; X86-NEXT:    popl %ebp2471; X86-NEXT:    retl $42472;2473; WIN-LABEL: Test128Atan2:2474; WIN:       # %bb.0:2475; WIN-NEXT:    subq $72, %rsp2476; WIN-NEXT:    movaps (%rcx), %xmm02477; WIN-NEXT:    movaps (%rdx), %xmm12478; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)2479; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2480; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2481; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx2482; WIN-NEXT:    callq atan2l2483; WIN-NEXT:    addq $72, %rsp2484; WIN-NEXT:    retq2485;2486; WIN-X86-LABEL: Test128Atan2:2487; WIN-X86:       # %bb.0:2488; WIN-X86-NEXT:    pushl %ebp2489; WIN-X86-NEXT:    movl %esp, %ebp2490; WIN-X86-NEXT:    pushl %ebx2491; WIN-X86-NEXT:    pushl %edi2492; WIN-X86-NEXT:    pushl %esi2493; WIN-X86-NEXT:    andl $-16, %esp2494; WIN-X86-NEXT:    subl $80, %esp2495; WIN-X86-NEXT:    movl 8(%ebp), %esi2496; WIN-X86-NEXT:    movl 36(%ebp), %edi2497; WIN-X86-NEXT:    movl 40(%ebp), %ebx2498; WIN-X86-NEXT:    movl 44(%ebp), %edx2499; WIN-X86-NEXT:    movl 48(%ebp), %ecx2500; WIN-X86-NEXT:    movl 52(%ebp), %eax2501; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2502; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2503; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2504; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)2505; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2506; WIN-X86-NEXT:    movl 32(%ebp), %eax2507; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2508; WIN-X86-NEXT:    movl 28(%ebp), %eax2509; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2510; WIN-X86-NEXT:    movl 24(%ebp), %eax2511; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2512; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2513; WIN-X86-NEXT:    movl %eax, (%esp)2514; WIN-X86-NEXT:    calll _atan2l2515; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2516; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2517; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2518; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2519; WIN-X86-NEXT:    movl %edi, 12(%esi)2520; WIN-X86-NEXT:    movl %edx, 8(%esi)2521; WIN-X86-NEXT:    movl %ecx, 4(%esi)2522; WIN-X86-NEXT:    movl %eax, (%esi)2523; WIN-X86-NEXT:    movl %esi, %eax2524; WIN-X86-NEXT:    leal -12(%ebp), %esp2525; WIN-X86-NEXT:    popl %esi2526; WIN-X86-NEXT:    popl %edi2527; WIN-X86-NEXT:    popl %ebx2528; WIN-X86-NEXT:    popl %ebp2529; WIN-X86-NEXT:    retl2530  %x = call fp128 @llvm.atan2.f128(fp128 %a, fp128 %b)2531  ret fp128 %x2532}2533 2534define fp128 @Test128Cosh(fp128 %a) nounwind {2535; ANDROID-LABEL: Test128Cosh:2536; ANDROID:       # %bb.0:2537; ANDROID-NEXT:    jmp coshl@PLT # TAILCALL2538;2539; GNU-LABEL: Test128Cosh:2540; GNU:       # %bb.0:2541; GNU-NEXT:    jmp coshf128@PLT # TAILCALL2542;2543; X86-LABEL: Test128Cosh:2544; X86:       # %bb.0:2545; X86-NEXT:    pushl %edi2546; X86-NEXT:    pushl %esi2547; X86-NEXT:    subl $52, %esp2548; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2549; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2550; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2551; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2552; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2553; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2554; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2555; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2556; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2557; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2558; X86-NEXT:    movl %eax, (%esp)2559; X86-NEXT:    calll coshf1282560; X86-NEXT:    subl $4, %esp2561; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm02562; X86-NEXT:    movaps %xmm0, (%esi)2563; X86-NEXT:    movl %esi, %eax2564; X86-NEXT:    addl $52, %esp2565; X86-NEXT:    popl %esi2566; X86-NEXT:    popl %edi2567; X86-NEXT:    retl $42568;2569; WIN-LABEL: Test128Cosh:2570; WIN:       # %bb.0:2571; WIN-NEXT:    subq $56, %rsp2572; WIN-NEXT:    movaps (%rcx), %xmm02573; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2574; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2575; WIN-NEXT:    callq coshl2576; WIN-NEXT:    addq $56, %rsp2577; WIN-NEXT:    retq2578;2579; WIN-X86-LABEL: Test128Cosh:2580; WIN-X86:       # %bb.0:2581; WIN-X86-NEXT:    pushl %ebp2582; WIN-X86-NEXT:    movl %esp, %ebp2583; WIN-X86-NEXT:    pushl %edi2584; WIN-X86-NEXT:    pushl %esi2585; WIN-X86-NEXT:    andl $-16, %esp2586; WIN-X86-NEXT:    subl $48, %esp2587; WIN-X86-NEXT:    movl 8(%ebp), %esi2588; WIN-X86-NEXT:    movl 24(%ebp), %eax2589; WIN-X86-NEXT:    movl 28(%ebp), %ecx2590; WIN-X86-NEXT:    movl 32(%ebp), %edx2591; WIN-X86-NEXT:    movl 36(%ebp), %edi2592; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2593; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2594; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2595; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2596; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2597; WIN-X86-NEXT:    movl %eax, (%esp)2598; WIN-X86-NEXT:    calll _coshl2599; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2600; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2601; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2602; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2603; WIN-X86-NEXT:    movl %edi, 12(%esi)2604; WIN-X86-NEXT:    movl %edx, 8(%esi)2605; WIN-X86-NEXT:    movl %ecx, 4(%esi)2606; WIN-X86-NEXT:    movl %eax, (%esi)2607; WIN-X86-NEXT:    movl %esi, %eax2608; WIN-X86-NEXT:    leal -8(%ebp), %esp2609; WIN-X86-NEXT:    popl %esi2610; WIN-X86-NEXT:    popl %edi2611; WIN-X86-NEXT:    popl %ebp2612; WIN-X86-NEXT:    retl2613  %x = call fp128 @llvm.cosh.f128(fp128 %a)2614  ret fp128 %x2615}2616 2617define fp128 @Test128Sinh(fp128 %a) nounwind {2618; ANDROID-LABEL: Test128Sinh:2619; ANDROID:       # %bb.0:2620; ANDROID-NEXT:    jmp sinhl@PLT # TAILCALL2621;2622; GNU-LABEL: Test128Sinh:2623; GNU:       # %bb.0:2624; GNU-NEXT:    jmp sinhf128@PLT # TAILCALL2625;2626; X86-LABEL: Test128Sinh:2627; X86:       # %bb.0:2628; X86-NEXT:    pushl %edi2629; X86-NEXT:    pushl %esi2630; X86-NEXT:    subl $52, %esp2631; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2632; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2633; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2634; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2635; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2636; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2637; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2638; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2639; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2640; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2641; X86-NEXT:    movl %eax, (%esp)2642; X86-NEXT:    calll sinhf1282643; X86-NEXT:    subl $4, %esp2644; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm02645; X86-NEXT:    movaps %xmm0, (%esi)2646; X86-NEXT:    movl %esi, %eax2647; X86-NEXT:    addl $52, %esp2648; X86-NEXT:    popl %esi2649; X86-NEXT:    popl %edi2650; X86-NEXT:    retl $42651;2652; WIN-LABEL: Test128Sinh:2653; WIN:       # %bb.0:2654; WIN-NEXT:    subq $56, %rsp2655; WIN-NEXT:    movaps (%rcx), %xmm02656; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2657; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2658; WIN-NEXT:    callq sinhl2659; WIN-NEXT:    addq $56, %rsp2660; WIN-NEXT:    retq2661;2662; WIN-X86-LABEL: Test128Sinh:2663; WIN-X86:       # %bb.0:2664; WIN-X86-NEXT:    pushl %ebp2665; WIN-X86-NEXT:    movl %esp, %ebp2666; WIN-X86-NEXT:    pushl %edi2667; WIN-X86-NEXT:    pushl %esi2668; WIN-X86-NEXT:    andl $-16, %esp2669; WIN-X86-NEXT:    subl $48, %esp2670; WIN-X86-NEXT:    movl 8(%ebp), %esi2671; WIN-X86-NEXT:    movl 24(%ebp), %eax2672; WIN-X86-NEXT:    movl 28(%ebp), %ecx2673; WIN-X86-NEXT:    movl 32(%ebp), %edx2674; WIN-X86-NEXT:    movl 36(%ebp), %edi2675; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2676; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2677; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2678; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2679; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2680; WIN-X86-NEXT:    movl %eax, (%esp)2681; WIN-X86-NEXT:    calll _sinhl2682; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2683; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2684; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2685; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2686; WIN-X86-NEXT:    movl %edi, 12(%esi)2687; WIN-X86-NEXT:    movl %edx, 8(%esi)2688; WIN-X86-NEXT:    movl %ecx, 4(%esi)2689; WIN-X86-NEXT:    movl %eax, (%esi)2690; WIN-X86-NEXT:    movl %esi, %eax2691; WIN-X86-NEXT:    leal -8(%ebp), %esp2692; WIN-X86-NEXT:    popl %esi2693; WIN-X86-NEXT:    popl %edi2694; WIN-X86-NEXT:    popl %ebp2695; WIN-X86-NEXT:    retl2696  %x = call fp128 @llvm.sinh.f128(fp128 %a)2697  ret fp128 %x2698}2699 2700define fp128 @Test128Tan(fp128 %a) nounwind {2701; ANDROID-LABEL: Test128Tan:2702; ANDROID:       # %bb.0:2703; ANDROID-NEXT:    jmp tanl@PLT # TAILCALL2704;2705; GNU-LABEL: Test128Tan:2706; GNU:       # %bb.0:2707; GNU-NEXT:    jmp tanf128@PLT # TAILCALL2708;2709; X86-LABEL: Test128Tan:2710; X86:       # %bb.0:2711; X86-NEXT:    pushl %edi2712; X86-NEXT:    pushl %esi2713; X86-NEXT:    subl $52, %esp2714; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2715; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2716; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2717; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2718; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2719; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2720; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2721; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2722; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2723; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2724; X86-NEXT:    movl %eax, (%esp)2725; X86-NEXT:    calll tanf1282726; X86-NEXT:    subl $4, %esp2727; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm02728; X86-NEXT:    movaps %xmm0, (%esi)2729; X86-NEXT:    movl %esi, %eax2730; X86-NEXT:    addl $52, %esp2731; X86-NEXT:    popl %esi2732; X86-NEXT:    popl %edi2733; X86-NEXT:    retl $42734;2735; WIN-LABEL: Test128Tan:2736; WIN:       # %bb.0:2737; WIN-NEXT:    subq $56, %rsp2738; WIN-NEXT:    movaps (%rcx), %xmm02739; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2740; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2741; WIN-NEXT:    callq tanl2742; WIN-NEXT:    addq $56, %rsp2743; WIN-NEXT:    retq2744;2745; WIN-X86-LABEL: Test128Tan:2746; WIN-X86:       # %bb.0:2747; WIN-X86-NEXT:    pushl %ebp2748; WIN-X86-NEXT:    movl %esp, %ebp2749; WIN-X86-NEXT:    pushl %edi2750; WIN-X86-NEXT:    pushl %esi2751; WIN-X86-NEXT:    andl $-16, %esp2752; WIN-X86-NEXT:    subl $48, %esp2753; WIN-X86-NEXT:    movl 8(%ebp), %esi2754; WIN-X86-NEXT:    movl 24(%ebp), %eax2755; WIN-X86-NEXT:    movl 28(%ebp), %ecx2756; WIN-X86-NEXT:    movl 32(%ebp), %edx2757; WIN-X86-NEXT:    movl 36(%ebp), %edi2758; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2759; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2760; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2761; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2762; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2763; WIN-X86-NEXT:    movl %eax, (%esp)2764; WIN-X86-NEXT:    calll _tanl2765; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2766; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2767; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2768; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2769; WIN-X86-NEXT:    movl %edi, 12(%esi)2770; WIN-X86-NEXT:    movl %edx, 8(%esi)2771; WIN-X86-NEXT:    movl %ecx, 4(%esi)2772; WIN-X86-NEXT:    movl %eax, (%esi)2773; WIN-X86-NEXT:    movl %esi, %eax2774; WIN-X86-NEXT:    leal -8(%ebp), %esp2775; WIN-X86-NEXT:    popl %esi2776; WIN-X86-NEXT:    popl %edi2777; WIN-X86-NEXT:    popl %ebp2778; WIN-X86-NEXT:    retl2779  %x = call fp128 @llvm.tan.f128(fp128 %a)2780  ret fp128 %x2781}2782 2783define fp128 @Test128Tanh(fp128 %a) nounwind {2784; ANDROID-LABEL: Test128Tanh:2785; ANDROID:       # %bb.0:2786; ANDROID-NEXT:    jmp tanhl@PLT # TAILCALL2787;2788; GNU-LABEL: Test128Tanh:2789; GNU:       # %bb.0:2790; GNU-NEXT:    jmp tanhf128@PLT # TAILCALL2791;2792; X86-LABEL: Test128Tanh:2793; X86:       # %bb.0:2794; X86-NEXT:    pushl %edi2795; X86-NEXT:    pushl %esi2796; X86-NEXT:    subl $52, %esp2797; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2798; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2799; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2800; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2801; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2802; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2803; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2804; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2805; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2806; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2807; X86-NEXT:    movl %eax, (%esp)2808; X86-NEXT:    calll tanhf1282809; X86-NEXT:    subl $4, %esp2810; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm02811; X86-NEXT:    movaps %xmm0, (%esi)2812; X86-NEXT:    movl %esi, %eax2813; X86-NEXT:    addl $52, %esp2814; X86-NEXT:    popl %esi2815; X86-NEXT:    popl %edi2816; X86-NEXT:    retl $42817;2818; WIN-LABEL: Test128Tanh:2819; WIN:       # %bb.0:2820; WIN-NEXT:    subq $56, %rsp2821; WIN-NEXT:    movaps (%rcx), %xmm02822; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2823; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2824; WIN-NEXT:    callq tanhl2825; WIN-NEXT:    addq $56, %rsp2826; WIN-NEXT:    retq2827;2828; WIN-X86-LABEL: Test128Tanh:2829; WIN-X86:       # %bb.0:2830; WIN-X86-NEXT:    pushl %ebp2831; WIN-X86-NEXT:    movl %esp, %ebp2832; WIN-X86-NEXT:    pushl %edi2833; WIN-X86-NEXT:    pushl %esi2834; WIN-X86-NEXT:    andl $-16, %esp2835; WIN-X86-NEXT:    subl $48, %esp2836; WIN-X86-NEXT:    movl 8(%ebp), %esi2837; WIN-X86-NEXT:    movl 24(%ebp), %eax2838; WIN-X86-NEXT:    movl 28(%ebp), %ecx2839; WIN-X86-NEXT:    movl 32(%ebp), %edx2840; WIN-X86-NEXT:    movl 36(%ebp), %edi2841; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2842; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2843; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2844; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2845; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2846; WIN-X86-NEXT:    movl %eax, (%esp)2847; WIN-X86-NEXT:    calll _tanhl2848; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2849; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2850; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2851; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2852; WIN-X86-NEXT:    movl %edi, 12(%esi)2853; WIN-X86-NEXT:    movl %edx, 8(%esi)2854; WIN-X86-NEXT:    movl %ecx, 4(%esi)2855; WIN-X86-NEXT:    movl %eax, (%esi)2856; WIN-X86-NEXT:    movl %esi, %eax2857; WIN-X86-NEXT:    leal -8(%ebp), %esp2858; WIN-X86-NEXT:    popl %esi2859; WIN-X86-NEXT:    popl %edi2860; WIN-X86-NEXT:    popl %ebp2861; WIN-X86-NEXT:    retl2862  %x = call fp128 @llvm.tanh.f128(fp128 %a)2863  ret fp128 %x2864}2865 2866define { fp128, fp128 } @Test128Modf(fp128 %a) nounwind {2867; ANDROID-LABEL: Test128Modf:2868; ANDROID:       # %bb.0:2869; ANDROID-NEXT:    subq $24, %rsp2870; ANDROID-NEXT:    movq %rsp, %rdi2871; ANDROID-NEXT:    callq modfl@PLT2872; ANDROID-NEXT:    movaps (%rsp), %xmm12873; ANDROID-NEXT:    addq $24, %rsp2874; ANDROID-NEXT:    retq2875;2876; GNU-LABEL: Test128Modf:2877; GNU:       # %bb.0:2878; GNU-NEXT:    subq $24, %rsp2879; GNU-NEXT:    movq %rsp, %rdi2880; GNU-NEXT:    callq modff128@PLT2881; GNU-NEXT:    movaps (%rsp), %xmm12882; GNU-NEXT:    addq $24, %rsp2883; GNU-NEXT:    retq2884;2885; X86-LABEL: Test128Modf:2886; X86:       # %bb.0:2887; X86-NEXT:    pushl %ebx2888; X86-NEXT:    pushl %edi2889; X86-NEXT:    pushl %esi2890; X86-NEXT:    subl $80, %esp2891; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2892; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2893; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2894; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2895; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2896; X86-NEXT:    leal {{[0-9]+}}(%esp), %ebx2897; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)2898; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2899; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2900; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2901; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2902; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2903; X86-NEXT:    movl %eax, (%esp)2904; X86-NEXT:    calll modff1282905; X86-NEXT:    subl $4, %esp2906; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm02907; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm12908; X86-NEXT:    movaps %xmm1, 16(%esi)2909; X86-NEXT:    movaps %xmm0, (%esi)2910; X86-NEXT:    movl %esi, %eax2911; X86-NEXT:    addl $80, %esp2912; X86-NEXT:    popl %esi2913; X86-NEXT:    popl %edi2914; X86-NEXT:    popl %ebx2915; X86-NEXT:    retl $42916;2917; WIN-LABEL: Test128Modf:2918; WIN:       # %bb.0:2919; WIN-NEXT:    subq $72, %rsp2920; WIN-NEXT:    movaps (%rcx), %xmm02921; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2922; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2923; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx2924; WIN-NEXT:    callq modfl2925; WIN-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm12926; WIN-NEXT:    addq $72, %rsp2927; WIN-NEXT:    retq2928;2929; WIN-X86-LABEL: Test128Modf:2930; WIN-X86:       # %bb.0:2931; WIN-X86-NEXT:    pushl %ebp2932; WIN-X86-NEXT:    movl %esp, %ebp2933; WIN-X86-NEXT:    pushl %ebx2934; WIN-X86-NEXT:    pushl %edi2935; WIN-X86-NEXT:    pushl %esi2936; WIN-X86-NEXT:    andl $-16, %esp2937; WIN-X86-NEXT:    subl $112, %esp2938; WIN-X86-NEXT:    movl 8(%ebp), %esi2939; WIN-X86-NEXT:    movl 24(%ebp), %eax2940; WIN-X86-NEXT:    movl 28(%ebp), %ecx2941; WIN-X86-NEXT:    movl 32(%ebp), %edx2942; WIN-X86-NEXT:    movl 36(%ebp), %edi2943; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %ebx2944; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)2945; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2946; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2947; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2948; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2949; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2950; WIN-X86-NEXT:    movl %eax, (%esp)2951; WIN-X86-NEXT:    calll _modfl2952; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2953; WIN-X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill2954; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2955; WIN-X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill2956; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2957; WIN-X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill2958; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2959; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx2960; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2961; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2962; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2963; WIN-X86-NEXT:    movl %edx, 28(%esi)2964; WIN-X86-NEXT:    movl %eax, 24(%esi)2965; WIN-X86-NEXT:    movl %ecx, 20(%esi)2966; WIN-X86-NEXT:    movl %ebx, 16(%esi)2967; WIN-X86-NEXT:    movl %edi, 12(%esi)2968; WIN-X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload2969; WIN-X86-NEXT:    movl %eax, 8(%esi)2970; WIN-X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload2971; WIN-X86-NEXT:    movl %eax, 4(%esi)2972; WIN-X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload2973; WIN-X86-NEXT:    movl %eax, (%esi)2974; WIN-X86-NEXT:    movl %esi, %eax2975; WIN-X86-NEXT:    leal -12(%ebp), %esp2976; WIN-X86-NEXT:    popl %esi2977; WIN-X86-NEXT:    popl %edi2978; WIN-X86-NEXT:    popl %ebx2979; WIN-X86-NEXT:    popl %ebp2980; WIN-X86-NEXT:    retl2981  %x = call { fp128, fp128 } @llvm.modf.f128(fp128 %a)2982  ret { fp128, fp128 } %x2983}2984