brintos

brintos / llvm-project-archived public Read only

0
0
Text · 26.4 KiB · 8bbc624 Raw
870 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-unknown-unknown -O3 | FileCheck %s --check-prefixes=X863; RUN: llc < %s -mtriple=x86_64-unknown-unknown -O3 | FileCheck %s --check-prefixes=X644 5define x86_fp80 @fma(x86_fp80 %x, x86_fp80 %y, x86_fp80 %z) nounwind strictfp {6; X86-LABEL: fma:7; X86:       # %bb.0: # %entry8; X86-NEXT:    subl $36, %esp9; X86-NEXT:    fldt {{[0-9]+}}(%esp)10; X86-NEXT:    fldt {{[0-9]+}}(%esp)11; X86-NEXT:    fldt {{[0-9]+}}(%esp)12; X86-NEXT:    fstpt {{[0-9]+}}(%esp)13; X86-NEXT:    fstpt {{[0-9]+}}(%esp)14; X86-NEXT:    fstpt (%esp)15; X86-NEXT:    wait16; X86-NEXT:    calll fmal17; X86-NEXT:    addl $36, %esp18; X86-NEXT:    retl19;20; X64-LABEL: fma:21; X64:       # %bb.0: # %entry22; X64-NEXT:    subq $56, %rsp23; X64-NEXT:    fldt {{[0-9]+}}(%rsp)24; X64-NEXT:    fldt {{[0-9]+}}(%rsp)25; X64-NEXT:    fldt {{[0-9]+}}(%rsp)26; X64-NEXT:    fstpt {{[0-9]+}}(%rsp)27; X64-NEXT:    fstpt {{[0-9]+}}(%rsp)28; X64-NEXT:    fstpt (%rsp)29; X64-NEXT:    wait30; X64-NEXT:    callq fmal@PLT31; X64-NEXT:    addq $56, %rsp32; X64-NEXT:    retq33entry:34  %fma = call x86_fp80 @llvm.experimental.constrained.fma.f80(x86_fp80 %x, x86_fp80 %y,  x86_fp80 %z, metadata !"round.dynamic", metadata !"fpexcept.strict") #035  ret x86_fp80 %fma36}37 38define x86_fp80 @frem(x86_fp80 %x, x86_fp80 %y) nounwind strictfp {39; X86-LABEL: frem:40; X86:       # %bb.0: # %entry41; X86-NEXT:    subl $24, %esp42; X86-NEXT:    fldt {{[0-9]+}}(%esp)43; X86-NEXT:    fldt {{[0-9]+}}(%esp)44; X86-NEXT:    fstpt {{[0-9]+}}(%esp)45; X86-NEXT:    fstpt (%esp)46; X86-NEXT:    wait47; X86-NEXT:    calll fmodl48; X86-NEXT:    addl $24, %esp49; X86-NEXT:    retl50;51; X64-LABEL: frem:52; X64:       # %bb.0: # %entry53; X64-NEXT:    subq $40, %rsp54; X64-NEXT:    fldt {{[0-9]+}}(%rsp)55; X64-NEXT:    fldt {{[0-9]+}}(%rsp)56; X64-NEXT:    fstpt {{[0-9]+}}(%rsp)57; X64-NEXT:    fstpt (%rsp)58; X64-NEXT:    wait59; X64-NEXT:    callq fmodl@PLT60; X64-NEXT:    addq $40, %rsp61; X64-NEXT:    retq62entry:63  %div = call x86_fp80 @llvm.experimental.constrained.frem.f80(x86_fp80 %x, x86_fp80 %y,  metadata !"round.dynamic", metadata !"fpexcept.strict") #064  ret x86_fp80 %div65}66 67define x86_fp80 @ceil(x86_fp80 %x) nounwind strictfp {68; X86-LABEL: ceil:69; X86:       # %bb.0: # %entry70; X86-NEXT:    subl $12, %esp71; X86-NEXT:    fldt {{[0-9]+}}(%esp)72; X86-NEXT:    fstpt (%esp)73; X86-NEXT:    wait74; X86-NEXT:    calll ceill75; X86-NEXT:    addl $12, %esp76; X86-NEXT:    retl77;78; X64-LABEL: ceil:79; X64:       # %bb.0: # %entry80; X64-NEXT:    subq $24, %rsp81; X64-NEXT:    fldt {{[0-9]+}}(%rsp)82; X64-NEXT:    fstpt (%rsp)83; X64-NEXT:    wait84; X64-NEXT:    callq ceill@PLT85; X64-NEXT:    addq $24, %rsp86; X64-NEXT:    retq87entry:88  %ceil = call x86_fp80 @llvm.experimental.constrained.ceil.f80(x86_fp80 %x, metadata !"fpexcept.strict") #089  ret x86_fp80 %ceil90}91 92define x86_fp80 @acos(x86_fp80 %x) nounwind strictfp {93; X86-LABEL: acos:94; X86:       # %bb.0: # %entry95; X86-NEXT:    subl $12, %esp96; X86-NEXT:    fldt {{[0-9]+}}(%esp)97; X86-NEXT:    fstpt (%esp)98; X86-NEXT:    wait99; X86-NEXT:    calll acosl100; X86-NEXT:    addl $12, %esp101; X86-NEXT:    retl102;103; X64-LABEL: acos:104; X64:       # %bb.0: # %entry105; X64-NEXT:    subq $24, %rsp106; X64-NEXT:    fldt {{[0-9]+}}(%rsp)107; X64-NEXT:    fstpt (%rsp)108; X64-NEXT:    wait109; X64-NEXT:    callq acosl@PLT110; X64-NEXT:    addq $24, %rsp111; X64-NEXT:    retq112entry:113  %acos = call x86_fp80 @llvm.experimental.constrained.acos.f80(x86_fp80 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0114  ret x86_fp80 %acos115}116 117define x86_fp80 @cos(x86_fp80 %x) nounwind strictfp {118; X86-LABEL: cos:119; X86:       # %bb.0: # %entry120; X86-NEXT:    subl $12, %esp121; X86-NEXT:    fldt {{[0-9]+}}(%esp)122; X86-NEXT:    fstpt (%esp)123; X86-NEXT:    wait124; X86-NEXT:    calll cosl125; X86-NEXT:    addl $12, %esp126; X86-NEXT:    retl127;128; X64-LABEL: cos:129; X64:       # %bb.0: # %entry130; X64-NEXT:    subq $24, %rsp131; X64-NEXT:    fldt {{[0-9]+}}(%rsp)132; X64-NEXT:    fstpt (%rsp)133; X64-NEXT:    wait134; X64-NEXT:    callq cosl@PLT135; X64-NEXT:    addq $24, %rsp136; X64-NEXT:    retq137entry:138  %cos = call x86_fp80 @llvm.experimental.constrained.cos.f80(x86_fp80 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0139  ret x86_fp80 %cos140}141 142define x86_fp80 @cosh(x86_fp80 %x) nounwind strictfp {143; X86-LABEL: cosh:144; X86:       # %bb.0: # %entry145; X86-NEXT:    subl $12, %esp146; X86-NEXT:    fldt {{[0-9]+}}(%esp)147; X86-NEXT:    fstpt (%esp)148; X86-NEXT:    wait149; X86-NEXT:    calll coshl150; X86-NEXT:    addl $12, %esp151; X86-NEXT:    retl152;153; X64-LABEL: cosh:154; X64:       # %bb.0: # %entry155; X64-NEXT:    subq $24, %rsp156; X64-NEXT:    fldt {{[0-9]+}}(%rsp)157; X64-NEXT:    fstpt (%rsp)158; X64-NEXT:    wait159; X64-NEXT:    callq coshl@PLT160; X64-NEXT:    addq $24, %rsp161; X64-NEXT:    retq162entry:163  %cosh = call x86_fp80 @llvm.experimental.constrained.cosh.f80(x86_fp80 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0164  ret x86_fp80 %cosh165}166 167define x86_fp80 @exp(x86_fp80 %x) nounwind strictfp {168; X86-LABEL: exp:169; X86:       # %bb.0: # %entry170; X86-NEXT:    subl $12, %esp171; X86-NEXT:    fldt {{[0-9]+}}(%esp)172; X86-NEXT:    fstpt (%esp)173; X86-NEXT:    wait174; X86-NEXT:    calll expl175; X86-NEXT:    addl $12, %esp176; X86-NEXT:    retl177;178; X64-LABEL: exp:179; X64:       # %bb.0: # %entry180; X64-NEXT:    subq $24, %rsp181; X64-NEXT:    fldt {{[0-9]+}}(%rsp)182; X64-NEXT:    fstpt (%rsp)183; X64-NEXT:    wait184; X64-NEXT:    callq expl@PLT185; X64-NEXT:    addq $24, %rsp186; X64-NEXT:    retq187entry:188  %exp = call x86_fp80 @llvm.experimental.constrained.exp.f80(x86_fp80 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0189  ret x86_fp80 %exp190}191 192define x86_fp80 @exp2(x86_fp80 %x) nounwind strictfp {193; X86-LABEL: exp2:194; X86:       # %bb.0: # %entry195; X86-NEXT:    subl $12, %esp196; X86-NEXT:    fldt {{[0-9]+}}(%esp)197; X86-NEXT:    fstpt (%esp)198; X86-NEXT:    wait199; X86-NEXT:    calll exp2l200; X86-NEXT:    addl $12, %esp201; X86-NEXT:    retl202;203; X64-LABEL: exp2:204; X64:       # %bb.0: # %entry205; X64-NEXT:    subq $24, %rsp206; X64-NEXT:    fldt {{[0-9]+}}(%rsp)207; X64-NEXT:    fstpt (%rsp)208; X64-NEXT:    wait209; X64-NEXT:    callq exp2l@PLT210; X64-NEXT:    addq $24, %rsp211; X64-NEXT:    retq212entry:213  %exp2 = call x86_fp80 @llvm.experimental.constrained.exp2.f80(x86_fp80 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0214  ret x86_fp80 %exp2215}216 217define x86_fp80 @floor(x86_fp80 %x) nounwind strictfp {218; X86-LABEL: floor:219; X86:       # %bb.0: # %entry220; X86-NEXT:    subl $12, %esp221; X86-NEXT:    fldt {{[0-9]+}}(%esp)222; X86-NEXT:    fstpt (%esp)223; X86-NEXT:    wait224; X86-NEXT:    calll floorl225; X86-NEXT:    addl $12, %esp226; X86-NEXT:    retl227;228; X64-LABEL: floor:229; X64:       # %bb.0: # %entry230; X64-NEXT:    subq $24, %rsp231; X64-NEXT:    fldt {{[0-9]+}}(%rsp)232; X64-NEXT:    fstpt (%rsp)233; X64-NEXT:    wait234; X64-NEXT:    callq floorl@PLT235; X64-NEXT:    addq $24, %rsp236; X64-NEXT:    retq237entry:238  %floor = call x86_fp80 @llvm.experimental.constrained.floor.f80(x86_fp80 %x, metadata !"fpexcept.strict") #0239  ret x86_fp80 %floor240}241 242define x86_fp80 @log(x86_fp80 %x) nounwind strictfp {243; X86-LABEL: log:244; X86:       # %bb.0: # %entry245; X86-NEXT:    subl $12, %esp246; X86-NEXT:    fldt {{[0-9]+}}(%esp)247; X86-NEXT:    fstpt (%esp)248; X86-NEXT:    wait249; X86-NEXT:    calll logl250; X86-NEXT:    addl $12, %esp251; X86-NEXT:    retl252;253; X64-LABEL: log:254; X64:       # %bb.0: # %entry255; X64-NEXT:    subq $24, %rsp256; X64-NEXT:    fldt {{[0-9]+}}(%rsp)257; X64-NEXT:    fstpt (%rsp)258; X64-NEXT:    wait259; X64-NEXT:    callq logl@PLT260; X64-NEXT:    addq $24, %rsp261; X64-NEXT:    retq262entry:263  %log = call x86_fp80 @llvm.experimental.constrained.log.f80(x86_fp80 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0264  ret x86_fp80 %log265}266 267define x86_fp80 @log10(x86_fp80 %x) nounwind strictfp {268; X86-LABEL: log10:269; X86:       # %bb.0: # %entry270; X86-NEXT:    subl $12, %esp271; X86-NEXT:    fldt {{[0-9]+}}(%esp)272; X86-NEXT:    fstpt (%esp)273; X86-NEXT:    wait274; X86-NEXT:    calll log10l275; X86-NEXT:    addl $12, %esp276; X86-NEXT:    retl277;278; X64-LABEL: log10:279; X64:       # %bb.0: # %entry280; X64-NEXT:    subq $24, %rsp281; X64-NEXT:    fldt {{[0-9]+}}(%rsp)282; X64-NEXT:    fstpt (%rsp)283; X64-NEXT:    wait284; X64-NEXT:    callq log10l@PLT285; X64-NEXT:    addq $24, %rsp286; X64-NEXT:    retq287entry:288  %log10 = call x86_fp80 @llvm.experimental.constrained.log10.f80(x86_fp80 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0289  ret x86_fp80 %log10290}291 292define x86_fp80 @log2(x86_fp80 %x) nounwind strictfp {293; X86-LABEL: log2:294; X86:       # %bb.0: # %entry295; X86-NEXT:    subl $12, %esp296; X86-NEXT:    fldt {{[0-9]+}}(%esp)297; X86-NEXT:    fstpt (%esp)298; X86-NEXT:    wait299; X86-NEXT:    calll log2l300; X86-NEXT:    addl $12, %esp301; X86-NEXT:    retl302;303; X64-LABEL: log2:304; X64:       # %bb.0: # %entry305; X64-NEXT:    subq $24, %rsp306; X64-NEXT:    fldt {{[0-9]+}}(%rsp)307; X64-NEXT:    fstpt (%rsp)308; X64-NEXT:    wait309; X64-NEXT:    callq log2l@PLT310; X64-NEXT:    addq $24, %rsp311; X64-NEXT:    retq312entry:313  %log2 = call x86_fp80 @llvm.experimental.constrained.log2.f80(x86_fp80 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0314  ret x86_fp80 %log2315}316 317define x86_fp80 @maxnum(x86_fp80 %x, x86_fp80 %y) nounwind strictfp {318; X86-LABEL: maxnum:319; X86:       # %bb.0: # %entry320; X86-NEXT:    subl $24, %esp321; X86-NEXT:    fldt {{[0-9]+}}(%esp)322; X86-NEXT:    fldt {{[0-9]+}}(%esp)323; X86-NEXT:    fstpt {{[0-9]+}}(%esp)324; X86-NEXT:    fstpt (%esp)325; X86-NEXT:    wait326; X86-NEXT:    calll fmaxl327; X86-NEXT:    addl $24, %esp328; X86-NEXT:    retl329;330; X64-LABEL: maxnum:331; X64:       # %bb.0: # %entry332; X64-NEXT:    subq $40, %rsp333; X64-NEXT:    fldt {{[0-9]+}}(%rsp)334; X64-NEXT:    fldt {{[0-9]+}}(%rsp)335; X64-NEXT:    fstpt {{[0-9]+}}(%rsp)336; X64-NEXT:    fstpt (%rsp)337; X64-NEXT:    wait338; X64-NEXT:    callq fmaxl@PLT339; X64-NEXT:    addq $40, %rsp340; X64-NEXT:    retq341entry:342  %maxnum = call x86_fp80 @llvm.experimental.constrained.maxnum.f80(x86_fp80 %x, x86_fp80 %y, metadata !"fpexcept.strict") #0343  ret x86_fp80 %maxnum344}345 346define x86_fp80 @minnum(x86_fp80 %x, x86_fp80 %y) nounwind strictfp {347; X86-LABEL: minnum:348; X86:       # %bb.0: # %entry349; X86-NEXT:    subl $24, %esp350; X86-NEXT:    fldt {{[0-9]+}}(%esp)351; X86-NEXT:    fldt {{[0-9]+}}(%esp)352; X86-NEXT:    fstpt {{[0-9]+}}(%esp)353; X86-NEXT:    fstpt (%esp)354; X86-NEXT:    wait355; X86-NEXT:    calll fminl356; X86-NEXT:    addl $24, %esp357; X86-NEXT:    retl358;359; X64-LABEL: minnum:360; X64:       # %bb.0: # %entry361; X64-NEXT:    subq $40, %rsp362; X64-NEXT:    fldt {{[0-9]+}}(%rsp)363; X64-NEXT:    fldt {{[0-9]+}}(%rsp)364; X64-NEXT:    fstpt {{[0-9]+}}(%rsp)365; X64-NEXT:    fstpt (%rsp)366; X64-NEXT:    wait367; X64-NEXT:    callq fminl@PLT368; X64-NEXT:    addq $40, %rsp369; X64-NEXT:    retq370entry:371  %minnum = call x86_fp80 @llvm.experimental.constrained.minnum.f80(x86_fp80 %x, x86_fp80 %y, metadata !"fpexcept.strict") #0372  ret x86_fp80 %minnum373}374 375define x86_fp80 @nearbyint(x86_fp80 %x) nounwind strictfp {376; X86-LABEL: nearbyint:377; X86:       # %bb.0: # %entry378; X86-NEXT:    subl $12, %esp379; X86-NEXT:    fldt {{[0-9]+}}(%esp)380; X86-NEXT:    fstpt (%esp)381; X86-NEXT:    wait382; X86-NEXT:    calll nearbyintl383; X86-NEXT:    addl $12, %esp384; X86-NEXT:    retl385;386; X64-LABEL: nearbyint:387; X64:       # %bb.0: # %entry388; X64-NEXT:    subq $24, %rsp389; X64-NEXT:    fldt {{[0-9]+}}(%rsp)390; X64-NEXT:    fstpt (%rsp)391; X64-NEXT:    wait392; X64-NEXT:    callq nearbyintl@PLT393; X64-NEXT:    addq $24, %rsp394; X64-NEXT:    retq395entry:396  %nearbyint = call x86_fp80 @llvm.experimental.constrained.nearbyint.f80(x86_fp80 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0397  ret x86_fp80 %nearbyint398}399 400define x86_fp80 @pow(x86_fp80 %x, x86_fp80 %y) nounwind strictfp {401; X86-LABEL: pow:402; X86:       # %bb.0: # %entry403; X86-NEXT:    subl $24, %esp404; X86-NEXT:    fldt {{[0-9]+}}(%esp)405; X86-NEXT:    fldt {{[0-9]+}}(%esp)406; X86-NEXT:    fstpt {{[0-9]+}}(%esp)407; X86-NEXT:    fstpt (%esp)408; X86-NEXT:    wait409; X86-NEXT:    calll powl410; X86-NEXT:    addl $24, %esp411; X86-NEXT:    retl412;413; X64-LABEL: pow:414; X64:       # %bb.0: # %entry415; X64-NEXT:    subq $40, %rsp416; X64-NEXT:    fldt {{[0-9]+}}(%rsp)417; X64-NEXT:    fldt {{[0-9]+}}(%rsp)418; X64-NEXT:    fstpt {{[0-9]+}}(%rsp)419; X64-NEXT:    fstpt (%rsp)420; X64-NEXT:    wait421; X64-NEXT:    callq powl@PLT422; X64-NEXT:    addq $40, %rsp423; X64-NEXT:    retq424entry:425  %pow = call x86_fp80 @llvm.experimental.constrained.pow.f80(x86_fp80 %x, x86_fp80 %y, metadata !"round.dynamic", metadata !"fpexcept.strict") #0426  ret x86_fp80 %pow427}428 429define x86_fp80 @powi(x86_fp80 %x, i32 %y) nounwind strictfp {430; X86-LABEL: powi:431; X86:       # %bb.0: # %entry432; X86-NEXT:    subl $16, %esp433; X86-NEXT:    fldt {{[0-9]+}}(%esp)434; X86-NEXT:    wait435; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax436; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)437; X86-NEXT:    fstpt (%esp)438; X86-NEXT:    wait439; X86-NEXT:    calll __powixf2440; X86-NEXT:    addl $16, %esp441; X86-NEXT:    retl442;443; X64-LABEL: powi:444; X64:       # %bb.0: # %entry445; X64-NEXT:    subq $24, %rsp446; X64-NEXT:    fldt {{[0-9]+}}(%rsp)447; X64-NEXT:    fstpt (%rsp)448; X64-NEXT:    wait449; X64-NEXT:    callq __powixf2@PLT450; X64-NEXT:    addq $24, %rsp451; X64-NEXT:    retq452entry:453  %powi = call x86_fp80 @llvm.experimental.constrained.powi.f80(x86_fp80 %x, i32 %y, metadata !"round.dynamic", metadata !"fpexcept.strict") #0454  ret x86_fp80 %powi455}456 457define x86_fp80 @rint(x86_fp80 %x) nounwind strictfp {458; X86-LABEL: rint:459; X86:       # %bb.0: # %entry460; X86-NEXT:    subl $12, %esp461; X86-NEXT:    fldt {{[0-9]+}}(%esp)462; X86-NEXT:    fstpt (%esp)463; X86-NEXT:    wait464; X86-NEXT:    calll rintl465; X86-NEXT:    addl $12, %esp466; X86-NEXT:    retl467;468; X64-LABEL: rint:469; X64:       # %bb.0: # %entry470; X64-NEXT:    subq $24, %rsp471; X64-NEXT:    fldt {{[0-9]+}}(%rsp)472; X64-NEXT:    fstpt (%rsp)473; X64-NEXT:    wait474; X64-NEXT:    callq rintl@PLT475; X64-NEXT:    addq $24, %rsp476; X64-NEXT:    retq477entry:478  %rint = call x86_fp80 @llvm.experimental.constrained.rint.f80(x86_fp80 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0479  ret x86_fp80 %rint480}481 482define x86_fp80 @round(x86_fp80 %x) nounwind strictfp {483; X86-LABEL: round:484; X86:       # %bb.0: # %entry485; X86-NEXT:    subl $12, %esp486; X86-NEXT:    fldt {{[0-9]+}}(%esp)487; X86-NEXT:    fstpt (%esp)488; X86-NEXT:    wait489; X86-NEXT:    calll roundl490; X86-NEXT:    addl $12, %esp491; X86-NEXT:    retl492;493; X64-LABEL: round:494; X64:       # %bb.0: # %entry495; X64-NEXT:    subq $24, %rsp496; X64-NEXT:    fldt {{[0-9]+}}(%rsp)497; X64-NEXT:    fstpt (%rsp)498; X64-NEXT:    wait499; X64-NEXT:    callq roundl@PLT500; X64-NEXT:    addq $24, %rsp501; X64-NEXT:    retq502entry:503  %round = call x86_fp80 @llvm.experimental.constrained.round.f80(x86_fp80 %x, metadata !"fpexcept.strict") #0504  ret x86_fp80 %round505}506 507define x86_fp80 @roundeven(x86_fp80 %x) nounwind strictfp {508; X86-LABEL: roundeven:509; X86:       # %bb.0: # %entry510; X86-NEXT:    subl $12, %esp511; X86-NEXT:    fldt {{[0-9]+}}(%esp)512; X86-NEXT:    fstpt (%esp)513; X86-NEXT:    wait514; X86-NEXT:    calll roundevenl515; X86-NEXT:    addl $12, %esp516; X86-NEXT:    retl517;518; X64-LABEL: roundeven:519; X64:       # %bb.0: # %entry520; X64-NEXT:    subq $24, %rsp521; X64-NEXT:    fldt {{[0-9]+}}(%rsp)522; X64-NEXT:    fstpt (%rsp)523; X64-NEXT:    wait524; X64-NEXT:    callq roundevenl@PLT525; X64-NEXT:    addq $24, %rsp526; X64-NEXT:    retq527entry:528  %roundeven = call x86_fp80 @llvm.experimental.constrained.roundeven.f80(x86_fp80 %x, metadata !"fpexcept.strict") #0529  ret x86_fp80 %roundeven530}531 532define x86_fp80 @asin(x86_fp80 %x) nounwind strictfp {533; X86-LABEL: asin:534; X86:       # %bb.0: # %entry535; X86-NEXT:    subl $12, %esp536; X86-NEXT:    fldt {{[0-9]+}}(%esp)537; X86-NEXT:    fstpt (%esp)538; X86-NEXT:    wait539; X86-NEXT:    calll asinl540; X86-NEXT:    addl $12, %esp541; X86-NEXT:    retl542;543; X64-LABEL: asin:544; X64:       # %bb.0: # %entry545; X64-NEXT:    subq $24, %rsp546; X64-NEXT:    fldt {{[0-9]+}}(%rsp)547; X64-NEXT:    fstpt (%rsp)548; X64-NEXT:    wait549; X64-NEXT:    callq asinl@PLT550; X64-NEXT:    addq $24, %rsp551; X64-NEXT:    retq552entry:553  %asin = call x86_fp80 @llvm.experimental.constrained.asin.f80(x86_fp80 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0554  ret x86_fp80 %asin555}556 557define x86_fp80 @sin(x86_fp80 %x) nounwind strictfp {558; X86-LABEL: sin:559; X86:       # %bb.0: # %entry560; X86-NEXT:    subl $12, %esp561; X86-NEXT:    fldt {{[0-9]+}}(%esp)562; X86-NEXT:    fstpt (%esp)563; X86-NEXT:    wait564; X86-NEXT:    calll sinl565; X86-NEXT:    addl $12, %esp566; X86-NEXT:    retl567;568; X64-LABEL: sin:569; X64:       # %bb.0: # %entry570; X64-NEXT:    subq $24, %rsp571; X64-NEXT:    fldt {{[0-9]+}}(%rsp)572; X64-NEXT:    fstpt (%rsp)573; X64-NEXT:    wait574; X64-NEXT:    callq sinl@PLT575; X64-NEXT:    addq $24, %rsp576; X64-NEXT:    retq577entry:578  %sin = call x86_fp80 @llvm.experimental.constrained.sin.f80(x86_fp80 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0579  ret x86_fp80 %sin580}581 582define x86_fp80 @sinh(x86_fp80 %x) nounwind strictfp {583; X86-LABEL: sinh:584; X86:       # %bb.0: # %entry585; X86-NEXT:    subl $12, %esp586; X86-NEXT:    fldt {{[0-9]+}}(%esp)587; X86-NEXT:    fstpt (%esp)588; X86-NEXT:    wait589; X86-NEXT:    calll sinhl590; X86-NEXT:    addl $12, %esp591; X86-NEXT:    retl592;593; X64-LABEL: sinh:594; X64:       # %bb.0: # %entry595; X64-NEXT:    subq $24, %rsp596; X64-NEXT:    fldt {{[0-9]+}}(%rsp)597; X64-NEXT:    fstpt (%rsp)598; X64-NEXT:    wait599; X64-NEXT:    callq sinhl@PLT600; X64-NEXT:    addq $24, %rsp601; X64-NEXT:    retq602entry:603  %sinh = call x86_fp80 @llvm.experimental.constrained.sinh.f80(x86_fp80 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0604  ret x86_fp80 %sinh605}606 607define x86_fp80 @atan(x86_fp80 %x) nounwind strictfp {608; X86-LABEL: atan:609; X86:       # %bb.0: # %entry610; X86-NEXT:    subl $12, %esp611; X86-NEXT:    fldt {{[0-9]+}}(%esp)612; X86-NEXT:    fstpt (%esp)613; X86-NEXT:    wait614; X86-NEXT:    calll atanl615; X86-NEXT:    addl $12, %esp616; X86-NEXT:    retl617;618; X64-LABEL: atan:619; X64:       # %bb.0: # %entry620; X64-NEXT:    subq $24, %rsp621; X64-NEXT:    fldt {{[0-9]+}}(%rsp)622; X64-NEXT:    fstpt (%rsp)623; X64-NEXT:    wait624; X64-NEXT:    callq atanl@PLT625; X64-NEXT:    addq $24, %rsp626; X64-NEXT:    retq627entry:628  %atan = call x86_fp80 @llvm.experimental.constrained.atan.f80(x86_fp80 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0629  ret x86_fp80 %atan630}631 632define x86_fp80 @atan2(x86_fp80 %x, x86_fp80 %y) nounwind strictfp {633; X86-LABEL: atan2:634; X86:       # %bb.0: # %entry635; X86-NEXT:    subl $24, %esp636; X86-NEXT:    fldt {{[0-9]+}}(%esp)637; X86-NEXT:    fldt {{[0-9]+}}(%esp)638; X86-NEXT:    fstpt {{[0-9]+}}(%esp)639; X86-NEXT:    fstpt (%esp)640; X86-NEXT:    wait641; X86-NEXT:    calll atan2l642; X86-NEXT:    addl $24, %esp643; X86-NEXT:    retl644;645; X64-LABEL: atan2:646; X64:       # %bb.0: # %entry647; X64-NEXT:    subq $40, %rsp648; X64-NEXT:    fldt {{[0-9]+}}(%rsp)649; X64-NEXT:    fldt {{[0-9]+}}(%rsp)650; X64-NEXT:    fstpt {{[0-9]+}}(%rsp)651; X64-NEXT:    fstpt (%rsp)652; X64-NEXT:    wait653; X64-NEXT:    callq atan2l@PLT654; X64-NEXT:    addq $40, %rsp655; X64-NEXT:    retq656entry:657  %atan2 = call x86_fp80 @llvm.experimental.constrained.atan2.f80(x86_fp80 %x, x86_fp80 %y, metadata !"round.dynamic", metadata !"fpexcept.strict") #0658  ret x86_fp80 %atan2659}660 661define x86_fp80 @tan(x86_fp80 %x) nounwind strictfp {662; X86-LABEL: tan:663; X86:       # %bb.0: # %entry664; X86-NEXT:    subl $12, %esp665; X86-NEXT:    fldt {{[0-9]+}}(%esp)666; X86-NEXT:    fstpt (%esp)667; X86-NEXT:    wait668; X86-NEXT:    calll tanl669; X86-NEXT:    addl $12, %esp670; X86-NEXT:    retl671;672; X64-LABEL: tan:673; X64:       # %bb.0: # %entry674; X64-NEXT:    subq $24, %rsp675; X64-NEXT:    fldt {{[0-9]+}}(%rsp)676; X64-NEXT:    fstpt (%rsp)677; X64-NEXT:    wait678; X64-NEXT:    callq tanl@PLT679; X64-NEXT:    addq $24, %rsp680; X64-NEXT:    retq681entry:682  %tan = call x86_fp80 @llvm.experimental.constrained.tan.f80(x86_fp80 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0683  ret x86_fp80 %tan684}685 686define x86_fp80 @tanh(x86_fp80 %x) nounwind strictfp {687; X86-LABEL: tanh:688; X86:       # %bb.0: # %entry689; X86-NEXT:    subl $12, %esp690; X86-NEXT:    fldt {{[0-9]+}}(%esp)691; X86-NEXT:    fstpt (%esp)692; X86-NEXT:    wait693; X86-NEXT:    calll tanhl694; X86-NEXT:    addl $12, %esp695; X86-NEXT:    retl696;697; X64-LABEL: tanh:698; X64:       # %bb.0: # %entry699; X64-NEXT:    subq $24, %rsp700; X64-NEXT:    fldt {{[0-9]+}}(%rsp)701; X64-NEXT:    fstpt (%rsp)702; X64-NEXT:    wait703; X64-NEXT:    callq tanhl@PLT704; X64-NEXT:    addq $24, %rsp705; X64-NEXT:    retq706entry:707  %tanh = call x86_fp80 @llvm.experimental.constrained.tanh.f80(x86_fp80 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0708  ret x86_fp80 %tanh709}710 711define x86_fp80 @trunc(x86_fp80 %x) nounwind strictfp {712; X86-LABEL: trunc:713; X86:       # %bb.0: # %entry714; X86-NEXT:    subl $12, %esp715; X86-NEXT:    fldt {{[0-9]+}}(%esp)716; X86-NEXT:    fstpt (%esp)717; X86-NEXT:    wait718; X86-NEXT:    calll truncl719; X86-NEXT:    addl $12, %esp720; X86-NEXT:    retl721;722; X64-LABEL: trunc:723; X64:       # %bb.0: # %entry724; X64-NEXT:    subq $24, %rsp725; X64-NEXT:    fldt {{[0-9]+}}(%rsp)726; X64-NEXT:    fstpt (%rsp)727; X64-NEXT:    wait728; X64-NEXT:    callq truncl@PLT729; X64-NEXT:    addq $24, %rsp730; X64-NEXT:    retq731entry:732  %trunc = call x86_fp80 @llvm.experimental.constrained.trunc.f80(x86_fp80 %x, metadata !"fpexcept.strict") #0733  ret x86_fp80 %trunc734}735 736define i32 @lrint(x86_fp80 %x) nounwind strictfp {737; X86-LABEL: lrint:738; X86:       # %bb.0: # %entry739; X86-NEXT:    subl $12, %esp740; X86-NEXT:    fldt {{[0-9]+}}(%esp)741; X86-NEXT:    fstpt (%esp)742; X86-NEXT:    wait743; X86-NEXT:    calll lrintl744; X86-NEXT:    addl $12, %esp745; X86-NEXT:    retl746;747; X64-LABEL: lrint:748; X64:       # %bb.0: # %entry749; X64-NEXT:    subq $24, %rsp750; X64-NEXT:    fldt {{[0-9]+}}(%rsp)751; X64-NEXT:    fstpt (%rsp)752; X64-NEXT:    wait753; X64-NEXT:    callq lrintl@PLT754; X64-NEXT:    addq $24, %rsp755; X64-NEXT:    retq756entry:757  %rint = call i32 @llvm.experimental.constrained.lrint.i32.f80(x86_fp80 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0758  ret i32 %rint759}760 761define i64 @llrint(x86_fp80 %x) nounwind strictfp {762; X86-LABEL: llrint:763; X86:       # %bb.0: # %entry764; X86-NEXT:    subl $12, %esp765; X86-NEXT:    fldt {{[0-9]+}}(%esp)766; X86-NEXT:    fstpt (%esp)767; X86-NEXT:    wait768; X86-NEXT:    calll llrintl769; X86-NEXT:    addl $12, %esp770; X86-NEXT:    retl771;772; X64-LABEL: llrint:773; X64:       # %bb.0: # %entry774; X64-NEXT:    subq $24, %rsp775; X64-NEXT:    fldt {{[0-9]+}}(%rsp)776; X64-NEXT:    fstpt (%rsp)777; X64-NEXT:    wait778; X64-NEXT:    callq llrintl@PLT779; X64-NEXT:    addq $24, %rsp780; X64-NEXT:    retq781entry:782  %rint = call i64 @llvm.experimental.constrained.llrint.i64.f80(x86_fp80 %x, metadata !"round.dynamic", metadata !"fpexcept.strict") #0783  ret i64 %rint784}785 786define i32 @lround(x86_fp80 %x) nounwind strictfp {787; X86-LABEL: lround:788; X86:       # %bb.0: # %entry789; X86-NEXT:    subl $12, %esp790; X86-NEXT:    fldt {{[0-9]+}}(%esp)791; X86-NEXT:    fstpt (%esp)792; X86-NEXT:    wait793; X86-NEXT:    calll lroundl794; X86-NEXT:    addl $12, %esp795; X86-NEXT:    retl796;797; X64-LABEL: lround:798; X64:       # %bb.0: # %entry799; X64-NEXT:    subq $24, %rsp800; X64-NEXT:    fldt {{[0-9]+}}(%rsp)801; X64-NEXT:    fstpt (%rsp)802; X64-NEXT:    wait803; X64-NEXT:    callq lroundl@PLT804; X64-NEXT:    addq $24, %rsp805; X64-NEXT:    retq806entry:807  %round = call i32 @llvm.experimental.constrained.lround.i32.f80(x86_fp80 %x, metadata !"fpexcept.strict") #0808  ret i32 %round809}810 811define i64 @llround(x86_fp80 %x) nounwind strictfp {812; X86-LABEL: llround:813; X86:       # %bb.0: # %entry814; X86-NEXT:    subl $12, %esp815; X86-NEXT:    fldt {{[0-9]+}}(%esp)816; X86-NEXT:    fstpt (%esp)817; X86-NEXT:    wait818; X86-NEXT:    calll llroundl819; X86-NEXT:    addl $12, %esp820; X86-NEXT:    retl821;822; X64-LABEL: llround:823; X64:       # %bb.0: # %entry824; X64-NEXT:    subq $24, %rsp825; X64-NEXT:    fldt {{[0-9]+}}(%rsp)826; X64-NEXT:    fstpt (%rsp)827; X64-NEXT:    wait828; X64-NEXT:    callq llroundl@PLT829; X64-NEXT:    addq $24, %rsp830; X64-NEXT:    retq831entry:832  %round = call i64 @llvm.experimental.constrained.llround.i64.f80(x86_fp80 %x, metadata !"fpexcept.strict") #0833  ret i64 %round834}835 836attributes #0 = { strictfp }837 838declare x86_fp80 @llvm.experimental.constrained.fma.f80(x86_fp80, x86_fp80, x86_fp80, metadata, metadata)839declare x86_fp80 @llvm.experimental.constrained.frem.f80(x86_fp80, x86_fp80, metadata, metadata)840declare x86_fp80 @llvm.experimental.constrained.ceil.f80(x86_fp80, metadata)841declare x86_fp80 @llvm.experimental.constrained.acos.f80(x86_fp80, metadata, metadata)842declare x86_fp80 @llvm.experimental.constrained.cos.f80(x86_fp80, metadata, metadata)843declare x86_fp80 @llvm.experimental.constrained.cosh.f80(x86_fp80, metadata, metadata)844declare x86_fp80 @llvm.experimental.constrained.exp.f80(x86_fp80, metadata, metadata)845declare x86_fp80 @llvm.experimental.constrained.exp2.f80(x86_fp80, metadata, metadata)846declare x86_fp80 @llvm.experimental.constrained.floor.f80(x86_fp80, metadata)847declare x86_fp80 @llvm.experimental.constrained.log.f80(x86_fp80, metadata, metadata)848declare x86_fp80 @llvm.experimental.constrained.log10.f80(x86_fp80, metadata, metadata)849declare x86_fp80 @llvm.experimental.constrained.log2.f80(x86_fp80, metadata, metadata)850declare x86_fp80 @llvm.experimental.constrained.maxnum.f80(x86_fp80, x86_fp80, metadata)851declare x86_fp80 @llvm.experimental.constrained.minnum.f80(x86_fp80, x86_fp80, metadata)852declare x86_fp80 @llvm.experimental.constrained.nearbyint.f80(x86_fp80, metadata, metadata)853declare x86_fp80 @llvm.experimental.constrained.pow.f80(x86_fp80, x86_fp80, metadata, metadata)854declare x86_fp80 @llvm.experimental.constrained.powi.f80(x86_fp80, i32, metadata, metadata)855declare x86_fp80 @llvm.experimental.constrained.rint.f80(x86_fp80, metadata, metadata)856declare x86_fp80 @llvm.experimental.constrained.round.f80(x86_fp80, metadata)857declare x86_fp80 @llvm.experimental.constrained.roundeven.f80(x86_fp80, metadata)858declare x86_fp80 @llvm.experimental.constrained.asin.f80(x86_fp80, metadata, metadata)859declare x86_fp80 @llvm.experimental.constrained.sin.f80(x86_fp80, metadata, metadata)860declare x86_fp80 @llvm.experimental.constrained.sinh.f80(x86_fp80, metadata, metadata)861declare x86_fp80 @llvm.experimental.constrained.atan.f80(x86_fp80, metadata, metadata)862declare x86_fp80 @llvm.experimental.constrained.atan2.f80(x86_fp80, x86_fp80, metadata, metadata)863declare x86_fp80 @llvm.experimental.constrained.tan.f80(x86_fp80, metadata, metadata)864declare x86_fp80 @llvm.experimental.constrained.tanh.f80(x86_fp80, metadata, metadata)865declare x86_fp80 @llvm.experimental.constrained.trunc.f80(x86_fp80, metadata)866declare i32 @llvm.experimental.constrained.lrint.i32.f80(x86_fp80, metadata, metadata)867declare i64 @llvm.experimental.constrained.llrint.i64.f80(x86_fp80, metadata, metadata)868declare i32 @llvm.experimental.constrained.lround.i32.f80(x86_fp80, metadata)869declare i64 @llvm.experimental.constrained.llround.i64.f80(x86_fp80, metadata)870