brintos

brintos / llvm-project-archived public Read only

0
0
Text · 33.0 KiB · dbeb898 Raw
1139 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i386-unknown | FileCheck %s --check-prefix=X863; RUN: llc < %s -mtriple=x86_64-unknown | FileCheck %s --check-prefixes=X64,X64-X874; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ssse3 | FileCheck %s --check-prefixes=X64,X64-SSSE35 6;7; fptosi8;9 10define i16 @fptosi_i16_fp80(x86_fp80 %a0) nounwind {11; X86-LABEL: fptosi_i16_fp80:12; X86:       # %bb.0:13; X86-NEXT:    subl $8, %esp14; X86-NEXT:    fldt {{[0-9]+}}(%esp)15; X86-NEXT:    fnstcw {{[0-9]+}}(%esp)16; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax17; X86-NEXT:    orl $3072, %eax # imm = 0xC0018; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)19; X86-NEXT:    fldcw {{[0-9]+}}(%esp)20; X86-NEXT:    fistps {{[0-9]+}}(%esp)21; X86-NEXT:    fldcw {{[0-9]+}}(%esp)22; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax23; X86-NEXT:    addl $8, %esp24; X86-NEXT:    retl25;26; X64-X87-LABEL: fptosi_i16_fp80:27; X64-X87:       # %bb.0:28; X64-X87-NEXT:    fldt {{[0-9]+}}(%rsp)29; X64-X87-NEXT:    fnstcw -{{[0-9]+}}(%rsp)30; X64-X87-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax31; X64-X87-NEXT:    orl $3072, %eax # imm = 0xC0032; X64-X87-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)33; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)34; X64-X87-NEXT:    fistps -{{[0-9]+}}(%rsp)35; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)36; X64-X87-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax37; X64-X87-NEXT:    retq38;39; X64-SSSE3-LABEL: fptosi_i16_fp80:40; X64-SSSE3:       # %bb.0:41; X64-SSSE3-NEXT:    fldt {{[0-9]+}}(%rsp)42; X64-SSSE3-NEXT:    fisttps -{{[0-9]+}}(%rsp)43; X64-SSSE3-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax44; X64-SSSE3-NEXT:    retq45  %1 = fptosi x86_fp80 %a0 to i1646  ret i16  %147}48 49define i16 @fptosi_i16_fp80_ld(ptr%a0) nounwind {50; X86-LABEL: fptosi_i16_fp80_ld:51; X86:       # %bb.0:52; X86-NEXT:    subl $8, %esp53; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax54; X86-NEXT:    fldt (%eax)55; X86-NEXT:    fnstcw {{[0-9]+}}(%esp)56; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax57; X86-NEXT:    orl $3072, %eax # imm = 0xC0058; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)59; X86-NEXT:    fldcw {{[0-9]+}}(%esp)60; X86-NEXT:    fistps {{[0-9]+}}(%esp)61; X86-NEXT:    fldcw {{[0-9]+}}(%esp)62; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax63; X86-NEXT:    addl $8, %esp64; X86-NEXT:    retl65;66; X64-X87-LABEL: fptosi_i16_fp80_ld:67; X64-X87:       # %bb.0:68; X64-X87-NEXT:    fldt (%rdi)69; X64-X87-NEXT:    fnstcw -{{[0-9]+}}(%rsp)70; X64-X87-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax71; X64-X87-NEXT:    orl $3072, %eax # imm = 0xC0072; X64-X87-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)73; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)74; X64-X87-NEXT:    fistps -{{[0-9]+}}(%rsp)75; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)76; X64-X87-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax77; X64-X87-NEXT:    retq78;79; X64-SSSE3-LABEL: fptosi_i16_fp80_ld:80; X64-SSSE3:       # %bb.0:81; X64-SSSE3-NEXT:    fldt (%rdi)82; X64-SSSE3-NEXT:    fisttps -{{[0-9]+}}(%rsp)83; X64-SSSE3-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax84; X64-SSSE3-NEXT:    retq85  %1 = load x86_fp80, ptr%a086  %2 = fptosi x86_fp80 %1 to i1687  ret i16  %288}89 90define i32 @fptosi_i32_fp80(x86_fp80 %a0) nounwind {91; X86-LABEL: fptosi_i32_fp80:92; X86:       # %bb.0:93; X86-NEXT:    subl $8, %esp94; X86-NEXT:    fldt {{[0-9]+}}(%esp)95; X86-NEXT:    fnstcw (%esp)96; X86-NEXT:    movzwl (%esp), %eax97; X86-NEXT:    orl $3072, %eax # imm = 0xC0098; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)99; X86-NEXT:    fldcw {{[0-9]+}}(%esp)100; X86-NEXT:    fistpl {{[0-9]+}}(%esp)101; X86-NEXT:    fldcw (%esp)102; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax103; X86-NEXT:    addl $8, %esp104; X86-NEXT:    retl105;106; X64-X87-LABEL: fptosi_i32_fp80:107; X64-X87:       # %bb.0:108; X64-X87-NEXT:    fldt {{[0-9]+}}(%rsp)109; X64-X87-NEXT:    fnstcw -{{[0-9]+}}(%rsp)110; X64-X87-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax111; X64-X87-NEXT:    orl $3072, %eax # imm = 0xC00112; X64-X87-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)113; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)114; X64-X87-NEXT:    fistpl -{{[0-9]+}}(%rsp)115; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)116; X64-X87-NEXT:    movl -{{[0-9]+}}(%rsp), %eax117; X64-X87-NEXT:    retq118;119; X64-SSSE3-LABEL: fptosi_i32_fp80:120; X64-SSSE3:       # %bb.0:121; X64-SSSE3-NEXT:    fldt {{[0-9]+}}(%rsp)122; X64-SSSE3-NEXT:    fisttpl -{{[0-9]+}}(%rsp)123; X64-SSSE3-NEXT:    movl -{{[0-9]+}}(%rsp), %eax124; X64-SSSE3-NEXT:    retq125  %1 = fptosi x86_fp80 %a0 to i32126  ret i32  %1127}128 129define i32 @fptosi_i32_fp80_ld(ptr%a0) nounwind {130; X86-LABEL: fptosi_i32_fp80_ld:131; X86:       # %bb.0:132; X86-NEXT:    subl $8, %esp133; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax134; X86-NEXT:    fldt (%eax)135; X86-NEXT:    fnstcw (%esp)136; X86-NEXT:    movzwl (%esp), %eax137; X86-NEXT:    orl $3072, %eax # imm = 0xC00138; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)139; X86-NEXT:    fldcw {{[0-9]+}}(%esp)140; X86-NEXT:    fistpl {{[0-9]+}}(%esp)141; X86-NEXT:    fldcw (%esp)142; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax143; X86-NEXT:    addl $8, %esp144; X86-NEXT:    retl145;146; X64-X87-LABEL: fptosi_i32_fp80_ld:147; X64-X87:       # %bb.0:148; X64-X87-NEXT:    fldt (%rdi)149; X64-X87-NEXT:    fnstcw -{{[0-9]+}}(%rsp)150; X64-X87-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax151; X64-X87-NEXT:    orl $3072, %eax # imm = 0xC00152; X64-X87-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)153; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)154; X64-X87-NEXT:    fistpl -{{[0-9]+}}(%rsp)155; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)156; X64-X87-NEXT:    movl -{{[0-9]+}}(%rsp), %eax157; X64-X87-NEXT:    retq158;159; X64-SSSE3-LABEL: fptosi_i32_fp80_ld:160; X64-SSSE3:       # %bb.0:161; X64-SSSE3-NEXT:    fldt (%rdi)162; X64-SSSE3-NEXT:    fisttpl -{{[0-9]+}}(%rsp)163; X64-SSSE3-NEXT:    movl -{{[0-9]+}}(%rsp), %eax164; X64-SSSE3-NEXT:    retq165  %1 = load x86_fp80, ptr%a0166  %2 = fptosi x86_fp80 %1 to i32167  ret i32  %2168}169 170define i64 @fptosi_i64_fp80(x86_fp80 %a0) nounwind {171; X86-LABEL: fptosi_i64_fp80:172; X86:       # %bb.0:173; X86-NEXT:    pushl %ebp174; X86-NEXT:    movl %esp, %ebp175; X86-NEXT:    andl $-8, %esp176; X86-NEXT:    subl $16, %esp177; X86-NEXT:    fldt 8(%ebp)178; X86-NEXT:    fnstcw {{[0-9]+}}(%esp)179; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax180; X86-NEXT:    orl $3072, %eax # imm = 0xC00181; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)182; X86-NEXT:    fldcw {{[0-9]+}}(%esp)183; X86-NEXT:    fistpll {{[0-9]+}}(%esp)184; X86-NEXT:    fldcw {{[0-9]+}}(%esp)185; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax186; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx187; X86-NEXT:    movl %ebp, %esp188; X86-NEXT:    popl %ebp189; X86-NEXT:    retl190;191; X64-X87-LABEL: fptosi_i64_fp80:192; X64-X87:       # %bb.0:193; X64-X87-NEXT:    fldt {{[0-9]+}}(%rsp)194; X64-X87-NEXT:    fnstcw -{{[0-9]+}}(%rsp)195; X64-X87-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax196; X64-X87-NEXT:    orl $3072, %eax # imm = 0xC00197; X64-X87-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)198; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)199; X64-X87-NEXT:    fistpll -{{[0-9]+}}(%rsp)200; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)201; X64-X87-NEXT:    movq -{{[0-9]+}}(%rsp), %rax202; X64-X87-NEXT:    retq203;204; X64-SSSE3-LABEL: fptosi_i64_fp80:205; X64-SSSE3:       # %bb.0:206; X64-SSSE3-NEXT:    fldt {{[0-9]+}}(%rsp)207; X64-SSSE3-NEXT:    fisttpll -{{[0-9]+}}(%rsp)208; X64-SSSE3-NEXT:    movq -{{[0-9]+}}(%rsp), %rax209; X64-SSSE3-NEXT:    retq210  %1 = fptosi x86_fp80 %a0 to i64211  ret i64  %1212}213 214define i64 @fptosi_i64_fp80_ld(ptr%a0) nounwind {215; X86-LABEL: fptosi_i64_fp80_ld:216; X86:       # %bb.0:217; X86-NEXT:    pushl %ebp218; X86-NEXT:    movl %esp, %ebp219; X86-NEXT:    andl $-8, %esp220; X86-NEXT:    subl $16, %esp221; X86-NEXT:    movl 8(%ebp), %eax222; X86-NEXT:    fldt (%eax)223; X86-NEXT:    fnstcw {{[0-9]+}}(%esp)224; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax225; X86-NEXT:    orl $3072, %eax # imm = 0xC00226; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)227; X86-NEXT:    fldcw {{[0-9]+}}(%esp)228; X86-NEXT:    fistpll {{[0-9]+}}(%esp)229; X86-NEXT:    fldcw {{[0-9]+}}(%esp)230; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax231; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx232; X86-NEXT:    movl %ebp, %esp233; X86-NEXT:    popl %ebp234; X86-NEXT:    retl235;236; X64-X87-LABEL: fptosi_i64_fp80_ld:237; X64-X87:       # %bb.0:238; X64-X87-NEXT:    fldt (%rdi)239; X64-X87-NEXT:    fnstcw -{{[0-9]+}}(%rsp)240; X64-X87-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax241; X64-X87-NEXT:    orl $3072, %eax # imm = 0xC00242; X64-X87-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)243; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)244; X64-X87-NEXT:    fistpll -{{[0-9]+}}(%rsp)245; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)246; X64-X87-NEXT:    movq -{{[0-9]+}}(%rsp), %rax247; X64-X87-NEXT:    retq248;249; X64-SSSE3-LABEL: fptosi_i64_fp80_ld:250; X64-SSSE3:       # %bb.0:251; X64-SSSE3-NEXT:    fldt (%rdi)252; X64-SSSE3-NEXT:    fisttpll -{{[0-9]+}}(%rsp)253; X64-SSSE3-NEXT:    movq -{{[0-9]+}}(%rsp), %rax254; X64-SSSE3-NEXT:    retq255  %1 = load x86_fp80, ptr%a0256  %2 = fptosi x86_fp80 %1 to i64257  ret i64  %2258}259 260;261; fptoui262;263 264define i16 @fptoui_i16_fp80(x86_fp80 %a0) nounwind {265; X86-LABEL: fptoui_i16_fp80:266; X86:       # %bb.0:267; X86-NEXT:    subl $8, %esp268; X86-NEXT:    fldt {{[0-9]+}}(%esp)269; X86-NEXT:    fnstcw (%esp)270; X86-NEXT:    movzwl (%esp), %eax271; X86-NEXT:    orl $3072, %eax # imm = 0xC00272; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)273; X86-NEXT:    fldcw {{[0-9]+}}(%esp)274; X86-NEXT:    fistpl {{[0-9]+}}(%esp)275; X86-NEXT:    fldcw (%esp)276; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax277; X86-NEXT:    # kill: def $ax killed $ax killed $eax278; X86-NEXT:    addl $8, %esp279; X86-NEXT:    retl280;281; X64-X87-LABEL: fptoui_i16_fp80:282; X64-X87:       # %bb.0:283; X64-X87-NEXT:    fldt {{[0-9]+}}(%rsp)284; X64-X87-NEXT:    fnstcw -{{[0-9]+}}(%rsp)285; X64-X87-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax286; X64-X87-NEXT:    orl $3072, %eax # imm = 0xC00287; X64-X87-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)288; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)289; X64-X87-NEXT:    fistpl -{{[0-9]+}}(%rsp)290; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)291; X64-X87-NEXT:    movl -{{[0-9]+}}(%rsp), %eax292; X64-X87-NEXT:    # kill: def $ax killed $ax killed $eax293; X64-X87-NEXT:    retq294;295; X64-SSSE3-LABEL: fptoui_i16_fp80:296; X64-SSSE3:       # %bb.0:297; X64-SSSE3-NEXT:    fldt {{[0-9]+}}(%rsp)298; X64-SSSE3-NEXT:    fisttpl -{{[0-9]+}}(%rsp)299; X64-SSSE3-NEXT:    movl -{{[0-9]+}}(%rsp), %eax300; X64-SSSE3-NEXT:    # kill: def $ax killed $ax killed $eax301; X64-SSSE3-NEXT:    retq302  %1 = fptoui x86_fp80 %a0 to i16303  ret i16  %1304}305 306define i16 @fptoui_i16_fp80_ld(ptr%a0) nounwind {307; X86-LABEL: fptoui_i16_fp80_ld:308; X86:       # %bb.0:309; X86-NEXT:    subl $8, %esp310; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax311; X86-NEXT:    fldt (%eax)312; X86-NEXT:    fnstcw (%esp)313; X86-NEXT:    movzwl (%esp), %eax314; X86-NEXT:    orl $3072, %eax # imm = 0xC00315; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)316; X86-NEXT:    fldcw {{[0-9]+}}(%esp)317; X86-NEXT:    fistpl {{[0-9]+}}(%esp)318; X86-NEXT:    fldcw (%esp)319; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax320; X86-NEXT:    # kill: def $ax killed $ax killed $eax321; X86-NEXT:    addl $8, %esp322; X86-NEXT:    retl323;324; X64-X87-LABEL: fptoui_i16_fp80_ld:325; X64-X87:       # %bb.0:326; X64-X87-NEXT:    fldt (%rdi)327; X64-X87-NEXT:    fnstcw -{{[0-9]+}}(%rsp)328; X64-X87-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax329; X64-X87-NEXT:    orl $3072, %eax # imm = 0xC00330; X64-X87-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)331; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)332; X64-X87-NEXT:    fistpl -{{[0-9]+}}(%rsp)333; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)334; X64-X87-NEXT:    movl -{{[0-9]+}}(%rsp), %eax335; X64-X87-NEXT:    # kill: def $ax killed $ax killed $eax336; X64-X87-NEXT:    retq337;338; X64-SSSE3-LABEL: fptoui_i16_fp80_ld:339; X64-SSSE3:       # %bb.0:340; X64-SSSE3-NEXT:    fldt (%rdi)341; X64-SSSE3-NEXT:    fisttpl -{{[0-9]+}}(%rsp)342; X64-SSSE3-NEXT:    movl -{{[0-9]+}}(%rsp), %eax343; X64-SSSE3-NEXT:    # kill: def $ax killed $ax killed $eax344; X64-SSSE3-NEXT:    retq345  %1 = load x86_fp80, ptr%a0346  %2 = fptoui x86_fp80 %1 to i16347  ret i16  %2348}349 350define i32 @fptoui_i32_fp80(x86_fp80 %a0) nounwind {351; X86-LABEL: fptoui_i32_fp80:352; X86:       # %bb.0:353; X86-NEXT:    pushl %ebp354; X86-NEXT:    movl %esp, %ebp355; X86-NEXT:    andl $-8, %esp356; X86-NEXT:    subl $16, %esp357; X86-NEXT:    fldt 8(%ebp)358; X86-NEXT:    fnstcw {{[0-9]+}}(%esp)359; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax360; X86-NEXT:    orl $3072, %eax # imm = 0xC00361; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)362; X86-NEXT:    fldcw {{[0-9]+}}(%esp)363; X86-NEXT:    fistpll {{[0-9]+}}(%esp)364; X86-NEXT:    fldcw {{[0-9]+}}(%esp)365; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax366; X86-NEXT:    movl %ebp, %esp367; X86-NEXT:    popl %ebp368; X86-NEXT:    retl369;370; X64-X87-LABEL: fptoui_i32_fp80:371; X64-X87:       # %bb.0:372; X64-X87-NEXT:    fldt {{[0-9]+}}(%rsp)373; X64-X87-NEXT:    fnstcw -{{[0-9]+}}(%rsp)374; X64-X87-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax375; X64-X87-NEXT:    orl $3072, %eax # imm = 0xC00376; X64-X87-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)377; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)378; X64-X87-NEXT:    fistpll -{{[0-9]+}}(%rsp)379; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)380; X64-X87-NEXT:    movl -{{[0-9]+}}(%rsp), %eax381; X64-X87-NEXT:    retq382;383; X64-SSSE3-LABEL: fptoui_i32_fp80:384; X64-SSSE3:       # %bb.0:385; X64-SSSE3-NEXT:    fldt {{[0-9]+}}(%rsp)386; X64-SSSE3-NEXT:    fisttpll -{{[0-9]+}}(%rsp)387; X64-SSSE3-NEXT:    movl -{{[0-9]+}}(%rsp), %eax388; X64-SSSE3-NEXT:    retq389  %1 = fptoui x86_fp80 %a0 to i32390  ret i32  %1391}392 393define i32 @fptoui_i32_fp80_ld(ptr%a0) nounwind {394; X86-LABEL: fptoui_i32_fp80_ld:395; X86:       # %bb.0:396; X86-NEXT:    pushl %ebp397; X86-NEXT:    movl %esp, %ebp398; X86-NEXT:    andl $-8, %esp399; X86-NEXT:    subl $16, %esp400; X86-NEXT:    movl 8(%ebp), %eax401; X86-NEXT:    fldt (%eax)402; X86-NEXT:    fnstcw {{[0-9]+}}(%esp)403; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax404; X86-NEXT:    orl $3072, %eax # imm = 0xC00405; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)406; X86-NEXT:    fldcw {{[0-9]+}}(%esp)407; X86-NEXT:    fistpll {{[0-9]+}}(%esp)408; X86-NEXT:    fldcw {{[0-9]+}}(%esp)409; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax410; X86-NEXT:    movl %ebp, %esp411; X86-NEXT:    popl %ebp412; X86-NEXT:    retl413;414; X64-X87-LABEL: fptoui_i32_fp80_ld:415; X64-X87:       # %bb.0:416; X64-X87-NEXT:    fldt (%rdi)417; X64-X87-NEXT:    fnstcw -{{[0-9]+}}(%rsp)418; X64-X87-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax419; X64-X87-NEXT:    orl $3072, %eax # imm = 0xC00420; X64-X87-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)421; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)422; X64-X87-NEXT:    fistpll -{{[0-9]+}}(%rsp)423; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)424; X64-X87-NEXT:    movl -{{[0-9]+}}(%rsp), %eax425; X64-X87-NEXT:    retq426;427; X64-SSSE3-LABEL: fptoui_i32_fp80_ld:428; X64-SSSE3:       # %bb.0:429; X64-SSSE3-NEXT:    fldt (%rdi)430; X64-SSSE3-NEXT:    fisttpll -{{[0-9]+}}(%rsp)431; X64-SSSE3-NEXT:    movl -{{[0-9]+}}(%rsp), %eax432; X64-SSSE3-NEXT:    retq433  %1 = load x86_fp80, ptr%a0434  %2 = fptoui x86_fp80 %1 to i32435  ret i32  %2436}437 438define i64 @fptoui_i64_fp80(x86_fp80 %a0) nounwind {439; X86-LABEL: fptoui_i64_fp80:440; X86:       # %bb.0:441; X86-NEXT:    pushl %ebp442; X86-NEXT:    movl %esp, %ebp443; X86-NEXT:    andl $-8, %esp444; X86-NEXT:    subl $16, %esp445; X86-NEXT:    fldt 8(%ebp)446; X86-NEXT:    flds {{\.?LCPI[0-9]+_[0-9]+}}447; X86-NEXT:    fucom %st(1)448; X86-NEXT:    fnstsw %ax449; X86-NEXT:    xorl %edx, %edx450; X86-NEXT:    # kill: def $ah killed $ah killed $ax451; X86-NEXT:    sahf452; X86-NEXT:    setbe %al453; X86-NEXT:    fldz454; X86-NEXT:    jbe .LBB10_2455; X86-NEXT:  # %bb.1:456; X86-NEXT:    fstp %st(1)457; X86-NEXT:    fldz458; X86-NEXT:  .LBB10_2:459; X86-NEXT:    fstp %st(0)460; X86-NEXT:    fsubrp %st, %st(1)461; X86-NEXT:    fnstcw {{[0-9]+}}(%esp)462; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %ecx463; X86-NEXT:    orl $3072, %ecx # imm = 0xC00464; X86-NEXT:    movw %cx, {{[0-9]+}}(%esp)465; X86-NEXT:    fldcw {{[0-9]+}}(%esp)466; X86-NEXT:    fistpll {{[0-9]+}}(%esp)467; X86-NEXT:    fldcw {{[0-9]+}}(%esp)468; X86-NEXT:    movb %al, %dl469; X86-NEXT:    shll $31, %edx470; X86-NEXT:    xorl {{[0-9]+}}(%esp), %edx471; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax472; X86-NEXT:    movl %ebp, %esp473; X86-NEXT:    popl %ebp474; X86-NEXT:    retl475;476; X64-X87-LABEL: fptoui_i64_fp80:477; X64-X87:       # %bb.0:478; X64-X87-NEXT:    fldt {{[0-9]+}}(%rsp)479; X64-X87-NEXT:    flds {{\.?LCPI[0-9]+_[0-9]+}}(%rip)480; X64-X87-NEXT:    xorl %eax, %eax481; X64-X87-NEXT:    fucomi %st(1), %st482; X64-X87-NEXT:    setbe %al483; X64-X87-NEXT:    fldz484; X64-X87-NEXT:    fcmovbe %st(1), %st485; X64-X87-NEXT:    fstp %st(1)486; X64-X87-NEXT:    fsubrp %st, %st(1)487; X64-X87-NEXT:    fnstcw -{{[0-9]+}}(%rsp)488; X64-X87-NEXT:    movzwl -{{[0-9]+}}(%rsp), %ecx489; X64-X87-NEXT:    orl $3072, %ecx # imm = 0xC00490; X64-X87-NEXT:    movw %cx, -{{[0-9]+}}(%rsp)491; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)492; X64-X87-NEXT:    fistpll -{{[0-9]+}}(%rsp)493; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)494; X64-X87-NEXT:    shlq $63, %rax495; X64-X87-NEXT:    xorq -{{[0-9]+}}(%rsp), %rax496; X64-X87-NEXT:    retq497;498; X64-SSSE3-LABEL: fptoui_i64_fp80:499; X64-SSSE3:       # %bb.0:500; X64-SSSE3-NEXT:    fldt {{[0-9]+}}(%rsp)501; X64-SSSE3-NEXT:    flds {{\.?LCPI[0-9]+_[0-9]+}}(%rip)502; X64-SSSE3-NEXT:    xorl %eax, %eax503; X64-SSSE3-NEXT:    fucomi %st(1), %st504; X64-SSSE3-NEXT:    fldz505; X64-SSSE3-NEXT:    fcmovbe %st(1), %st506; X64-SSSE3-NEXT:    fstp %st(1)507; X64-SSSE3-NEXT:    fsubrp %st, %st(1)508; X64-SSSE3-NEXT:    fisttpll -{{[0-9]+}}(%rsp)509; X64-SSSE3-NEXT:    setbe %al510; X64-SSSE3-NEXT:    shlq $63, %rax511; X64-SSSE3-NEXT:    xorq -{{[0-9]+}}(%rsp), %rax512; X64-SSSE3-NEXT:    retq513  %1 = fptoui x86_fp80 %a0 to i64514  ret i64  %1515}516 517define i64 @fptoui_i64_fp80_ld(ptr%a0) nounwind {518; X86-LABEL: fptoui_i64_fp80_ld:519; X86:       # %bb.0:520; X86-NEXT:    pushl %ebp521; X86-NEXT:    movl %esp, %ebp522; X86-NEXT:    andl $-8, %esp523; X86-NEXT:    subl $16, %esp524; X86-NEXT:    movl 8(%ebp), %eax525; X86-NEXT:    fldt (%eax)526; X86-NEXT:    flds {{\.?LCPI[0-9]+_[0-9]+}}527; X86-NEXT:    fucom %st(1)528; X86-NEXT:    fnstsw %ax529; X86-NEXT:    xorl %edx, %edx530; X86-NEXT:    # kill: def $ah killed $ah killed $ax531; X86-NEXT:    sahf532; X86-NEXT:    setbe %al533; X86-NEXT:    fldz534; X86-NEXT:    jbe .LBB11_2535; X86-NEXT:  # %bb.1:536; X86-NEXT:    fstp %st(1)537; X86-NEXT:    fldz538; X86-NEXT:  .LBB11_2:539; X86-NEXT:    fstp %st(0)540; X86-NEXT:    fsubrp %st, %st(1)541; X86-NEXT:    fnstcw {{[0-9]+}}(%esp)542; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %ecx543; X86-NEXT:    orl $3072, %ecx # imm = 0xC00544; X86-NEXT:    movw %cx, {{[0-9]+}}(%esp)545; X86-NEXT:    fldcw {{[0-9]+}}(%esp)546; X86-NEXT:    fistpll {{[0-9]+}}(%esp)547; X86-NEXT:    fldcw {{[0-9]+}}(%esp)548; X86-NEXT:    movb %al, %dl549; X86-NEXT:    shll $31, %edx550; X86-NEXT:    xorl {{[0-9]+}}(%esp), %edx551; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax552; X86-NEXT:    movl %ebp, %esp553; X86-NEXT:    popl %ebp554; X86-NEXT:    retl555;556; X64-X87-LABEL: fptoui_i64_fp80_ld:557; X64-X87:       # %bb.0:558; X64-X87-NEXT:    fldt (%rdi)559; X64-X87-NEXT:    flds {{\.?LCPI[0-9]+_[0-9]+}}(%rip)560; X64-X87-NEXT:    xorl %eax, %eax561; X64-X87-NEXT:    fucomi %st(1), %st562; X64-X87-NEXT:    setbe %al563; X64-X87-NEXT:    fldz564; X64-X87-NEXT:    fcmovbe %st(1), %st565; X64-X87-NEXT:    fstp %st(1)566; X64-X87-NEXT:    fsubrp %st, %st(1)567; X64-X87-NEXT:    fnstcw -{{[0-9]+}}(%rsp)568; X64-X87-NEXT:    movzwl -{{[0-9]+}}(%rsp), %ecx569; X64-X87-NEXT:    orl $3072, %ecx # imm = 0xC00570; X64-X87-NEXT:    movw %cx, -{{[0-9]+}}(%rsp)571; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)572; X64-X87-NEXT:    fistpll -{{[0-9]+}}(%rsp)573; X64-X87-NEXT:    fldcw -{{[0-9]+}}(%rsp)574; X64-X87-NEXT:    shlq $63, %rax575; X64-X87-NEXT:    xorq -{{[0-9]+}}(%rsp), %rax576; X64-X87-NEXT:    retq577;578; X64-SSSE3-LABEL: fptoui_i64_fp80_ld:579; X64-SSSE3:       # %bb.0:580; X64-SSSE3-NEXT:    fldt (%rdi)581; X64-SSSE3-NEXT:    flds {{\.?LCPI[0-9]+_[0-9]+}}(%rip)582; X64-SSSE3-NEXT:    xorl %eax, %eax583; X64-SSSE3-NEXT:    fucomi %st(1), %st584; X64-SSSE3-NEXT:    fldz585; X64-SSSE3-NEXT:    fcmovbe %st(1), %st586; X64-SSSE3-NEXT:    fstp %st(1)587; X64-SSSE3-NEXT:    fsubrp %st, %st(1)588; X64-SSSE3-NEXT:    fisttpll -{{[0-9]+}}(%rsp)589; X64-SSSE3-NEXT:    setbe %al590; X64-SSSE3-NEXT:    shlq $63, %rax591; X64-SSSE3-NEXT:    xorq -{{[0-9]+}}(%rsp), %rax592; X64-SSSE3-NEXT:    retq593  %1 = load x86_fp80, ptr%a0594  %2 = fptoui x86_fp80 %1 to i64595  ret i64  %2596}597 598;599; sitofp600;601 602define x86_fp80 @sitofp_fp80_i16(i16 %a0) nounwind {603; X86-LABEL: sitofp_fp80_i16:604; X86:       # %bb.0:605; X86-NEXT:    pushl %eax606; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax607; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)608; X86-NEXT:    filds {{[0-9]+}}(%esp)609; X86-NEXT:    popl %eax610; X86-NEXT:    retl611;612; X64-LABEL: sitofp_fp80_i16:613; X64:       # %bb.0:614; X64-NEXT:    movw %di, -{{[0-9]+}}(%rsp)615; X64-NEXT:    filds -{{[0-9]+}}(%rsp)616; X64-NEXT:    retq617  %1 = sitofp i16 %a0 to x86_fp80618  ret x86_fp80 %1619}620 621define x86_fp80 @sitofp_fp80_i16_ld(ptr%a0) nounwind {622; X86-LABEL: sitofp_fp80_i16_ld:623; X86:       # %bb.0:624; X86-NEXT:    pushl %eax625; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax626; X86-NEXT:    movzwl (%eax), %eax627; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)628; X86-NEXT:    filds {{[0-9]+}}(%esp)629; X86-NEXT:    popl %eax630; X86-NEXT:    retl631;632; X64-LABEL: sitofp_fp80_i16_ld:633; X64:       # %bb.0:634; X64-NEXT:    movzwl (%rdi), %eax635; X64-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)636; X64-NEXT:    filds -{{[0-9]+}}(%rsp)637; X64-NEXT:    retq638  %1 = load i16, ptr%a0639  %2 = sitofp i16 %1 to x86_fp80640  ret x86_fp80 %2641}642 643define x86_fp80 @sitofp_fp80_i32(i32 %a0) nounwind {644; X86-LABEL: sitofp_fp80_i32:645; X86:       # %bb.0:646; X86-NEXT:    pushl %eax647; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax648; X86-NEXT:    movl %eax, (%esp)649; X86-NEXT:    fildl (%esp)650; X86-NEXT:    popl %eax651; X86-NEXT:    retl652;653; X64-LABEL: sitofp_fp80_i32:654; X64:       # %bb.0:655; X64-NEXT:    movl %edi, -{{[0-9]+}}(%rsp)656; X64-NEXT:    fildl -{{[0-9]+}}(%rsp)657; X64-NEXT:    retq658  %1 = sitofp i32 %a0 to x86_fp80659  ret x86_fp80 %1660}661 662define x86_fp80 @sitofp_fp80_i32_ld(ptr%a0) nounwind {663; X86-LABEL: sitofp_fp80_i32_ld:664; X86:       # %bb.0:665; X86-NEXT:    pushl %eax666; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax667; X86-NEXT:    movl (%eax), %eax668; X86-NEXT:    movl %eax, (%esp)669; X86-NEXT:    fildl (%esp)670; X86-NEXT:    popl %eax671; X86-NEXT:    retl672;673; X64-LABEL: sitofp_fp80_i32_ld:674; X64:       # %bb.0:675; X64-NEXT:    movl (%rdi), %eax676; X64-NEXT:    movl %eax, -{{[0-9]+}}(%rsp)677; X64-NEXT:    fildl -{{[0-9]+}}(%rsp)678; X64-NEXT:    retq679  %1 = load i32, ptr%a0680  %2 = sitofp i32 %1 to x86_fp80681  ret x86_fp80 %2682}683 684define x86_fp80 @sitofp_fp80_i64(i64 %a0) nounwind {685; X86-LABEL: sitofp_fp80_i64:686; X86:       # %bb.0:687; X86-NEXT:    fildll {{[0-9]+}}(%esp)688; X86-NEXT:    retl689;690; X64-LABEL: sitofp_fp80_i64:691; X64:       # %bb.0:692; X64-NEXT:    movq %rdi, -{{[0-9]+}}(%rsp)693; X64-NEXT:    fildll -{{[0-9]+}}(%rsp)694; X64-NEXT:    retq695  %1 = sitofp i64 %a0 to x86_fp80696  ret x86_fp80 %1697}698 699define x86_fp80 @sitofp_fp80_i64_ld(ptr%a0) nounwind {700; X86-LABEL: sitofp_fp80_i64_ld:701; X86:       # %bb.0:702; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax703; X86-NEXT:    fildll (%eax)704; X86-NEXT:    retl705;706; X64-LABEL: sitofp_fp80_i64_ld:707; X64:       # %bb.0:708; X64-NEXT:    movq (%rdi), %rax709; X64-NEXT:    movq %rax, -{{[0-9]+}}(%rsp)710; X64-NEXT:    fildll -{{[0-9]+}}(%rsp)711; X64-NEXT:    retq712  %1 = load i64, ptr%a0713  %2 = sitofp i64 %1 to x86_fp80714  ret x86_fp80 %2715}716 717;718; uitofp719;720 721define x86_fp80 @uitofp_fp80_i16(i16 %a0) nounwind {722; X86-LABEL: uitofp_fp80_i16:723; X86:       # %bb.0:724; X86-NEXT:    pushl %eax725; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax726; X86-NEXT:    movl %eax, (%esp)727; X86-NEXT:    fildl (%esp)728; X86-NEXT:    popl %eax729; X86-NEXT:    retl730;731; X64-LABEL: uitofp_fp80_i16:732; X64:       # %bb.0:733; X64-NEXT:    movzwl %di, %eax734; X64-NEXT:    movl %eax, -{{[0-9]+}}(%rsp)735; X64-NEXT:    fildl -{{[0-9]+}}(%rsp)736; X64-NEXT:    retq737  %1 = uitofp i16 %a0 to x86_fp80738  ret x86_fp80 %1739}740 741define x86_fp80 @uitofp_fp80_i16_ld(ptr%a0) nounwind {742; X86-LABEL: uitofp_fp80_i16_ld:743; X86:       # %bb.0:744; X86-NEXT:    pushl %eax745; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax746; X86-NEXT:    movzwl (%eax), %eax747; X86-NEXT:    movl %eax, (%esp)748; X86-NEXT:    fildl (%esp)749; X86-NEXT:    popl %eax750; X86-NEXT:    retl751;752; X64-LABEL: uitofp_fp80_i16_ld:753; X64:       # %bb.0:754; X64-NEXT:    movzwl (%rdi), %eax755; X64-NEXT:    movl %eax, -{{[0-9]+}}(%rsp)756; X64-NEXT:    fildl -{{[0-9]+}}(%rsp)757; X64-NEXT:    retq758  %1 = load i16, ptr%a0759  %2 = uitofp i16 %1 to x86_fp80760  ret x86_fp80 %2761}762 763define x86_fp80 @uitofp_fp80_i32(i32 %a0) nounwind {764; X86-LABEL: uitofp_fp80_i32:765; X86:       # %bb.0:766; X86-NEXT:    pushl %ebp767; X86-NEXT:    movl %esp, %ebp768; X86-NEXT:    andl $-8, %esp769; X86-NEXT:    subl $8, %esp770; X86-NEXT:    movl 8(%ebp), %eax771; X86-NEXT:    movl %eax, (%esp)772; X86-NEXT:    movl $0, {{[0-9]+}}(%esp)773; X86-NEXT:    fildll (%esp)774; X86-NEXT:    movl %ebp, %esp775; X86-NEXT:    popl %ebp776; X86-NEXT:    retl777;778; X64-LABEL: uitofp_fp80_i32:779; X64:       # %bb.0:780; X64-NEXT:    movl %edi, %eax781; X64-NEXT:    movq %rax, -{{[0-9]+}}(%rsp)782; X64-NEXT:    fildll -{{[0-9]+}}(%rsp)783; X64-NEXT:    retq784  %1 = uitofp i32 %a0 to x86_fp80785  ret x86_fp80 %1786}787 788define x86_fp80 @uitofp_fp80_i32_ld(ptr%a0) nounwind {789; X86-LABEL: uitofp_fp80_i32_ld:790; X86:       # %bb.0:791; X86-NEXT:    pushl %ebp792; X86-NEXT:    movl %esp, %ebp793; X86-NEXT:    andl $-8, %esp794; X86-NEXT:    subl $8, %esp795; X86-NEXT:    movl 8(%ebp), %eax796; X86-NEXT:    movl (%eax), %eax797; X86-NEXT:    movl %eax, (%esp)798; X86-NEXT:    movl $0, {{[0-9]+}}(%esp)799; X86-NEXT:    fildll (%esp)800; X86-NEXT:    movl %ebp, %esp801; X86-NEXT:    popl %ebp802; X86-NEXT:    retl803;804; X64-LABEL: uitofp_fp80_i32_ld:805; X64:       # %bb.0:806; X64-NEXT:    movl (%rdi), %eax807; X64-NEXT:    movq %rax, -{{[0-9]+}}(%rsp)808; X64-NEXT:    fildll -{{[0-9]+}}(%rsp)809; X64-NEXT:    retq810  %1 = load i32, ptr%a0811  %2 = uitofp i32 %1 to x86_fp80812  ret x86_fp80 %2813}814 815define x86_fp80 @uitofp_fp80_i64(i64 %a0) nounwind {816; X86-LABEL: uitofp_fp80_i64:817; X86:       # %bb.0:818; X86-NEXT:    pushl %ebp819; X86-NEXT:    movl %esp, %ebp820; X86-NEXT:    andl $-8, %esp821; X86-NEXT:    subl $8, %esp822; X86-NEXT:    movl 8(%ebp), %eax823; X86-NEXT:    movl 12(%ebp), %ecx824; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)825; X86-NEXT:    movl %eax, (%esp)826; X86-NEXT:    shrl $31, %ecx827; X86-NEXT:    fildll (%esp)828; X86-NEXT:    fadds {{\.?LCPI[0-9]+_[0-9]+}}(,%ecx,4)829; X86-NEXT:    movl %ebp, %esp830; X86-NEXT:    popl %ebp831; X86-NEXT:    retl832;833; X64-LABEL: uitofp_fp80_i64:834; X64:       # %bb.0:835; X64-NEXT:    movq %rdi, -{{[0-9]+}}(%rsp)836; X64-NEXT:    xorl %eax, %eax837; X64-NEXT:    testq %rdi, %rdi838; X64-NEXT:    sets %al839; X64-NEXT:    fildll -{{[0-9]+}}(%rsp)840; X64-NEXT:    fadds {{\.?LCPI[0-9]+_[0-9]+}}(,%rax,4)841; X64-NEXT:    retq842  %1 = uitofp i64 %a0 to x86_fp80843  ret x86_fp80 %1844}845 846define x86_fp80 @uitofp_fp80_i64_ld(ptr%a0) nounwind {847; X86-LABEL: uitofp_fp80_i64_ld:848; X86:       # %bb.0:849; X86-NEXT:    pushl %ebp850; X86-NEXT:    movl %esp, %ebp851; X86-NEXT:    andl $-8, %esp852; X86-NEXT:    subl $8, %esp853; X86-NEXT:    movl 8(%ebp), %eax854; X86-NEXT:    movl (%eax), %ecx855; X86-NEXT:    movl 4(%eax), %eax856; X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)857; X86-NEXT:    movl %ecx, (%esp)858; X86-NEXT:    shrl $31, %eax859; X86-NEXT:    fildll (%esp)860; X86-NEXT:    fadds {{\.?LCPI[0-9]+_[0-9]+}}(,%eax,4)861; X86-NEXT:    movl %ebp, %esp862; X86-NEXT:    popl %ebp863; X86-NEXT:    retl864;865; X64-LABEL: uitofp_fp80_i64_ld:866; X64:       # %bb.0:867; X64-NEXT:    movq (%rdi), %rax868; X64-NEXT:    movq %rax, -{{[0-9]+}}(%rsp)869; X64-NEXT:    xorl %ecx, %ecx870; X64-NEXT:    testq %rax, %rax871; X64-NEXT:    sets %cl872; X64-NEXT:    fildll -{{[0-9]+}}(%rsp)873; X64-NEXT:    fadds {{\.?LCPI[0-9]+_[0-9]+}}(,%rcx,4)874; X64-NEXT:    retq875  %1 = load i64, ptr%a0876  %2 = uitofp i64 %1 to x86_fp80877  ret x86_fp80 %2878}879 880;881; floor882;883 884define x86_fp80 @floor_fp80(x86_fp80 %a0) nounwind {885; X86-LABEL: floor_fp80:886; X86:       # %bb.0:887; X86-NEXT:    subl $12, %esp888; X86-NEXT:    fldt {{[0-9]+}}(%esp)889; X86-NEXT:    fstpt (%esp)890; X86-NEXT:    calll floorl891; X86-NEXT:    addl $12, %esp892; X86-NEXT:    retl893;894; X64-LABEL: floor_fp80:895; X64:       # %bb.0:896; X64-NEXT:    subq $24, %rsp897; X64-NEXT:    fldt {{[0-9]+}}(%rsp)898; X64-NEXT:    fstpt (%rsp)899; X64-NEXT:    callq floorl@PLT900; X64-NEXT:    addq $24, %rsp901; X64-NEXT:    retq902  %1 = call x86_fp80 @llvm.floor.f80(x86_fp80 %a0)903  ret x86_fp80 %1904}905 906define x86_fp80 @floor_fp80_ld(ptr%a0) nounwind {907; X86-LABEL: floor_fp80_ld:908; X86:       # %bb.0:909; X86-NEXT:    subl $12, %esp910; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax911; X86-NEXT:    fldt (%eax)912; X86-NEXT:    fstpt (%esp)913; X86-NEXT:    calll floorl914; X86-NEXT:    addl $12, %esp915; X86-NEXT:    retl916;917; X64-LABEL: floor_fp80_ld:918; X64:       # %bb.0:919; X64-NEXT:    subq $24, %rsp920; X64-NEXT:    fldt (%rdi)921; X64-NEXT:    fstpt (%rsp)922; X64-NEXT:    callq floorl@PLT923; X64-NEXT:    addq $24, %rsp924; X64-NEXT:    retq925  %1 = load x86_fp80, ptr%a0926  %2 = call x86_fp80 @llvm.floor.f80(x86_fp80 %1)927  ret x86_fp80 %2928}929 930declare x86_fp80 @llvm.floor.f80(x86_fp80 %p)931 932;933; ceil934;935 936define x86_fp80 @ceil_fp80(x86_fp80 %a0) nounwind {937; X86-LABEL: ceil_fp80:938; X86:       # %bb.0:939; X86-NEXT:    subl $12, %esp940; X86-NEXT:    fldt {{[0-9]+}}(%esp)941; X86-NEXT:    fstpt (%esp)942; X86-NEXT:    calll ceill943; X86-NEXT:    addl $12, %esp944; X86-NEXT:    retl945;946; X64-LABEL: ceil_fp80:947; X64:       # %bb.0:948; X64-NEXT:    subq $24, %rsp949; X64-NEXT:    fldt {{[0-9]+}}(%rsp)950; X64-NEXT:    fstpt (%rsp)951; X64-NEXT:    callq ceill@PLT952; X64-NEXT:    addq $24, %rsp953; X64-NEXT:    retq954  %1 = call x86_fp80 @llvm.ceil.f80(x86_fp80 %a0)955  ret x86_fp80 %1956}957 958define x86_fp80 @ceil_fp80_ld(ptr%a0) nounwind {959; X86-LABEL: ceil_fp80_ld:960; X86:       # %bb.0:961; X86-NEXT:    subl $12, %esp962; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax963; X86-NEXT:    fldt (%eax)964; X86-NEXT:    fstpt (%esp)965; X86-NEXT:    calll ceill966; X86-NEXT:    addl $12, %esp967; X86-NEXT:    retl968;969; X64-LABEL: ceil_fp80_ld:970; X64:       # %bb.0:971; X64-NEXT:    subq $24, %rsp972; X64-NEXT:    fldt (%rdi)973; X64-NEXT:    fstpt (%rsp)974; X64-NEXT:    callq ceill@PLT975; X64-NEXT:    addq $24, %rsp976; X64-NEXT:    retq977  %1 = load x86_fp80, ptr%a0978  %2 = call x86_fp80 @llvm.ceil.f80(x86_fp80 %1)979  ret x86_fp80 %2980}981 982declare x86_fp80 @llvm.ceil.f80(x86_fp80 %p)983 984;985; trunc986;987 988define x86_fp80 @trunc_fp80(x86_fp80 %a0) nounwind {989; X86-LABEL: trunc_fp80:990; X86:       # %bb.0:991; X86-NEXT:    subl $12, %esp992; X86-NEXT:    fldt {{[0-9]+}}(%esp)993; X86-NEXT:    fstpt (%esp)994; X86-NEXT:    calll truncl995; X86-NEXT:    addl $12, %esp996; X86-NEXT:    retl997;998; X64-LABEL: trunc_fp80:999; X64:       # %bb.0:1000; X64-NEXT:    subq $24, %rsp1001; X64-NEXT:    fldt {{[0-9]+}}(%rsp)1002; X64-NEXT:    fstpt (%rsp)1003; X64-NEXT:    callq truncl@PLT1004; X64-NEXT:    addq $24, %rsp1005; X64-NEXT:    retq1006  %1 = call x86_fp80 @llvm.trunc.f80(x86_fp80 %a0)1007  ret x86_fp80 %11008}1009 1010define x86_fp80 @trunc_fp80_ld(ptr%a0) nounwind {1011; X86-LABEL: trunc_fp80_ld:1012; X86:       # %bb.0:1013; X86-NEXT:    subl $12, %esp1014; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1015; X86-NEXT:    fldt (%eax)1016; X86-NEXT:    fstpt (%esp)1017; X86-NEXT:    calll truncl1018; X86-NEXT:    addl $12, %esp1019; X86-NEXT:    retl1020;1021; X64-LABEL: trunc_fp80_ld:1022; X64:       # %bb.0:1023; X64-NEXT:    subq $24, %rsp1024; X64-NEXT:    fldt (%rdi)1025; X64-NEXT:    fstpt (%rsp)1026; X64-NEXT:    callq truncl@PLT1027; X64-NEXT:    addq $24, %rsp1028; X64-NEXT:    retq1029  %1 = load x86_fp80, ptr%a01030  %2 = call x86_fp80 @llvm.trunc.f80(x86_fp80 %1)1031  ret x86_fp80 %21032}1033 1034declare x86_fp80 @llvm.trunc.f80(x86_fp80 %p)1035 1036;1037; rint1038;1039 1040define x86_fp80 @rint_fp80(x86_fp80 %a0) nounwind {1041; X86-LABEL: rint_fp80:1042; X86:       # %bb.0:1043; X86-NEXT:    subl $12, %esp1044; X86-NEXT:    fldt {{[0-9]+}}(%esp)1045; X86-NEXT:    fstpt (%esp)1046; X86-NEXT:    calll rintl1047; X86-NEXT:    addl $12, %esp1048; X86-NEXT:    retl1049;1050; X64-LABEL: rint_fp80:1051; X64:       # %bb.0:1052; X64-NEXT:    subq $24, %rsp1053; X64-NEXT:    fldt {{[0-9]+}}(%rsp)1054; X64-NEXT:    fstpt (%rsp)1055; X64-NEXT:    callq rintl@PLT1056; X64-NEXT:    addq $24, %rsp1057; X64-NEXT:    retq1058  %1 = call x86_fp80 @llvm.rint.f80(x86_fp80 %a0)1059  ret x86_fp80 %11060}1061 1062define x86_fp80 @rint_fp80_ld(ptr%a0) nounwind {1063; X86-LABEL: rint_fp80_ld:1064; X86:       # %bb.0:1065; X86-NEXT:    subl $12, %esp1066; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1067; X86-NEXT:    fldt (%eax)1068; X86-NEXT:    fstpt (%esp)1069; X86-NEXT:    calll rintl1070; X86-NEXT:    addl $12, %esp1071; X86-NEXT:    retl1072;1073; X64-LABEL: rint_fp80_ld:1074; X64:       # %bb.0:1075; X64-NEXT:    subq $24, %rsp1076; X64-NEXT:    fldt (%rdi)1077; X64-NEXT:    fstpt (%rsp)1078; X64-NEXT:    callq rintl@PLT1079; X64-NEXT:    addq $24, %rsp1080; X64-NEXT:    retq1081  %1 = load x86_fp80, ptr%a01082  %2 = call x86_fp80 @llvm.rint.f80(x86_fp80 %1)1083  ret x86_fp80 %21084}1085 1086declare x86_fp80 @llvm.rint.f80(x86_fp80 %p)1087 1088;1089; roundeven1090;1091 1092define x86_fp80 @roundeven_fp80(x86_fp80 %a0) nounwind {1093; X86-LABEL: roundeven_fp80:1094; X86:       # %bb.0:1095; X86-NEXT:    subl $12, %esp1096; X86-NEXT:    fldt {{[0-9]+}}(%esp)1097; X86-NEXT:    fstpt (%esp)1098; X86-NEXT:    calll roundevenl1099; X86-NEXT:    addl $12, %esp1100; X86-NEXT:    retl1101;1102; X64-LABEL: roundeven_fp80:1103; X64:       # %bb.0:1104; X64-NEXT:    subq $24, %rsp1105; X64-NEXT:    fldt {{[0-9]+}}(%rsp)1106; X64-NEXT:    fstpt (%rsp)1107; X64-NEXT:    callq roundevenl@PLT1108; X64-NEXT:    addq $24, %rsp1109; X64-NEXT:    retq1110  %1 = call x86_fp80 @llvm.roundeven.f80(x86_fp80 %a0)1111  ret x86_fp80 %11112}1113 1114define x86_fp80 @roundeven_fp80_ld(ptr%a0) nounwind {1115; X86-LABEL: roundeven_fp80_ld:1116; X86:       # %bb.0:1117; X86-NEXT:    subl $12, %esp1118; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1119; X86-NEXT:    fldt (%eax)1120; X86-NEXT:    fstpt (%esp)1121; X86-NEXT:    calll roundevenl1122; X86-NEXT:    addl $12, %esp1123; X86-NEXT:    retl1124;1125; X64-LABEL: roundeven_fp80_ld:1126; X64:       # %bb.0:1127; X64-NEXT:    subq $24, %rsp1128; X64-NEXT:    fldt (%rdi)1129; X64-NEXT:    fstpt (%rsp)1130; X64-NEXT:    callq roundevenl@PLT1131; X64-NEXT:    addq $24, %rsp1132; X64-NEXT:    retq1133  %1 = load x86_fp80, ptr%a01134  %2 = call x86_fp80 @llvm.roundeven.f80(x86_fp80 %1)1135  ret x86_fp80 %21136}1137 1138declare x86_fp80 @llvm.roundeven.f80(x86_fp80 %p)1139