brintos

brintos / llvm-project-archived public Read only

0
0
Text · 32.0 KiB · b9b1ae6 Raw
932 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 5declare x86_fp80 @llvm.experimental.constrained.fadd.f80(x86_fp80, x86_fp80, metadata, metadata)6declare x86_fp80 @llvm.experimental.constrained.fsub.f80(x86_fp80, x86_fp80, metadata, metadata)7declare x86_fp80 @llvm.experimental.constrained.fmul.f80(x86_fp80, x86_fp80, metadata, metadata)8declare x86_fp80 @llvm.experimental.constrained.fdiv.f80(x86_fp80, x86_fp80, metadata, metadata)9declare x86_fp80 @llvm.experimental.constrained.fpext.f80.f32(float, metadata)10declare x86_fp80 @llvm.experimental.constrained.fpext.f80.f64(double, metadata)11declare x86_fp80 @llvm.experimental.constrained.sqrt.f80(x86_fp80, metadata, metadata)12declare float @llvm.experimental.constrained.fptrunc.f32.f80(x86_fp80, metadata, metadata)13declare double @llvm.experimental.constrained.fptrunc.f64.f80(x86_fp80, metadata, metadata)14declare i1  @llvm.experimental.constrained.fptosi.i1.f80(x86_fp80, metadata)15declare i8  @llvm.experimental.constrained.fptosi.i8.f80(x86_fp80, metadata)16declare i16 @llvm.experimental.constrained.fptosi.i16.f80(x86_fp80, metadata)17declare i32 @llvm.experimental.constrained.fptosi.i32.f80(x86_fp80, metadata)18declare i64 @llvm.experimental.constrained.fptosi.i64.f80(x86_fp80, metadata)19declare i1 @llvm.experimental.constrained.fptoui.i1.f80(x86_fp80, metadata)20declare i8  @llvm.experimental.constrained.fptoui.i8.f80(x86_fp80, metadata)21declare i16 @llvm.experimental.constrained.fptoui.i16.f80(x86_fp80, metadata)22declare i32 @llvm.experimental.constrained.fptoui.i32.f80(x86_fp80, metadata)23declare i64 @llvm.experimental.constrained.fptoui.i64.f80(x86_fp80, metadata)24declare x86_fp80 @llvm.experimental.constrained.sitofp.f80.i1(i1, metadata, metadata)25declare x86_fp80 @llvm.experimental.constrained.sitofp.f80.i8(i8, metadata, metadata)26declare x86_fp80 @llvm.experimental.constrained.sitofp.f80.i16(i16, metadata, metadata)27declare x86_fp80 @llvm.experimental.constrained.sitofp.f80.i32(i32, metadata, metadata)28declare x86_fp80 @llvm.experimental.constrained.sitofp.f80.i64(i64, metadata, metadata)29declare x86_fp80 @llvm.experimental.constrained.uitofp.f80.i1(i1, metadata, metadata)30declare x86_fp80 @llvm.experimental.constrained.uitofp.f80.i8(i8, metadata, metadata)31declare x86_fp80 @llvm.experimental.constrained.uitofp.f80.i16(i16, metadata, metadata)32declare x86_fp80 @llvm.experimental.constrained.uitofp.f80.i32(i32, metadata, metadata)33declare x86_fp80 @llvm.experimental.constrained.uitofp.f80.i64(i64, metadata, metadata)34 35define x86_fp80 @fadd_fp80(x86_fp80 %a, x86_fp80 %b) nounwind strictfp {36; X86-LABEL: fadd_fp80:37; X86:       # %bb.0:38; X86-NEXT:    fldt {{[0-9]+}}(%esp)39; X86-NEXT:    fldt {{[0-9]+}}(%esp)40; X86-NEXT:    faddp %st, %st(1)41; X86-NEXT:    wait42; X86-NEXT:    retl43;44; X64-LABEL: fadd_fp80:45; X64:       # %bb.0:46; X64-NEXT:    fldt {{[0-9]+}}(%rsp)47; X64-NEXT:    fldt {{[0-9]+}}(%rsp)48; X64-NEXT:    faddp %st, %st(1)49; X64-NEXT:    wait50; X64-NEXT:    retq51  %ret = call x86_fp80 @llvm.experimental.constrained.fadd.f80(x86_fp80 %a, x86_fp80 %b,52                                                                    metadata !"round.dynamic",53                                                                    metadata !"fpexcept.strict") #054  ret x86_fp80 %ret55}56 57define x86_fp80 @fsub_fp80(x86_fp80 %a, x86_fp80 %b) nounwind strictfp {58; X86-LABEL: fsub_fp80:59; X86:       # %bb.0:60; X86-NEXT:    fldt {{[0-9]+}}(%esp)61; X86-NEXT:    fldt {{[0-9]+}}(%esp)62; X86-NEXT:    fsubp %st, %st(1)63; X86-NEXT:    wait64; X86-NEXT:    retl65;66; X64-LABEL: fsub_fp80:67; X64:       # %bb.0:68; X64-NEXT:    fldt {{[0-9]+}}(%rsp)69; X64-NEXT:    fldt {{[0-9]+}}(%rsp)70; X64-NEXT:    fsubp %st, %st(1)71; X64-NEXT:    wait72; X64-NEXT:    retq73  %ret = call x86_fp80 @llvm.experimental.constrained.fsub.f80(x86_fp80 %a, x86_fp80 %b,74                                                                    metadata !"round.dynamic",75                                                                    metadata !"fpexcept.strict") #076  ret x86_fp80 %ret77}78 79define x86_fp80 @fmul_fp80(x86_fp80 %a, x86_fp80 %b) nounwind strictfp {80; X86-LABEL: fmul_fp80:81; X86:       # %bb.0:82; X86-NEXT:    fldt {{[0-9]+}}(%esp)83; X86-NEXT:    fldt {{[0-9]+}}(%esp)84; X86-NEXT:    fmulp %st, %st(1)85; X86-NEXT:    wait86; X86-NEXT:    retl87;88; X64-LABEL: fmul_fp80:89; X64:       # %bb.0:90; X64-NEXT:    fldt {{[0-9]+}}(%rsp)91; X64-NEXT:    fldt {{[0-9]+}}(%rsp)92; X64-NEXT:    fmulp %st, %st(1)93; X64-NEXT:    wait94; X64-NEXT:    retq95  %ret = call x86_fp80 @llvm.experimental.constrained.fmul.f80(x86_fp80 %a, x86_fp80 %b,96                                                                    metadata !"round.dynamic",97                                                                    metadata !"fpexcept.strict") #098  ret x86_fp80 %ret99}100 101define x86_fp80 @fdiv_fp80(x86_fp80 %a, x86_fp80 %b) nounwind strictfp {102; X86-LABEL: fdiv_fp80:103; X86:       # %bb.0:104; X86-NEXT:    fldt {{[0-9]+}}(%esp)105; X86-NEXT:    fldt {{[0-9]+}}(%esp)106; X86-NEXT:    fdivp %st, %st(1)107; X86-NEXT:    wait108; X86-NEXT:    retl109;110; X64-LABEL: fdiv_fp80:111; X64:       # %bb.0:112; X64-NEXT:    fldt {{[0-9]+}}(%rsp)113; X64-NEXT:    fldt {{[0-9]+}}(%rsp)114; X64-NEXT:    fdivp %st, %st(1)115; X64-NEXT:    wait116; X64-NEXT:    retq117  %ret = call x86_fp80 @llvm.experimental.constrained.fdiv.f80(x86_fp80 %a, x86_fp80 %b,118                                                                    metadata !"round.dynamic",119                                                                    metadata !"fpexcept.strict") #0120  ret x86_fp80 %ret121}122 123define x86_fp80 @fpext_f32_to_fp80(float %a) nounwind strictfp {124; X86-LABEL: fpext_f32_to_fp80:125; X86:       # %bb.0:126; X86-NEXT:    flds {{[0-9]+}}(%esp)127; X86-NEXT:    wait128; X86-NEXT:    retl129;130; X64-LABEL: fpext_f32_to_fp80:131; X64:       # %bb.0:132; X64-NEXT:    movss %xmm0, -{{[0-9]+}}(%rsp)133; X64-NEXT:    flds -{{[0-9]+}}(%rsp)134; X64-NEXT:    wait135; X64-NEXT:    retq136  %ret = call x86_fp80 @llvm.experimental.constrained.fpext.f80.f32(float %a,137                                                                         metadata !"fpexcept.strict") #0138  ret x86_fp80 %ret139}140 141define x86_fp80 @fpext_f64_to_fp80(double %a) nounwind strictfp {142; X86-LABEL: fpext_f64_to_fp80:143; X86:       # %bb.0:144; X86-NEXT:    fldl {{[0-9]+}}(%esp)145; X86-NEXT:    wait146; X86-NEXT:    retl147;148; X64-LABEL: fpext_f64_to_fp80:149; X64:       # %bb.0:150; X64-NEXT:    movsd %xmm0, -{{[0-9]+}}(%rsp)151; X64-NEXT:    fldl -{{[0-9]+}}(%rsp)152; X64-NEXT:    wait153; X64-NEXT:    retq154  %ret = call x86_fp80 @llvm.experimental.constrained.fpext.f80.f64(double %a,155                                                                         metadata !"fpexcept.strict") #0156  ret x86_fp80 %ret157}158 159define float @fptrunc_fp80_to_f32(x86_fp80 %a) nounwind strictfp {160; X86-LABEL: fptrunc_fp80_to_f32:161; X86:       # %bb.0:162; X86-NEXT:    pushl %eax163; X86-NEXT:    fldt {{[0-9]+}}(%esp)164; X86-NEXT:    fstps (%esp)165; X86-NEXT:    flds (%esp)166; X86-NEXT:    wait167; X86-NEXT:    popl %eax168; X86-NEXT:    retl169;170; X64-LABEL: fptrunc_fp80_to_f32:171; X64:       # %bb.0:172; X64-NEXT:    fldt {{[0-9]+}}(%rsp)173; X64-NEXT:    fstps -{{[0-9]+}}(%rsp)174; X64-NEXT:    wait175; X64-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero176; X64-NEXT:    retq177  %ret = call float @llvm.experimental.constrained.fptrunc.f32.f80(x86_fp80 %a,178                                                                        metadata !"round.dynamic",179                                                                        metadata !"fpexcept.strict") #0180  ret float %ret181}182 183define double @fptrunc_fp80_to_f64(x86_fp80 %a) nounwind strictfp {184; X86-LABEL: fptrunc_fp80_to_f64:185; X86:       # %bb.0:186; X86-NEXT:    pushl %ebp187; X86-NEXT:    movl %esp, %ebp188; X86-NEXT:    andl $-8, %esp189; X86-NEXT:    subl $8, %esp190; X86-NEXT:    fldt 8(%ebp)191; X86-NEXT:    fstpl (%esp)192; X86-NEXT:    fldl (%esp)193; X86-NEXT:    wait194; X86-NEXT:    movl %ebp, %esp195; X86-NEXT:    popl %ebp196; X86-NEXT:    retl197;198; X64-LABEL: fptrunc_fp80_to_f64:199; X64:       # %bb.0:200; X64-NEXT:    fldt {{[0-9]+}}(%rsp)201; X64-NEXT:    fstpl -{{[0-9]+}}(%rsp)202; X64-NEXT:    wait203; X64-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero204; X64-NEXT:    retq205  %ret = call double @llvm.experimental.constrained.fptrunc.f64.f80(x86_fp80 %a,206                                                                         metadata !"round.dynamic",207                                                                         metadata !"fpexcept.strict") #0208  ret double %ret209}210 211define x86_fp80 @fsqrt_fp80(x86_fp80 %a) nounwind strictfp {212; X86-LABEL: fsqrt_fp80:213; X86:       # %bb.0:214; X86-NEXT:    fldt {{[0-9]+}}(%esp)215; X86-NEXT:    fsqrt216; X86-NEXT:    wait217; X86-NEXT:    retl218;219; X64-LABEL: fsqrt_fp80:220; X64:       # %bb.0:221; X64-NEXT:    fldt {{[0-9]+}}(%rsp)222; X64-NEXT:    fsqrt223; X64-NEXT:    wait224; X64-NEXT:    retq225  %ret = call x86_fp80 @llvm.experimental.constrained.sqrt.f80(x86_fp80 %a,226                                                                    metadata !"round.dynamic",227                                                                    metadata !"fpexcept.strict") #0228  ret x86_fp80 %ret229}230 231define i1 @fp80_to_sint1(x86_fp80 %x) #0 {232; X86-LABEL: fp80_to_sint1:233; X86:       # %bb.0:234; X86-NEXT:    subl $8, %esp235; X86-NEXT:    .cfi_def_cfa_offset 12236; X86-NEXT:    fldt {{[0-9]+}}(%esp)237; X86-NEXT:    wait238; X86-NEXT:    fnstcw {{[0-9]+}}(%esp)239; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax240; X86-NEXT:    orl $3072, %eax # imm = 0xC00241; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)242; X86-NEXT:    fldcw {{[0-9]+}}(%esp)243; X86-NEXT:    fistps {{[0-9]+}}(%esp)244; X86-NEXT:    fldcw {{[0-9]+}}(%esp)245; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax246; X86-NEXT:    addl $8, %esp247; X86-NEXT:    .cfi_def_cfa_offset 4248; X86-NEXT:    retl249;250; X64-LABEL: fp80_to_sint1:251; X64:       # %bb.0:252; X64-NEXT:    fldt {{[0-9]+}}(%rsp)253; X64-NEXT:    wait254; X64-NEXT:    fnstcw -{{[0-9]+}}(%rsp)255; X64-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax256; X64-NEXT:    orl $3072, %eax # imm = 0xC00257; X64-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)258; X64-NEXT:    fldcw -{{[0-9]+}}(%rsp)259; X64-NEXT:    fistps -{{[0-9]+}}(%rsp)260; X64-NEXT:    fldcw -{{[0-9]+}}(%rsp)261; X64-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax262; X64-NEXT:    retq263  %result = call i1 @llvm.experimental.constrained.fptosi.i1.f80(x86_fp80 %x,264                                               metadata !"fpexcept.strict") #0265  ret i1 %result266}267 268define i8 @fp80_to_sint8(x86_fp80 %x) #0 {269; X86-LABEL: fp80_to_sint8:270; X86:       # %bb.0:271; X86-NEXT:    subl $8, %esp272; X86-NEXT:    .cfi_def_cfa_offset 12273; X86-NEXT:    fldt {{[0-9]+}}(%esp)274; X86-NEXT:    wait275; X86-NEXT:    fnstcw {{[0-9]+}}(%esp)276; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax277; X86-NEXT:    orl $3072, %eax # imm = 0xC00278; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)279; X86-NEXT:    fldcw {{[0-9]+}}(%esp)280; X86-NEXT:    fistps {{[0-9]+}}(%esp)281; X86-NEXT:    fldcw {{[0-9]+}}(%esp)282; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax283; X86-NEXT:    addl $8, %esp284; X86-NEXT:    .cfi_def_cfa_offset 4285; X86-NEXT:    retl286;287; X64-LABEL: fp80_to_sint8:288; X64:       # %bb.0:289; X64-NEXT:    fldt {{[0-9]+}}(%rsp)290; X64-NEXT:    wait291; X64-NEXT:    fnstcw -{{[0-9]+}}(%rsp)292; X64-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax293; X64-NEXT:    orl $3072, %eax # imm = 0xC00294; X64-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)295; X64-NEXT:    fldcw -{{[0-9]+}}(%rsp)296; X64-NEXT:    fistps -{{[0-9]+}}(%rsp)297; X64-NEXT:    fldcw -{{[0-9]+}}(%rsp)298; X64-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax299; X64-NEXT:    retq300  %result = call i8 @llvm.experimental.constrained.fptosi.i8.f80(x86_fp80 %x,301                                               metadata !"fpexcept.strict") #0302  ret i8 %result303}304 305define i16 @fp80_to_sint16(x86_fp80 %x) #0 {306; X86-LABEL: fp80_to_sint16:307; X86:       # %bb.0:308; X86-NEXT:    subl $8, %esp309; X86-NEXT:    .cfi_def_cfa_offset 12310; X86-NEXT:    fldt {{[0-9]+}}(%esp)311; X86-NEXT:    wait312; X86-NEXT:    fnstcw {{[0-9]+}}(%esp)313; X86-NEXT:    movzwl {{[0-9]+}}(%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:    fistps {{[0-9]+}}(%esp)318; X86-NEXT:    fldcw {{[0-9]+}}(%esp)319; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax320; X86-NEXT:    addl $8, %esp321; X86-NEXT:    .cfi_def_cfa_offset 4322; X86-NEXT:    retl323;324; X64-LABEL: fp80_to_sint16:325; X64:       # %bb.0:326; X64-NEXT:    fldt {{[0-9]+}}(%rsp)327; X64-NEXT:    wait328; X64-NEXT:    fnstcw -{{[0-9]+}}(%rsp)329; X64-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax330; X64-NEXT:    orl $3072, %eax # imm = 0xC00331; X64-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)332; X64-NEXT:    fldcw -{{[0-9]+}}(%rsp)333; X64-NEXT:    fistps -{{[0-9]+}}(%rsp)334; X64-NEXT:    fldcw -{{[0-9]+}}(%rsp)335; X64-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax336; X64-NEXT:    retq337  %result = call i16 @llvm.experimental.constrained.fptosi.i16.f80(x86_fp80 %x,338                                               metadata !"fpexcept.strict") #0339  ret i16 %result340}341 342define i32 @fp80_to_sint32(x86_fp80 %x) #0 {343; X86-LABEL: fp80_to_sint32:344; X86:       # %bb.0: # %entry345; X86-NEXT:    subl $8, %esp346; X86-NEXT:    .cfi_def_cfa_offset 12347; X86-NEXT:    fldt {{[0-9]+}}(%esp)348; X86-NEXT:    wait349; X86-NEXT:    fnstcw (%esp)350; X86-NEXT:    movzwl (%esp), %eax351; X86-NEXT:    orl $3072, %eax # imm = 0xC00352; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)353; X86-NEXT:    fldcw {{[0-9]+}}(%esp)354; X86-NEXT:    fistpl {{[0-9]+}}(%esp)355; X86-NEXT:    fldcw (%esp)356; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax357; X86-NEXT:    addl $8, %esp358; X86-NEXT:    .cfi_def_cfa_offset 4359; X86-NEXT:    retl360;361; X64-LABEL: fp80_to_sint32:362; X64:       # %bb.0: # %entry363; X64-NEXT:    fldt {{[0-9]+}}(%rsp)364; X64-NEXT:    wait365; X64-NEXT:    fnstcw -{{[0-9]+}}(%rsp)366; X64-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax367; X64-NEXT:    orl $3072, %eax # imm = 0xC00368; X64-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)369; X64-NEXT:    fldcw -{{[0-9]+}}(%rsp)370; X64-NEXT:    fistpl -{{[0-9]+}}(%rsp)371; X64-NEXT:    fldcw -{{[0-9]+}}(%rsp)372; X64-NEXT:    movl -{{[0-9]+}}(%rsp), %eax373; X64-NEXT:    retq374entry:375  %result = call i32 @llvm.experimental.constrained.fptosi.i32.f80(x86_fp80 %x,376                                               metadata !"fpexcept.strict") #0377  ret i32 %result378}379 380define i64 @fp80_to_sint64(x86_fp80 %x) #0 {381; X86-LABEL: fp80_to_sint64:382; X86:       # %bb.0:383; X86-NEXT:    pushl %ebp384; X86-NEXT:    .cfi_def_cfa_offset 8385; X86-NEXT:    .cfi_offset %ebp, -8386; X86-NEXT:    movl %esp, %ebp387; X86-NEXT:    .cfi_def_cfa_register %ebp388; X86-NEXT:    andl $-8, %esp389; X86-NEXT:    subl $16, %esp390; X86-NEXT:    fldt 8(%ebp)391; X86-NEXT:    wait392; X86-NEXT:    fnstcw {{[0-9]+}}(%esp)393; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax394; X86-NEXT:    orl $3072, %eax # imm = 0xC00395; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)396; X86-NEXT:    fldcw {{[0-9]+}}(%esp)397; X86-NEXT:    fistpll {{[0-9]+}}(%esp)398; X86-NEXT:    fldcw {{[0-9]+}}(%esp)399; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax400; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx401; X86-NEXT:    movl %ebp, %esp402; X86-NEXT:    popl %ebp403; X86-NEXT:    .cfi_def_cfa %esp, 4404; X86-NEXT:    retl405;406; X64-LABEL: fp80_to_sint64:407; X64:       # %bb.0:408; X64-NEXT:    fldt {{[0-9]+}}(%rsp)409; X64-NEXT:    wait410; X64-NEXT:    fnstcw -{{[0-9]+}}(%rsp)411; X64-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax412; X64-NEXT:    orl $3072, %eax # imm = 0xC00413; X64-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)414; X64-NEXT:    fldcw -{{[0-9]+}}(%rsp)415; X64-NEXT:    fistpll -{{[0-9]+}}(%rsp)416; X64-NEXT:    fldcw -{{[0-9]+}}(%rsp)417; X64-NEXT:    movq -{{[0-9]+}}(%rsp), %rax418; X64-NEXT:    retq419  %result = call i64 @llvm.experimental.constrained.fptosi.i64.f80(x86_fp80 %x,420                                               metadata !"fpexcept.strict") #0421  ret i64 %result422}423 424define i1 @fp80_to_uint1(x86_fp80 %x) #0 {425; X86-LABEL: fp80_to_uint1:426; X86:       # %bb.0:427; X86-NEXT:    subl $8, %esp428; X86-NEXT:    .cfi_def_cfa_offset 12429; X86-NEXT:    fldt {{[0-9]+}}(%esp)430; X86-NEXT:    wait431; X86-NEXT:    fnstcw {{[0-9]+}}(%esp)432; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax433; X86-NEXT:    orl $3072, %eax # imm = 0xC00434; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)435; X86-NEXT:    fldcw {{[0-9]+}}(%esp)436; X86-NEXT:    fistps {{[0-9]+}}(%esp)437; X86-NEXT:    fldcw {{[0-9]+}}(%esp)438; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax439; X86-NEXT:    addl $8, %esp440; X86-NEXT:    .cfi_def_cfa_offset 4441; X86-NEXT:    retl442;443; X64-LABEL: fp80_to_uint1:444; X64:       # %bb.0:445; X64-NEXT:    fldt {{[0-9]+}}(%rsp)446; X64-NEXT:    wait447; X64-NEXT:    fnstcw -{{[0-9]+}}(%rsp)448; X64-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax449; X64-NEXT:    orl $3072, %eax # imm = 0xC00450; X64-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)451; X64-NEXT:    fldcw -{{[0-9]+}}(%rsp)452; X64-NEXT:    fistps -{{[0-9]+}}(%rsp)453; X64-NEXT:    fldcw -{{[0-9]+}}(%rsp)454; X64-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax455; X64-NEXT:    retq456  %result = call i1 @llvm.experimental.constrained.fptoui.i1.f80(x86_fp80 %x,457                                               metadata !"fpexcept.strict") #0458  ret i1 %result459}460 461define i8 @fp80_to_uint8(x86_fp80 %x) #0 {462; X86-LABEL: fp80_to_uint8:463; X86:       # %bb.0:464; X86-NEXT:    subl $8, %esp465; X86-NEXT:    .cfi_def_cfa_offset 12466; X86-NEXT:    fldt {{[0-9]+}}(%esp)467; X86-NEXT:    wait468; X86-NEXT:    fnstcw {{[0-9]+}}(%esp)469; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax470; X86-NEXT:    orl $3072, %eax # imm = 0xC00471; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)472; X86-NEXT:    fldcw {{[0-9]+}}(%esp)473; X86-NEXT:    fistps {{[0-9]+}}(%esp)474; X86-NEXT:    fldcw {{[0-9]+}}(%esp)475; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax476; X86-NEXT:    addl $8, %esp477; X86-NEXT:    .cfi_def_cfa_offset 4478; X86-NEXT:    retl479;480; X64-LABEL: fp80_to_uint8:481; X64:       # %bb.0:482; X64-NEXT:    fldt {{[0-9]+}}(%rsp)483; X64-NEXT:    wait484; X64-NEXT:    fnstcw -{{[0-9]+}}(%rsp)485; X64-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax486; X64-NEXT:    orl $3072, %eax # imm = 0xC00487; X64-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)488; X64-NEXT:    fldcw -{{[0-9]+}}(%rsp)489; X64-NEXT:    fistps -{{[0-9]+}}(%rsp)490; X64-NEXT:    fldcw -{{[0-9]+}}(%rsp)491; X64-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax492; X64-NEXT:    retq493  %result = call i8 @llvm.experimental.constrained.fptoui.i8.f80(x86_fp80 %x,494                                               metadata !"fpexcept.strict") #0495  ret i8 %result496}497 498define i16 @fp80_to_uint16(x86_fp80 %x) #0 {499; X86-LABEL: fp80_to_uint16:500; X86:       # %bb.0:501; X86-NEXT:    subl $8, %esp502; X86-NEXT:    .cfi_def_cfa_offset 12503; X86-NEXT:    fldt {{[0-9]+}}(%esp)504; X86-NEXT:    wait505; X86-NEXT:    fnstcw (%esp)506; X86-NEXT:    movzwl (%esp), %eax507; X86-NEXT:    orl $3072, %eax # imm = 0xC00508; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)509; X86-NEXT:    fldcw {{[0-9]+}}(%esp)510; X86-NEXT:    fistpl {{[0-9]+}}(%esp)511; X86-NEXT:    fldcw (%esp)512; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax513; X86-NEXT:    # kill: def $ax killed $ax killed $eax514; X86-NEXT:    addl $8, %esp515; X86-NEXT:    .cfi_def_cfa_offset 4516; X86-NEXT:    retl517;518; X64-LABEL: fp80_to_uint16:519; X64:       # %bb.0:520; X64-NEXT:    fldt {{[0-9]+}}(%rsp)521; X64-NEXT:    wait522; X64-NEXT:    fnstcw -{{[0-9]+}}(%rsp)523; X64-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax524; X64-NEXT:    orl $3072, %eax # imm = 0xC00525; X64-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)526; X64-NEXT:    fldcw -{{[0-9]+}}(%rsp)527; X64-NEXT:    fistpl -{{[0-9]+}}(%rsp)528; X64-NEXT:    fldcw -{{[0-9]+}}(%rsp)529; X64-NEXT:    movl -{{[0-9]+}}(%rsp), %eax530; X64-NEXT:    # kill: def $ax killed $ax killed $eax531; X64-NEXT:    retq532  %result = call i16 @llvm.experimental.constrained.fptoui.i16.f80(x86_fp80 %x,533                                               metadata !"fpexcept.strict") #0534  ret i16 %result535}536 537define i32 @fp80_to_uint32(x86_fp80 %x) #0 {538; X86-LABEL: fp80_to_uint32:539; X86:       # %bb.0:540; X86-NEXT:    pushl %ebp541; X86-NEXT:    .cfi_def_cfa_offset 8542; X86-NEXT:    .cfi_offset %ebp, -8543; X86-NEXT:    movl %esp, %ebp544; X86-NEXT:    .cfi_def_cfa_register %ebp545; X86-NEXT:    andl $-8, %esp546; X86-NEXT:    subl $16, %esp547; X86-NEXT:    fldt 8(%ebp)548; X86-NEXT:    wait549; X86-NEXT:    fnstcw {{[0-9]+}}(%esp)550; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax551; X86-NEXT:    orl $3072, %eax # imm = 0xC00552; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)553; X86-NEXT:    fldcw {{[0-9]+}}(%esp)554; X86-NEXT:    fistpll {{[0-9]+}}(%esp)555; X86-NEXT:    fldcw {{[0-9]+}}(%esp)556; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax557; X86-NEXT:    movl %ebp, %esp558; X86-NEXT:    popl %ebp559; X86-NEXT:    .cfi_def_cfa %esp, 4560; X86-NEXT:    retl561;562; X64-LABEL: fp80_to_uint32:563; X64:       # %bb.0:564; X64-NEXT:    fldt {{[0-9]+}}(%rsp)565; X64-NEXT:    wait566; X64-NEXT:    fnstcw -{{[0-9]+}}(%rsp)567; X64-NEXT:    movzwl -{{[0-9]+}}(%rsp), %eax568; X64-NEXT:    orl $3072, %eax # imm = 0xC00569; X64-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)570; X64-NEXT:    fldcw -{{[0-9]+}}(%rsp)571; X64-NEXT:    fistpll -{{[0-9]+}}(%rsp)572; X64-NEXT:    fldcw -{{[0-9]+}}(%rsp)573; X64-NEXT:    movl -{{[0-9]+}}(%rsp), %eax574; X64-NEXT:    retq575  %result = call i32 @llvm.experimental.constrained.fptoui.i32.f80(x86_fp80 %x,576                                               metadata !"fpexcept.strict") #0577  ret i32 %result578}579 580define i64 @fp80_to_uint64(x86_fp80 %x) #0 {581; X86-LABEL: fp80_to_uint64:582; X86:       # %bb.0:583; X86-NEXT:    pushl %ebp584; X86-NEXT:    .cfi_def_cfa_offset 8585; X86-NEXT:    .cfi_offset %ebp, -8586; X86-NEXT:    movl %esp, %ebp587; X86-NEXT:    .cfi_def_cfa_register %ebp588; X86-NEXT:    andl $-8, %esp589; X86-NEXT:    subl $16, %esp590; X86-NEXT:    fldt 8(%ebp)591; X86-NEXT:    flds {{\.?LCPI[0-9]+_[0-9]+}}592; X86-NEXT:    fcom %st(1)593; X86-NEXT:    wait594; X86-NEXT:    fnstsw %ax595; X86-NEXT:    xorl %edx, %edx596; X86-NEXT:    # kill: def $ah killed $ah killed $ax597; X86-NEXT:    sahf598; X86-NEXT:    setbe %al599; X86-NEXT:    fldz600; X86-NEXT:    jbe .LBB18_2601; X86-NEXT:  # %bb.1:602; X86-NEXT:    fstp %st(1)603; X86-NEXT:    fldz604; X86-NEXT:  .LBB18_2:605; X86-NEXT:    fstp %st(0)606; X86-NEXT:    fsubrp %st, %st(1)607; X86-NEXT:    wait608; X86-NEXT:    fnstcw {{[0-9]+}}(%esp)609; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %ecx610; X86-NEXT:    orl $3072, %ecx # imm = 0xC00611; X86-NEXT:    movw %cx, {{[0-9]+}}(%esp)612; X86-NEXT:    fldcw {{[0-9]+}}(%esp)613; X86-NEXT:    fistpll {{[0-9]+}}(%esp)614; X86-NEXT:    fldcw {{[0-9]+}}(%esp)615; X86-NEXT:    movb %al, %dl616; X86-NEXT:    shll $31, %edx617; X86-NEXT:    xorl {{[0-9]+}}(%esp), %edx618; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax619; X86-NEXT:    movl %ebp, %esp620; X86-NEXT:    popl %ebp621; X86-NEXT:    .cfi_def_cfa %esp, 4622; X86-NEXT:    retl623;624; X64-LABEL: fp80_to_uint64:625; X64:       # %bb.0:626; X64-NEXT:    fldt {{[0-9]+}}(%rsp)627; X64-NEXT:    flds {{\.?LCPI[0-9]+_[0-9]+}}(%rip)628; X64-NEXT:    wait629; X64-NEXT:    xorl %eax, %eax630; X64-NEXT:    fcomi %st(1), %st631; X64-NEXT:    wait632; X64-NEXT:    setbe %al633; X64-NEXT:    fldz634; X64-NEXT:    fcmovbe %st(1), %st635; X64-NEXT:    fstp %st(1)636; X64-NEXT:    fsubrp %st, %st(1)637; X64-NEXT:    wait638; X64-NEXT:    fnstcw -{{[0-9]+}}(%rsp)639; X64-NEXT:    movzwl -{{[0-9]+}}(%rsp), %ecx640; X64-NEXT:    orl $3072, %ecx # imm = 0xC00641; X64-NEXT:    movw %cx, -{{[0-9]+}}(%rsp)642; X64-NEXT:    fldcw -{{[0-9]+}}(%rsp)643; X64-NEXT:    fistpll -{{[0-9]+}}(%rsp)644; X64-NEXT:    fldcw -{{[0-9]+}}(%rsp)645; X64-NEXT:    shlq $63, %rax646; X64-NEXT:    xorq -{{[0-9]+}}(%rsp), %rax647; X64-NEXT:    retq648  %result = call i64 @llvm.experimental.constrained.fptoui.i64.f80(x86_fp80 %x,649                                               metadata !"fpexcept.strict") #0650  ret i64 %result651}652 653define x86_fp80 @sint1_to_fp80(i1 %x) #0 {654; X86-LABEL: sint1_to_fp80:655; X86:       # %bb.0:656; X86-NEXT:    pushl %eax657; X86-NEXT:    .cfi_def_cfa_offset 8658; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax659; X86-NEXT:    andb $1, %al660; X86-NEXT:    negb %al661; X86-NEXT:    movsbl %al, %eax662; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)663; X86-NEXT:    filds {{[0-9]+}}(%esp)664; X86-NEXT:    wait665; X86-NEXT:    popl %eax666; X86-NEXT:    .cfi_def_cfa_offset 4667; X86-NEXT:    retl668;669; X64-LABEL: sint1_to_fp80:670; X64:       # %bb.0:671; X64-NEXT:    andb $1, %dil672; X64-NEXT:    negb %dil673; X64-NEXT:    movsbl %dil, %eax674; X64-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)675; X64-NEXT:    filds -{{[0-9]+}}(%rsp)676; X64-NEXT:    wait677; X64-NEXT:    retq678  %result = call x86_fp80 @llvm.experimental.constrained.sitofp.f80.i1(i1 %x,679                                               metadata !"round.dynamic",680                                               metadata !"fpexcept.strict") #0681  ret x86_fp80 %result682}683 684define x86_fp80 @sint8_to_fp80(i8 %x) #0 {685; X86-LABEL: sint8_to_fp80:686; X86:       # %bb.0:687; X86-NEXT:    pushl %eax688; X86-NEXT:    .cfi_def_cfa_offset 8689; X86-NEXT:    movsbl {{[0-9]+}}(%esp), %eax690; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)691; X86-NEXT:    filds {{[0-9]+}}(%esp)692; X86-NEXT:    wait693; X86-NEXT:    popl %eax694; X86-NEXT:    .cfi_def_cfa_offset 4695; X86-NEXT:    retl696;697; X64-LABEL: sint8_to_fp80:698; X64:       # %bb.0:699; X64-NEXT:    movsbl %dil, %eax700; X64-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)701; X64-NEXT:    filds -{{[0-9]+}}(%rsp)702; X64-NEXT:    wait703; X64-NEXT:    retq704  %result = call x86_fp80 @llvm.experimental.constrained.sitofp.f80.i8(i8 %x,705                                               metadata !"round.dynamic",706                                               metadata !"fpexcept.strict") #0707  ret x86_fp80 %result708}709 710define x86_fp80 @sint16_to_fp80(i16 %x) #0 {711; X86-LABEL: sint16_to_fp80:712; X86:       # %bb.0:713; X86-NEXT:    pushl %eax714; X86-NEXT:    .cfi_def_cfa_offset 8715; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax716; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)717; X86-NEXT:    filds {{[0-9]+}}(%esp)718; X86-NEXT:    wait719; X86-NEXT:    popl %eax720; X86-NEXT:    .cfi_def_cfa_offset 4721; X86-NEXT:    retl722;723; X64-LABEL: sint16_to_fp80:724; X64:       # %bb.0:725; X64-NEXT:    movw %di, -{{[0-9]+}}(%rsp)726; X64-NEXT:    filds -{{[0-9]+}}(%rsp)727; X64-NEXT:    wait728; X64-NEXT:    retq729  %result = call x86_fp80 @llvm.experimental.constrained.sitofp.f80.i16(i16 %x,730                                               metadata !"round.dynamic",731                                               metadata !"fpexcept.strict") #0732  ret x86_fp80 %result733}734 735define x86_fp80 @sint32_to_fp80(i32 %x) #0 {736; X86-LABEL: sint32_to_fp80:737; X86:       # %bb.0:738; X86-NEXT:    pushl %eax739; X86-NEXT:    .cfi_def_cfa_offset 8740; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax741; X86-NEXT:    movl %eax, (%esp)742; X86-NEXT:    fildl (%esp)743; X86-NEXT:    wait744; X86-NEXT:    popl %eax745; X86-NEXT:    .cfi_def_cfa_offset 4746; X86-NEXT:    retl747;748; X64-LABEL: sint32_to_fp80:749; X64:       # %bb.0:750; X64-NEXT:    movl %edi, -{{[0-9]+}}(%rsp)751; X64-NEXT:    fildl -{{[0-9]+}}(%rsp)752; X64-NEXT:    wait753; X64-NEXT:    retq754  %result = call x86_fp80 @llvm.experimental.constrained.sitofp.f80.i32(i32 %x,755                                               metadata !"round.dynamic",756                                               metadata !"fpexcept.strict") #0757  ret x86_fp80 %result758}759 760define x86_fp80 @sint64_to_fp80(i64 %x) #0 {761; X86-LABEL: sint64_to_fp80:762; X86:       # %bb.0:763; X86-NEXT:    fildll {{[0-9]+}}(%esp)764; X86-NEXT:    wait765; X86-NEXT:    retl766;767; X64-LABEL: sint64_to_fp80:768; X64:       # %bb.0:769; X64-NEXT:    movq %rdi, -{{[0-9]+}}(%rsp)770; X64-NEXT:    fildll -{{[0-9]+}}(%rsp)771; X64-NEXT:    wait772; X64-NEXT:    retq773  %result = call x86_fp80 @llvm.experimental.constrained.sitofp.f80.i64(i64 %x,774                                               metadata !"round.dynamic",775                                               metadata !"fpexcept.strict") #0776  ret x86_fp80 %result777}778 779define x86_fp80 @uint1_to_fp80(i1 %x) #0 {780; X86-LABEL: uint1_to_fp80:781; X86:       # %bb.0:782; X86-NEXT:    pushl %eax783; X86-NEXT:    .cfi_def_cfa_offset 8784; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax785; X86-NEXT:    andb $1, %al786; X86-NEXT:    movzbl %al, %eax787; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)788; X86-NEXT:    filds {{[0-9]+}}(%esp)789; X86-NEXT:    wait790; X86-NEXT:    popl %eax791; X86-NEXT:    .cfi_def_cfa_offset 4792; X86-NEXT:    retl793;794; X64-LABEL: uint1_to_fp80:795; X64:       # %bb.0:796; X64-NEXT:    andl $1, %edi797; X64-NEXT:    movw %di, -{{[0-9]+}}(%rsp)798; X64-NEXT:    filds -{{[0-9]+}}(%rsp)799; X64-NEXT:    wait800; X64-NEXT:    retq801  %result = call x86_fp80 @llvm.experimental.constrained.uitofp.f80.i1(i1 %x,802                                               metadata !"round.dynamic",803                                               metadata !"fpexcept.strict") #0804  ret x86_fp80 %result805}806 807define x86_fp80 @uint8_to_fp80(i8 %x) #0 {808; X86-LABEL: uint8_to_fp80:809; X86:       # %bb.0:810; X86-NEXT:    pushl %eax811; X86-NEXT:    .cfi_def_cfa_offset 8812; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax813; X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)814; X86-NEXT:    filds {{[0-9]+}}(%esp)815; X86-NEXT:    wait816; X86-NEXT:    popl %eax817; X86-NEXT:    .cfi_def_cfa_offset 4818; X86-NEXT:    retl819;820; X64-LABEL: uint8_to_fp80:821; X64:       # %bb.0:822; X64-NEXT:    movzbl %dil, %eax823; X64-NEXT:    movw %ax, -{{[0-9]+}}(%rsp)824; X64-NEXT:    filds -{{[0-9]+}}(%rsp)825; X64-NEXT:    wait826; X64-NEXT:    retq827  %result = call x86_fp80 @llvm.experimental.constrained.uitofp.f80.i8(i8 %x,828                                               metadata !"round.dynamic",829                                               metadata !"fpexcept.strict") #0830  ret x86_fp80 %result831}832 833define x86_fp80 @uint16_to_fp80(i16 %x) #0 {834; X86-LABEL: uint16_to_fp80:835; X86:       # %bb.0:836; X86-NEXT:    pushl %eax837; X86-NEXT:    .cfi_def_cfa_offset 8838; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax839; X86-NEXT:    movl %eax, (%esp)840; X86-NEXT:    fildl (%esp)841; X86-NEXT:    wait842; X86-NEXT:    popl %eax843; X86-NEXT:    .cfi_def_cfa_offset 4844; X86-NEXT:    retl845;846; X64-LABEL: uint16_to_fp80:847; X64:       # %bb.0:848; X64-NEXT:    movzwl %di, %eax849; X64-NEXT:    movl %eax, -{{[0-9]+}}(%rsp)850; X64-NEXT:    fildl -{{[0-9]+}}(%rsp)851; X64-NEXT:    wait852; X64-NEXT:    retq853  %result = call x86_fp80 @llvm.experimental.constrained.uitofp.f80.i16(i16 %x,854                                               metadata !"round.dynamic",855                                               metadata !"fpexcept.strict") #0856  ret x86_fp80 %result857}858 859define x86_fp80 @uint32_to_fp80(i32 %x) #0 {860; X86-LABEL: uint32_to_fp80:861; X86:       # %bb.0:862; X86-NEXT:    pushl %ebp863; X86-NEXT:    .cfi_def_cfa_offset 8864; X86-NEXT:    .cfi_offset %ebp, -8865; X86-NEXT:    movl %esp, %ebp866; X86-NEXT:    .cfi_def_cfa_register %ebp867; X86-NEXT:    andl $-8, %esp868; X86-NEXT:    subl $8, %esp869; X86-NEXT:    movl 8(%ebp), %eax870; X86-NEXT:    movl %eax, (%esp)871; X86-NEXT:    movl $0, {{[0-9]+}}(%esp)872; X86-NEXT:    fildll (%esp)873; X86-NEXT:    wait874; X86-NEXT:    movl %ebp, %esp875; X86-NEXT:    popl %ebp876; X86-NEXT:    .cfi_def_cfa %esp, 4877; X86-NEXT:    retl878;879; X64-LABEL: uint32_to_fp80:880; X64:       # %bb.0:881; X64-NEXT:    movl %edi, %eax882; X64-NEXT:    movq %rax, -{{[0-9]+}}(%rsp)883; X64-NEXT:    fildll -{{[0-9]+}}(%rsp)884; X64-NEXT:    wait885; X64-NEXT:    retq886  %result = call x86_fp80 @llvm.experimental.constrained.uitofp.f80.i32(i32 %x,887                                               metadata !"round.dynamic",888                                               metadata !"fpexcept.strict") #0889  ret x86_fp80 %result890}891 892define x86_fp80 @uint64_to_fp80(i64 %x) #0 {893; X86-LABEL: uint64_to_fp80:894; X86:       # %bb.0:895; X86-NEXT:    pushl %ebp896; X86-NEXT:    .cfi_def_cfa_offset 8897; X86-NEXT:    .cfi_offset %ebp, -8898; X86-NEXT:    movl %esp, %ebp899; X86-NEXT:    .cfi_def_cfa_register %ebp900; X86-NEXT:    andl $-8, %esp901; X86-NEXT:    subl $8, %esp902; X86-NEXT:    movl 8(%ebp), %eax903; X86-NEXT:    movl 12(%ebp), %ecx904; X86-NEXT:    movl %ecx, {{[0-9]+}}(%esp)905; X86-NEXT:    movl %eax, (%esp)906; X86-NEXT:    shrl $31, %ecx907; X86-NEXT:    fildll (%esp)908; X86-NEXT:    fadds {{\.?LCPI[0-9]+_[0-9]+}}(,%ecx,4)909; X86-NEXT:    wait910; X86-NEXT:    movl %ebp, %esp911; X86-NEXT:    popl %ebp912; X86-NEXT:    .cfi_def_cfa %esp, 4913; X86-NEXT:    retl914;915; X64-LABEL: uint64_to_fp80:916; X64:       # %bb.0:917; X64-NEXT:    movq %rdi, -{{[0-9]+}}(%rsp)918; X64-NEXT:    xorl %eax, %eax919; X64-NEXT:    testq %rdi, %rdi920; X64-NEXT:    sets %al921; X64-NEXT:    fildll -{{[0-9]+}}(%rsp)922; X64-NEXT:    fadds {{\.?LCPI[0-9]+_[0-9]+}}(,%rax,4)923; X64-NEXT:    wait924; X64-NEXT:    retq925  %result = call x86_fp80 @llvm.experimental.constrained.uitofp.f80.i64(i64 %x,926                                               metadata !"round.dynamic",927                                               metadata !"fpexcept.strict") #0928  ret x86_fp80 %result929}930 931attributes #0 = { strictfp }932