brintos

brintos / llvm-project-archived public Read only

0
0
Text · 140.4 KiB · ad2d690 Raw
4273 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 \4; RUN:     | FileCheck %s --check-prefix=ANDROID5; RUN: llc < %s -O2 -mtriple=x86_64-linux-gnu \6; RUN:     -enable-legalize-types-checking \7; RUN:     | FileCheck %s --check-prefix=GNU8; RUN: llc < %s -O2 -mtriple=i686-linux-gnu -mattr=+sse2 \9; RUN:     -enable-legalize-types-checking \10; RUN:     | FileCheck %s --check-prefix=X8611; RUN: llc < %s -O2 -mtriple=x86_64-pc-windows-msvc \12; RUN:     -enable-legalize-types-checking \13; RUN:     | FileCheck %s --check-prefix=WIN14; RUN: llc < %s -O2 -mtriple=i686-pc-windows-msvc \15; RUN:     -enable-legalize-types-checking \16; RUN:     | FileCheck %s --check-prefix=WIN-X8617 18; Check all soft floating point library function calls.19 20define fp128 @add(fp128 %x, fp128 %y) nounwind strictfp {21; CHECK-LABEL: add:22; CHECK:       # %bb.0: # %entry23; CHECK-NEXT:    pushq %rax24; CHECK-NEXT:    callq __addtf3@PLT25; CHECK-NEXT:    popq %rax26; CHECK-NEXT:    retq27;28; ANDROID-LABEL: add:29; ANDROID:       # %bb.0: # %entry30; ANDROID-NEXT:    pushq %rax31; ANDROID-NEXT:    callq __addtf3@PLT32; ANDROID-NEXT:    popq %rax33; ANDROID-NEXT:    retq34;35; GNU-LABEL: add:36; GNU:       # %bb.0: # %entry37; GNU-NEXT:    pushq %rax38; GNU-NEXT:    callq __addtf3@PLT39; GNU-NEXT:    popq %rax40; GNU-NEXT:    retq41;42; X86-LABEL: add:43; X86:       # %bb.0: # %entry44; X86-NEXT:    pushl %ebp45; X86-NEXT:    pushl %ebx46; X86-NEXT:    pushl %edi47; X86-NEXT:    pushl %esi48; X86-NEXT:    subl $76, %esp49; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi50; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx51; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi52; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx53; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp54; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx55; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax56; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)57; X86-NEXT:    movl %ecx, {{[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 %edx, {{[0-9]+}}(%esp)62; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax63; X86-NEXT:    movl %eax, {{[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, (%esi)72; X86-NEXT:    movl %esi, %eax73; X86-NEXT:    addl $76, %esp74; X86-NEXT:    popl %esi75; X86-NEXT:    popl %edi76; X86-NEXT:    popl %ebx77; X86-NEXT:    popl %ebp78; X86-NEXT:    retl $479;80; WIN-LABEL: add:81; WIN:       # %bb.0: # %entry82; WIN-NEXT:    subq $72, %rsp83; WIN-NEXT:    movaps (%rcx), %xmm084; WIN-NEXT:    movaps (%rdx), %xmm185; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)86; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)87; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx88; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx89; WIN-NEXT:    callq __addtf390; WIN-NEXT:    addq $72, %rsp91; WIN-NEXT:    retq92;93; WIN-X86-LABEL: add: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 8(%ebp), %esi103; WIN-X86-NEXT:    movl 36(%ebp), %edi104; WIN-X86-NEXT:    movl 40(%ebp), %ebx105; WIN-X86-NEXT:    movl 44(%ebp), %edx106; WIN-X86-NEXT:    movl 48(%ebp), %ecx107; WIN-X86-NEXT:    movl 52(%ebp), %eax108; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)109; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)110; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)111; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)112; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)113; WIN-X86-NEXT:    movl 32(%ebp), %eax114; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)115; WIN-X86-NEXT:    movl 28(%ebp), %eax116; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)117; WIN-X86-NEXT:    movl 24(%ebp), %eax118; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)119; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax120; WIN-X86-NEXT:    movl %eax, (%esp)121; WIN-X86-NEXT:    calll ___addtf3122; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax123; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx124; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx125; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi126; WIN-X86-NEXT:    movl %edi, 8(%esi)127; WIN-X86-NEXT:    movl %edx, 12(%esi)128; WIN-X86-NEXT:    movl %eax, (%esi)129; WIN-X86-NEXT:    movl %ecx, 4(%esi)130; WIN-X86-NEXT:    movl %esi, %eax131; WIN-X86-NEXT:    leal -12(%ebp), %esp132; WIN-X86-NEXT:    popl %esi133; WIN-X86-NEXT:    popl %edi134; WIN-X86-NEXT:    popl %ebx135; WIN-X86-NEXT:    popl %ebp136; WIN-X86-NEXT:    retl137entry:138  %add = call fp128 @llvm.experimental.constrained.fadd.f128(fp128 %x, fp128 %y,  metadata !"round.dynamic", metadata !"fpexcept.strict") #0139  ret fp128 %add140}141 142define fp128 @sub(fp128 %x, fp128 %y) nounwind strictfp {143; CHECK-LABEL: sub:144; CHECK:       # %bb.0: # %entry145; CHECK-NEXT:    pushq %rax146; CHECK-NEXT:    callq __subtf3@PLT147; CHECK-NEXT:    popq %rax148; CHECK-NEXT:    retq149;150; ANDROID-LABEL: sub:151; ANDROID:       # %bb.0: # %entry152; ANDROID-NEXT:    pushq %rax153; ANDROID-NEXT:    callq __subtf3@PLT154; ANDROID-NEXT:    popq %rax155; ANDROID-NEXT:    retq156;157; GNU-LABEL: sub:158; GNU:       # %bb.0: # %entry159; GNU-NEXT:    pushq %rax160; GNU-NEXT:    callq __subtf3@PLT161; GNU-NEXT:    popq %rax162; GNU-NEXT:    retq163;164; X86-LABEL: sub:165; X86:       # %bb.0: # %entry166; X86-NEXT:    pushl %ebp167; X86-NEXT:    pushl %ebx168; X86-NEXT:    pushl %edi169; X86-NEXT:    pushl %esi170; X86-NEXT:    subl $76, %esp171; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi172; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx173; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi174; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx175; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp176; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx177; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax178; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)179; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)180; X86-NEXT:    movl %ebp, {{[0-9]+}}(%esp)181; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)182; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)183; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)184; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax185; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)186; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax187; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)188; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax189; X86-NEXT:    movl %eax, (%esp)190; X86-NEXT:    calll __subtf3191; X86-NEXT:    subl $4, %esp192; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm0193; X86-NEXT:    movaps %xmm0, (%esi)194; X86-NEXT:    movl %esi, %eax195; X86-NEXT:    addl $76, %esp196; X86-NEXT:    popl %esi197; X86-NEXT:    popl %edi198; X86-NEXT:    popl %ebx199; X86-NEXT:    popl %ebp200; X86-NEXT:    retl $4201;202; WIN-LABEL: sub:203; WIN:       # %bb.0: # %entry204; WIN-NEXT:    subq $72, %rsp205; WIN-NEXT:    movaps (%rcx), %xmm0206; WIN-NEXT:    movaps (%rdx), %xmm1207; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)208; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)209; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx210; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx211; WIN-NEXT:    callq __subtf3212; WIN-NEXT:    addq $72, %rsp213; WIN-NEXT:    retq214;215; WIN-X86-LABEL: sub:216; WIN-X86:       # %bb.0: # %entry217; WIN-X86-NEXT:    pushl %ebp218; WIN-X86-NEXT:    movl %esp, %ebp219; WIN-X86-NEXT:    pushl %ebx220; WIN-X86-NEXT:    pushl %edi221; WIN-X86-NEXT:    pushl %esi222; WIN-X86-NEXT:    andl $-16, %esp223; WIN-X86-NEXT:    subl $80, %esp224; WIN-X86-NEXT:    movl 8(%ebp), %esi225; WIN-X86-NEXT:    movl 36(%ebp), %edi226; WIN-X86-NEXT:    movl 40(%ebp), %ebx227; WIN-X86-NEXT:    movl 44(%ebp), %edx228; WIN-X86-NEXT:    movl 48(%ebp), %ecx229; WIN-X86-NEXT:    movl 52(%ebp), %eax230; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)231; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)232; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)233; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)234; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)235; WIN-X86-NEXT:    movl 32(%ebp), %eax236; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)237; WIN-X86-NEXT:    movl 28(%ebp), %eax238; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)239; WIN-X86-NEXT:    movl 24(%ebp), %eax240; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)241; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax242; WIN-X86-NEXT:    movl %eax, (%esp)243; WIN-X86-NEXT:    calll ___subtf3244; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax245; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx246; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx247; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi248; WIN-X86-NEXT:    movl %edi, 8(%esi)249; WIN-X86-NEXT:    movl %edx, 12(%esi)250; WIN-X86-NEXT:    movl %eax, (%esi)251; WIN-X86-NEXT:    movl %ecx, 4(%esi)252; WIN-X86-NEXT:    movl %esi, %eax253; WIN-X86-NEXT:    leal -12(%ebp), %esp254; WIN-X86-NEXT:    popl %esi255; WIN-X86-NEXT:    popl %edi256; WIN-X86-NEXT:    popl %ebx257; WIN-X86-NEXT:    popl %ebp258; WIN-X86-NEXT:    retl259entry:260  %sub = call fp128 @llvm.experimental.constrained.fsub.f128(fp128 %x, fp128 %y,  metadata !"round.dynamic", metadata !"fpexcept.strict") #0261  ret fp128 %sub262}263 264define fp128 @mul(fp128 %x, fp128 %y) nounwind strictfp {265; CHECK-LABEL: mul:266; CHECK:       # %bb.0: # %entry267; CHECK-NEXT:    pushq %rax268; CHECK-NEXT:    callq __multf3@PLT269; CHECK-NEXT:    popq %rax270; CHECK-NEXT:    retq271;272; ANDROID-LABEL: mul:273; ANDROID:       # %bb.0: # %entry274; ANDROID-NEXT:    pushq %rax275; ANDROID-NEXT:    callq __multf3@PLT276; ANDROID-NEXT:    popq %rax277; ANDROID-NEXT:    retq278;279; GNU-LABEL: mul:280; GNU:       # %bb.0: # %entry281; GNU-NEXT:    pushq %rax282; GNU-NEXT:    callq __multf3@PLT283; GNU-NEXT:    popq %rax284; GNU-NEXT:    retq285;286; X86-LABEL: mul:287; X86:       # %bb.0: # %entry288; X86-NEXT:    pushl %ebp289; X86-NEXT:    pushl %ebx290; X86-NEXT:    pushl %edi291; X86-NEXT:    pushl %esi292; X86-NEXT:    subl $76, %esp293; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi294; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx295; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi296; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx297; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp298; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx299; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax300; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)301; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)302; X86-NEXT:    movl %ebp, {{[0-9]+}}(%esp)303; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)304; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)305; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)306; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax307; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)308; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax309; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)310; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax311; X86-NEXT:    movl %eax, (%esp)312; X86-NEXT:    calll __multf3313; X86-NEXT:    subl $4, %esp314; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm0315; X86-NEXT:    movaps %xmm0, (%esi)316; X86-NEXT:    movl %esi, %eax317; X86-NEXT:    addl $76, %esp318; X86-NEXT:    popl %esi319; X86-NEXT:    popl %edi320; X86-NEXT:    popl %ebx321; X86-NEXT:    popl %ebp322; X86-NEXT:    retl $4323;324; WIN-LABEL: mul:325; WIN:       # %bb.0: # %entry326; WIN-NEXT:    subq $72, %rsp327; WIN-NEXT:    movaps (%rcx), %xmm0328; WIN-NEXT:    movaps (%rdx), %xmm1329; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)330; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)331; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx332; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx333; WIN-NEXT:    callq __multf3334; WIN-NEXT:    addq $72, %rsp335; WIN-NEXT:    retq336;337; WIN-X86-LABEL: mul:338; WIN-X86:       # %bb.0: # %entry339; WIN-X86-NEXT:    pushl %ebp340; WIN-X86-NEXT:    movl %esp, %ebp341; WIN-X86-NEXT:    pushl %ebx342; WIN-X86-NEXT:    pushl %edi343; WIN-X86-NEXT:    pushl %esi344; WIN-X86-NEXT:    andl $-16, %esp345; WIN-X86-NEXT:    subl $80, %esp346; WIN-X86-NEXT:    movl 8(%ebp), %esi347; WIN-X86-NEXT:    movl 36(%ebp), %edi348; WIN-X86-NEXT:    movl 40(%ebp), %ebx349; WIN-X86-NEXT:    movl 44(%ebp), %edx350; WIN-X86-NEXT:    movl 48(%ebp), %ecx351; WIN-X86-NEXT:    movl 52(%ebp), %eax352; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)353; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)354; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)355; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)356; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)357; WIN-X86-NEXT:    movl 32(%ebp), %eax358; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)359; WIN-X86-NEXT:    movl 28(%ebp), %eax360; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)361; WIN-X86-NEXT:    movl 24(%ebp), %eax362; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)363; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax364; WIN-X86-NEXT:    movl %eax, (%esp)365; WIN-X86-NEXT:    calll ___multf3366; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax367; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx368; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx369; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi370; WIN-X86-NEXT:    movl %edi, 8(%esi)371; WIN-X86-NEXT:    movl %edx, 12(%esi)372; WIN-X86-NEXT:    movl %eax, (%esi)373; WIN-X86-NEXT:    movl %ecx, 4(%esi)374; WIN-X86-NEXT:    movl %esi, %eax375; WIN-X86-NEXT:    leal -12(%ebp), %esp376; WIN-X86-NEXT:    popl %esi377; WIN-X86-NEXT:    popl %edi378; WIN-X86-NEXT:    popl %ebx379; WIN-X86-NEXT:    popl %ebp380; WIN-X86-NEXT:    retl381entry:382  %mul = call fp128 @llvm.experimental.constrained.fmul.f128(fp128 %x, fp128 %y,  metadata !"round.dynamic", metadata !"fpexcept.strict") #0383  ret fp128 %mul384}385 386define fp128 @div(fp128 %x, fp128 %y) nounwind strictfp {387; CHECK-LABEL: div:388; CHECK:       # %bb.0: # %entry389; CHECK-NEXT:    pushq %rax390; CHECK-NEXT:    callq __divtf3@PLT391; CHECK-NEXT:    popq %rax392; CHECK-NEXT:    retq393;394; ANDROID-LABEL: div:395; ANDROID:       # %bb.0: # %entry396; ANDROID-NEXT:    pushq %rax397; ANDROID-NEXT:    callq __divtf3@PLT398; ANDROID-NEXT:    popq %rax399; ANDROID-NEXT:    retq400;401; GNU-LABEL: div:402; GNU:       # %bb.0: # %entry403; GNU-NEXT:    pushq %rax404; GNU-NEXT:    callq __divtf3@PLT405; GNU-NEXT:    popq %rax406; GNU-NEXT:    retq407;408; X86-LABEL: div:409; X86:       # %bb.0: # %entry410; X86-NEXT:    pushl %ebp411; X86-NEXT:    pushl %ebx412; X86-NEXT:    pushl %edi413; X86-NEXT:    pushl %esi414; X86-NEXT:    subl $76, %esp415; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi416; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx417; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi418; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx419; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp420; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx421; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax422; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)423; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)424; X86-NEXT:    movl %ebp, {{[0-9]+}}(%esp)425; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)426; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)427; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)428; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax429; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)430; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax431; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)432; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax433; X86-NEXT:    movl %eax, (%esp)434; X86-NEXT:    calll __divtf3435; X86-NEXT:    subl $4, %esp436; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm0437; X86-NEXT:    movaps %xmm0, (%esi)438; X86-NEXT:    movl %esi, %eax439; X86-NEXT:    addl $76, %esp440; X86-NEXT:    popl %esi441; X86-NEXT:    popl %edi442; X86-NEXT:    popl %ebx443; X86-NEXT:    popl %ebp444; X86-NEXT:    retl $4445;446; WIN-LABEL: div:447; WIN:       # %bb.0: # %entry448; WIN-NEXT:    subq $72, %rsp449; WIN-NEXT:    movaps (%rcx), %xmm0450; WIN-NEXT:    movaps (%rdx), %xmm1451; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)452; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)453; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx454; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx455; WIN-NEXT:    callq __divtf3456; WIN-NEXT:    addq $72, %rsp457; WIN-NEXT:    retq458;459; WIN-X86-LABEL: div:460; WIN-X86:       # %bb.0: # %entry461; WIN-X86-NEXT:    pushl %ebp462; WIN-X86-NEXT:    movl %esp, %ebp463; WIN-X86-NEXT:    pushl %ebx464; WIN-X86-NEXT:    pushl %edi465; WIN-X86-NEXT:    pushl %esi466; WIN-X86-NEXT:    andl $-16, %esp467; WIN-X86-NEXT:    subl $80, %esp468; WIN-X86-NEXT:    movl 8(%ebp), %esi469; WIN-X86-NEXT:    movl 36(%ebp), %edi470; WIN-X86-NEXT:    movl 40(%ebp), %ebx471; WIN-X86-NEXT:    movl 44(%ebp), %edx472; WIN-X86-NEXT:    movl 48(%ebp), %ecx473; WIN-X86-NEXT:    movl 52(%ebp), %eax474; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)475; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)476; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)477; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)478; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)479; WIN-X86-NEXT:    movl 32(%ebp), %eax480; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)481; WIN-X86-NEXT:    movl 28(%ebp), %eax482; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)483; WIN-X86-NEXT:    movl 24(%ebp), %eax484; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)485; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax486; WIN-X86-NEXT:    movl %eax, (%esp)487; WIN-X86-NEXT:    calll ___divtf3488; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax489; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx490; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx491; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi492; WIN-X86-NEXT:    movl %edi, 8(%esi)493; WIN-X86-NEXT:    movl %edx, 12(%esi)494; WIN-X86-NEXT:    movl %eax, (%esi)495; WIN-X86-NEXT:    movl %ecx, 4(%esi)496; WIN-X86-NEXT:    movl %esi, %eax497; WIN-X86-NEXT:    leal -12(%ebp), %esp498; WIN-X86-NEXT:    popl %esi499; WIN-X86-NEXT:    popl %edi500; WIN-X86-NEXT:    popl %ebx501; WIN-X86-NEXT:    popl %ebp502; WIN-X86-NEXT:    retl503entry:504  %div = call fp128 @llvm.experimental.constrained.fdiv.f128(fp128 %x, fp128 %y,  metadata !"round.dynamic", metadata !"fpexcept.strict") #0505  ret fp128 %div506}507 508define fp128 @fma(fp128 %x, fp128 %y, fp128 %z) nounwind strictfp {509; ANDROID-LABEL: fma:510; ANDROID:       # %bb.0: # %entry511; ANDROID-NEXT:    pushq %rax512; ANDROID-NEXT:    callq fmal@PLT513; ANDROID-NEXT:    popq %rax514; ANDROID-NEXT:    retq515;516; GNU-LABEL: fma:517; GNU:       # %bb.0: # %entry518; GNU-NEXT:    pushq %rax519; GNU-NEXT:    callq fmaf128@PLT520; GNU-NEXT:    popq %rax521; GNU-NEXT:    retq522;523; X86-LABEL: fma:524; X86:       # %bb.0: # %entry525; X86-NEXT:    pushl %ebp526; X86-NEXT:    pushl %ebx527; X86-NEXT:    pushl %edi528; X86-NEXT:    pushl %esi529; X86-NEXT:    subl $92, %esp530; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp531; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx532; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi533; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi534; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx535; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx536; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax537; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)538; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)539; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)540; X86-NEXT:    movl %esi, {{[0-9]+}}(%esp)541; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)542; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)543; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax544; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)545; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax546; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)547; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax548; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)549; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax550; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)551; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax552; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)553; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax554; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)555; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax556; X86-NEXT:    movl %eax, (%esp)557; X86-NEXT:    calll fmaf128558; X86-NEXT:    subl $4, %esp559; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm0560; X86-NEXT:    movaps %xmm0, (%ebp)561; X86-NEXT:    movl %ebp, %eax562; X86-NEXT:    addl $92, %esp563; X86-NEXT:    popl %esi564; X86-NEXT:    popl %edi565; X86-NEXT:    popl %ebx566; X86-NEXT:    popl %ebp567; X86-NEXT:    retl $4568;569; WIN-LABEL: fma:570; WIN:       # %bb.0: # %entry571; WIN-NEXT:    subq $88, %rsp572; WIN-NEXT:    movaps (%r8), %xmm0573; WIN-NEXT:    movaps (%rcx), %xmm1574; WIN-NEXT:    movaps (%rdx), %xmm2575; WIN-NEXT:    movaps %xmm2, {{[0-9]+}}(%rsp)576; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)577; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)578; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx579; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx580; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %r8581; WIN-NEXT:    callq fmal582; WIN-NEXT:    addq $88, %rsp583; WIN-NEXT:    retq584;585; WIN-X86-LABEL: fma:586; WIN-X86:       # %bb.0: # %entry587; WIN-X86-NEXT:    pushl %ebp588; WIN-X86-NEXT:    movl %esp, %ebp589; WIN-X86-NEXT:    pushl %ebx590; WIN-X86-NEXT:    pushl %edi591; WIN-X86-NEXT:    pushl %esi592; WIN-X86-NEXT:    andl $-16, %esp593; WIN-X86-NEXT:    subl $96, %esp594; WIN-X86-NEXT:    movl 8(%ebp), %esi595; WIN-X86-NEXT:    movl 52(%ebp), %ebx596; WIN-X86-NEXT:    movl 56(%ebp), %edi597; WIN-X86-NEXT:    movl 60(%ebp), %edx598; WIN-X86-NEXT:    movl 64(%ebp), %ecx599; WIN-X86-NEXT:    movl 68(%ebp), %eax600; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)601; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)602; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)603; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)604; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)605; WIN-X86-NEXT:    movl 48(%ebp), %eax606; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)607; WIN-X86-NEXT:    movl 44(%ebp), %eax608; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)609; WIN-X86-NEXT:    movl 40(%ebp), %eax610; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)611; WIN-X86-NEXT:    movl 36(%ebp), %eax612; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)613; WIN-X86-NEXT:    movl 32(%ebp), %eax614; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)615; WIN-X86-NEXT:    movl 28(%ebp), %eax616; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)617; WIN-X86-NEXT:    movl 24(%ebp), %eax618; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)619; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax620; WIN-X86-NEXT:    movl %eax, (%esp)621; WIN-X86-NEXT:    calll _fmal622; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax623; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx624; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx625; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi626; WIN-X86-NEXT:    movl %edi, 8(%esi)627; WIN-X86-NEXT:    movl %edx, 12(%esi)628; WIN-X86-NEXT:    movl %eax, (%esi)629; WIN-X86-NEXT:    movl %ecx, 4(%esi)630; WIN-X86-NEXT:    movl %esi, %eax631; WIN-X86-NEXT:    leal -12(%ebp), %esp632; WIN-X86-NEXT:    popl %esi633; WIN-X86-NEXT:    popl %edi634; WIN-X86-NEXT:    popl %ebx635; WIN-X86-NEXT:    popl %ebp636; WIN-X86-NEXT:    retl637entry:638  %fma = call fp128 @llvm.experimental.constrained.fma.f128(fp128 %x, fp128 %y,  fp128 %z, metadata !"round.dynamic", metadata !"fpexcept.strict") #0639  ret fp128 %fma640}641 642define fp128 @frem(fp128 %x, fp128 %y) nounwind strictfp {643; ANDROID-LABEL: frem:644; ANDROID:       # %bb.0: # %entry645; ANDROID-NEXT:    pushq %rax646; ANDROID-NEXT:    callq fmodl@PLT647; ANDROID-NEXT:    popq %rax648; ANDROID-NEXT:    retq649;650; GNU-LABEL: frem:651; GNU:       # %bb.0: # %entry652; GNU-NEXT:    pushq %rax653; GNU-NEXT:    callq fmodf128@PLT654; GNU-NEXT:    popq %rax655; GNU-NEXT:    retq656;657; X86-LABEL: frem:658; X86:       # %bb.0: # %entry659; X86-NEXT:    pushl %ebp660; X86-NEXT:    pushl %ebx661; X86-NEXT:    pushl %edi662; X86-NEXT:    pushl %esi663; X86-NEXT:    subl $76, %esp664; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi665; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx666; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi667; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx668; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp669; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx670; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax671; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)672; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)673; X86-NEXT:    movl %ebp, {{[0-9]+}}(%esp)674; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)675; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)676; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)677; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax678; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)679; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax680; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)681; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax682; X86-NEXT:    movl %eax, (%esp)683; X86-NEXT:    calll fmodf128684; X86-NEXT:    subl $4, %esp685; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm0686; X86-NEXT:    movaps %xmm0, (%esi)687; X86-NEXT:    movl %esi, %eax688; X86-NEXT:    addl $76, %esp689; X86-NEXT:    popl %esi690; X86-NEXT:    popl %edi691; X86-NEXT:    popl %ebx692; X86-NEXT:    popl %ebp693; X86-NEXT:    retl $4694;695; WIN-LABEL: frem:696; WIN:       # %bb.0: # %entry697; WIN-NEXT:    subq $72, %rsp698; WIN-NEXT:    movaps (%rcx), %xmm0699; WIN-NEXT:    movaps (%rdx), %xmm1700; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)701; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)702; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx703; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx704; WIN-NEXT:    callq fmodl705; WIN-NEXT:    addq $72, %rsp706; WIN-NEXT:    retq707;708; WIN-X86-LABEL: frem:709; WIN-X86:       # %bb.0: # %entry710; WIN-X86-NEXT:    pushl %ebp711; WIN-X86-NEXT:    movl %esp, %ebp712; WIN-X86-NEXT:    pushl %ebx713; WIN-X86-NEXT:    pushl %edi714; WIN-X86-NEXT:    pushl %esi715; WIN-X86-NEXT:    andl $-16, %esp716; WIN-X86-NEXT:    subl $80, %esp717; WIN-X86-NEXT:    movl 8(%ebp), %esi718; WIN-X86-NEXT:    movl 36(%ebp), %edi719; WIN-X86-NEXT:    movl 40(%ebp), %ebx720; WIN-X86-NEXT:    movl 44(%ebp), %edx721; WIN-X86-NEXT:    movl 48(%ebp), %ecx722; WIN-X86-NEXT:    movl 52(%ebp), %eax723; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)724; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)725; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)726; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)727; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)728; WIN-X86-NEXT:    movl 32(%ebp), %eax729; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)730; WIN-X86-NEXT:    movl 28(%ebp), %eax731; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)732; WIN-X86-NEXT:    movl 24(%ebp), %eax733; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)734; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax735; WIN-X86-NEXT:    movl %eax, (%esp)736; WIN-X86-NEXT:    calll _fmodl737; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax738; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx739; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx740; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi741; WIN-X86-NEXT:    movl %edi, 8(%esi)742; WIN-X86-NEXT:    movl %edx, 12(%esi)743; WIN-X86-NEXT:    movl %eax, (%esi)744; WIN-X86-NEXT:    movl %ecx, 4(%esi)745; WIN-X86-NEXT:    movl %esi, %eax746; WIN-X86-NEXT:    leal -12(%ebp), %esp747; WIN-X86-NEXT:    popl %esi748; WIN-X86-NEXT:    popl %edi749; WIN-X86-NEXT:    popl %ebx750; WIN-X86-NEXT:    popl %ebp751; WIN-X86-NEXT:    retl752entry:753  %div = call fp128 @llvm.experimental.constrained.frem.f128(fp128 %x, fp128 %y,  metadata !"round.dynamic", metadata !"fpexcept.strict") #0754  ret fp128 %div755}756 757define fp128 @ceil(fp128 %x) nounwind strictfp {758; ANDROID-LABEL: ceil:759; ANDROID:       # %bb.0: # %entry760; ANDROID-NEXT:    pushq %rax761; ANDROID-NEXT:    callq ceill@PLT762; ANDROID-NEXT:    popq %rax763; ANDROID-NEXT:    retq764;765; GNU-LABEL: ceil:766; GNU:       # %bb.0: # %entry767; GNU-NEXT:    pushq %rax768; GNU-NEXT:    callq ceilf128@PLT769; GNU-NEXT:    popq %rax770; GNU-NEXT:    retq771;772; X86-LABEL: ceil:773; X86:       # %bb.0: # %entry774; X86-NEXT:    pushl %edi775; X86-NEXT:    pushl %esi776; X86-NEXT:    subl $52, %esp777; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi778; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax779; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx780; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx781; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi782; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)783; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)784; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)785; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)786; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax787; X86-NEXT:    movl %eax, (%esp)788; X86-NEXT:    calll ceilf128789; X86-NEXT:    subl $4, %esp790; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm0791; X86-NEXT:    movaps %xmm0, (%esi)792; X86-NEXT:    movl %esi, %eax793; X86-NEXT:    addl $52, %esp794; X86-NEXT:    popl %esi795; X86-NEXT:    popl %edi796; X86-NEXT:    retl $4797;798; WIN-LABEL: ceil:799; WIN:       # %bb.0: # %entry800; WIN-NEXT:    subq $56, %rsp801; WIN-NEXT:    movaps (%rcx), %xmm0802; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)803; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx804; WIN-NEXT:    callq ceill805; WIN-NEXT:    addq $56, %rsp806; WIN-NEXT:    retq807;808; WIN-X86-LABEL: ceil:809; WIN-X86:       # %bb.0: # %entry810; WIN-X86-NEXT:    pushl %ebp811; WIN-X86-NEXT:    movl %esp, %ebp812; WIN-X86-NEXT:    pushl %edi813; WIN-X86-NEXT:    pushl %esi814; WIN-X86-NEXT:    andl $-16, %esp815; WIN-X86-NEXT:    subl $48, %esp816; WIN-X86-NEXT:    movl 8(%ebp), %esi817; WIN-X86-NEXT:    movl 24(%ebp), %eax818; WIN-X86-NEXT:    movl 28(%ebp), %ecx819; WIN-X86-NEXT:    movl 32(%ebp), %edx820; WIN-X86-NEXT:    movl 36(%ebp), %edi821; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)822; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)823; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)824; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)825; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax826; WIN-X86-NEXT:    movl %eax, (%esp)827; WIN-X86-NEXT:    calll _ceill828; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax829; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx830; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx831; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi832; WIN-X86-NEXT:    movl %edi, 8(%esi)833; WIN-X86-NEXT:    movl %edx, 12(%esi)834; WIN-X86-NEXT:    movl %eax, (%esi)835; WIN-X86-NEXT:    movl %ecx, 4(%esi)836; WIN-X86-NEXT:    movl %esi, %eax837; WIN-X86-NEXT:    leal -8(%ebp), %esp838; WIN-X86-NEXT:    popl %esi839; WIN-X86-NEXT:    popl %edi840; WIN-X86-NEXT:    popl %ebp841; WIN-X86-NEXT:    retl842entry:843  %ceil = call fp128 @llvm.experimental.constrained.ceil.f128(fp128 %x, metadata !"fpexcept.strict") #0844  ret fp128 %ceil845}846 847define fp128 @acos(fp128 %x) nounwind strictfp {848; ANDROID-LABEL: acos:849; ANDROID:       # %bb.0: # %entry850; ANDROID-NEXT:    pushq %rax851; ANDROID-NEXT:    callq acosl@PLT852; ANDROID-NEXT:    popq %rax853; ANDROID-NEXT:    retq854;855; GNU-LABEL: acos:856; GNU:       # %bb.0: # %entry857; GNU-NEXT:    pushq %rax858; GNU-NEXT:    callq acosf128@PLT859; GNU-NEXT:    popq %rax860; GNU-NEXT:    retq861;862; X86-LABEL: acos:863; X86:       # %bb.0: # %entry864; X86-NEXT:    pushl %edi865; X86-NEXT:    pushl %esi866; X86-NEXT:    subl $52, %esp867; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi868; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax869; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx870; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx871; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi872; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)873; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)874; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)875; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)876; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax877; X86-NEXT:    movl %eax, (%esp)878; X86-NEXT:    calll acosf128879; X86-NEXT:    subl $4, %esp880; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm0881; X86-NEXT:    movaps %xmm0, (%esi)882; X86-NEXT:    movl %esi, %eax883; X86-NEXT:    addl $52, %esp884; X86-NEXT:    popl %esi885; X86-NEXT:    popl %edi886; X86-NEXT:    retl $4887;888; WIN-LABEL: acos:889; WIN:       # %bb.0: # %entry890; WIN-NEXT:    subq $56, %rsp891; WIN-NEXT:    movaps (%rcx), %xmm0892; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)893; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx894; WIN-NEXT:    callq acosl895; WIN-NEXT:    addq $56, %rsp896; WIN-NEXT:    retq897;898; WIN-X86-LABEL: acos:899; WIN-X86:       # %bb.0: # %entry900; WIN-X86-NEXT:    pushl %ebp901; WIN-X86-NEXT:    movl %esp, %ebp902; WIN-X86-NEXT:    pushl %edi903; WIN-X86-NEXT:    pushl %esi904; WIN-X86-NEXT:    andl $-16, %esp905; WIN-X86-NEXT:    subl $48, %esp906; WIN-X86-NEXT:    movl 8(%ebp), %esi907; WIN-X86-NEXT:    movl 24(%ebp), %eax908; WIN-X86-NEXT:    movl 28(%ebp), %ecx909; WIN-X86-NEXT:    movl 32(%ebp), %edx910; WIN-X86-NEXT:    movl 36(%ebp), %edi911; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)912; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)913; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)914; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)915; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax916; WIN-X86-NEXT:    movl %eax, (%esp)917; WIN-X86-NEXT:    calll _acosl918; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax919; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx920; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx921; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi922; WIN-X86-NEXT:    movl %edi, 8(%esi)923; WIN-X86-NEXT:    movl %edx, 12(%esi)924; WIN-X86-NEXT:    movl %eax, (%esi)925; WIN-X86-NEXT:    movl %ecx, 4(%esi)926; WIN-X86-NEXT:    movl %esi, %eax927; WIN-X86-NEXT:    leal -8(%ebp), %esp928; WIN-X86-NEXT:    popl %esi929; WIN-X86-NEXT:    popl %edi930; WIN-X86-NEXT:    popl %ebp931; WIN-X86-NEXT:    retl932entry:933  %acos = call fp128 @llvm.experimental.constrained.acos.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0934  ret fp128 %acos935}936 937define fp128 @cos(fp128 %x) nounwind strictfp {938; ANDROID-LABEL: cos:939; ANDROID:       # %bb.0: # %entry940; ANDROID-NEXT:    pushq %rax941; ANDROID-NEXT:    callq cosl@PLT942; ANDROID-NEXT:    popq %rax943; ANDROID-NEXT:    retq944;945; GNU-LABEL: cos:946; GNU:       # %bb.0: # %entry947; GNU-NEXT:    pushq %rax948; GNU-NEXT:    callq cosf128@PLT949; GNU-NEXT:    popq %rax950; GNU-NEXT:    retq951;952; X86-LABEL: cos:953; X86:       # %bb.0: # %entry954; X86-NEXT:    pushl %edi955; X86-NEXT:    pushl %esi956; X86-NEXT:    subl $52, %esp957; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi958; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax959; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx960; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx961; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi962; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)963; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)964; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)965; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)966; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax967; X86-NEXT:    movl %eax, (%esp)968; X86-NEXT:    calll cosf128969; X86-NEXT:    subl $4, %esp970; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm0971; X86-NEXT:    movaps %xmm0, (%esi)972; X86-NEXT:    movl %esi, %eax973; X86-NEXT:    addl $52, %esp974; X86-NEXT:    popl %esi975; X86-NEXT:    popl %edi976; X86-NEXT:    retl $4977;978; WIN-LABEL: cos:979; WIN:       # %bb.0: # %entry980; WIN-NEXT:    subq $56, %rsp981; WIN-NEXT:    movaps (%rcx), %xmm0982; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)983; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx984; WIN-NEXT:    callq cosl985; WIN-NEXT:    addq $56, %rsp986; WIN-NEXT:    retq987;988; WIN-X86-LABEL: cos:989; WIN-X86:       # %bb.0: # %entry990; WIN-X86-NEXT:    pushl %ebp991; WIN-X86-NEXT:    movl %esp, %ebp992; WIN-X86-NEXT:    pushl %edi993; WIN-X86-NEXT:    pushl %esi994; WIN-X86-NEXT:    andl $-16, %esp995; WIN-X86-NEXT:    subl $48, %esp996; WIN-X86-NEXT:    movl 8(%ebp), %esi997; WIN-X86-NEXT:    movl 24(%ebp), %eax998; WIN-X86-NEXT:    movl 28(%ebp), %ecx999; WIN-X86-NEXT:    movl 32(%ebp), %edx1000; WIN-X86-NEXT:    movl 36(%ebp), %edi1001; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1002; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1003; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1004; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1005; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1006; WIN-X86-NEXT:    movl %eax, (%esp)1007; WIN-X86-NEXT:    calll _cosl1008; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1009; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1010; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1011; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1012; WIN-X86-NEXT:    movl %edi, 8(%esi)1013; WIN-X86-NEXT:    movl %edx, 12(%esi)1014; WIN-X86-NEXT:    movl %eax, (%esi)1015; WIN-X86-NEXT:    movl %ecx, 4(%esi)1016; WIN-X86-NEXT:    movl %esi, %eax1017; WIN-X86-NEXT:    leal -8(%ebp), %esp1018; WIN-X86-NEXT:    popl %esi1019; WIN-X86-NEXT:    popl %edi1020; WIN-X86-NEXT:    popl %ebp1021; WIN-X86-NEXT:    retl1022entry:1023  %cos = call fp128 @llvm.experimental.constrained.cos.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #01024  ret fp128 %cos1025}1026 1027define fp128 @cosh(fp128 %x) nounwind strictfp {1028; ANDROID-LABEL: cosh:1029; ANDROID:       # %bb.0: # %entry1030; ANDROID-NEXT:    pushq %rax1031; ANDROID-NEXT:    callq coshl@PLT1032; ANDROID-NEXT:    popq %rax1033; ANDROID-NEXT:    retq1034;1035; GNU-LABEL: cosh:1036; GNU:       # %bb.0: # %entry1037; GNU-NEXT:    pushq %rax1038; GNU-NEXT:    callq coshf128@PLT1039; GNU-NEXT:    popq %rax1040; GNU-NEXT:    retq1041;1042; X86-LABEL: cosh:1043; X86:       # %bb.0: # %entry1044; X86-NEXT:    pushl %edi1045; X86-NEXT:    pushl %esi1046; X86-NEXT:    subl $52, %esp1047; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1048; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1049; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1050; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1051; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1052; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1053; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1054; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1055; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1056; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1057; X86-NEXT:    movl %eax, (%esp)1058; X86-NEXT:    calll coshf1281059; X86-NEXT:    subl $4, %esp1060; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm01061; X86-NEXT:    movaps %xmm0, (%esi)1062; X86-NEXT:    movl %esi, %eax1063; X86-NEXT:    addl $52, %esp1064; X86-NEXT:    popl %esi1065; X86-NEXT:    popl %edi1066; X86-NEXT:    retl $41067;1068; WIN-LABEL: cosh:1069; WIN:       # %bb.0: # %entry1070; WIN-NEXT:    subq $56, %rsp1071; WIN-NEXT:    movaps (%rcx), %xmm01072; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)1073; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx1074; WIN-NEXT:    callq coshl1075; WIN-NEXT:    addq $56, %rsp1076; WIN-NEXT:    retq1077;1078; WIN-X86-LABEL: cosh:1079; WIN-X86:       # %bb.0: # %entry1080; WIN-X86-NEXT:    pushl %ebp1081; WIN-X86-NEXT:    movl %esp, %ebp1082; WIN-X86-NEXT:    pushl %edi1083; WIN-X86-NEXT:    pushl %esi1084; WIN-X86-NEXT:    andl $-16, %esp1085; WIN-X86-NEXT:    subl $48, %esp1086; WIN-X86-NEXT:    movl 8(%ebp), %esi1087; WIN-X86-NEXT:    movl 24(%ebp), %eax1088; WIN-X86-NEXT:    movl 28(%ebp), %ecx1089; WIN-X86-NEXT:    movl 32(%ebp), %edx1090; WIN-X86-NEXT:    movl 36(%ebp), %edi1091; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1092; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1093; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1094; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1095; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1096; WIN-X86-NEXT:    movl %eax, (%esp)1097; WIN-X86-NEXT:    calll _coshl1098; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1099; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1100; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1101; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1102; WIN-X86-NEXT:    movl %edi, 8(%esi)1103; WIN-X86-NEXT:    movl %edx, 12(%esi)1104; WIN-X86-NEXT:    movl %eax, (%esi)1105; WIN-X86-NEXT:    movl %ecx, 4(%esi)1106; WIN-X86-NEXT:    movl %esi, %eax1107; WIN-X86-NEXT:    leal -8(%ebp), %esp1108; WIN-X86-NEXT:    popl %esi1109; WIN-X86-NEXT:    popl %edi1110; WIN-X86-NEXT:    popl %ebp1111; WIN-X86-NEXT:    retl1112entry:1113  %cosh = call fp128 @llvm.experimental.constrained.cosh.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #01114  ret fp128 %cosh1115}1116 1117define fp128 @exp(fp128 %x) nounwind strictfp {1118; ANDROID-LABEL: exp:1119; ANDROID:       # %bb.0: # %entry1120; ANDROID-NEXT:    pushq %rax1121; ANDROID-NEXT:    callq expl@PLT1122; ANDROID-NEXT:    popq %rax1123; ANDROID-NEXT:    retq1124;1125; GNU-LABEL: exp:1126; GNU:       # %bb.0: # %entry1127; GNU-NEXT:    pushq %rax1128; GNU-NEXT:    callq expf128@PLT1129; GNU-NEXT:    popq %rax1130; GNU-NEXT:    retq1131;1132; X86-LABEL: exp:1133; X86:       # %bb.0: # %entry1134; X86-NEXT:    pushl %edi1135; X86-NEXT:    pushl %esi1136; X86-NEXT:    subl $52, %esp1137; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1138; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1139; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1140; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1141; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1142; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1143; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1144; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1145; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1146; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1147; X86-NEXT:    movl %eax, (%esp)1148; X86-NEXT:    calll expf1281149; X86-NEXT:    subl $4, %esp1150; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm01151; X86-NEXT:    movaps %xmm0, (%esi)1152; X86-NEXT:    movl %esi, %eax1153; X86-NEXT:    addl $52, %esp1154; X86-NEXT:    popl %esi1155; X86-NEXT:    popl %edi1156; X86-NEXT:    retl $41157;1158; WIN-LABEL: exp:1159; WIN:       # %bb.0: # %entry1160; WIN-NEXT:    subq $56, %rsp1161; WIN-NEXT:    movaps (%rcx), %xmm01162; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)1163; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx1164; WIN-NEXT:    callq expl1165; WIN-NEXT:    addq $56, %rsp1166; WIN-NEXT:    retq1167;1168; WIN-X86-LABEL: exp:1169; WIN-X86:       # %bb.0: # %entry1170; WIN-X86-NEXT:    pushl %ebp1171; WIN-X86-NEXT:    movl %esp, %ebp1172; WIN-X86-NEXT:    pushl %edi1173; WIN-X86-NEXT:    pushl %esi1174; WIN-X86-NEXT:    andl $-16, %esp1175; WIN-X86-NEXT:    subl $48, %esp1176; WIN-X86-NEXT:    movl 8(%ebp), %esi1177; WIN-X86-NEXT:    movl 24(%ebp), %eax1178; WIN-X86-NEXT:    movl 28(%ebp), %ecx1179; WIN-X86-NEXT:    movl 32(%ebp), %edx1180; WIN-X86-NEXT:    movl 36(%ebp), %edi1181; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1182; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1183; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1184; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1185; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1186; WIN-X86-NEXT:    movl %eax, (%esp)1187; WIN-X86-NEXT:    calll _expl1188; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1189; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1190; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1191; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1192; WIN-X86-NEXT:    movl %edi, 8(%esi)1193; WIN-X86-NEXT:    movl %edx, 12(%esi)1194; WIN-X86-NEXT:    movl %eax, (%esi)1195; WIN-X86-NEXT:    movl %ecx, 4(%esi)1196; WIN-X86-NEXT:    movl %esi, %eax1197; WIN-X86-NEXT:    leal -8(%ebp), %esp1198; WIN-X86-NEXT:    popl %esi1199; WIN-X86-NEXT:    popl %edi1200; WIN-X86-NEXT:    popl %ebp1201; WIN-X86-NEXT:    retl1202entry:1203  %exp = call fp128 @llvm.experimental.constrained.exp.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #01204  ret fp128 %exp1205}1206 1207define fp128 @exp2(fp128 %x) nounwind strictfp {1208; ANDROID-LABEL: exp2:1209; ANDROID:       # %bb.0: # %entry1210; ANDROID-NEXT:    pushq %rax1211; ANDROID-NEXT:    callq exp2l@PLT1212; ANDROID-NEXT:    popq %rax1213; ANDROID-NEXT:    retq1214;1215; GNU-LABEL: exp2:1216; GNU:       # %bb.0: # %entry1217; GNU-NEXT:    pushq %rax1218; GNU-NEXT:    callq exp2f128@PLT1219; GNU-NEXT:    popq %rax1220; GNU-NEXT:    retq1221;1222; X86-LABEL: exp2:1223; X86:       # %bb.0: # %entry1224; X86-NEXT:    pushl %edi1225; X86-NEXT:    pushl %esi1226; X86-NEXT:    subl $52, %esp1227; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1228; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1229; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1230; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1231; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1232; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1233; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1234; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1235; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1236; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1237; X86-NEXT:    movl %eax, (%esp)1238; X86-NEXT:    calll exp2f1281239; X86-NEXT:    subl $4, %esp1240; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm01241; X86-NEXT:    movaps %xmm0, (%esi)1242; X86-NEXT:    movl %esi, %eax1243; X86-NEXT:    addl $52, %esp1244; X86-NEXT:    popl %esi1245; X86-NEXT:    popl %edi1246; X86-NEXT:    retl $41247;1248; WIN-LABEL: exp2:1249; WIN:       # %bb.0: # %entry1250; WIN-NEXT:    subq $56, %rsp1251; WIN-NEXT:    movaps (%rcx), %xmm01252; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)1253; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx1254; WIN-NEXT:    callq exp2l1255; WIN-NEXT:    addq $56, %rsp1256; WIN-NEXT:    retq1257;1258; WIN-X86-LABEL: exp2:1259; WIN-X86:       # %bb.0: # %entry1260; WIN-X86-NEXT:    pushl %ebp1261; WIN-X86-NEXT:    movl %esp, %ebp1262; WIN-X86-NEXT:    pushl %edi1263; WIN-X86-NEXT:    pushl %esi1264; WIN-X86-NEXT:    andl $-16, %esp1265; WIN-X86-NEXT:    subl $48, %esp1266; WIN-X86-NEXT:    movl 8(%ebp), %esi1267; WIN-X86-NEXT:    movl 24(%ebp), %eax1268; WIN-X86-NEXT:    movl 28(%ebp), %ecx1269; WIN-X86-NEXT:    movl 32(%ebp), %edx1270; WIN-X86-NEXT:    movl 36(%ebp), %edi1271; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1272; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1273; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1274; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1275; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1276; WIN-X86-NEXT:    movl %eax, (%esp)1277; WIN-X86-NEXT:    calll _exp2l1278; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1279; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1280; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1281; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1282; WIN-X86-NEXT:    movl %edi, 8(%esi)1283; WIN-X86-NEXT:    movl %edx, 12(%esi)1284; WIN-X86-NEXT:    movl %eax, (%esi)1285; WIN-X86-NEXT:    movl %ecx, 4(%esi)1286; WIN-X86-NEXT:    movl %esi, %eax1287; WIN-X86-NEXT:    leal -8(%ebp), %esp1288; WIN-X86-NEXT:    popl %esi1289; WIN-X86-NEXT:    popl %edi1290; WIN-X86-NEXT:    popl %ebp1291; WIN-X86-NEXT:    retl1292entry:1293  %exp2 = call fp128 @llvm.experimental.constrained.exp2.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #01294  ret fp128 %exp21295}1296 1297define fp128 @floor(fp128 %x) nounwind strictfp {1298; ANDROID-LABEL: floor:1299; ANDROID:       # %bb.0: # %entry1300; ANDROID-NEXT:    pushq %rax1301; ANDROID-NEXT:    callq floorl@PLT1302; ANDROID-NEXT:    popq %rax1303; ANDROID-NEXT:    retq1304;1305; GNU-LABEL: floor:1306; GNU:       # %bb.0: # %entry1307; GNU-NEXT:    pushq %rax1308; GNU-NEXT:    callq floorf128@PLT1309; GNU-NEXT:    popq %rax1310; GNU-NEXT:    retq1311;1312; X86-LABEL: floor:1313; X86:       # %bb.0: # %entry1314; X86-NEXT:    pushl %edi1315; X86-NEXT:    pushl %esi1316; X86-NEXT:    subl $52, %esp1317; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1318; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1319; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1320; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1321; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1322; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1323; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1324; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1325; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1326; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1327; X86-NEXT:    movl %eax, (%esp)1328; X86-NEXT:    calll floorf1281329; X86-NEXT:    subl $4, %esp1330; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm01331; X86-NEXT:    movaps %xmm0, (%esi)1332; X86-NEXT:    movl %esi, %eax1333; X86-NEXT:    addl $52, %esp1334; X86-NEXT:    popl %esi1335; X86-NEXT:    popl %edi1336; X86-NEXT:    retl $41337;1338; WIN-LABEL: floor:1339; WIN:       # %bb.0: # %entry1340; WIN-NEXT:    subq $56, %rsp1341; WIN-NEXT:    movaps (%rcx), %xmm01342; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)1343; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx1344; WIN-NEXT:    callq floorl1345; WIN-NEXT:    addq $56, %rsp1346; WIN-NEXT:    retq1347;1348; WIN-X86-LABEL: floor:1349; WIN-X86:       # %bb.0: # %entry1350; WIN-X86-NEXT:    pushl %ebp1351; WIN-X86-NEXT:    movl %esp, %ebp1352; WIN-X86-NEXT:    pushl %edi1353; WIN-X86-NEXT:    pushl %esi1354; WIN-X86-NEXT:    andl $-16, %esp1355; WIN-X86-NEXT:    subl $48, %esp1356; WIN-X86-NEXT:    movl 8(%ebp), %esi1357; WIN-X86-NEXT:    movl 24(%ebp), %eax1358; WIN-X86-NEXT:    movl 28(%ebp), %ecx1359; WIN-X86-NEXT:    movl 32(%ebp), %edx1360; WIN-X86-NEXT:    movl 36(%ebp), %edi1361; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1362; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1363; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1364; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1365; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1366; WIN-X86-NEXT:    movl %eax, (%esp)1367; WIN-X86-NEXT:    calll _floorl1368; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1369; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1370; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1371; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1372; WIN-X86-NEXT:    movl %edi, 8(%esi)1373; WIN-X86-NEXT:    movl %edx, 12(%esi)1374; WIN-X86-NEXT:    movl %eax, (%esi)1375; WIN-X86-NEXT:    movl %ecx, 4(%esi)1376; WIN-X86-NEXT:    movl %esi, %eax1377; WIN-X86-NEXT:    leal -8(%ebp), %esp1378; WIN-X86-NEXT:    popl %esi1379; WIN-X86-NEXT:    popl %edi1380; WIN-X86-NEXT:    popl %ebp1381; WIN-X86-NEXT:    retl1382entry:1383  %floor = call fp128 @llvm.experimental.constrained.floor.f128(fp128 %x, metadata !"fpexcept.strict") #01384  ret fp128 %floor1385}1386 1387define fp128 @log(fp128 %x) nounwind strictfp {1388; ANDROID-LABEL: log:1389; ANDROID:       # %bb.0: # %entry1390; ANDROID-NEXT:    pushq %rax1391; ANDROID-NEXT:    callq logl@PLT1392; ANDROID-NEXT:    popq %rax1393; ANDROID-NEXT:    retq1394;1395; GNU-LABEL: log:1396; GNU:       # %bb.0: # %entry1397; GNU-NEXT:    pushq %rax1398; GNU-NEXT:    callq logf128@PLT1399; GNU-NEXT:    popq %rax1400; GNU-NEXT:    retq1401;1402; X86-LABEL: log:1403; X86:       # %bb.0: # %entry1404; X86-NEXT:    pushl %edi1405; X86-NEXT:    pushl %esi1406; X86-NEXT:    subl $52, %esp1407; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1408; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1409; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1410; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1411; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1412; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1413; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1414; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1415; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1416; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1417; X86-NEXT:    movl %eax, (%esp)1418; X86-NEXT:    calll logf1281419; X86-NEXT:    subl $4, %esp1420; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm01421; X86-NEXT:    movaps %xmm0, (%esi)1422; X86-NEXT:    movl %esi, %eax1423; X86-NEXT:    addl $52, %esp1424; X86-NEXT:    popl %esi1425; X86-NEXT:    popl %edi1426; X86-NEXT:    retl $41427;1428; WIN-LABEL: log:1429; WIN:       # %bb.0: # %entry1430; WIN-NEXT:    subq $56, %rsp1431; WIN-NEXT:    movaps (%rcx), %xmm01432; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)1433; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx1434; WIN-NEXT:    callq logl1435; WIN-NEXT:    addq $56, %rsp1436; WIN-NEXT:    retq1437;1438; WIN-X86-LABEL: log:1439; WIN-X86:       # %bb.0: # %entry1440; WIN-X86-NEXT:    pushl %ebp1441; WIN-X86-NEXT:    movl %esp, %ebp1442; WIN-X86-NEXT:    pushl %edi1443; WIN-X86-NEXT:    pushl %esi1444; WIN-X86-NEXT:    andl $-16, %esp1445; WIN-X86-NEXT:    subl $48, %esp1446; WIN-X86-NEXT:    movl 8(%ebp), %esi1447; WIN-X86-NEXT:    movl 24(%ebp), %eax1448; WIN-X86-NEXT:    movl 28(%ebp), %ecx1449; WIN-X86-NEXT:    movl 32(%ebp), %edx1450; WIN-X86-NEXT:    movl 36(%ebp), %edi1451; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1452; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1453; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1454; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1455; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1456; WIN-X86-NEXT:    movl %eax, (%esp)1457; WIN-X86-NEXT:    calll _logl1458; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1459; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1460; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1461; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1462; WIN-X86-NEXT:    movl %edi, 8(%esi)1463; WIN-X86-NEXT:    movl %edx, 12(%esi)1464; WIN-X86-NEXT:    movl %eax, (%esi)1465; WIN-X86-NEXT:    movl %ecx, 4(%esi)1466; WIN-X86-NEXT:    movl %esi, %eax1467; WIN-X86-NEXT:    leal -8(%ebp), %esp1468; WIN-X86-NEXT:    popl %esi1469; WIN-X86-NEXT:    popl %edi1470; WIN-X86-NEXT:    popl %ebp1471; WIN-X86-NEXT:    retl1472entry:1473  %log = call fp128 @llvm.experimental.constrained.log.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #01474  ret fp128 %log1475}1476 1477define fp128 @log10(fp128 %x) nounwind strictfp {1478; ANDROID-LABEL: log10:1479; ANDROID:       # %bb.0: # %entry1480; ANDROID-NEXT:    pushq %rax1481; ANDROID-NEXT:    callq log10l@PLT1482; ANDROID-NEXT:    popq %rax1483; ANDROID-NEXT:    retq1484;1485; GNU-LABEL: log10:1486; GNU:       # %bb.0: # %entry1487; GNU-NEXT:    pushq %rax1488; GNU-NEXT:    callq log10f128@PLT1489; GNU-NEXT:    popq %rax1490; GNU-NEXT:    retq1491;1492; X86-LABEL: log10:1493; X86:       # %bb.0: # %entry1494; X86-NEXT:    pushl %edi1495; X86-NEXT:    pushl %esi1496; X86-NEXT:    subl $52, %esp1497; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1498; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1499; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1500; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1501; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1502; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1503; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1504; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1505; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1506; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1507; X86-NEXT:    movl %eax, (%esp)1508; X86-NEXT:    calll log10f1281509; X86-NEXT:    subl $4, %esp1510; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm01511; X86-NEXT:    movaps %xmm0, (%esi)1512; X86-NEXT:    movl %esi, %eax1513; X86-NEXT:    addl $52, %esp1514; X86-NEXT:    popl %esi1515; X86-NEXT:    popl %edi1516; X86-NEXT:    retl $41517;1518; WIN-LABEL: log10:1519; WIN:       # %bb.0: # %entry1520; WIN-NEXT:    subq $56, %rsp1521; WIN-NEXT:    movaps (%rcx), %xmm01522; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)1523; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx1524; WIN-NEXT:    callq log10l1525; WIN-NEXT:    addq $56, %rsp1526; WIN-NEXT:    retq1527;1528; WIN-X86-LABEL: log10:1529; WIN-X86:       # %bb.0: # %entry1530; WIN-X86-NEXT:    pushl %ebp1531; WIN-X86-NEXT:    movl %esp, %ebp1532; WIN-X86-NEXT:    pushl %edi1533; WIN-X86-NEXT:    pushl %esi1534; WIN-X86-NEXT:    andl $-16, %esp1535; WIN-X86-NEXT:    subl $48, %esp1536; WIN-X86-NEXT:    movl 8(%ebp), %esi1537; WIN-X86-NEXT:    movl 24(%ebp), %eax1538; WIN-X86-NEXT:    movl 28(%ebp), %ecx1539; WIN-X86-NEXT:    movl 32(%ebp), %edx1540; WIN-X86-NEXT:    movl 36(%ebp), %edi1541; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1542; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1543; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1544; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1545; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1546; WIN-X86-NEXT:    movl %eax, (%esp)1547; WIN-X86-NEXT:    calll _log10l1548; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1549; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1550; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1551; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1552; WIN-X86-NEXT:    movl %edi, 8(%esi)1553; WIN-X86-NEXT:    movl %edx, 12(%esi)1554; WIN-X86-NEXT:    movl %eax, (%esi)1555; WIN-X86-NEXT:    movl %ecx, 4(%esi)1556; WIN-X86-NEXT:    movl %esi, %eax1557; WIN-X86-NEXT:    leal -8(%ebp), %esp1558; WIN-X86-NEXT:    popl %esi1559; WIN-X86-NEXT:    popl %edi1560; WIN-X86-NEXT:    popl %ebp1561; WIN-X86-NEXT:    retl1562entry:1563  %log10 = call fp128 @llvm.experimental.constrained.log10.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #01564  ret fp128 %log101565}1566 1567define fp128 @log2(fp128 %x) nounwind strictfp {1568; ANDROID-LABEL: log2:1569; ANDROID:       # %bb.0: # %entry1570; ANDROID-NEXT:    pushq %rax1571; ANDROID-NEXT:    callq log2l@PLT1572; ANDROID-NEXT:    popq %rax1573; ANDROID-NEXT:    retq1574;1575; GNU-LABEL: log2:1576; GNU:       # %bb.0: # %entry1577; GNU-NEXT:    pushq %rax1578; GNU-NEXT:    callq log2f128@PLT1579; GNU-NEXT:    popq %rax1580; GNU-NEXT:    retq1581;1582; X86-LABEL: log2:1583; X86:       # %bb.0: # %entry1584; X86-NEXT:    pushl %edi1585; X86-NEXT:    pushl %esi1586; X86-NEXT:    subl $52, %esp1587; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1588; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1589; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1590; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1591; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1592; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1593; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1594; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1595; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1596; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1597; X86-NEXT:    movl %eax, (%esp)1598; X86-NEXT:    calll log2f1281599; X86-NEXT:    subl $4, %esp1600; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm01601; X86-NEXT:    movaps %xmm0, (%esi)1602; X86-NEXT:    movl %esi, %eax1603; X86-NEXT:    addl $52, %esp1604; X86-NEXT:    popl %esi1605; X86-NEXT:    popl %edi1606; X86-NEXT:    retl $41607;1608; WIN-LABEL: log2:1609; WIN:       # %bb.0: # %entry1610; WIN-NEXT:    subq $56, %rsp1611; WIN-NEXT:    movaps (%rcx), %xmm01612; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)1613; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx1614; WIN-NEXT:    callq log2l1615; WIN-NEXT:    addq $56, %rsp1616; WIN-NEXT:    retq1617;1618; WIN-X86-LABEL: log2:1619; WIN-X86:       # %bb.0: # %entry1620; WIN-X86-NEXT:    pushl %ebp1621; WIN-X86-NEXT:    movl %esp, %ebp1622; WIN-X86-NEXT:    pushl %edi1623; WIN-X86-NEXT:    pushl %esi1624; WIN-X86-NEXT:    andl $-16, %esp1625; WIN-X86-NEXT:    subl $48, %esp1626; WIN-X86-NEXT:    movl 8(%ebp), %esi1627; WIN-X86-NEXT:    movl 24(%ebp), %eax1628; WIN-X86-NEXT:    movl 28(%ebp), %ecx1629; WIN-X86-NEXT:    movl 32(%ebp), %edx1630; WIN-X86-NEXT:    movl 36(%ebp), %edi1631; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1632; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1633; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1634; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1635; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1636; WIN-X86-NEXT:    movl %eax, (%esp)1637; WIN-X86-NEXT:    calll _log2l1638; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1639; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1640; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1641; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1642; WIN-X86-NEXT:    movl %edi, 8(%esi)1643; WIN-X86-NEXT:    movl %edx, 12(%esi)1644; WIN-X86-NEXT:    movl %eax, (%esi)1645; WIN-X86-NEXT:    movl %ecx, 4(%esi)1646; WIN-X86-NEXT:    movl %esi, %eax1647; WIN-X86-NEXT:    leal -8(%ebp), %esp1648; WIN-X86-NEXT:    popl %esi1649; WIN-X86-NEXT:    popl %edi1650; WIN-X86-NEXT:    popl %ebp1651; WIN-X86-NEXT:    retl1652entry:1653  %log2 = call fp128 @llvm.experimental.constrained.log2.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #01654  ret fp128 %log21655}1656 1657define fp128 @maxnum(fp128 %x, fp128 %y) nounwind strictfp {1658; ANDROID-LABEL: maxnum:1659; ANDROID:       # %bb.0: # %entry1660; ANDROID-NEXT:    pushq %rax1661; ANDROID-NEXT:    callq fmaxl@PLT1662; ANDROID-NEXT:    popq %rax1663; ANDROID-NEXT:    retq1664;1665; GNU-LABEL: maxnum:1666; GNU:       # %bb.0: # %entry1667; GNU-NEXT:    pushq %rax1668; GNU-NEXT:    callq fmaxf128@PLT1669; GNU-NEXT:    popq %rax1670; GNU-NEXT:    retq1671;1672; X86-LABEL: maxnum:1673; X86:       # %bb.0: # %entry1674; X86-NEXT:    pushl %ebp1675; X86-NEXT:    pushl %ebx1676; X86-NEXT:    pushl %edi1677; X86-NEXT:    pushl %esi1678; X86-NEXT:    subl $76, %esp1679; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1680; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1681; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1682; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx1683; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp1684; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1685; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1686; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1687; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1688; X86-NEXT:    movl %ebp, {{[0-9]+}}(%esp)1689; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)1690; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1691; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1692; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1693; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1694; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1695; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1696; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1697; X86-NEXT:    movl %eax, (%esp)1698; X86-NEXT:    calll fmaxf1281699; X86-NEXT:    subl $4, %esp1700; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm01701; X86-NEXT:    movaps %xmm0, (%esi)1702; X86-NEXT:    movl %esi, %eax1703; X86-NEXT:    addl $76, %esp1704; X86-NEXT:    popl %esi1705; X86-NEXT:    popl %edi1706; X86-NEXT:    popl %ebx1707; X86-NEXT:    popl %ebp1708; X86-NEXT:    retl $41709;1710; WIN-LABEL: maxnum:1711; WIN:       # %bb.0: # %entry1712; WIN-NEXT:    subq $72, %rsp1713; WIN-NEXT:    movaps (%rcx), %xmm01714; WIN-NEXT:    movaps (%rdx), %xmm11715; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)1716; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)1717; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx1718; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx1719; WIN-NEXT:    callq fmaxl1720; WIN-NEXT:    addq $72, %rsp1721; WIN-NEXT:    retq1722;1723; WIN-X86-LABEL: maxnum:1724; WIN-X86:       # %bb.0: # %entry1725; WIN-X86-NEXT:    pushl %ebp1726; WIN-X86-NEXT:    movl %esp, %ebp1727; WIN-X86-NEXT:    pushl %ebx1728; WIN-X86-NEXT:    pushl %edi1729; WIN-X86-NEXT:    pushl %esi1730; WIN-X86-NEXT:    andl $-16, %esp1731; WIN-X86-NEXT:    subl $80, %esp1732; WIN-X86-NEXT:    movl 8(%ebp), %esi1733; WIN-X86-NEXT:    movl 36(%ebp), %edi1734; WIN-X86-NEXT:    movl 40(%ebp), %ebx1735; WIN-X86-NEXT:    movl 44(%ebp), %edx1736; WIN-X86-NEXT:    movl 48(%ebp), %ecx1737; WIN-X86-NEXT:    movl 52(%ebp), %eax1738; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1739; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1740; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1741; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)1742; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1743; WIN-X86-NEXT:    movl 32(%ebp), %eax1744; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1745; WIN-X86-NEXT:    movl 28(%ebp), %eax1746; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1747; WIN-X86-NEXT:    movl 24(%ebp), %eax1748; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1749; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1750; WIN-X86-NEXT:    movl %eax, (%esp)1751; WIN-X86-NEXT:    calll _fmaxl1752; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1753; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1754; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1755; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1756; WIN-X86-NEXT:    movl %edi, 8(%esi)1757; WIN-X86-NEXT:    movl %edx, 12(%esi)1758; WIN-X86-NEXT:    movl %eax, (%esi)1759; WIN-X86-NEXT:    movl %ecx, 4(%esi)1760; WIN-X86-NEXT:    movl %esi, %eax1761; WIN-X86-NEXT:    leal -12(%ebp), %esp1762; WIN-X86-NEXT:    popl %esi1763; WIN-X86-NEXT:    popl %edi1764; WIN-X86-NEXT:    popl %ebx1765; WIN-X86-NEXT:    popl %ebp1766; WIN-X86-NEXT:    retl1767entry:1768  %maxnum = call fp128 @llvm.experimental.constrained.maxnum.f128(fp128 %x, fp128 %y, metadata !"fpexcept.strict") #01769  ret fp128 %maxnum1770}1771 1772define fp128 @minnum(fp128 %x, fp128 %y) nounwind strictfp {1773; ANDROID-LABEL: minnum:1774; ANDROID:       # %bb.0: # %entry1775; ANDROID-NEXT:    pushq %rax1776; ANDROID-NEXT:    callq fminl@PLT1777; ANDROID-NEXT:    popq %rax1778; ANDROID-NEXT:    retq1779;1780; GNU-LABEL: minnum:1781; GNU:       # %bb.0: # %entry1782; GNU-NEXT:    pushq %rax1783; GNU-NEXT:    callq fminf128@PLT1784; GNU-NEXT:    popq %rax1785; GNU-NEXT:    retq1786;1787; X86-LABEL: minnum:1788; X86:       # %bb.0: # %entry1789; X86-NEXT:    pushl %ebp1790; X86-NEXT:    pushl %ebx1791; X86-NEXT:    pushl %edi1792; X86-NEXT:    pushl %esi1793; X86-NEXT:    subl $76, %esp1794; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1795; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1796; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1797; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx1798; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp1799; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1800; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1801; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1802; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1803; X86-NEXT:    movl %ebp, {{[0-9]+}}(%esp)1804; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)1805; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1806; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1807; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1808; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1809; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1810; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1811; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1812; X86-NEXT:    movl %eax, (%esp)1813; X86-NEXT:    calll fminf1281814; X86-NEXT:    subl $4, %esp1815; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm01816; X86-NEXT:    movaps %xmm0, (%esi)1817; X86-NEXT:    movl %esi, %eax1818; X86-NEXT:    addl $76, %esp1819; X86-NEXT:    popl %esi1820; X86-NEXT:    popl %edi1821; X86-NEXT:    popl %ebx1822; X86-NEXT:    popl %ebp1823; X86-NEXT:    retl $41824;1825; WIN-LABEL: minnum:1826; WIN:       # %bb.0: # %entry1827; WIN-NEXT:    subq $72, %rsp1828; WIN-NEXT:    movaps (%rcx), %xmm01829; WIN-NEXT:    movaps (%rdx), %xmm11830; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)1831; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)1832; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx1833; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx1834; WIN-NEXT:    callq fminl1835; WIN-NEXT:    addq $72, %rsp1836; WIN-NEXT:    retq1837;1838; WIN-X86-LABEL: minnum:1839; WIN-X86:       # %bb.0: # %entry1840; WIN-X86-NEXT:    pushl %ebp1841; WIN-X86-NEXT:    movl %esp, %ebp1842; WIN-X86-NEXT:    pushl %ebx1843; WIN-X86-NEXT:    pushl %edi1844; WIN-X86-NEXT:    pushl %esi1845; WIN-X86-NEXT:    andl $-16, %esp1846; WIN-X86-NEXT:    subl $80, %esp1847; WIN-X86-NEXT:    movl 8(%ebp), %esi1848; WIN-X86-NEXT:    movl 36(%ebp), %edi1849; WIN-X86-NEXT:    movl 40(%ebp), %ebx1850; WIN-X86-NEXT:    movl 44(%ebp), %edx1851; WIN-X86-NEXT:    movl 48(%ebp), %ecx1852; WIN-X86-NEXT:    movl 52(%ebp), %eax1853; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1854; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1855; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1856; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)1857; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1858; WIN-X86-NEXT:    movl 32(%ebp), %eax1859; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1860; WIN-X86-NEXT:    movl 28(%ebp), %eax1861; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1862; WIN-X86-NEXT:    movl 24(%ebp), %eax1863; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1864; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1865; WIN-X86-NEXT:    movl %eax, (%esp)1866; WIN-X86-NEXT:    calll _fminl1867; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1868; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1869; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1870; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1871; WIN-X86-NEXT:    movl %edi, 8(%esi)1872; WIN-X86-NEXT:    movl %edx, 12(%esi)1873; WIN-X86-NEXT:    movl %eax, (%esi)1874; WIN-X86-NEXT:    movl %ecx, 4(%esi)1875; WIN-X86-NEXT:    movl %esi, %eax1876; WIN-X86-NEXT:    leal -12(%ebp), %esp1877; WIN-X86-NEXT:    popl %esi1878; WIN-X86-NEXT:    popl %edi1879; WIN-X86-NEXT:    popl %ebx1880; WIN-X86-NEXT:    popl %ebp1881; WIN-X86-NEXT:    retl1882entry:1883  %minnum = call fp128 @llvm.experimental.constrained.minnum.f128(fp128 %x, fp128 %y, metadata !"fpexcept.strict") #01884  ret fp128 %minnum1885}1886 1887define fp128 @nearbyint(fp128 %x) nounwind strictfp {1888; ANDROID-LABEL: nearbyint:1889; ANDROID:       # %bb.0: # %entry1890; ANDROID-NEXT:    pushq %rax1891; ANDROID-NEXT:    callq nearbyintl@PLT1892; ANDROID-NEXT:    popq %rax1893; ANDROID-NEXT:    retq1894;1895; GNU-LABEL: nearbyint:1896; GNU:       # %bb.0: # %entry1897; GNU-NEXT:    pushq %rax1898; GNU-NEXT:    callq nearbyintf128@PLT1899; GNU-NEXT:    popq %rax1900; GNU-NEXT:    retq1901;1902; X86-LABEL: nearbyint:1903; X86:       # %bb.0: # %entry1904; X86-NEXT:    pushl %edi1905; X86-NEXT:    pushl %esi1906; X86-NEXT:    subl $52, %esp1907; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi1908; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1909; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1910; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1911; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1912; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1913; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1914; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1915; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1916; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1917; X86-NEXT:    movl %eax, (%esp)1918; X86-NEXT:    calll nearbyintf1281919; X86-NEXT:    subl $4, %esp1920; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm01921; X86-NEXT:    movaps %xmm0, (%esi)1922; X86-NEXT:    movl %esi, %eax1923; X86-NEXT:    addl $52, %esp1924; X86-NEXT:    popl %esi1925; X86-NEXT:    popl %edi1926; X86-NEXT:    retl $41927;1928; WIN-LABEL: nearbyint:1929; WIN:       # %bb.0: # %entry1930; WIN-NEXT:    subq $56, %rsp1931; WIN-NEXT:    movaps (%rcx), %xmm01932; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)1933; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx1934; WIN-NEXT:    callq nearbyintl1935; WIN-NEXT:    addq $56, %rsp1936; WIN-NEXT:    retq1937;1938; WIN-X86-LABEL: nearbyint:1939; WIN-X86:       # %bb.0: # %entry1940; WIN-X86-NEXT:    pushl %ebp1941; WIN-X86-NEXT:    movl %esp, %ebp1942; WIN-X86-NEXT:    pushl %edi1943; WIN-X86-NEXT:    pushl %esi1944; WIN-X86-NEXT:    andl $-16, %esp1945; WIN-X86-NEXT:    subl $48, %esp1946; WIN-X86-NEXT:    movl 8(%ebp), %esi1947; WIN-X86-NEXT:    movl 24(%ebp), %eax1948; WIN-X86-NEXT:    movl 28(%ebp), %ecx1949; WIN-X86-NEXT:    movl 32(%ebp), %edx1950; WIN-X86-NEXT:    movl 36(%ebp), %edi1951; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)1952; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)1953; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1954; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)1955; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax1956; WIN-X86-NEXT:    movl %eax, (%esp)1957; WIN-X86-NEXT:    calll _nearbyintl1958; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1959; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx1960; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx1961; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi1962; WIN-X86-NEXT:    movl %edi, 8(%esi)1963; WIN-X86-NEXT:    movl %edx, 12(%esi)1964; WIN-X86-NEXT:    movl %eax, (%esi)1965; WIN-X86-NEXT:    movl %ecx, 4(%esi)1966; WIN-X86-NEXT:    movl %esi, %eax1967; WIN-X86-NEXT:    leal -8(%ebp), %esp1968; WIN-X86-NEXT:    popl %esi1969; WIN-X86-NEXT:    popl %edi1970; WIN-X86-NEXT:    popl %ebp1971; WIN-X86-NEXT:    retl1972entry:1973  %nearbyint = call fp128 @llvm.experimental.constrained.nearbyint.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #01974  ret fp128 %nearbyint1975}1976 1977define fp128 @pow(fp128 %x, fp128 %y) nounwind strictfp {1978; ANDROID-LABEL: pow:1979; ANDROID:       # %bb.0: # %entry1980; ANDROID-NEXT:    pushq %rax1981; ANDROID-NEXT:    callq powl@PLT1982; ANDROID-NEXT:    popq %rax1983; ANDROID-NEXT:    retq1984;1985; GNU-LABEL: pow:1986; GNU:       # %bb.0: # %entry1987; GNU-NEXT:    pushq %rax1988; GNU-NEXT:    callq powf128@PLT1989; GNU-NEXT:    popq %rax1990; GNU-NEXT:    retq1991;1992; X86-LABEL: pow:1993; X86:       # %bb.0: # %entry1994; X86-NEXT:    pushl %ebp1995; X86-NEXT:    pushl %ebx1996; X86-NEXT:    pushl %edi1997; X86-NEXT:    pushl %esi1998; X86-NEXT:    subl $76, %esp1999; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2000; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2001; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2002; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx2003; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp2004; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2005; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2006; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2007; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2008; X86-NEXT:    movl %ebp, {{[0-9]+}}(%esp)2009; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)2010; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2011; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2012; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2013; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2014; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2015; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2016; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2017; X86-NEXT:    movl %eax, (%esp)2018; X86-NEXT:    calll powf1282019; X86-NEXT:    subl $4, %esp2020; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm02021; X86-NEXT:    movaps %xmm0, (%esi)2022; X86-NEXT:    movl %esi, %eax2023; X86-NEXT:    addl $76, %esp2024; X86-NEXT:    popl %esi2025; X86-NEXT:    popl %edi2026; X86-NEXT:    popl %ebx2027; X86-NEXT:    popl %ebp2028; X86-NEXT:    retl $42029;2030; WIN-LABEL: pow:2031; WIN:       # %bb.0: # %entry2032; WIN-NEXT:    subq $72, %rsp2033; WIN-NEXT:    movaps (%rcx), %xmm02034; WIN-NEXT:    movaps (%rdx), %xmm12035; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)2036; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2037; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2038; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx2039; WIN-NEXT:    callq powl2040; WIN-NEXT:    addq $72, %rsp2041; WIN-NEXT:    retq2042;2043; WIN-X86-LABEL: pow:2044; WIN-X86:       # %bb.0: # %entry2045; WIN-X86-NEXT:    pushl %ebp2046; WIN-X86-NEXT:    movl %esp, %ebp2047; WIN-X86-NEXT:    pushl %ebx2048; WIN-X86-NEXT:    pushl %edi2049; WIN-X86-NEXT:    pushl %esi2050; WIN-X86-NEXT:    andl $-16, %esp2051; WIN-X86-NEXT:    subl $80, %esp2052; WIN-X86-NEXT:    movl 8(%ebp), %esi2053; WIN-X86-NEXT:    movl 36(%ebp), %edi2054; WIN-X86-NEXT:    movl 40(%ebp), %ebx2055; WIN-X86-NEXT:    movl 44(%ebp), %edx2056; WIN-X86-NEXT:    movl 48(%ebp), %ecx2057; WIN-X86-NEXT:    movl 52(%ebp), %eax2058; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2059; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2060; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2061; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)2062; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2063; WIN-X86-NEXT:    movl 32(%ebp), %eax2064; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2065; WIN-X86-NEXT:    movl 28(%ebp), %eax2066; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2067; WIN-X86-NEXT:    movl 24(%ebp), %eax2068; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2069; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2070; WIN-X86-NEXT:    movl %eax, (%esp)2071; WIN-X86-NEXT:    calll _powl2072; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2073; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2074; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2075; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2076; WIN-X86-NEXT:    movl %edi, 8(%esi)2077; WIN-X86-NEXT:    movl %edx, 12(%esi)2078; WIN-X86-NEXT:    movl %eax, (%esi)2079; WIN-X86-NEXT:    movl %ecx, 4(%esi)2080; WIN-X86-NEXT:    movl %esi, %eax2081; WIN-X86-NEXT:    leal -12(%ebp), %esp2082; WIN-X86-NEXT:    popl %esi2083; WIN-X86-NEXT:    popl %edi2084; WIN-X86-NEXT:    popl %ebx2085; WIN-X86-NEXT:    popl %ebp2086; WIN-X86-NEXT:    retl2087entry:2088  %pow = call fp128 @llvm.experimental.constrained.pow.f128(fp128 %x, fp128 %y, metadata !"round.dynamic", metadata !"fpexcept.strict") #02089  ret fp128 %pow2090}2091 2092define fp128 @powi(fp128 %x, i32 %y) nounwind strictfp {2093; CHECK-LABEL: powi:2094; CHECK:       # %bb.0: # %entry2095; CHECK-NEXT:    pushq %rax2096; CHECK-NEXT:    callq __powitf2@PLT2097; CHECK-NEXT:    popq %rax2098; CHECK-NEXT:    retq2099;2100; ANDROID-LABEL: powi:2101; ANDROID:       # %bb.0: # %entry2102; ANDROID-NEXT:    pushq %rax2103; ANDROID-NEXT:    callq __powitf2@PLT2104; ANDROID-NEXT:    popq %rax2105; ANDROID-NEXT:    retq2106;2107; GNU-LABEL: powi:2108; GNU:       # %bb.0: # %entry2109; GNU-NEXT:    pushq %rax2110; GNU-NEXT:    callq __powitf2@PLT2111; GNU-NEXT:    popq %rax2112; GNU-NEXT:    retq2113;2114; X86-LABEL: powi:2115; X86:       # %bb.0: # %entry2116; X86-NEXT:    pushl %ebx2117; X86-NEXT:    pushl %edi2118; X86-NEXT:    pushl %esi2119; X86-NEXT:    subl $64, %esp2120; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2121; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2122; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2123; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2124; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2125; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx2126; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)2127; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2128; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2129; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2130; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2131; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2132; X86-NEXT:    movl %eax, (%esp)2133; X86-NEXT:    calll __powitf22134; X86-NEXT:    subl $4, %esp2135; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm02136; X86-NEXT:    movaps %xmm0, (%esi)2137; X86-NEXT:    movl %esi, %eax2138; X86-NEXT:    addl $64, %esp2139; X86-NEXT:    popl %esi2140; X86-NEXT:    popl %edi2141; X86-NEXT:    popl %ebx2142; X86-NEXT:    retl $42143;2144; WIN-LABEL: powi:2145; WIN:       # %bb.0: # %entry2146; WIN-NEXT:    subq $56, %rsp2147; WIN-NEXT:    movaps (%rcx), %xmm02148; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2149; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2150; WIN-NEXT:    callq __powitf22151; WIN-NEXT:    addq $56, %rsp2152; WIN-NEXT:    retq2153;2154; WIN-X86-LABEL: powi:2155; WIN-X86:       # %bb.0: # %entry2156; WIN-X86-NEXT:    pushl %ebp2157; WIN-X86-NEXT:    movl %esp, %ebp2158; WIN-X86-NEXT:    pushl %ebx2159; WIN-X86-NEXT:    pushl %edi2160; WIN-X86-NEXT:    pushl %esi2161; WIN-X86-NEXT:    andl $-16, %esp2162; WIN-X86-NEXT:    subl $80, %esp2163; WIN-X86-NEXT:    movl 8(%ebp), %esi2164; WIN-X86-NEXT:    movl 24(%ebp), %eax2165; WIN-X86-NEXT:    movl 28(%ebp), %ecx2166; WIN-X86-NEXT:    movl 32(%ebp), %edx2167; WIN-X86-NEXT:    movl 36(%ebp), %edi2168; WIN-X86-NEXT:    movl 40(%ebp), %ebx2169; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)2170; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2171; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2172; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2173; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2174; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2175; WIN-X86-NEXT:    movl %eax, (%esp)2176; WIN-X86-NEXT:    calll ___powitf22177; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2178; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2179; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2180; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2181; WIN-X86-NEXT:    movl %edi, 8(%esi)2182; WIN-X86-NEXT:    movl %edx, 12(%esi)2183; WIN-X86-NEXT:    movl %eax, (%esi)2184; WIN-X86-NEXT:    movl %ecx, 4(%esi)2185; WIN-X86-NEXT:    movl %esi, %eax2186; WIN-X86-NEXT:    leal -12(%ebp), %esp2187; WIN-X86-NEXT:    popl %esi2188; WIN-X86-NEXT:    popl %edi2189; WIN-X86-NEXT:    popl %ebx2190; WIN-X86-NEXT:    popl %ebp2191; WIN-X86-NEXT:    retl2192entry:2193  %powi = call fp128 @llvm.experimental.constrained.powi.f128(fp128 %x, i32 %y, metadata !"round.dynamic", metadata !"fpexcept.strict") #02194  ret fp128 %powi2195}2196 2197define fp128 @rint(fp128 %x) nounwind strictfp {2198; ANDROID-LABEL: rint:2199; ANDROID:       # %bb.0: # %entry2200; ANDROID-NEXT:    pushq %rax2201; ANDROID-NEXT:    callq rintl@PLT2202; ANDROID-NEXT:    popq %rax2203; ANDROID-NEXT:    retq2204;2205; GNU-LABEL: rint:2206; GNU:       # %bb.0: # %entry2207; GNU-NEXT:    pushq %rax2208; GNU-NEXT:    callq rintf128@PLT2209; GNU-NEXT:    popq %rax2210; GNU-NEXT:    retq2211;2212; X86-LABEL: rint:2213; X86:       # %bb.0: # %entry2214; X86-NEXT:    pushl %edi2215; X86-NEXT:    pushl %esi2216; X86-NEXT:    subl $52, %esp2217; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2218; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2219; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2220; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2221; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2222; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2223; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2224; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2225; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2226; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2227; X86-NEXT:    movl %eax, (%esp)2228; X86-NEXT:    calll rintf1282229; X86-NEXT:    subl $4, %esp2230; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm02231; X86-NEXT:    movaps %xmm0, (%esi)2232; X86-NEXT:    movl %esi, %eax2233; X86-NEXT:    addl $52, %esp2234; X86-NEXT:    popl %esi2235; X86-NEXT:    popl %edi2236; X86-NEXT:    retl $42237;2238; WIN-LABEL: rint:2239; WIN:       # %bb.0: # %entry2240; WIN-NEXT:    subq $56, %rsp2241; WIN-NEXT:    movaps (%rcx), %xmm02242; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2243; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2244; WIN-NEXT:    callq rintl2245; WIN-NEXT:    addq $56, %rsp2246; WIN-NEXT:    retq2247;2248; WIN-X86-LABEL: rint:2249; WIN-X86:       # %bb.0: # %entry2250; WIN-X86-NEXT:    pushl %ebp2251; WIN-X86-NEXT:    movl %esp, %ebp2252; WIN-X86-NEXT:    pushl %edi2253; WIN-X86-NEXT:    pushl %esi2254; WIN-X86-NEXT:    andl $-16, %esp2255; WIN-X86-NEXT:    subl $48, %esp2256; WIN-X86-NEXT:    movl 8(%ebp), %esi2257; WIN-X86-NEXT:    movl 24(%ebp), %eax2258; WIN-X86-NEXT:    movl 28(%ebp), %ecx2259; WIN-X86-NEXT:    movl 32(%ebp), %edx2260; WIN-X86-NEXT:    movl 36(%ebp), %edi2261; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2262; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2263; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2264; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2265; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2266; WIN-X86-NEXT:    movl %eax, (%esp)2267; WIN-X86-NEXT:    calll _rintl2268; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2269; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2270; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2271; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2272; WIN-X86-NEXT:    movl %edi, 8(%esi)2273; WIN-X86-NEXT:    movl %edx, 12(%esi)2274; WIN-X86-NEXT:    movl %eax, (%esi)2275; WIN-X86-NEXT:    movl %ecx, 4(%esi)2276; WIN-X86-NEXT:    movl %esi, %eax2277; WIN-X86-NEXT:    leal -8(%ebp), %esp2278; WIN-X86-NEXT:    popl %esi2279; WIN-X86-NEXT:    popl %edi2280; WIN-X86-NEXT:    popl %ebp2281; WIN-X86-NEXT:    retl2282entry:2283  %rint = call fp128 @llvm.experimental.constrained.rint.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #02284  ret fp128 %rint2285}2286 2287define fp128 @round(fp128 %x) nounwind strictfp {2288; ANDROID-LABEL: round:2289; ANDROID:       # %bb.0: # %entry2290; ANDROID-NEXT:    pushq %rax2291; ANDROID-NEXT:    callq roundl@PLT2292; ANDROID-NEXT:    popq %rax2293; ANDROID-NEXT:    retq2294;2295; GNU-LABEL: round:2296; GNU:       # %bb.0: # %entry2297; GNU-NEXT:    pushq %rax2298; GNU-NEXT:    callq roundf128@PLT2299; GNU-NEXT:    popq %rax2300; GNU-NEXT:    retq2301;2302; X86-LABEL: round:2303; X86:       # %bb.0: # %entry2304; X86-NEXT:    pushl %edi2305; X86-NEXT:    pushl %esi2306; X86-NEXT:    subl $52, %esp2307; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2308; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2309; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2310; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2311; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2312; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2313; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2314; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2315; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2316; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2317; X86-NEXT:    movl %eax, (%esp)2318; X86-NEXT:    calll roundf1282319; X86-NEXT:    subl $4, %esp2320; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm02321; X86-NEXT:    movaps %xmm0, (%esi)2322; X86-NEXT:    movl %esi, %eax2323; X86-NEXT:    addl $52, %esp2324; X86-NEXT:    popl %esi2325; X86-NEXT:    popl %edi2326; X86-NEXT:    retl $42327;2328; WIN-LABEL: round:2329; WIN:       # %bb.0: # %entry2330; WIN-NEXT:    subq $56, %rsp2331; WIN-NEXT:    movaps (%rcx), %xmm02332; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2333; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2334; WIN-NEXT:    callq roundl2335; WIN-NEXT:    addq $56, %rsp2336; WIN-NEXT:    retq2337;2338; WIN-X86-LABEL: round:2339; WIN-X86:       # %bb.0: # %entry2340; WIN-X86-NEXT:    pushl %ebp2341; WIN-X86-NEXT:    movl %esp, %ebp2342; WIN-X86-NEXT:    pushl %edi2343; WIN-X86-NEXT:    pushl %esi2344; WIN-X86-NEXT:    andl $-16, %esp2345; WIN-X86-NEXT:    subl $48, %esp2346; WIN-X86-NEXT:    movl 8(%ebp), %esi2347; WIN-X86-NEXT:    movl 24(%ebp), %eax2348; WIN-X86-NEXT:    movl 28(%ebp), %ecx2349; WIN-X86-NEXT:    movl 32(%ebp), %edx2350; WIN-X86-NEXT:    movl 36(%ebp), %edi2351; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2352; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2353; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2354; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2355; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2356; WIN-X86-NEXT:    movl %eax, (%esp)2357; WIN-X86-NEXT:    calll _roundl2358; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2359; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2360; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2361; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2362; WIN-X86-NEXT:    movl %edi, 8(%esi)2363; WIN-X86-NEXT:    movl %edx, 12(%esi)2364; WIN-X86-NEXT:    movl %eax, (%esi)2365; WIN-X86-NEXT:    movl %ecx, 4(%esi)2366; WIN-X86-NEXT:    movl %esi, %eax2367; WIN-X86-NEXT:    leal -8(%ebp), %esp2368; WIN-X86-NEXT:    popl %esi2369; WIN-X86-NEXT:    popl %edi2370; WIN-X86-NEXT:    popl %ebp2371; WIN-X86-NEXT:    retl2372entry:2373  %round = call fp128 @llvm.experimental.constrained.round.f128(fp128 %x, metadata !"fpexcept.strict") #02374  ret fp128 %round2375}2376 2377define fp128 @roundeven(fp128 %x) nounwind strictfp {2378; ANDROID-LABEL: roundeven:2379; ANDROID:       # %bb.0: # %entry2380; ANDROID-NEXT:    pushq %rax2381; ANDROID-NEXT:    callq roundevenl@PLT2382; ANDROID-NEXT:    popq %rax2383; ANDROID-NEXT:    retq2384;2385; GNU-LABEL: roundeven:2386; GNU:       # %bb.0: # %entry2387; GNU-NEXT:    pushq %rax2388; GNU-NEXT:    callq roundevenf128@PLT2389; GNU-NEXT:    popq %rax2390; GNU-NEXT:    retq2391;2392; X86-LABEL: roundeven:2393; X86:       # %bb.0: # %entry2394; X86-NEXT:    pushl %edi2395; X86-NEXT:    pushl %esi2396; X86-NEXT:    subl $52, %esp2397; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2398; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2399; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2400; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2401; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2402; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2403; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2404; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2405; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2406; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2407; X86-NEXT:    movl %eax, (%esp)2408; X86-NEXT:    calll roundevenf1282409; X86-NEXT:    subl $4, %esp2410; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm02411; X86-NEXT:    movaps %xmm0, (%esi)2412; X86-NEXT:    movl %esi, %eax2413; X86-NEXT:    addl $52, %esp2414; X86-NEXT:    popl %esi2415; X86-NEXT:    popl %edi2416; X86-NEXT:    retl $42417;2418; WIN-LABEL: roundeven:2419; WIN:       # %bb.0: # %entry2420; WIN-NEXT:    subq $56, %rsp2421; WIN-NEXT:    movaps (%rcx), %xmm02422; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2423; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2424; WIN-NEXT:    callq roundevenl2425; WIN-NEXT:    addq $56, %rsp2426; WIN-NEXT:    retq2427;2428; WIN-X86-LABEL: roundeven:2429; WIN-X86:       # %bb.0: # %entry2430; WIN-X86-NEXT:    pushl %ebp2431; WIN-X86-NEXT:    movl %esp, %ebp2432; WIN-X86-NEXT:    pushl %edi2433; WIN-X86-NEXT:    pushl %esi2434; WIN-X86-NEXT:    andl $-16, %esp2435; WIN-X86-NEXT:    subl $48, %esp2436; WIN-X86-NEXT:    movl 8(%ebp), %esi2437; WIN-X86-NEXT:    movl 24(%ebp), %eax2438; WIN-X86-NEXT:    movl 28(%ebp), %ecx2439; WIN-X86-NEXT:    movl 32(%ebp), %edx2440; WIN-X86-NEXT:    movl 36(%ebp), %edi2441; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2442; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2443; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2444; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2445; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2446; WIN-X86-NEXT:    movl %eax, (%esp)2447; WIN-X86-NEXT:    calll _roundevenl2448; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2449; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2450; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2451; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2452; WIN-X86-NEXT:    movl %edi, 8(%esi)2453; WIN-X86-NEXT:    movl %edx, 12(%esi)2454; WIN-X86-NEXT:    movl %eax, (%esi)2455; WIN-X86-NEXT:    movl %ecx, 4(%esi)2456; WIN-X86-NEXT:    movl %esi, %eax2457; WIN-X86-NEXT:    leal -8(%ebp), %esp2458; WIN-X86-NEXT:    popl %esi2459; WIN-X86-NEXT:    popl %edi2460; WIN-X86-NEXT:    popl %ebp2461; WIN-X86-NEXT:    retl2462entry:2463  %roundeven = call fp128 @llvm.experimental.constrained.roundeven.f128(fp128 %x, metadata !"fpexcept.strict") #02464  ret fp128 %roundeven2465}2466 2467define fp128 @asin(fp128 %x) nounwind strictfp {2468; ANDROID-LABEL: asin:2469; ANDROID:       # %bb.0: # %entry2470; ANDROID-NEXT:    pushq %rax2471; ANDROID-NEXT:    callq asinl@PLT2472; ANDROID-NEXT:    popq %rax2473; ANDROID-NEXT:    retq2474;2475; GNU-LABEL: asin:2476; GNU:       # %bb.0: # %entry2477; GNU-NEXT:    pushq %rax2478; GNU-NEXT:    callq asinf128@PLT2479; GNU-NEXT:    popq %rax2480; GNU-NEXT:    retq2481;2482; X86-LABEL: asin:2483; X86:       # %bb.0: # %entry2484; X86-NEXT:    pushl %edi2485; X86-NEXT:    pushl %esi2486; X86-NEXT:    subl $52, %esp2487; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2488; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2489; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2490; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2491; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2492; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2493; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2494; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2495; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2496; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2497; X86-NEXT:    movl %eax, (%esp)2498; X86-NEXT:    calll asinf1282499; X86-NEXT:    subl $4, %esp2500; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm02501; X86-NEXT:    movaps %xmm0, (%esi)2502; X86-NEXT:    movl %esi, %eax2503; X86-NEXT:    addl $52, %esp2504; X86-NEXT:    popl %esi2505; X86-NEXT:    popl %edi2506; X86-NEXT:    retl $42507;2508; WIN-LABEL: asin:2509; WIN:       # %bb.0: # %entry2510; WIN-NEXT:    subq $56, %rsp2511; WIN-NEXT:    movaps (%rcx), %xmm02512; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2513; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2514; WIN-NEXT:    callq asinl2515; WIN-NEXT:    addq $56, %rsp2516; WIN-NEXT:    retq2517;2518; WIN-X86-LABEL: asin:2519; WIN-X86:       # %bb.0: # %entry2520; WIN-X86-NEXT:    pushl %ebp2521; WIN-X86-NEXT:    movl %esp, %ebp2522; WIN-X86-NEXT:    pushl %edi2523; WIN-X86-NEXT:    pushl %esi2524; WIN-X86-NEXT:    andl $-16, %esp2525; WIN-X86-NEXT:    subl $48, %esp2526; WIN-X86-NEXT:    movl 8(%ebp), %esi2527; WIN-X86-NEXT:    movl 24(%ebp), %eax2528; WIN-X86-NEXT:    movl 28(%ebp), %ecx2529; WIN-X86-NEXT:    movl 32(%ebp), %edx2530; WIN-X86-NEXT:    movl 36(%ebp), %edi2531; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2532; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2533; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2534; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2535; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2536; WIN-X86-NEXT:    movl %eax, (%esp)2537; WIN-X86-NEXT:    calll _asinl2538; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2539; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2540; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2541; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2542; WIN-X86-NEXT:    movl %edi, 8(%esi)2543; WIN-X86-NEXT:    movl %edx, 12(%esi)2544; WIN-X86-NEXT:    movl %eax, (%esi)2545; WIN-X86-NEXT:    movl %ecx, 4(%esi)2546; WIN-X86-NEXT:    movl %esi, %eax2547; WIN-X86-NEXT:    leal -8(%ebp), %esp2548; WIN-X86-NEXT:    popl %esi2549; WIN-X86-NEXT:    popl %edi2550; WIN-X86-NEXT:    popl %ebp2551; WIN-X86-NEXT:    retl2552entry:2553  %asin = call fp128 @llvm.experimental.constrained.asin.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #02554  ret fp128 %asin2555}2556 2557define fp128 @sin(fp128 %x) nounwind strictfp {2558; ANDROID-LABEL: sin:2559; ANDROID:       # %bb.0: # %entry2560; ANDROID-NEXT:    pushq %rax2561; ANDROID-NEXT:    callq sinl@PLT2562; ANDROID-NEXT:    popq %rax2563; ANDROID-NEXT:    retq2564;2565; GNU-LABEL: sin:2566; GNU:       # %bb.0: # %entry2567; GNU-NEXT:    pushq %rax2568; GNU-NEXT:    callq sinf128@PLT2569; GNU-NEXT:    popq %rax2570; GNU-NEXT:    retq2571;2572; X86-LABEL: sin:2573; X86:       # %bb.0: # %entry2574; X86-NEXT:    pushl %edi2575; X86-NEXT:    pushl %esi2576; X86-NEXT:    subl $52, %esp2577; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2578; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2579; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2580; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2581; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2582; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2583; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2584; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2585; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2586; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2587; X86-NEXT:    movl %eax, (%esp)2588; X86-NEXT:    calll sinf1282589; X86-NEXT:    subl $4, %esp2590; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm02591; X86-NEXT:    movaps %xmm0, (%esi)2592; X86-NEXT:    movl %esi, %eax2593; X86-NEXT:    addl $52, %esp2594; X86-NEXT:    popl %esi2595; X86-NEXT:    popl %edi2596; X86-NEXT:    retl $42597;2598; WIN-LABEL: sin:2599; WIN:       # %bb.0: # %entry2600; WIN-NEXT:    subq $56, %rsp2601; WIN-NEXT:    movaps (%rcx), %xmm02602; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2603; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2604; WIN-NEXT:    callq sinl2605; WIN-NEXT:    addq $56, %rsp2606; WIN-NEXT:    retq2607;2608; WIN-X86-LABEL: sin:2609; WIN-X86:       # %bb.0: # %entry2610; WIN-X86-NEXT:    pushl %ebp2611; WIN-X86-NEXT:    movl %esp, %ebp2612; WIN-X86-NEXT:    pushl %edi2613; WIN-X86-NEXT:    pushl %esi2614; WIN-X86-NEXT:    andl $-16, %esp2615; WIN-X86-NEXT:    subl $48, %esp2616; WIN-X86-NEXT:    movl 8(%ebp), %esi2617; WIN-X86-NEXT:    movl 24(%ebp), %eax2618; WIN-X86-NEXT:    movl 28(%ebp), %ecx2619; WIN-X86-NEXT:    movl 32(%ebp), %edx2620; WIN-X86-NEXT:    movl 36(%ebp), %edi2621; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2622; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2623; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2624; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2625; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2626; WIN-X86-NEXT:    movl %eax, (%esp)2627; WIN-X86-NEXT:    calll _sinl2628; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2629; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2630; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2631; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2632; WIN-X86-NEXT:    movl %edi, 8(%esi)2633; WIN-X86-NEXT:    movl %edx, 12(%esi)2634; WIN-X86-NEXT:    movl %eax, (%esi)2635; WIN-X86-NEXT:    movl %ecx, 4(%esi)2636; WIN-X86-NEXT:    movl %esi, %eax2637; WIN-X86-NEXT:    leal -8(%ebp), %esp2638; WIN-X86-NEXT:    popl %esi2639; WIN-X86-NEXT:    popl %edi2640; WIN-X86-NEXT:    popl %ebp2641; WIN-X86-NEXT:    retl2642entry:2643  %sin = call fp128 @llvm.experimental.constrained.sin.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #02644  ret fp128 %sin2645}2646 2647define fp128 @sinh(fp128 %x) nounwind strictfp {2648; ANDROID-LABEL: sinh:2649; ANDROID:       # %bb.0: # %entry2650; ANDROID-NEXT:    pushq %rax2651; ANDROID-NEXT:    callq sinhl@PLT2652; ANDROID-NEXT:    popq %rax2653; ANDROID-NEXT:    retq2654;2655; GNU-LABEL: sinh:2656; GNU:       # %bb.0: # %entry2657; GNU-NEXT:    pushq %rax2658; GNU-NEXT:    callq sinhf128@PLT2659; GNU-NEXT:    popq %rax2660; GNU-NEXT:    retq2661;2662; X86-LABEL: sinh:2663; X86:       # %bb.0: # %entry2664; X86-NEXT:    pushl %edi2665; X86-NEXT:    pushl %esi2666; X86-NEXT:    subl $52, %esp2667; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2668; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2669; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2670; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2671; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2672; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2673; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2674; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2675; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2676; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2677; X86-NEXT:    movl %eax, (%esp)2678; X86-NEXT:    calll sinhf1282679; X86-NEXT:    subl $4, %esp2680; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm02681; X86-NEXT:    movaps %xmm0, (%esi)2682; X86-NEXT:    movl %esi, %eax2683; X86-NEXT:    addl $52, %esp2684; X86-NEXT:    popl %esi2685; X86-NEXT:    popl %edi2686; X86-NEXT:    retl $42687;2688; WIN-LABEL: sinh:2689; WIN:       # %bb.0: # %entry2690; WIN-NEXT:    subq $56, %rsp2691; WIN-NEXT:    movaps (%rcx), %xmm02692; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2693; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2694; WIN-NEXT:    callq sinhl2695; WIN-NEXT:    addq $56, %rsp2696; WIN-NEXT:    retq2697;2698; WIN-X86-LABEL: sinh:2699; WIN-X86:       # %bb.0: # %entry2700; WIN-X86-NEXT:    pushl %ebp2701; WIN-X86-NEXT:    movl %esp, %ebp2702; WIN-X86-NEXT:    pushl %edi2703; WIN-X86-NEXT:    pushl %esi2704; WIN-X86-NEXT:    andl $-16, %esp2705; WIN-X86-NEXT:    subl $48, %esp2706; WIN-X86-NEXT:    movl 8(%ebp), %esi2707; WIN-X86-NEXT:    movl 24(%ebp), %eax2708; WIN-X86-NEXT:    movl 28(%ebp), %ecx2709; WIN-X86-NEXT:    movl 32(%ebp), %edx2710; WIN-X86-NEXT:    movl 36(%ebp), %edi2711; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2712; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2713; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2714; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2715; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2716; WIN-X86-NEXT:    movl %eax, (%esp)2717; WIN-X86-NEXT:    calll _sinhl2718; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2719; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2720; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2721; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2722; WIN-X86-NEXT:    movl %edi, 8(%esi)2723; WIN-X86-NEXT:    movl %edx, 12(%esi)2724; WIN-X86-NEXT:    movl %eax, (%esi)2725; WIN-X86-NEXT:    movl %ecx, 4(%esi)2726; WIN-X86-NEXT:    movl %esi, %eax2727; WIN-X86-NEXT:    leal -8(%ebp), %esp2728; WIN-X86-NEXT:    popl %esi2729; WIN-X86-NEXT:    popl %edi2730; WIN-X86-NEXT:    popl %ebp2731; WIN-X86-NEXT:    retl2732entry:2733  %sinh = call fp128 @llvm.experimental.constrained.sinh.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #02734  ret fp128 %sinh2735}2736 2737define fp128 @sqrt(fp128 %x) nounwind strictfp {2738; ANDROID-LABEL: sqrt:2739; ANDROID:       # %bb.0: # %entry2740; ANDROID-NEXT:    pushq %rax2741; ANDROID-NEXT:    callq sqrtl@PLT2742; ANDROID-NEXT:    popq %rax2743; ANDROID-NEXT:    retq2744;2745; GNU-LABEL: sqrt:2746; GNU:       # %bb.0: # %entry2747; GNU-NEXT:    pushq %rax2748; GNU-NEXT:    callq sqrtf128@PLT2749; GNU-NEXT:    popq %rax2750; GNU-NEXT:    retq2751;2752; X86-LABEL: sqrt:2753; X86:       # %bb.0: # %entry2754; X86-NEXT:    pushl %edi2755; X86-NEXT:    pushl %esi2756; X86-NEXT:    subl $52, %esp2757; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2758; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2759; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2760; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2761; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2762; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2763; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2764; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2765; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2766; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2767; X86-NEXT:    movl %eax, (%esp)2768; X86-NEXT:    calll sqrtf1282769; X86-NEXT:    subl $4, %esp2770; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm02771; X86-NEXT:    movaps %xmm0, (%esi)2772; X86-NEXT:    movl %esi, %eax2773; X86-NEXT:    addl $52, %esp2774; X86-NEXT:    popl %esi2775; X86-NEXT:    popl %edi2776; X86-NEXT:    retl $42777;2778; WIN-LABEL: sqrt:2779; WIN:       # %bb.0: # %entry2780; WIN-NEXT:    subq $56, %rsp2781; WIN-NEXT:    movaps (%rcx), %xmm02782; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2783; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2784; WIN-NEXT:    callq sqrtl2785; WIN-NEXT:    addq $56, %rsp2786; WIN-NEXT:    retq2787;2788; WIN-X86-LABEL: sqrt:2789; WIN-X86:       # %bb.0: # %entry2790; WIN-X86-NEXT:    pushl %ebp2791; WIN-X86-NEXT:    movl %esp, %ebp2792; WIN-X86-NEXT:    pushl %edi2793; WIN-X86-NEXT:    pushl %esi2794; WIN-X86-NEXT:    andl $-16, %esp2795; WIN-X86-NEXT:    subl $48, %esp2796; WIN-X86-NEXT:    movl 8(%ebp), %esi2797; WIN-X86-NEXT:    movl 24(%ebp), %eax2798; WIN-X86-NEXT:    movl 28(%ebp), %ecx2799; WIN-X86-NEXT:    movl 32(%ebp), %edx2800; WIN-X86-NEXT:    movl 36(%ebp), %edi2801; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2802; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2803; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2804; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2805; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2806; WIN-X86-NEXT:    movl %eax, (%esp)2807; WIN-X86-NEXT:    calll _sqrtl2808; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2809; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2810; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2811; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2812; WIN-X86-NEXT:    movl %edi, 8(%esi)2813; WIN-X86-NEXT:    movl %edx, 12(%esi)2814; WIN-X86-NEXT:    movl %eax, (%esi)2815; WIN-X86-NEXT:    movl %ecx, 4(%esi)2816; WIN-X86-NEXT:    movl %esi, %eax2817; WIN-X86-NEXT:    leal -8(%ebp), %esp2818; WIN-X86-NEXT:    popl %esi2819; WIN-X86-NEXT:    popl %edi2820; WIN-X86-NEXT:    popl %ebp2821; WIN-X86-NEXT:    retl2822entry:2823  %sqrt = call fp128 @llvm.experimental.constrained.sqrt.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #02824  ret fp128 %sqrt2825}2826 2827define fp128 @atan(fp128 %x) nounwind strictfp {2828; ANDROID-LABEL: atan:2829; ANDROID:       # %bb.0: # %entry2830; ANDROID-NEXT:    pushq %rax2831; ANDROID-NEXT:    callq atanl@PLT2832; ANDROID-NEXT:    popq %rax2833; ANDROID-NEXT:    retq2834;2835; GNU-LABEL: atan:2836; GNU:       # %bb.0: # %entry2837; GNU-NEXT:    pushq %rax2838; GNU-NEXT:    callq atanf128@PLT2839; GNU-NEXT:    popq %rax2840; GNU-NEXT:    retq2841;2842; X86-LABEL: atan:2843; X86:       # %bb.0: # %entry2844; X86-NEXT:    pushl %edi2845; X86-NEXT:    pushl %esi2846; X86-NEXT:    subl $52, %esp2847; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2848; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2849; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2850; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2851; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2852; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2853; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2854; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2855; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2856; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2857; X86-NEXT:    movl %eax, (%esp)2858; X86-NEXT:    calll atanf1282859; X86-NEXT:    subl $4, %esp2860; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm02861; X86-NEXT:    movaps %xmm0, (%esi)2862; X86-NEXT:    movl %esi, %eax2863; X86-NEXT:    addl $52, %esp2864; X86-NEXT:    popl %esi2865; X86-NEXT:    popl %edi2866; X86-NEXT:    retl $42867;2868; WIN-LABEL: atan:2869; WIN:       # %bb.0: # %entry2870; WIN-NEXT:    subq $56, %rsp2871; WIN-NEXT:    movaps (%rcx), %xmm02872; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2873; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2874; WIN-NEXT:    callq atanl2875; WIN-NEXT:    addq $56, %rsp2876; WIN-NEXT:    retq2877;2878; WIN-X86-LABEL: atan:2879; WIN-X86:       # %bb.0: # %entry2880; WIN-X86-NEXT:    pushl %ebp2881; WIN-X86-NEXT:    movl %esp, %ebp2882; WIN-X86-NEXT:    pushl %edi2883; WIN-X86-NEXT:    pushl %esi2884; WIN-X86-NEXT:    andl $-16, %esp2885; WIN-X86-NEXT:    subl $48, %esp2886; WIN-X86-NEXT:    movl 8(%ebp), %esi2887; WIN-X86-NEXT:    movl 24(%ebp), %eax2888; WIN-X86-NEXT:    movl 28(%ebp), %ecx2889; WIN-X86-NEXT:    movl 32(%ebp), %edx2890; WIN-X86-NEXT:    movl 36(%ebp), %edi2891; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2892; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2893; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2894; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2895; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2896; WIN-X86-NEXT:    movl %eax, (%esp)2897; WIN-X86-NEXT:    calll _atanl2898; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2899; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2900; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2901; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2902; WIN-X86-NEXT:    movl %edi, 8(%esi)2903; WIN-X86-NEXT:    movl %edx, 12(%esi)2904; WIN-X86-NEXT:    movl %eax, (%esi)2905; WIN-X86-NEXT:    movl %ecx, 4(%esi)2906; WIN-X86-NEXT:    movl %esi, %eax2907; WIN-X86-NEXT:    leal -8(%ebp), %esp2908; WIN-X86-NEXT:    popl %esi2909; WIN-X86-NEXT:    popl %edi2910; WIN-X86-NEXT:    popl %ebp2911; WIN-X86-NEXT:    retl2912entry:2913  %atan = call fp128 @llvm.experimental.constrained.atan.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #02914  ret fp128 %atan2915}2916 2917define fp128 @atan2(fp128 %x, fp128 %y) nounwind strictfp {2918; ANDROID-LABEL: atan2:2919; ANDROID:       # %bb.0: # %entry2920; ANDROID-NEXT:    pushq %rax2921; ANDROID-NEXT:    callq atan2l@PLT2922; ANDROID-NEXT:    popq %rax2923; ANDROID-NEXT:    retq2924;2925; GNU-LABEL: atan2:2926; GNU:       # %bb.0: # %entry2927; GNU-NEXT:    pushq %rax2928; GNU-NEXT:    callq atan2f128@PLT2929; GNU-NEXT:    popq %rax2930; GNU-NEXT:    retq2931;2932; X86-LABEL: atan2:2933; X86:       # %bb.0: # %entry2934; X86-NEXT:    pushl %ebp2935; X86-NEXT:    pushl %ebx2936; X86-NEXT:    pushl %edi2937; X86-NEXT:    pushl %esi2938; X86-NEXT:    subl $76, %esp2939; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi2940; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx2941; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi2942; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx2943; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp2944; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx2945; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2946; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2947; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)2948; X86-NEXT:    movl %ebp, {{[0-9]+}}(%esp)2949; X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)2950; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)2951; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)2952; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2953; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2954; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax2955; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2956; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax2957; X86-NEXT:    movl %eax, (%esp)2958; X86-NEXT:    calll atan2f1282959; X86-NEXT:    subl $4, %esp2960; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm02961; X86-NEXT:    movaps %xmm0, (%esi)2962; X86-NEXT:    movl %esi, %eax2963; X86-NEXT:    addl $76, %esp2964; X86-NEXT:    popl %esi2965; X86-NEXT:    popl %edi2966; X86-NEXT:    popl %ebx2967; X86-NEXT:    popl %ebp2968; X86-NEXT:    retl $42969;2970; WIN-LABEL: atan2:2971; WIN:       # %bb.0: # %entry2972; WIN-NEXT:    subq $72, %rsp2973; WIN-NEXT:    movaps (%rcx), %xmm02974; WIN-NEXT:    movaps (%rdx), %xmm12975; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)2976; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)2977; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx2978; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx2979; WIN-NEXT:    callq atan2l2980; WIN-NEXT:    addq $72, %rsp2981; WIN-NEXT:    retq2982;2983; WIN-X86-LABEL: atan2:2984; WIN-X86:       # %bb.0: # %entry2985; WIN-X86-NEXT:    pushl %ebp2986; WIN-X86-NEXT:    movl %esp, %ebp2987; WIN-X86-NEXT:    pushl %ebx2988; WIN-X86-NEXT:    pushl %edi2989; WIN-X86-NEXT:    pushl %esi2990; WIN-X86-NEXT:    andl $-16, %esp2991; WIN-X86-NEXT:    subl $80, %esp2992; WIN-X86-NEXT:    movl 8(%ebp), %esi2993; WIN-X86-NEXT:    movl 36(%ebp), %edi2994; WIN-X86-NEXT:    movl 40(%ebp), %ebx2995; WIN-X86-NEXT:    movl 44(%ebp), %edx2996; WIN-X86-NEXT:    movl 48(%ebp), %ecx2997; WIN-X86-NEXT:    movl 52(%ebp), %eax2998; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)2999; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)3000; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)3001; WIN-X86-NEXT:    movl %ebx, {{[0-9]+}}(%esp)3002; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)3003; WIN-X86-NEXT:    movl 32(%ebp), %eax3004; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)3005; WIN-X86-NEXT:    movl 28(%ebp), %eax3006; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)3007; WIN-X86-NEXT:    movl 24(%ebp), %eax3008; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)3009; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax3010; WIN-X86-NEXT:    movl %eax, (%esp)3011; WIN-X86-NEXT:    calll _atan2l3012; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax3013; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx3014; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx3015; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi3016; WIN-X86-NEXT:    movl %edi, 8(%esi)3017; WIN-X86-NEXT:    movl %edx, 12(%esi)3018; WIN-X86-NEXT:    movl %eax, (%esi)3019; WIN-X86-NEXT:    movl %ecx, 4(%esi)3020; WIN-X86-NEXT:    movl %esi, %eax3021; WIN-X86-NEXT:    leal -12(%ebp), %esp3022; WIN-X86-NEXT:    popl %esi3023; WIN-X86-NEXT:    popl %edi3024; WIN-X86-NEXT:    popl %ebx3025; WIN-X86-NEXT:    popl %ebp3026; WIN-X86-NEXT:    retl3027entry:3028  %atan2 = call fp128 @llvm.experimental.constrained.atan2.f128(fp128 %x, fp128 %y, metadata !"round.dynamic", metadata !"fpexcept.strict") #03029  ret fp128 %atan23030}3031 3032define fp128 @tan(fp128 %x) nounwind strictfp {3033; ANDROID-LABEL: tan:3034; ANDROID:       # %bb.0: # %entry3035; ANDROID-NEXT:    pushq %rax3036; ANDROID-NEXT:    callq tanl@PLT3037; ANDROID-NEXT:    popq %rax3038; ANDROID-NEXT:    retq3039;3040; GNU-LABEL: tan:3041; GNU:       # %bb.0: # %entry3042; GNU-NEXT:    pushq %rax3043; GNU-NEXT:    callq tanf128@PLT3044; GNU-NEXT:    popq %rax3045; GNU-NEXT:    retq3046;3047; X86-LABEL: tan:3048; X86:       # %bb.0: # %entry3049; X86-NEXT:    pushl %edi3050; X86-NEXT:    pushl %esi3051; X86-NEXT:    subl $52, %esp3052; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi3053; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax3054; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx3055; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx3056; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi3057; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)3058; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)3059; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)3060; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)3061; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax3062; X86-NEXT:    movl %eax, (%esp)3063; X86-NEXT:    calll tanf1283064; X86-NEXT:    subl $4, %esp3065; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm03066; X86-NEXT:    movaps %xmm0, (%esi)3067; X86-NEXT:    movl %esi, %eax3068; X86-NEXT:    addl $52, %esp3069; X86-NEXT:    popl %esi3070; X86-NEXT:    popl %edi3071; X86-NEXT:    retl $43072;3073; WIN-LABEL: tan:3074; WIN:       # %bb.0: # %entry3075; WIN-NEXT:    subq $56, %rsp3076; WIN-NEXT:    movaps (%rcx), %xmm03077; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)3078; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx3079; WIN-NEXT:    callq tanl3080; WIN-NEXT:    addq $56, %rsp3081; WIN-NEXT:    retq3082;3083; WIN-X86-LABEL: tan:3084; WIN-X86:       # %bb.0: # %entry3085; WIN-X86-NEXT:    pushl %ebp3086; WIN-X86-NEXT:    movl %esp, %ebp3087; WIN-X86-NEXT:    pushl %edi3088; WIN-X86-NEXT:    pushl %esi3089; WIN-X86-NEXT:    andl $-16, %esp3090; WIN-X86-NEXT:    subl $48, %esp3091; WIN-X86-NEXT:    movl 8(%ebp), %esi3092; WIN-X86-NEXT:    movl 24(%ebp), %eax3093; WIN-X86-NEXT:    movl 28(%ebp), %ecx3094; WIN-X86-NEXT:    movl 32(%ebp), %edx3095; WIN-X86-NEXT:    movl 36(%ebp), %edi3096; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)3097; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)3098; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)3099; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)3100; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax3101; WIN-X86-NEXT:    movl %eax, (%esp)3102; WIN-X86-NEXT:    calll _tanl3103; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax3104; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx3105; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx3106; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi3107; WIN-X86-NEXT:    movl %edi, 8(%esi)3108; WIN-X86-NEXT:    movl %edx, 12(%esi)3109; WIN-X86-NEXT:    movl %eax, (%esi)3110; WIN-X86-NEXT:    movl %ecx, 4(%esi)3111; WIN-X86-NEXT:    movl %esi, %eax3112; WIN-X86-NEXT:    leal -8(%ebp), %esp3113; WIN-X86-NEXT:    popl %esi3114; WIN-X86-NEXT:    popl %edi3115; WIN-X86-NEXT:    popl %ebp3116; WIN-X86-NEXT:    retl3117entry:3118  %tan = call fp128 @llvm.experimental.constrained.tan.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #03119  ret fp128 %tan3120}3121 3122define fp128 @tanh(fp128 %x) nounwind strictfp {3123; ANDROID-LABEL: tanh:3124; ANDROID:       # %bb.0: # %entry3125; ANDROID-NEXT:    pushq %rax3126; ANDROID-NEXT:    callq tanhl@PLT3127; ANDROID-NEXT:    popq %rax3128; ANDROID-NEXT:    retq3129;3130; GNU-LABEL: tanh:3131; GNU:       # %bb.0: # %entry3132; GNU-NEXT:    pushq %rax3133; GNU-NEXT:    callq tanhf128@PLT3134; GNU-NEXT:    popq %rax3135; GNU-NEXT:    retq3136;3137; X86-LABEL: tanh:3138; X86:       # %bb.0: # %entry3139; X86-NEXT:    pushl %edi3140; X86-NEXT:    pushl %esi3141; X86-NEXT:    subl $52, %esp3142; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi3143; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax3144; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx3145; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx3146; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi3147; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)3148; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)3149; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)3150; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)3151; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax3152; X86-NEXT:    movl %eax, (%esp)3153; X86-NEXT:    calll tanhf1283154; X86-NEXT:    subl $4, %esp3155; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm03156; X86-NEXT:    movaps %xmm0, (%esi)3157; X86-NEXT:    movl %esi, %eax3158; X86-NEXT:    addl $52, %esp3159; X86-NEXT:    popl %esi3160; X86-NEXT:    popl %edi3161; X86-NEXT:    retl $43162;3163; WIN-LABEL: tanh:3164; WIN:       # %bb.0: # %entry3165; WIN-NEXT:    subq $56, %rsp3166; WIN-NEXT:    movaps (%rcx), %xmm03167; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)3168; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx3169; WIN-NEXT:    callq tanhl3170; WIN-NEXT:    addq $56, %rsp3171; WIN-NEXT:    retq3172;3173; WIN-X86-LABEL: tanh:3174; WIN-X86:       # %bb.0: # %entry3175; WIN-X86-NEXT:    pushl %ebp3176; WIN-X86-NEXT:    movl %esp, %ebp3177; WIN-X86-NEXT:    pushl %edi3178; WIN-X86-NEXT:    pushl %esi3179; WIN-X86-NEXT:    andl $-16, %esp3180; WIN-X86-NEXT:    subl $48, %esp3181; WIN-X86-NEXT:    movl 8(%ebp), %esi3182; WIN-X86-NEXT:    movl 24(%ebp), %eax3183; WIN-X86-NEXT:    movl 28(%ebp), %ecx3184; WIN-X86-NEXT:    movl 32(%ebp), %edx3185; WIN-X86-NEXT:    movl 36(%ebp), %edi3186; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)3187; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)3188; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)3189; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)3190; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax3191; WIN-X86-NEXT:    movl %eax, (%esp)3192; WIN-X86-NEXT:    calll _tanhl3193; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax3194; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx3195; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx3196; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi3197; WIN-X86-NEXT:    movl %edi, 8(%esi)3198; WIN-X86-NEXT:    movl %edx, 12(%esi)3199; WIN-X86-NEXT:    movl %eax, (%esi)3200; WIN-X86-NEXT:    movl %ecx, 4(%esi)3201; WIN-X86-NEXT:    movl %esi, %eax3202; WIN-X86-NEXT:    leal -8(%ebp), %esp3203; WIN-X86-NEXT:    popl %esi3204; WIN-X86-NEXT:    popl %edi3205; WIN-X86-NEXT:    popl %ebp3206; WIN-X86-NEXT:    retl3207entry:3208  %tanh = call fp128 @llvm.experimental.constrained.tanh.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #03209  ret fp128 %tanh3210}3211 3212define fp128 @trunc(fp128 %x) nounwind strictfp {3213; ANDROID-LABEL: trunc:3214; ANDROID:       # %bb.0: # %entry3215; ANDROID-NEXT:    pushq %rax3216; ANDROID-NEXT:    callq truncl@PLT3217; ANDROID-NEXT:    popq %rax3218; ANDROID-NEXT:    retq3219;3220; GNU-LABEL: trunc:3221; GNU:       # %bb.0: # %entry3222; GNU-NEXT:    pushq %rax3223; GNU-NEXT:    callq truncf128@PLT3224; GNU-NEXT:    popq %rax3225; GNU-NEXT:    retq3226;3227; X86-LABEL: trunc:3228; X86:       # %bb.0: # %entry3229; X86-NEXT:    pushl %edi3230; X86-NEXT:    pushl %esi3231; X86-NEXT:    subl $52, %esp3232; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi3233; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax3234; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx3235; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx3236; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi3237; X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)3238; X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)3239; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)3240; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)3241; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax3242; X86-NEXT:    movl %eax, (%esp)3243; X86-NEXT:    calll truncf1283244; X86-NEXT:    subl $4, %esp3245; X86-NEXT:    movaps {{[0-9]+}}(%esp), %xmm03246; X86-NEXT:    movaps %xmm0, (%esi)3247; X86-NEXT:    movl %esi, %eax3248; X86-NEXT:    addl $52, %esp3249; X86-NEXT:    popl %esi3250; X86-NEXT:    popl %edi3251; X86-NEXT:    retl $43252;3253; WIN-LABEL: trunc:3254; WIN:       # %bb.0: # %entry3255; WIN-NEXT:    subq $56, %rsp3256; WIN-NEXT:    movaps (%rcx), %xmm03257; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)3258; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx3259; WIN-NEXT:    callq truncl3260; WIN-NEXT:    addq $56, %rsp3261; WIN-NEXT:    retq3262;3263; WIN-X86-LABEL: trunc:3264; WIN-X86:       # %bb.0: # %entry3265; WIN-X86-NEXT:    pushl %ebp3266; WIN-X86-NEXT:    movl %esp, %ebp3267; WIN-X86-NEXT:    pushl %edi3268; WIN-X86-NEXT:    pushl %esi3269; WIN-X86-NEXT:    andl $-16, %esp3270; WIN-X86-NEXT:    subl $48, %esp3271; WIN-X86-NEXT:    movl 8(%ebp), %esi3272; WIN-X86-NEXT:    movl 24(%ebp), %eax3273; WIN-X86-NEXT:    movl 28(%ebp), %ecx3274; WIN-X86-NEXT:    movl 32(%ebp), %edx3275; WIN-X86-NEXT:    movl 36(%ebp), %edi3276; WIN-X86-NEXT:    movl %edi, {{[0-9]+}}(%esp)3277; WIN-X86-NEXT:    movl %edx, {{[0-9]+}}(%esp)3278; WIN-X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)3279; WIN-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)3280; WIN-X86-NEXT:    leal {{[0-9]+}}(%esp), %eax3281; WIN-X86-NEXT:    movl %eax, (%esp)3282; WIN-X86-NEXT:    calll _truncl3283; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax3284; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx3285; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx3286; WIN-X86-NEXT:    movl {{[0-9]+}}(%esp), %edi3287; WIN-X86-NEXT:    movl %edi, 8(%esi)3288; WIN-X86-NEXT:    movl %edx, 12(%esi)3289; WIN-X86-NEXT:    movl %eax, (%esi)3290; WIN-X86-NEXT:    movl %ecx, 4(%esi)3291; WIN-X86-NEXT:    movl %esi, %eax3292; WIN-X86-NEXT:    leal -8(%ebp), %esp3293; WIN-X86-NEXT:    popl %esi3294; WIN-X86-NEXT:    popl %edi3295; WIN-X86-NEXT:    popl %ebp3296; WIN-X86-NEXT:    retl3297entry:3298  %trunc = call fp128 @llvm.experimental.constrained.trunc.f128(fp128 %x, metadata !"fpexcept.strict") #03299  ret fp128 %trunc3300}3301 3302define i32 @lrint(fp128 %x) nounwind strictfp {3303; ANDROID-LABEL: lrint:3304; ANDROID:       # %bb.0: # %entry3305; ANDROID-NEXT:    pushq %rax3306; ANDROID-NEXT:    callq lrintl@PLT3307; ANDROID-NEXT:    popq %rcx3308; ANDROID-NEXT:    retq3309;3310; GNU-LABEL: lrint:3311; GNU:       # %bb.0: # %entry3312; GNU-NEXT:    pushq %rax3313; GNU-NEXT:    callq lrintf128@PLT3314; GNU-NEXT:    popq %rcx3315; GNU-NEXT:    retq3316;3317; X86-LABEL: lrint:3318; X86:       # %bb.0: # %entry3319; X86-NEXT:    subl $12, %esp3320; X86-NEXT:    pushl {{[0-9]+}}(%esp)3321; X86-NEXT:    pushl {{[0-9]+}}(%esp)3322; X86-NEXT:    pushl {{[0-9]+}}(%esp)3323; X86-NEXT:    pushl {{[0-9]+}}(%esp)3324; X86-NEXT:    calll lrintf1283325; X86-NEXT:    addl $28, %esp3326; X86-NEXT:    retl3327;3328; WIN-LABEL: lrint:3329; WIN:       # %bb.0: # %entry3330; WIN-NEXT:    subq $56, %rsp3331; WIN-NEXT:    movaps (%rcx), %xmm03332; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)3333; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx3334; WIN-NEXT:    callq lrintl3335; WIN-NEXT:    addq $56, %rsp3336; WIN-NEXT:    retq3337;3338; WIN-X86-LABEL: lrint:3339; WIN-X86:       # %bb.0: # %entry3340; WIN-X86-NEXT:    pushl %ebp3341; WIN-X86-NEXT:    movl %esp, %ebp3342; WIN-X86-NEXT:    andl $-16, %esp3343; WIN-X86-NEXT:    subl $16, %esp3344; WIN-X86-NEXT:    pushl 20(%ebp)3345; WIN-X86-NEXT:    pushl 16(%ebp)3346; WIN-X86-NEXT:    pushl 12(%ebp)3347; WIN-X86-NEXT:    pushl 8(%ebp)3348; WIN-X86-NEXT:    calll _lrintl3349; WIN-X86-NEXT:    addl $16, %esp3350; WIN-X86-NEXT:    movl %ebp, %esp3351; WIN-X86-NEXT:    popl %ebp3352; WIN-X86-NEXT:    retl3353entry:3354  %rint = call i32 @llvm.experimental.constrained.lrint.i32.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #03355  ret i32 %rint3356}3357 3358define i64 @llrint(fp128 %x) nounwind strictfp {3359; ANDROID-LABEL: llrint:3360; ANDROID:       # %bb.0: # %entry3361; ANDROID-NEXT:    pushq %rax3362; ANDROID-NEXT:    callq llrintl@PLT3363; ANDROID-NEXT:    popq %rcx3364; ANDROID-NEXT:    retq3365;3366; GNU-LABEL: llrint:3367; GNU:       # %bb.0: # %entry3368; GNU-NEXT:    pushq %rax3369; GNU-NEXT:    callq llrintf128@PLT3370; GNU-NEXT:    popq %rcx3371; GNU-NEXT:    retq3372;3373; X86-LABEL: llrint:3374; X86:       # %bb.0: # %entry3375; X86-NEXT:    subl $12, %esp3376; X86-NEXT:    pushl {{[0-9]+}}(%esp)3377; X86-NEXT:    pushl {{[0-9]+}}(%esp)3378; X86-NEXT:    pushl {{[0-9]+}}(%esp)3379; X86-NEXT:    pushl {{[0-9]+}}(%esp)3380; X86-NEXT:    calll llrintf1283381; X86-NEXT:    addl $28, %esp3382; X86-NEXT:    retl3383;3384; WIN-LABEL: llrint:3385; WIN:       # %bb.0: # %entry3386; WIN-NEXT:    subq $56, %rsp3387; WIN-NEXT:    movaps (%rcx), %xmm03388; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)3389; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx3390; WIN-NEXT:    callq llrintl3391; WIN-NEXT:    addq $56, %rsp3392; WIN-NEXT:    retq3393;3394; WIN-X86-LABEL: llrint:3395; WIN-X86:       # %bb.0: # %entry3396; WIN-X86-NEXT:    pushl %ebp3397; WIN-X86-NEXT:    movl %esp, %ebp3398; WIN-X86-NEXT:    andl $-16, %esp3399; WIN-X86-NEXT:    subl $16, %esp3400; WIN-X86-NEXT:    pushl 20(%ebp)3401; WIN-X86-NEXT:    pushl 16(%ebp)3402; WIN-X86-NEXT:    pushl 12(%ebp)3403; WIN-X86-NEXT:    pushl 8(%ebp)3404; WIN-X86-NEXT:    calll _llrintl3405; WIN-X86-NEXT:    addl $16, %esp3406; WIN-X86-NEXT:    movl %ebp, %esp3407; WIN-X86-NEXT:    popl %ebp3408; WIN-X86-NEXT:    retl3409entry:3410  %rint = call i64 @llvm.experimental.constrained.llrint.i64.f128(fp128 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #03411  ret i64 %rint3412}3413 3414define i32 @lround(fp128 %x) nounwind strictfp {3415; ANDROID-LABEL: lround:3416; ANDROID:       # %bb.0: # %entry3417; ANDROID-NEXT:    pushq %rax3418; ANDROID-NEXT:    callq lroundl@PLT3419; ANDROID-NEXT:    popq %rcx3420; ANDROID-NEXT:    retq3421;3422; GNU-LABEL: lround:3423; GNU:       # %bb.0: # %entry3424; GNU-NEXT:    pushq %rax3425; GNU-NEXT:    callq lroundf128@PLT3426; GNU-NEXT:    popq %rcx3427; GNU-NEXT:    retq3428;3429; X86-LABEL: lround:3430; X86:       # %bb.0: # %entry3431; X86-NEXT:    subl $12, %esp3432; X86-NEXT:    pushl {{[0-9]+}}(%esp)3433; X86-NEXT:    pushl {{[0-9]+}}(%esp)3434; X86-NEXT:    pushl {{[0-9]+}}(%esp)3435; X86-NEXT:    pushl {{[0-9]+}}(%esp)3436; X86-NEXT:    calll lroundf1283437; X86-NEXT:    addl $28, %esp3438; X86-NEXT:    retl3439;3440; WIN-LABEL: lround:3441; WIN:       # %bb.0: # %entry3442; WIN-NEXT:    subq $56, %rsp3443; WIN-NEXT:    movaps (%rcx), %xmm03444; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)3445; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx3446; WIN-NEXT:    callq lroundl3447; WIN-NEXT:    addq $56, %rsp3448; WIN-NEXT:    retq3449;3450; WIN-X86-LABEL: lround:3451; WIN-X86:       # %bb.0: # %entry3452; WIN-X86-NEXT:    pushl %ebp3453; WIN-X86-NEXT:    movl %esp, %ebp3454; WIN-X86-NEXT:    andl $-16, %esp3455; WIN-X86-NEXT:    subl $16, %esp3456; WIN-X86-NEXT:    pushl 20(%ebp)3457; WIN-X86-NEXT:    pushl 16(%ebp)3458; WIN-X86-NEXT:    pushl 12(%ebp)3459; WIN-X86-NEXT:    pushl 8(%ebp)3460; WIN-X86-NEXT:    calll _lroundl3461; WIN-X86-NEXT:    addl $16, %esp3462; WIN-X86-NEXT:    movl %ebp, %esp3463; WIN-X86-NEXT:    popl %ebp3464; WIN-X86-NEXT:    retl3465entry:3466  %round = call i32 @llvm.experimental.constrained.lround.i32.f128(fp128 %x, metadata !"fpexcept.strict") #03467  ret i32 %round3468}3469 3470define i64 @llround(fp128 %x) nounwind strictfp {3471; ANDROID-LABEL: llround:3472; ANDROID:       # %bb.0: # %entry3473; ANDROID-NEXT:    pushq %rax3474; ANDROID-NEXT:    callq llroundl@PLT3475; ANDROID-NEXT:    popq %rcx3476; ANDROID-NEXT:    retq3477;3478; GNU-LABEL: llround:3479; GNU:       # %bb.0: # %entry3480; GNU-NEXT:    pushq %rax3481; GNU-NEXT:    callq llroundf128@PLT3482; GNU-NEXT:    popq %rcx3483; GNU-NEXT:    retq3484;3485; X86-LABEL: llround:3486; X86:       # %bb.0: # %entry3487; X86-NEXT:    subl $12, %esp3488; X86-NEXT:    pushl {{[0-9]+}}(%esp)3489; X86-NEXT:    pushl {{[0-9]+}}(%esp)3490; X86-NEXT:    pushl {{[0-9]+}}(%esp)3491; X86-NEXT:    pushl {{[0-9]+}}(%esp)3492; X86-NEXT:    calll llroundf1283493; X86-NEXT:    addl $28, %esp3494; X86-NEXT:    retl3495;3496; WIN-LABEL: llround:3497; WIN:       # %bb.0: # %entry3498; WIN-NEXT:    subq $56, %rsp3499; WIN-NEXT:    movaps (%rcx), %xmm03500; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)3501; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx3502; WIN-NEXT:    callq llroundl3503; WIN-NEXT:    addq $56, %rsp3504; WIN-NEXT:    retq3505;3506; WIN-X86-LABEL: llround:3507; WIN-X86:       # %bb.0: # %entry3508; WIN-X86-NEXT:    pushl %ebp3509; WIN-X86-NEXT:    movl %esp, %ebp3510; WIN-X86-NEXT:    andl $-16, %esp3511; WIN-X86-NEXT:    subl $16, %esp3512; WIN-X86-NEXT:    pushl 20(%ebp)3513; WIN-X86-NEXT:    pushl 16(%ebp)3514; WIN-X86-NEXT:    pushl 12(%ebp)3515; WIN-X86-NEXT:    pushl 8(%ebp)3516; WIN-X86-NEXT:    calll _llroundl3517; WIN-X86-NEXT:    addl $16, %esp3518; WIN-X86-NEXT:    movl %ebp, %esp3519; WIN-X86-NEXT:    popl %ebp3520; WIN-X86-NEXT:    retl3521entry:3522  %round = call i64 @llvm.experimental.constrained.llround.i64.f128(fp128 %x, metadata !"fpexcept.strict") #03523  ret i64 %round3524}3525 3526define i64 @cmp(i64 %a, i64 %b, fp128 %x, fp128 %y) #0 {3527; CHECK-LABEL: cmp:3528; CHECK:       # %bb.0:3529; CHECK-NEXT:    pushq %r143530; CHECK-NEXT:    pushq %rbx3531; CHECK-NEXT:    pushq %rax3532; CHECK-NEXT:    movq %rsi, %rbx3533; CHECK-NEXT:    movq %rdi, %r143534; CHECK-NEXT:    callq __eqtf2@PLT3535; CHECK-NEXT:    testl %eax, %eax3536; CHECK-NEXT:    cmovneq %rbx, %r143537; CHECK-NEXT:    movq %r14, %rax3538; CHECK-NEXT:    addq $8, %rsp3539; CHECK-NEXT:    popq %rbx3540; CHECK-NEXT:    popq %r143541; CHECK-NEXT:    retq3542;3543; ANDROID-LABEL: cmp:3544; ANDROID:       # %bb.0:3545; ANDROID-NEXT:    pushq %r143546; ANDROID-NEXT:    pushq %rbx3547; ANDROID-NEXT:    pushq %rax3548; ANDROID-NEXT:    movq %rsi, %rbx3549; ANDROID-NEXT:    movq %rdi, %r143550; ANDROID-NEXT:    callq __eqtf2@PLT3551; ANDROID-NEXT:    testl %eax, %eax3552; ANDROID-NEXT:    cmovneq %rbx, %r143553; ANDROID-NEXT:    movq %r14, %rax3554; ANDROID-NEXT:    addq $8, %rsp3555; ANDROID-NEXT:    popq %rbx3556; ANDROID-NEXT:    popq %r143557; ANDROID-NEXT:    retq3558;3559; GNU-LABEL: cmp:3560; GNU:       # %bb.0:3561; GNU-NEXT:    pushq %r143562; GNU-NEXT:    pushq %rbx3563; GNU-NEXT:    pushq %rax3564; GNU-NEXT:    movq %rsi, %rbx3565; GNU-NEXT:    movq %rdi, %r143566; GNU-NEXT:    callq __eqtf2@PLT3567; GNU-NEXT:    testl %eax, %eax3568; GNU-NEXT:    cmovneq %rbx, %r143569; GNU-NEXT:    movq %r14, %rax3570; GNU-NEXT:    addq $8, %rsp3571; GNU-NEXT:    popq %rbx3572; GNU-NEXT:    popq %r143573; GNU-NEXT:    retq3574;3575; X86-LABEL: cmp:3576; X86:       # %bb.0:3577; X86-NEXT:    subl $12, %esp3578; X86-NEXT:    pushl {{[0-9]+}}(%esp)3579; X86-NEXT:    pushl {{[0-9]+}}(%esp)3580; X86-NEXT:    pushl {{[0-9]+}}(%esp)3581; X86-NEXT:    pushl {{[0-9]+}}(%esp)3582; X86-NEXT:    pushl {{[0-9]+}}(%esp)3583; X86-NEXT:    pushl {{[0-9]+}}(%esp)3584; X86-NEXT:    pushl {{[0-9]+}}(%esp)3585; X86-NEXT:    pushl {{[0-9]+}}(%esp)3586; X86-NEXT:    calll __eqtf23587; X86-NEXT:    addl $32, %esp3588; X86-NEXT:    testl %eax, %eax3589; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax3590; X86-NEXT:    leal {{[0-9]+}}(%esp), %ecx3591; X86-NEXT:    cmovel %eax, %ecx3592; X86-NEXT:    movl (%ecx), %eax3593; X86-NEXT:    movl 4(%ecx), %edx3594; X86-NEXT:    addl $12, %esp3595; X86-NEXT:    retl3596;3597; WIN-LABEL: cmp:3598; WIN:       # %bb.0:3599; WIN-NEXT:    pushq %rsi3600; WIN-NEXT:    pushq %rdi3601; WIN-NEXT:    subq $72, %rsp3602; WIN-NEXT:    movq %rdx, %rsi3603; WIN-NEXT:    movq %rcx, %rdi3604; WIN-NEXT:    movaps (%r8), %xmm03605; WIN-NEXT:    movaps (%r9), %xmm13606; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)3607; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)3608; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx3609; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx3610; WIN-NEXT:    callq __eqtf23611; WIN-NEXT:    testl %eax, %eax3612; WIN-NEXT:    cmovneq %rsi, %rdi3613; WIN-NEXT:    movq %rdi, %rax3614; WIN-NEXT:    addq $72, %rsp3615; WIN-NEXT:    popq %rdi3616; WIN-NEXT:    popq %rsi3617; WIN-NEXT:    retq3618;3619; WIN-X86-LABEL: cmp:3620; WIN-X86:       # %bb.0:3621; WIN-X86-NEXT:    pushl %ebp3622; WIN-X86-NEXT:    movl %esp, %ebp3623; WIN-X86-NEXT:    andl $-16, %esp3624; WIN-X86-NEXT:    subl $16, %esp3625; WIN-X86-NEXT:    pushl 52(%ebp)3626; WIN-X86-NEXT:    pushl 48(%ebp)3627; WIN-X86-NEXT:    pushl 44(%ebp)3628; WIN-X86-NEXT:    pushl 40(%ebp)3629; WIN-X86-NEXT:    pushl 36(%ebp)3630; WIN-X86-NEXT:    pushl 32(%ebp)3631; WIN-X86-NEXT:    pushl 28(%ebp)3632; WIN-X86-NEXT:    pushl 24(%ebp)3633; WIN-X86-NEXT:    calll ___eqtf23634; WIN-X86-NEXT:    addl $32, %esp3635; WIN-X86-NEXT:    testl %eax, %eax3636; WIN-X86-NEXT:    je LBB37_13637; WIN-X86-NEXT:  # %bb.2:3638; WIN-X86-NEXT:    leal 16(%ebp), %ecx3639; WIN-X86-NEXT:    jmp LBB37_33640; WIN-X86-NEXT:  LBB37_1:3641; WIN-X86-NEXT:    leal 8(%ebp), %ecx3642; WIN-X86-NEXT:  LBB37_3:3643; WIN-X86-NEXT:    movl (%ecx), %eax3644; WIN-X86-NEXT:    movl 4(%ecx), %edx3645; WIN-X86-NEXT:    movl %ebp, %esp3646; WIN-X86-NEXT:    popl %ebp3647; WIN-X86-NEXT:    retl3648  %cond = call i1 @llvm.experimental.constrained.fcmp.f128(3649                                               fp128 %x, fp128 %y,3650                                               metadata !"oeq",3651                                               metadata !"fpexcept.strict") #03652  %res = select i1 %cond, i64 %a, i64 %b3653  ret i64 %res3654}3655 3656define i64 @cmps(i64 %a, i64 %b, fp128 %x, fp128 %y) #0 {3657; CHECK-LABEL: cmps:3658; CHECK:       # %bb.0:3659; CHECK-NEXT:    pushq %r143660; CHECK-NEXT:    pushq %rbx3661; CHECK-NEXT:    pushq %rax3662; CHECK-NEXT:    movq %rsi, %rbx3663; CHECK-NEXT:    movq %rdi, %r143664; CHECK-NEXT:    callq __eqtf2@PLT3665; CHECK-NEXT:    testl %eax, %eax3666; CHECK-NEXT:    cmovneq %rbx, %r143667; CHECK-NEXT:    movq %r14, %rax3668; CHECK-NEXT:    addq $8, %rsp3669; CHECK-NEXT:    popq %rbx3670; CHECK-NEXT:    popq %r143671; CHECK-NEXT:    retq3672;3673; ANDROID-LABEL: cmps:3674; ANDROID:       # %bb.0:3675; ANDROID-NEXT:    pushq %r143676; ANDROID-NEXT:    pushq %rbx3677; ANDROID-NEXT:    pushq %rax3678; ANDROID-NEXT:    movq %rsi, %rbx3679; ANDROID-NEXT:    movq %rdi, %r143680; ANDROID-NEXT:    callq __eqtf2@PLT3681; ANDROID-NEXT:    testl %eax, %eax3682; ANDROID-NEXT:    cmovneq %rbx, %r143683; ANDROID-NEXT:    movq %r14, %rax3684; ANDROID-NEXT:    addq $8, %rsp3685; ANDROID-NEXT:    popq %rbx3686; ANDROID-NEXT:    popq %r143687; ANDROID-NEXT:    retq3688;3689; GNU-LABEL: cmps:3690; GNU:       # %bb.0:3691; GNU-NEXT:    pushq %r143692; GNU-NEXT:    pushq %rbx3693; GNU-NEXT:    pushq %rax3694; GNU-NEXT:    movq %rsi, %rbx3695; GNU-NEXT:    movq %rdi, %r143696; GNU-NEXT:    callq __eqtf2@PLT3697; GNU-NEXT:    testl %eax, %eax3698; GNU-NEXT:    cmovneq %rbx, %r143699; GNU-NEXT:    movq %r14, %rax3700; GNU-NEXT:    addq $8, %rsp3701; GNU-NEXT:    popq %rbx3702; GNU-NEXT:    popq %r143703; GNU-NEXT:    retq3704;3705; X86-LABEL: cmps:3706; X86:       # %bb.0:3707; X86-NEXT:    subl $12, %esp3708; X86-NEXT:    pushl {{[0-9]+}}(%esp)3709; X86-NEXT:    pushl {{[0-9]+}}(%esp)3710; X86-NEXT:    pushl {{[0-9]+}}(%esp)3711; X86-NEXT:    pushl {{[0-9]+}}(%esp)3712; X86-NEXT:    pushl {{[0-9]+}}(%esp)3713; X86-NEXT:    pushl {{[0-9]+}}(%esp)3714; X86-NEXT:    pushl {{[0-9]+}}(%esp)3715; X86-NEXT:    pushl {{[0-9]+}}(%esp)3716; X86-NEXT:    calll __eqtf23717; X86-NEXT:    addl $32, %esp3718; X86-NEXT:    testl %eax, %eax3719; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax3720; X86-NEXT:    leal {{[0-9]+}}(%esp), %ecx3721; X86-NEXT:    cmovel %eax, %ecx3722; X86-NEXT:    movl (%ecx), %eax3723; X86-NEXT:    movl 4(%ecx), %edx3724; X86-NEXT:    addl $12, %esp3725; X86-NEXT:    retl3726;3727; WIN-LABEL: cmps:3728; WIN:       # %bb.0:3729; WIN-NEXT:    pushq %rsi3730; WIN-NEXT:    pushq %rdi3731; WIN-NEXT:    subq $72, %rsp3732; WIN-NEXT:    movq %rdx, %rsi3733; WIN-NEXT:    movq %rcx, %rdi3734; WIN-NEXT:    movaps (%r8), %xmm03735; WIN-NEXT:    movaps (%r9), %xmm13736; WIN-NEXT:    movaps %xmm1, {{[0-9]+}}(%rsp)3737; WIN-NEXT:    movaps %xmm0, {{[0-9]+}}(%rsp)3738; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx3739; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx3740; WIN-NEXT:    callq __eqtf23741; WIN-NEXT:    testl %eax, %eax3742; WIN-NEXT:    cmovneq %rsi, %rdi3743; WIN-NEXT:    movq %rdi, %rax3744; WIN-NEXT:    addq $72, %rsp3745; WIN-NEXT:    popq %rdi3746; WIN-NEXT:    popq %rsi3747; WIN-NEXT:    retq3748;3749; WIN-X86-LABEL: cmps:3750; WIN-X86:       # %bb.0:3751; WIN-X86-NEXT:    pushl %ebp3752; WIN-X86-NEXT:    movl %esp, %ebp3753; WIN-X86-NEXT:    andl $-16, %esp3754; WIN-X86-NEXT:    subl $16, %esp3755; WIN-X86-NEXT:    pushl 52(%ebp)3756; WIN-X86-NEXT:    pushl 48(%ebp)3757; WIN-X86-NEXT:    pushl 44(%ebp)3758; WIN-X86-NEXT:    pushl 40(%ebp)3759; WIN-X86-NEXT:    pushl 36(%ebp)3760; WIN-X86-NEXT:    pushl 32(%ebp)3761; WIN-X86-NEXT:    pushl 28(%ebp)3762; WIN-X86-NEXT:    pushl 24(%ebp)3763; WIN-X86-NEXT:    calll ___eqtf23764; WIN-X86-NEXT:    addl $32, %esp3765; WIN-X86-NEXT:    testl %eax, %eax3766; WIN-X86-NEXT:    je LBB38_13767; WIN-X86-NEXT:  # %bb.2:3768; WIN-X86-NEXT:    leal 16(%ebp), %ecx3769; WIN-X86-NEXT:    jmp LBB38_33770; WIN-X86-NEXT:  LBB38_1:3771; WIN-X86-NEXT:    leal 8(%ebp), %ecx3772; WIN-X86-NEXT:  LBB38_3:3773; WIN-X86-NEXT:    movl (%ecx), %eax3774; WIN-X86-NEXT:    movl 4(%ecx), %edx3775; WIN-X86-NEXT:    movl %ebp, %esp3776; WIN-X86-NEXT:    popl %ebp3777; WIN-X86-NEXT:    retl3778  %cond = call i1 @llvm.experimental.constrained.fcmps.f128(3779                                               fp128 %x, fp128 %y,3780                                               metadata !"oeq",3781                                               metadata !"fpexcept.strict") #03782  %res = select i1 %cond, i64 %a, i64 %b3783  ret i64 %res3784}3785 3786define i64 @cmp_ueq_q(i64 %a, i64 %b, fp128 %x, fp128 %y) #0 {3787; CHECK-LABEL: cmp_ueq_q:3788; CHECK:       # %bb.0:3789; CHECK-NEXT:    pushq %rbp3790; CHECK-NEXT:    pushq %r143791; CHECK-NEXT:    pushq %rbx3792; CHECK-NEXT:    subq $32, %rsp3793; CHECK-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3794; CHECK-NEXT:    movaps %xmm0, (%rsp) # 16-byte Spill3795; CHECK-NEXT:    movq %rsi, %rbx3796; CHECK-NEXT:    movq %rdi, %r143797; CHECK-NEXT:    callq __eqtf2@PLT3798; CHECK-NEXT:    testl %eax, %eax3799; CHECK-NEXT:    sete %bpl3800; CHECK-NEXT:    movaps (%rsp), %xmm0 # 16-byte Reload3801; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload3802; CHECK-NEXT:    callq __unordtf2@PLT3803; CHECK-NEXT:    testl %eax, %eax3804; CHECK-NEXT:    setne %al3805; CHECK-NEXT:    orb %bpl, %al3806; CHECK-NEXT:    cmoveq %rbx, %r143807; CHECK-NEXT:    movq %r14, %rax3808; CHECK-NEXT:    addq $32, %rsp3809; CHECK-NEXT:    popq %rbx3810; CHECK-NEXT:    popq %r143811; CHECK-NEXT:    popq %rbp3812; CHECK-NEXT:    retq3813;3814; ANDROID-LABEL: cmp_ueq_q:3815; ANDROID:       # %bb.0:3816; ANDROID-NEXT:    pushq %rbp3817; ANDROID-NEXT:    pushq %r143818; ANDROID-NEXT:    pushq %rbx3819; ANDROID-NEXT:    subq $32, %rsp3820; ANDROID-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3821; ANDROID-NEXT:    movaps %xmm0, (%rsp) # 16-byte Spill3822; ANDROID-NEXT:    movq %rsi, %rbx3823; ANDROID-NEXT:    movq %rdi, %r143824; ANDROID-NEXT:    callq __eqtf2@PLT3825; ANDROID-NEXT:    testl %eax, %eax3826; ANDROID-NEXT:    sete %bpl3827; ANDROID-NEXT:    movaps (%rsp), %xmm0 # 16-byte Reload3828; ANDROID-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload3829; ANDROID-NEXT:    callq __unordtf2@PLT3830; ANDROID-NEXT:    testl %eax, %eax3831; ANDROID-NEXT:    setne %al3832; ANDROID-NEXT:    orb %bpl, %al3833; ANDROID-NEXT:    cmoveq %rbx, %r143834; ANDROID-NEXT:    movq %r14, %rax3835; ANDROID-NEXT:    addq $32, %rsp3836; ANDROID-NEXT:    popq %rbx3837; ANDROID-NEXT:    popq %r143838; ANDROID-NEXT:    popq %rbp3839; ANDROID-NEXT:    retq3840;3841; GNU-LABEL: cmp_ueq_q:3842; GNU:       # %bb.0:3843; GNU-NEXT:    pushq %rbp3844; GNU-NEXT:    pushq %r143845; GNU-NEXT:    pushq %rbx3846; GNU-NEXT:    subq $32, %rsp3847; GNU-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3848; GNU-NEXT:    movaps %xmm0, (%rsp) # 16-byte Spill3849; GNU-NEXT:    movq %rsi, %rbx3850; GNU-NEXT:    movq %rdi, %r143851; GNU-NEXT:    callq __eqtf2@PLT3852; GNU-NEXT:    testl %eax, %eax3853; GNU-NEXT:    sete %bpl3854; GNU-NEXT:    movaps (%rsp), %xmm0 # 16-byte Reload3855; GNU-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload3856; GNU-NEXT:    callq __unordtf2@PLT3857; GNU-NEXT:    testl %eax, %eax3858; GNU-NEXT:    setne %al3859; GNU-NEXT:    orb %bpl, %al3860; GNU-NEXT:    cmoveq %rbx, %r143861; GNU-NEXT:    movq %r14, %rax3862; GNU-NEXT:    addq $32, %rsp3863; GNU-NEXT:    popq %rbx3864; GNU-NEXT:    popq %r143865; GNU-NEXT:    popq %rbp3866; GNU-NEXT:    retq3867;3868; X86-LABEL: cmp_ueq_q:3869; X86:       # %bb.0:3870; X86-NEXT:    pushl %ebp3871; X86-NEXT:    pushl %ebx3872; X86-NEXT:    pushl %edi3873; X86-NEXT:    pushl %esi3874; X86-NEXT:    subl $12, %esp3875; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp3876; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi3877; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi3878; X86-NEXT:    pushl {{[0-9]+}}(%esp)3879; X86-NEXT:    pushl {{[0-9]+}}(%esp)3880; X86-NEXT:    pushl {{[0-9]+}}(%esp)3881; X86-NEXT:    pushl {{[0-9]+}}(%esp)3882; X86-NEXT:    pushl %esi3883; X86-NEXT:    pushl %edi3884; X86-NEXT:    pushl %ebp3885; X86-NEXT:    pushl {{[0-9]+}}(%esp)3886; X86-NEXT:    calll __eqtf23887; X86-NEXT:    addl $32, %esp3888; X86-NEXT:    testl %eax, %eax3889; X86-NEXT:    sete %bl3890; X86-NEXT:    pushl {{[0-9]+}}(%esp)3891; X86-NEXT:    pushl {{[0-9]+}}(%esp)3892; X86-NEXT:    pushl {{[0-9]+}}(%esp)3893; X86-NEXT:    pushl {{[0-9]+}}(%esp)3894; X86-NEXT:    pushl %esi3895; X86-NEXT:    pushl %edi3896; X86-NEXT:    pushl %ebp3897; X86-NEXT:    pushl {{[0-9]+}}(%esp)3898; X86-NEXT:    calll __unordtf23899; X86-NEXT:    addl $32, %esp3900; X86-NEXT:    orb %bl, %al3901; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax3902; X86-NEXT:    leal {{[0-9]+}}(%esp), %ecx3903; X86-NEXT:    cmovnel %eax, %ecx3904; X86-NEXT:    movl (%ecx), %eax3905; X86-NEXT:    movl 4(%ecx), %edx3906; X86-NEXT:    addl $12, %esp3907; X86-NEXT:    popl %esi3908; X86-NEXT:    popl %edi3909; X86-NEXT:    popl %ebx3910; X86-NEXT:    popl %ebp3911; X86-NEXT:    retl3912;3913; WIN-LABEL: cmp_ueq_q:3914; WIN:       # %bb.0:3915; WIN-NEXT:    pushq %rsi3916; WIN-NEXT:    pushq %rdi3917; WIN-NEXT:    pushq %rbx3918; WIN-NEXT:    subq $128, %rsp3919; WIN-NEXT:    movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3920; WIN-NEXT:    movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3921; WIN-NEXT:    movq %rdx, %rsi3922; WIN-NEXT:    movq %rcx, %rdi3923; WIN-NEXT:    movaps (%r8), %xmm63924; WIN-NEXT:    movaps (%r9), %xmm73925; WIN-NEXT:    movaps %xmm7, {{[0-9]+}}(%rsp)3926; WIN-NEXT:    movaps %xmm6, {{[0-9]+}}(%rsp)3927; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx3928; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx3929; WIN-NEXT:    callq __eqtf23930; WIN-NEXT:    movaps %xmm7, {{[0-9]+}}(%rsp)3931; WIN-NEXT:    movaps %xmm6, {{[0-9]+}}(%rsp)3932; WIN-NEXT:    testl %eax, %eax3933; WIN-NEXT:    sete %bl3934; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx3935; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx3936; WIN-NEXT:    callq __unordtf23937; WIN-NEXT:    testl %eax, %eax3938; WIN-NEXT:    setne %al3939; WIN-NEXT:    orb %bl, %al3940; WIN-NEXT:    cmoveq %rsi, %rdi3941; WIN-NEXT:    movq %rdi, %rax3942; WIN-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload3943; WIN-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload3944; WIN-NEXT:    addq $128, %rsp3945; WIN-NEXT:    popq %rbx3946; WIN-NEXT:    popq %rdi3947; WIN-NEXT:    popq %rsi3948; WIN-NEXT:    retq3949;3950; WIN-X86-LABEL: cmp_ueq_q:3951; WIN-X86:       # %bb.0:3952; WIN-X86-NEXT:    pushl %ebp3953; WIN-X86-NEXT:    movl %esp, %ebp3954; WIN-X86-NEXT:    pushl %ebx3955; WIN-X86-NEXT:    pushl %edi3956; WIN-X86-NEXT:    pushl %esi3957; WIN-X86-NEXT:    andl $-16, %esp3958; WIN-X86-NEXT:    subl $16, %esp3959; WIN-X86-NEXT:    movl 32(%ebp), %edi3960; WIN-X86-NEXT:    movl 36(%ebp), %esi3961; WIN-X86-NEXT:    pushl 52(%ebp)3962; WIN-X86-NEXT:    pushl 48(%ebp)3963; WIN-X86-NEXT:    pushl 44(%ebp)3964; WIN-X86-NEXT:    pushl 40(%ebp)3965; WIN-X86-NEXT:    pushl %esi3966; WIN-X86-NEXT:    pushl %edi3967; WIN-X86-NEXT:    pushl 28(%ebp)3968; WIN-X86-NEXT:    pushl 24(%ebp)3969; WIN-X86-NEXT:    calll ___eqtf23970; WIN-X86-NEXT:    addl $32, %esp3971; WIN-X86-NEXT:    testl %eax, %eax3972; WIN-X86-NEXT:    sete %bl3973; WIN-X86-NEXT:    pushl 52(%ebp)3974; WIN-X86-NEXT:    pushl 48(%ebp)3975; WIN-X86-NEXT:    pushl 44(%ebp)3976; WIN-X86-NEXT:    pushl 40(%ebp)3977; WIN-X86-NEXT:    pushl %esi3978; WIN-X86-NEXT:    pushl %edi3979; WIN-X86-NEXT:    pushl 28(%ebp)3980; WIN-X86-NEXT:    pushl 24(%ebp)3981; WIN-X86-NEXT:    calll ___unordtf23982; WIN-X86-NEXT:    addl $32, %esp3983; WIN-X86-NEXT:    orb %bl, %al3984; WIN-X86-NEXT:    jne LBB39_13985; WIN-X86-NEXT:  # %bb.2:3986; WIN-X86-NEXT:    leal 16(%ebp), %ecx3987; WIN-X86-NEXT:    jmp LBB39_33988; WIN-X86-NEXT:  LBB39_1:3989; WIN-X86-NEXT:    leal 8(%ebp), %ecx3990; WIN-X86-NEXT:  LBB39_3:3991; WIN-X86-NEXT:    movl (%ecx), %eax3992; WIN-X86-NEXT:    movl 4(%ecx), %edx3993; WIN-X86-NEXT:    leal -12(%ebp), %esp3994; WIN-X86-NEXT:    popl %esi3995; WIN-X86-NEXT:    popl %edi3996; WIN-X86-NEXT:    popl %ebx3997; WIN-X86-NEXT:    popl %ebp3998; WIN-X86-NEXT:    retl3999  %cond = call i1 @llvm.experimental.constrained.fcmp.f128(4000                                               fp128 %x, fp128 %y,4001                                               metadata !"ueq",4002                                               metadata !"fpexcept.strict") #04003  %res = select i1 %cond, i64 %a, i64 %b4004  ret i64 %res4005}4006 4007define i64 @cmp_one_q(i64 %a, i64 %b, fp128 %x, fp128 %y) #0 {4008; CHECK-LABEL: cmp_one_q:4009; CHECK:       # %bb.0:4010; CHECK-NEXT:    pushq %rbp4011; CHECK-NEXT:    pushq %r144012; CHECK-NEXT:    pushq %rbx4013; CHECK-NEXT:    subq $32, %rsp4014; CHECK-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4015; CHECK-NEXT:    movaps %xmm0, (%rsp) # 16-byte Spill4016; CHECK-NEXT:    movq %rsi, %rbx4017; CHECK-NEXT:    movq %rdi, %r144018; CHECK-NEXT:    callq __eqtf2@PLT4019; CHECK-NEXT:    testl %eax, %eax4020; CHECK-NEXT:    setne %bpl4021; CHECK-NEXT:    movaps (%rsp), %xmm0 # 16-byte Reload4022; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload4023; CHECK-NEXT:    callq __unordtf2@PLT4024; CHECK-NEXT:    testl %eax, %eax4025; CHECK-NEXT:    sete %al4026; CHECK-NEXT:    testb %bpl, %al4027; CHECK-NEXT:    cmoveq %rbx, %r144028; CHECK-NEXT:    movq %r14, %rax4029; CHECK-NEXT:    addq $32, %rsp4030; CHECK-NEXT:    popq %rbx4031; CHECK-NEXT:    popq %r144032; CHECK-NEXT:    popq %rbp4033; CHECK-NEXT:    retq4034;4035; ANDROID-LABEL: cmp_one_q:4036; ANDROID:       # %bb.0:4037; ANDROID-NEXT:    pushq %rbp4038; ANDROID-NEXT:    pushq %r144039; ANDROID-NEXT:    pushq %rbx4040; ANDROID-NEXT:    subq $32, %rsp4041; ANDROID-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4042; ANDROID-NEXT:    movaps %xmm0, (%rsp) # 16-byte Spill4043; ANDROID-NEXT:    movq %rsi, %rbx4044; ANDROID-NEXT:    movq %rdi, %r144045; ANDROID-NEXT:    callq __eqtf2@PLT4046; ANDROID-NEXT:    testl %eax, %eax4047; ANDROID-NEXT:    setne %bpl4048; ANDROID-NEXT:    movaps (%rsp), %xmm0 # 16-byte Reload4049; ANDROID-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload4050; ANDROID-NEXT:    callq __unordtf2@PLT4051; ANDROID-NEXT:    testl %eax, %eax4052; ANDROID-NEXT:    sete %al4053; ANDROID-NEXT:    testb %bpl, %al4054; ANDROID-NEXT:    cmoveq %rbx, %r144055; ANDROID-NEXT:    movq %r14, %rax4056; ANDROID-NEXT:    addq $32, %rsp4057; ANDROID-NEXT:    popq %rbx4058; ANDROID-NEXT:    popq %r144059; ANDROID-NEXT:    popq %rbp4060; ANDROID-NEXT:    retq4061;4062; GNU-LABEL: cmp_one_q:4063; GNU:       # %bb.0:4064; GNU-NEXT:    pushq %rbp4065; GNU-NEXT:    pushq %r144066; GNU-NEXT:    pushq %rbx4067; GNU-NEXT:    subq $32, %rsp4068; GNU-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4069; GNU-NEXT:    movaps %xmm0, (%rsp) # 16-byte Spill4070; GNU-NEXT:    movq %rsi, %rbx4071; GNU-NEXT:    movq %rdi, %r144072; GNU-NEXT:    callq __eqtf2@PLT4073; GNU-NEXT:    testl %eax, %eax4074; GNU-NEXT:    setne %bpl4075; GNU-NEXT:    movaps (%rsp), %xmm0 # 16-byte Reload4076; GNU-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload4077; GNU-NEXT:    callq __unordtf2@PLT4078; GNU-NEXT:    testl %eax, %eax4079; GNU-NEXT:    sete %al4080; GNU-NEXT:    testb %bpl, %al4081; GNU-NEXT:    cmoveq %rbx, %r144082; GNU-NEXT:    movq %r14, %rax4083; GNU-NEXT:    addq $32, %rsp4084; GNU-NEXT:    popq %rbx4085; GNU-NEXT:    popq %r144086; GNU-NEXT:    popq %rbp4087; GNU-NEXT:    retq4088;4089; X86-LABEL: cmp_one_q:4090; X86:       # %bb.0:4091; X86-NEXT:    pushl %ebp4092; X86-NEXT:    pushl %ebx4093; X86-NEXT:    pushl %edi4094; X86-NEXT:    pushl %esi4095; X86-NEXT:    subl $12, %esp4096; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp4097; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi4098; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi4099; X86-NEXT:    pushl {{[0-9]+}}(%esp)4100; X86-NEXT:    pushl {{[0-9]+}}(%esp)4101; X86-NEXT:    pushl {{[0-9]+}}(%esp)4102; X86-NEXT:    pushl {{[0-9]+}}(%esp)4103; X86-NEXT:    pushl %esi4104; X86-NEXT:    pushl %edi4105; X86-NEXT:    pushl %ebp4106; X86-NEXT:    pushl {{[0-9]+}}(%esp)4107; X86-NEXT:    calll __eqtf24108; X86-NEXT:    addl $32, %esp4109; X86-NEXT:    testl %eax, %eax4110; X86-NEXT:    setne %bl4111; X86-NEXT:    pushl {{[0-9]+}}(%esp)4112; X86-NEXT:    pushl {{[0-9]+}}(%esp)4113; X86-NEXT:    pushl {{[0-9]+}}(%esp)4114; X86-NEXT:    pushl {{[0-9]+}}(%esp)4115; X86-NEXT:    pushl %esi4116; X86-NEXT:    pushl %edi4117; X86-NEXT:    pushl %ebp4118; X86-NEXT:    pushl {{[0-9]+}}(%esp)4119; X86-NEXT:    calll __unordtf24120; X86-NEXT:    addl $32, %esp4121; X86-NEXT:    testl %eax, %eax4122; X86-NEXT:    sete %al4123; X86-NEXT:    testb %bl, %al4124; X86-NEXT:    leal {{[0-9]+}}(%esp), %eax4125; X86-NEXT:    leal {{[0-9]+}}(%esp), %ecx4126; X86-NEXT:    cmovnel %eax, %ecx4127; X86-NEXT:    movl (%ecx), %eax4128; X86-NEXT:    movl 4(%ecx), %edx4129; X86-NEXT:    addl $12, %esp4130; X86-NEXT:    popl %esi4131; X86-NEXT:    popl %edi4132; X86-NEXT:    popl %ebx4133; X86-NEXT:    popl %ebp4134; X86-NEXT:    retl4135;4136; WIN-LABEL: cmp_one_q:4137; WIN:       # %bb.0:4138; WIN-NEXT:    pushq %rsi4139; WIN-NEXT:    pushq %rdi4140; WIN-NEXT:    pushq %rbx4141; WIN-NEXT:    subq $128, %rsp4142; WIN-NEXT:    movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4143; WIN-NEXT:    movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill4144; WIN-NEXT:    movq %rdx, %rsi4145; WIN-NEXT:    movq %rcx, %rdi4146; WIN-NEXT:    movaps (%r8), %xmm64147; WIN-NEXT:    movaps (%r9), %xmm74148; WIN-NEXT:    movaps %xmm7, {{[0-9]+}}(%rsp)4149; WIN-NEXT:    movaps %xmm6, {{[0-9]+}}(%rsp)4150; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx4151; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx4152; WIN-NEXT:    callq __eqtf24153; WIN-NEXT:    movaps %xmm7, {{[0-9]+}}(%rsp)4154; WIN-NEXT:    movaps %xmm6, {{[0-9]+}}(%rsp)4155; WIN-NEXT:    testl %eax, %eax4156; WIN-NEXT:    setne %bl4157; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rcx4158; WIN-NEXT:    leaq {{[0-9]+}}(%rsp), %rdx4159; WIN-NEXT:    callq __unordtf24160; WIN-NEXT:    testl %eax, %eax4161; WIN-NEXT:    sete %al4162; WIN-NEXT:    testb %bl, %al4163; WIN-NEXT:    cmoveq %rsi, %rdi4164; WIN-NEXT:    movq %rdi, %rax4165; WIN-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload4166; WIN-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload4167; WIN-NEXT:    addq $128, %rsp4168; WIN-NEXT:    popq %rbx4169; WIN-NEXT:    popq %rdi4170; WIN-NEXT:    popq %rsi4171; WIN-NEXT:    retq4172;4173; WIN-X86-LABEL: cmp_one_q:4174; WIN-X86:       # %bb.0:4175; WIN-X86-NEXT:    pushl %ebp4176; WIN-X86-NEXT:    movl %esp, %ebp4177; WIN-X86-NEXT:    pushl %ebx4178; WIN-X86-NEXT:    pushl %edi4179; WIN-X86-NEXT:    pushl %esi4180; WIN-X86-NEXT:    andl $-16, %esp4181; WIN-X86-NEXT:    subl $16, %esp4182; WIN-X86-NEXT:    movl 32(%ebp), %edi4183; WIN-X86-NEXT:    movl 36(%ebp), %esi4184; WIN-X86-NEXT:    pushl 52(%ebp)4185; WIN-X86-NEXT:    pushl 48(%ebp)4186; WIN-X86-NEXT:    pushl 44(%ebp)4187; WIN-X86-NEXT:    pushl 40(%ebp)4188; WIN-X86-NEXT:    pushl %esi4189; WIN-X86-NEXT:    pushl %edi4190; WIN-X86-NEXT:    pushl 28(%ebp)4191; WIN-X86-NEXT:    pushl 24(%ebp)4192; WIN-X86-NEXT:    calll ___eqtf24193; WIN-X86-NEXT:    addl $32, %esp4194; WIN-X86-NEXT:    testl %eax, %eax4195; WIN-X86-NEXT:    setne %bl4196; WIN-X86-NEXT:    pushl 52(%ebp)4197; WIN-X86-NEXT:    pushl 48(%ebp)4198; WIN-X86-NEXT:    pushl 44(%ebp)4199; WIN-X86-NEXT:    pushl 40(%ebp)4200; WIN-X86-NEXT:    pushl %esi4201; WIN-X86-NEXT:    pushl %edi4202; WIN-X86-NEXT:    pushl 28(%ebp)4203; WIN-X86-NEXT:    pushl 24(%ebp)4204; WIN-X86-NEXT:    calll ___unordtf24205; WIN-X86-NEXT:    addl $32, %esp4206; WIN-X86-NEXT:    testl %eax, %eax4207; WIN-X86-NEXT:    sete %al4208; WIN-X86-NEXT:    testb %bl, %al4209; WIN-X86-NEXT:    jne LBB40_14210; WIN-X86-NEXT:  # %bb.2:4211; WIN-X86-NEXT:    leal 16(%ebp), %ecx4212; WIN-X86-NEXT:    jmp LBB40_34213; WIN-X86-NEXT:  LBB40_1:4214; WIN-X86-NEXT:    leal 8(%ebp), %ecx4215; WIN-X86-NEXT:  LBB40_3:4216; WIN-X86-NEXT:    movl (%ecx), %eax4217; WIN-X86-NEXT:    movl 4(%ecx), %edx4218; WIN-X86-NEXT:    leal -12(%ebp), %esp4219; WIN-X86-NEXT:    popl %esi4220; WIN-X86-NEXT:    popl %edi4221; WIN-X86-NEXT:    popl %ebx4222; WIN-X86-NEXT:    popl %ebp4223; WIN-X86-NEXT:    retl4224  %cond = call i1 @llvm.experimental.constrained.fcmp.f128(4225                                               fp128 %x, fp128 %y,4226                                               metadata !"one",4227                                               metadata !"fpexcept.strict") #04228  %res = select i1 %cond, i64 %a, i64 %b4229  ret i64 %res4230}4231 4232attributes #0 = { nounwind strictfp }4233 4234declare fp128 @llvm.experimental.constrained.fadd.f128(fp128, fp128, metadata, metadata)4235declare fp128 @llvm.experimental.constrained.fsub.f128(fp128, fp128, metadata, metadata)4236declare fp128 @llvm.experimental.constrained.fmul.f128(fp128, fp128, metadata, metadata)4237declare fp128 @llvm.experimental.constrained.fdiv.f128(fp128, fp128, metadata, metadata)4238declare fp128 @llvm.experimental.constrained.fma.f128(fp128, fp128, fp128, metadata, metadata)4239declare fp128 @llvm.experimental.constrained.frem.f128(fp128, fp128, metadata, metadata)4240declare fp128 @llvm.experimental.constrained.ceil.f128(fp128, metadata)4241declare fp128 @llvm.experimental.constrained.acos.f128(fp128, metadata, metadata)4242declare fp128 @llvm.experimental.constrained.cos.f128(fp128, metadata, metadata)4243declare fp128 @llvm.experimental.constrained.cosh.f128(fp128, metadata, metadata)4244declare fp128 @llvm.experimental.constrained.exp.f128(fp128, metadata, metadata)4245declare fp128 @llvm.experimental.constrained.exp2.f128(fp128, metadata, metadata)4246declare fp128 @llvm.experimental.constrained.floor.f128(fp128, metadata)4247declare fp128 @llvm.experimental.constrained.log.f128(fp128, metadata, metadata)4248declare fp128 @llvm.experimental.constrained.log10.f128(fp128, metadata, metadata)4249declare fp128 @llvm.experimental.constrained.log2.f128(fp128, metadata, metadata)4250declare fp128 @llvm.experimental.constrained.maxnum.f128(fp128, fp128, metadata)4251declare fp128 @llvm.experimental.constrained.minnum.f128(fp128, fp128, metadata)4252declare fp128 @llvm.experimental.constrained.nearbyint.f128(fp128, metadata, metadata)4253declare fp128 @llvm.experimental.constrained.pow.f128(fp128, fp128, metadata, metadata)4254declare fp128 @llvm.experimental.constrained.powi.f128(fp128, i32, metadata, metadata)4255declare fp128 @llvm.experimental.constrained.rint.f128(fp128, metadata, metadata)4256declare fp128 @llvm.experimental.constrained.round.f128(fp128, metadata)4257declare fp128 @llvm.experimental.constrained.roundeven.f128(fp128, metadata)4258declare fp128 @llvm.experimental.constrained.asin.f128(fp128, metadata, metadata)4259declare fp128 @llvm.experimental.constrained.sin.f128(fp128, metadata, metadata)4260declare fp128 @llvm.experimental.constrained.sinh.f128(fp128, metadata, metadata)4261declare fp128 @llvm.experimental.constrained.sqrt.f128(fp128, metadata, metadata)4262declare fp128 @llvm.experimental.constrained.atan.f128(fp128, metadata, metadata)4263declare fp128 @llvm.experimental.constrained.atan2.f128(fp128, fp128, metadata, metadata)4264declare fp128 @llvm.experimental.constrained.tan.f128(fp128, metadata, metadata)4265declare fp128 @llvm.experimental.constrained.tanh.f128(fp128, metadata, metadata)4266declare fp128 @llvm.experimental.constrained.trunc.f128(fp128, metadata)4267declare i32 @llvm.experimental.constrained.lrint.i32.f128(fp128, metadata, metadata)4268declare i64 @llvm.experimental.constrained.llrint.i64.f128(fp128, metadata, metadata)4269declare i32 @llvm.experimental.constrained.lround.i32.f128(fp128, metadata)4270declare i64 @llvm.experimental.constrained.llround.i64.f128(fp128, metadata)4271declare i1 @llvm.experimental.constrained.fcmp.f128(fp128, fp128, metadata, metadata)4272declare i1 @llvm.experimental.constrained.fcmps.f128(fp128, fp128, metadata, metadata)4273