brintos

brintos / llvm-project-archived public Read only

0
0
Text · 46.5 KiB · ecdc507 Raw
1360 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+sse2 -O3 | FileCheck %s --check-prefixes=SSE-X863; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 -O3 | FileCheck %s --check-prefixes=SSE-X644; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx -O3 | FileCheck %s --check-prefixes=AVX-X86,AVX1-X865; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx -O3 | FileCheck %s --check-prefixes=AVX-X64,AVX1-X646; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512f -mattr=+avx512vl -O3 | FileCheck %s --check-prefixes=AVX-X86,AVX512-X867; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f -mattr=+avx512vl -O3 | FileCheck %s --check-prefixes=AVX-X64,AVX512-X648; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=-sse -O3 | FileCheck %s --check-prefixes=X879 10declare i1  @llvm.experimental.constrained.fptosi.i1.f32(float, metadata)11declare i8  @llvm.experimental.constrained.fptosi.i8.f32(float, metadata)12declare i16 @llvm.experimental.constrained.fptosi.i16.f32(float, metadata)13declare i32 @llvm.experimental.constrained.fptosi.i32.f32(float, metadata)14declare i64 @llvm.experimental.constrained.fptosi.i64.f32(float, metadata)15declare i1  @llvm.experimental.constrained.fptoui.i1.f32(float, metadata)16declare i8  @llvm.experimental.constrained.fptoui.i8.f32(float, metadata)17declare i16 @llvm.experimental.constrained.fptoui.i16.f32(float, metadata)18declare i32 @llvm.experimental.constrained.fptoui.i32.f32(float, metadata)19declare i64 @llvm.experimental.constrained.fptoui.i64.f32(float, metadata)20 21declare i1  @llvm.experimental.constrained.fptosi.i1.f64(double, metadata)22declare i8  @llvm.experimental.constrained.fptosi.i8.f64(double, metadata)23declare i16 @llvm.experimental.constrained.fptosi.i16.f64(double, metadata)24declare i32 @llvm.experimental.constrained.fptosi.i32.f64(double, metadata)25declare i64 @llvm.experimental.constrained.fptosi.i64.f64(double, metadata)26declare i1  @llvm.experimental.constrained.fptoui.i1.f64(double, metadata)27declare i8  @llvm.experimental.constrained.fptoui.i8.f64(double, metadata)28declare i16 @llvm.experimental.constrained.fptoui.i16.f64(double, metadata)29declare i32 @llvm.experimental.constrained.fptoui.i32.f64(double, metadata)30declare i64 @llvm.experimental.constrained.fptoui.i64.f64(double, metadata)31 32define i1 @fptosi_f32toi1(float %x) #0 {33; SSE-X86-LABEL: fptosi_f32toi1:34; SSE-X86:       # %bb.0:35; SSE-X86-NEXT:    cvttss2si {{[0-9]+}}(%esp), %eax36; SSE-X86-NEXT:    # kill: def $al killed $al killed $eax37; SSE-X86-NEXT:    retl38;39; SSE-X64-LABEL: fptosi_f32toi1:40; SSE-X64:       # %bb.0:41; SSE-X64-NEXT:    cvttss2si %xmm0, %eax42; SSE-X64-NEXT:    # kill: def $al killed $al killed $eax43; SSE-X64-NEXT:    retq44;45; AVX-X86-LABEL: fptosi_f32toi1:46; AVX-X86:       # %bb.0:47; AVX-X86-NEXT:    vcvttss2si {{[0-9]+}}(%esp), %eax48; AVX-X86-NEXT:    # kill: def $al killed $al killed $eax49; AVX-X86-NEXT:    retl50;51; AVX-X64-LABEL: fptosi_f32toi1:52; AVX-X64:       # %bb.0:53; AVX-X64-NEXT:    vcvttss2si %xmm0, %eax54; AVX-X64-NEXT:    # kill: def $al killed $al killed $eax55; AVX-X64-NEXT:    retq56;57; X87-LABEL: fptosi_f32toi1:58; X87:       # %bb.0:59; X87-NEXT:    subl $8, %esp60; X87-NEXT:    .cfi_def_cfa_offset 1261; X87-NEXT:    flds {{[0-9]+}}(%esp)62; X87-NEXT:    wait63; X87-NEXT:    fnstcw {{[0-9]+}}(%esp)64; X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax65; X87-NEXT:    orl $3072, %eax # imm = 0xC0066; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)67; X87-NEXT:    fldcw {{[0-9]+}}(%esp)68; X87-NEXT:    fistps {{[0-9]+}}(%esp)69; X87-NEXT:    fldcw {{[0-9]+}}(%esp)70; X87-NEXT:    movzbl {{[0-9]+}}(%esp), %eax71; X87-NEXT:    addl $8, %esp72; X87-NEXT:    .cfi_def_cfa_offset 473; X87-NEXT:    retl74  %result = call i1 @llvm.experimental.constrained.fptosi.i1.f32(float %x,75                                               metadata !"fpexcept.strict") #076  ret i1 %result77}78 79define i8 @fptosi_f32toi8(float %x) #0 {80; SSE-X86-LABEL: fptosi_f32toi8:81; SSE-X86:       # %bb.0:82; SSE-X86-NEXT:    cvttss2si {{[0-9]+}}(%esp), %eax83; SSE-X86-NEXT:    # kill: def $al killed $al killed $eax84; SSE-X86-NEXT:    retl85;86; SSE-X64-LABEL: fptosi_f32toi8:87; SSE-X64:       # %bb.0:88; SSE-X64-NEXT:    cvttss2si %xmm0, %eax89; SSE-X64-NEXT:    # kill: def $al killed $al killed $eax90; SSE-X64-NEXT:    retq91;92; AVX-X86-LABEL: fptosi_f32toi8:93; AVX-X86:       # %bb.0:94; AVX-X86-NEXT:    vcvttss2si {{[0-9]+}}(%esp), %eax95; AVX-X86-NEXT:    # kill: def $al killed $al killed $eax96; AVX-X86-NEXT:    retl97;98; AVX-X64-LABEL: fptosi_f32toi8:99; AVX-X64:       # %bb.0:100; AVX-X64-NEXT:    vcvttss2si %xmm0, %eax101; AVX-X64-NEXT:    # kill: def $al killed $al killed $eax102; AVX-X64-NEXT:    retq103;104; X87-LABEL: fptosi_f32toi8:105; X87:       # %bb.0:106; X87-NEXT:    subl $8, %esp107; X87-NEXT:    .cfi_def_cfa_offset 12108; X87-NEXT:    flds {{[0-9]+}}(%esp)109; X87-NEXT:    wait110; X87-NEXT:    fnstcw {{[0-9]+}}(%esp)111; X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax112; X87-NEXT:    orl $3072, %eax # imm = 0xC00113; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)114; X87-NEXT:    fldcw {{[0-9]+}}(%esp)115; X87-NEXT:    fistps {{[0-9]+}}(%esp)116; X87-NEXT:    fldcw {{[0-9]+}}(%esp)117; X87-NEXT:    movzbl {{[0-9]+}}(%esp), %eax118; X87-NEXT:    addl $8, %esp119; X87-NEXT:    .cfi_def_cfa_offset 4120; X87-NEXT:    retl121  %result = call i8 @llvm.experimental.constrained.fptosi.i8.f32(float %x,122                                               metadata !"fpexcept.strict") #0123  ret i8 %result124}125 126define i16 @fptosi_f32toi16(float %x) #0 {127; SSE-X86-LABEL: fptosi_f32toi16:128; SSE-X86:       # %bb.0:129; SSE-X86-NEXT:    cvttss2si {{[0-9]+}}(%esp), %eax130; SSE-X86-NEXT:    # kill: def $ax killed $ax killed $eax131; SSE-X86-NEXT:    retl132;133; SSE-X64-LABEL: fptosi_f32toi16:134; SSE-X64:       # %bb.0:135; SSE-X64-NEXT:    cvttss2si %xmm0, %eax136; SSE-X64-NEXT:    # kill: def $ax killed $ax killed $eax137; SSE-X64-NEXT:    retq138;139; AVX-X86-LABEL: fptosi_f32toi16:140; AVX-X86:       # %bb.0:141; AVX-X86-NEXT:    vcvttss2si {{[0-9]+}}(%esp), %eax142; AVX-X86-NEXT:    # kill: def $ax killed $ax killed $eax143; AVX-X86-NEXT:    retl144;145; AVX-X64-LABEL: fptosi_f32toi16:146; AVX-X64:       # %bb.0:147; AVX-X64-NEXT:    vcvttss2si %xmm0, %eax148; AVX-X64-NEXT:    # kill: def $ax killed $ax killed $eax149; AVX-X64-NEXT:    retq150;151; X87-LABEL: fptosi_f32toi16:152; X87:       # %bb.0:153; X87-NEXT:    subl $8, %esp154; X87-NEXT:    .cfi_def_cfa_offset 12155; X87-NEXT:    flds {{[0-9]+}}(%esp)156; X87-NEXT:    wait157; X87-NEXT:    fnstcw {{[0-9]+}}(%esp)158; X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax159; X87-NEXT:    orl $3072, %eax # imm = 0xC00160; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)161; X87-NEXT:    fldcw {{[0-9]+}}(%esp)162; X87-NEXT:    fistps {{[0-9]+}}(%esp)163; X87-NEXT:    fldcw {{[0-9]+}}(%esp)164; X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax165; X87-NEXT:    addl $8, %esp166; X87-NEXT:    .cfi_def_cfa_offset 4167; X87-NEXT:    retl168  %result = call i16 @llvm.experimental.constrained.fptosi.i16.f32(float %x,169                                               metadata !"fpexcept.strict") #0170  ret i16 %result171}172 173define i32 @fptosi_f32toi32(float %x) #0 {174; SSE-X86-LABEL: fptosi_f32toi32:175; SSE-X86:       # %bb.0:176; SSE-X86-NEXT:    cvttss2si {{[0-9]+}}(%esp), %eax177; SSE-X86-NEXT:    retl178;179; SSE-X64-LABEL: fptosi_f32toi32:180; SSE-X64:       # %bb.0:181; SSE-X64-NEXT:    cvttss2si %xmm0, %eax182; SSE-X64-NEXT:    retq183;184; AVX-X86-LABEL: fptosi_f32toi32:185; AVX-X86:       # %bb.0:186; AVX-X86-NEXT:    vcvttss2si {{[0-9]+}}(%esp), %eax187; AVX-X86-NEXT:    retl188;189; AVX-X64-LABEL: fptosi_f32toi32:190; AVX-X64:       # %bb.0:191; AVX-X64-NEXT:    vcvttss2si %xmm0, %eax192; AVX-X64-NEXT:    retq193;194; X87-LABEL: fptosi_f32toi32:195; X87:       # %bb.0:196; X87-NEXT:    subl $8, %esp197; X87-NEXT:    .cfi_def_cfa_offset 12198; X87-NEXT:    flds {{[0-9]+}}(%esp)199; X87-NEXT:    wait200; X87-NEXT:    fnstcw (%esp)201; X87-NEXT:    movzwl (%esp), %eax202; X87-NEXT:    orl $3072, %eax # imm = 0xC00203; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)204; X87-NEXT:    fldcw {{[0-9]+}}(%esp)205; X87-NEXT:    fistpl {{[0-9]+}}(%esp)206; X87-NEXT:    fldcw (%esp)207; X87-NEXT:    movl {{[0-9]+}}(%esp), %eax208; X87-NEXT:    addl $8, %esp209; X87-NEXT:    .cfi_def_cfa_offset 4210; X87-NEXT:    retl211  %result = call i32 @llvm.experimental.constrained.fptosi.i32.f32(float %x,212                                               metadata !"fpexcept.strict") #0213  ret i32 %result214}215 216define i64 @fptosi_f32toi64(float %x) #0 {217; SSE-X86-LABEL: fptosi_f32toi64:218; SSE-X86:       # %bb.0:219; SSE-X86-NEXT:    pushl %ebp220; SSE-X86-NEXT:    .cfi_def_cfa_offset 8221; SSE-X86-NEXT:    .cfi_offset %ebp, -8222; SSE-X86-NEXT:    movl %esp, %ebp223; SSE-X86-NEXT:    .cfi_def_cfa_register %ebp224; SSE-X86-NEXT:    andl $-8, %esp225; SSE-X86-NEXT:    subl $16, %esp226; SSE-X86-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero227; SSE-X86-NEXT:    movss %xmm0, {{[0-9]+}}(%esp)228; SSE-X86-NEXT:    flds {{[0-9]+}}(%esp)229; SSE-X86-NEXT:    wait230; SSE-X86-NEXT:    fnstcw {{[0-9]+}}(%esp)231; SSE-X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax232; SSE-X86-NEXT:    orl $3072, %eax # imm = 0xC00233; SSE-X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)234; SSE-X86-NEXT:    fldcw {{[0-9]+}}(%esp)235; SSE-X86-NEXT:    fistpll {{[0-9]+}}(%esp)236; SSE-X86-NEXT:    fldcw {{[0-9]+}}(%esp)237; SSE-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax238; SSE-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx239; SSE-X86-NEXT:    movl %ebp, %esp240; SSE-X86-NEXT:    popl %ebp241; SSE-X86-NEXT:    .cfi_def_cfa %esp, 4242; SSE-X86-NEXT:    retl243;244; SSE-X64-LABEL: fptosi_f32toi64:245; SSE-X64:       # %bb.0:246; SSE-X64-NEXT:    cvttss2si %xmm0, %rax247; SSE-X64-NEXT:    retq248;249; AVX-X86-LABEL: fptosi_f32toi64:250; AVX-X86:       # %bb.0:251; AVX-X86-NEXT:    pushl %ebp252; AVX-X86-NEXT:    .cfi_def_cfa_offset 8253; AVX-X86-NEXT:    .cfi_offset %ebp, -8254; AVX-X86-NEXT:    movl %esp, %ebp255; AVX-X86-NEXT:    .cfi_def_cfa_register %ebp256; AVX-X86-NEXT:    andl $-8, %esp257; AVX-X86-NEXT:    subl $8, %esp258; AVX-X86-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero259; AVX-X86-NEXT:    vmovss %xmm0, (%esp)260; AVX-X86-NEXT:    flds (%esp)261; AVX-X86-NEXT:    fisttpll (%esp)262; AVX-X86-NEXT:    wait263; AVX-X86-NEXT:    movl (%esp), %eax264; AVX-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx265; AVX-X86-NEXT:    movl %ebp, %esp266; AVX-X86-NEXT:    popl %ebp267; AVX-X86-NEXT:    .cfi_def_cfa %esp, 4268; AVX-X86-NEXT:    retl269;270; AVX-X64-LABEL: fptosi_f32toi64:271; AVX-X64:       # %bb.0:272; AVX-X64-NEXT:    vcvttss2si %xmm0, %rax273; AVX-X64-NEXT:    retq274;275; X87-LABEL: fptosi_f32toi64:276; X87:       # %bb.0:277; X87-NEXT:    pushl %ebp278; X87-NEXT:    .cfi_def_cfa_offset 8279; X87-NEXT:    .cfi_offset %ebp, -8280; X87-NEXT:    movl %esp, %ebp281; X87-NEXT:    .cfi_def_cfa_register %ebp282; X87-NEXT:    andl $-8, %esp283; X87-NEXT:    subl $16, %esp284; X87-NEXT:    flds 8(%ebp)285; X87-NEXT:    wait286; X87-NEXT:    fnstcw {{[0-9]+}}(%esp)287; X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax288; X87-NEXT:    orl $3072, %eax # imm = 0xC00289; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)290; X87-NEXT:    fldcw {{[0-9]+}}(%esp)291; X87-NEXT:    fistpll {{[0-9]+}}(%esp)292; X87-NEXT:    fldcw {{[0-9]+}}(%esp)293; X87-NEXT:    movl {{[0-9]+}}(%esp), %eax294; X87-NEXT:    movl {{[0-9]+}}(%esp), %edx295; X87-NEXT:    movl %ebp, %esp296; X87-NEXT:    popl %ebp297; X87-NEXT:    .cfi_def_cfa %esp, 4298; X87-NEXT:    retl299  %result = call i64 @llvm.experimental.constrained.fptosi.i64.f32(float %x,300                                               metadata !"fpexcept.strict") #0301  ret i64 %result302}303 304define i1 @fptoui_f32toi1(float %x) #0 {305; SSE-X86-LABEL: fptoui_f32toi1:306; SSE-X86:       # %bb.0:307; SSE-X86-NEXT:    cvttss2si {{[0-9]+}}(%esp), %eax308; SSE-X86-NEXT:    # kill: def $al killed $al killed $eax309; SSE-X86-NEXT:    retl310;311; SSE-X64-LABEL: fptoui_f32toi1:312; SSE-X64:       # %bb.0:313; SSE-X64-NEXT:    cvttss2si %xmm0, %eax314; SSE-X64-NEXT:    # kill: def $al killed $al killed $eax315; SSE-X64-NEXT:    retq316;317; AVX-X86-LABEL: fptoui_f32toi1:318; AVX-X86:       # %bb.0:319; AVX-X86-NEXT:    vcvttss2si {{[0-9]+}}(%esp), %eax320; AVX-X86-NEXT:    # kill: def $al killed $al killed $eax321; AVX-X86-NEXT:    retl322;323; AVX-X64-LABEL: fptoui_f32toi1:324; AVX-X64:       # %bb.0:325; AVX-X64-NEXT:    vcvttss2si %xmm0, %eax326; AVX-X64-NEXT:    # kill: def $al killed $al killed $eax327; AVX-X64-NEXT:    retq328;329; X87-LABEL: fptoui_f32toi1:330; X87:       # %bb.0:331; X87-NEXT:    subl $8, %esp332; X87-NEXT:    .cfi_def_cfa_offset 12333; X87-NEXT:    flds {{[0-9]+}}(%esp)334; X87-NEXT:    wait335; X87-NEXT:    fnstcw {{[0-9]+}}(%esp)336; X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax337; X87-NEXT:    orl $3072, %eax # imm = 0xC00338; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)339; X87-NEXT:    fldcw {{[0-9]+}}(%esp)340; X87-NEXT:    fistps {{[0-9]+}}(%esp)341; X87-NEXT:    fldcw {{[0-9]+}}(%esp)342; X87-NEXT:    movzbl {{[0-9]+}}(%esp), %eax343; X87-NEXT:    addl $8, %esp344; X87-NEXT:    .cfi_def_cfa_offset 4345; X87-NEXT:    retl346  %result = call i1 @llvm.experimental.constrained.fptoui.i1.f32(float %x,347                                               metadata !"fpexcept.strict") #0348  ret i1 %result349}350 351define i8 @fptoui_f32toi8(float %x) #0 {352; SSE-X86-LABEL: fptoui_f32toi8:353; SSE-X86:       # %bb.0:354; SSE-X86-NEXT:    cvttss2si {{[0-9]+}}(%esp), %eax355; SSE-X86-NEXT:    # kill: def $al killed $al killed $eax356; SSE-X86-NEXT:    retl357;358; SSE-X64-LABEL: fptoui_f32toi8:359; SSE-X64:       # %bb.0:360; SSE-X64-NEXT:    cvttss2si %xmm0, %eax361; SSE-X64-NEXT:    # kill: def $al killed $al killed $eax362; SSE-X64-NEXT:    retq363;364; AVX-X86-LABEL: fptoui_f32toi8:365; AVX-X86:       # %bb.0:366; AVX-X86-NEXT:    vcvttss2si {{[0-9]+}}(%esp), %eax367; AVX-X86-NEXT:    # kill: def $al killed $al killed $eax368; AVX-X86-NEXT:    retl369;370; AVX-X64-LABEL: fptoui_f32toi8:371; AVX-X64:       # %bb.0:372; AVX-X64-NEXT:    vcvttss2si %xmm0, %eax373; AVX-X64-NEXT:    # kill: def $al killed $al killed $eax374; AVX-X64-NEXT:    retq375;376; X87-LABEL: fptoui_f32toi8:377; X87:       # %bb.0:378; X87-NEXT:    subl $8, %esp379; X87-NEXT:    .cfi_def_cfa_offset 12380; X87-NEXT:    flds {{[0-9]+}}(%esp)381; X87-NEXT:    wait382; X87-NEXT:    fnstcw {{[0-9]+}}(%esp)383; X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax384; X87-NEXT:    orl $3072, %eax # imm = 0xC00385; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)386; X87-NEXT:    fldcw {{[0-9]+}}(%esp)387; X87-NEXT:    fistps {{[0-9]+}}(%esp)388; X87-NEXT:    fldcw {{[0-9]+}}(%esp)389; X87-NEXT:    movzbl {{[0-9]+}}(%esp), %eax390; X87-NEXT:    addl $8, %esp391; X87-NEXT:    .cfi_def_cfa_offset 4392; X87-NEXT:    retl393  %result = call i8 @llvm.experimental.constrained.fptoui.i8.f32(float %x,394                                               metadata !"fpexcept.strict") #0395  ret i8 %result396}397 398define i16 @fptoui_f32toi16(float %x) #0 {399; SSE-X86-LABEL: fptoui_f32toi16:400; SSE-X86:       # %bb.0:401; SSE-X86-NEXT:    cvttss2si {{[0-9]+}}(%esp), %eax402; SSE-X86-NEXT:    # kill: def $ax killed $ax killed $eax403; SSE-X86-NEXT:    retl404;405; SSE-X64-LABEL: fptoui_f32toi16:406; SSE-X64:       # %bb.0:407; SSE-X64-NEXT:    cvttss2si %xmm0, %eax408; SSE-X64-NEXT:    # kill: def $ax killed $ax killed $eax409; SSE-X64-NEXT:    retq410;411; AVX-X86-LABEL: fptoui_f32toi16:412; AVX-X86:       # %bb.0:413; AVX-X86-NEXT:    vcvttss2si {{[0-9]+}}(%esp), %eax414; AVX-X86-NEXT:    # kill: def $ax killed $ax killed $eax415; AVX-X86-NEXT:    retl416;417; AVX-X64-LABEL: fptoui_f32toi16:418; AVX-X64:       # %bb.0:419; AVX-X64-NEXT:    vcvttss2si %xmm0, %eax420; AVX-X64-NEXT:    # kill: def $ax killed $ax killed $eax421; AVX-X64-NEXT:    retq422;423; X87-LABEL: fptoui_f32toi16:424; X87:       # %bb.0:425; X87-NEXT:    subl $8, %esp426; X87-NEXT:    .cfi_def_cfa_offset 12427; X87-NEXT:    flds {{[0-9]+}}(%esp)428; X87-NEXT:    wait429; X87-NEXT:    fnstcw (%esp)430; X87-NEXT:    movzwl (%esp), %eax431; X87-NEXT:    orl $3072, %eax # imm = 0xC00432; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)433; X87-NEXT:    fldcw {{[0-9]+}}(%esp)434; X87-NEXT:    fistpl {{[0-9]+}}(%esp)435; X87-NEXT:    fldcw (%esp)436; X87-NEXT:    movl {{[0-9]+}}(%esp), %eax437; X87-NEXT:    # kill: def $ax killed $ax killed $eax438; X87-NEXT:    addl $8, %esp439; X87-NEXT:    .cfi_def_cfa_offset 4440; X87-NEXT:    retl441  %result = call i16 @llvm.experimental.constrained.fptoui.i16.f32(float %x,442                                               metadata !"fpexcept.strict") #0443  ret i16 %result444}445 446define i32 @fptoui_f32toi32(float %x) #0 {447; SSE-X86-LABEL: fptoui_f32toi32:448; SSE-X86:       # %bb.0:449; SSE-X86-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero450; SSE-X86-NEXT:    movss {{.*#+}} xmm2 = [2.14748365E+9,0.0E+0,0.0E+0,0.0E+0]451; SSE-X86-NEXT:    comiss %xmm0, %xmm2452; SSE-X86-NEXT:    xorps %xmm1, %xmm1453; SSE-X86-NEXT:    ja .LBB8_2454; SSE-X86-NEXT:  # %bb.1:455; SSE-X86-NEXT:    movaps %xmm2, %xmm1456; SSE-X86-NEXT:  .LBB8_2:457; SSE-X86-NEXT:    setbe %al458; SSE-X86-NEXT:    movzbl %al, %ecx459; SSE-X86-NEXT:    shll $31, %ecx460; SSE-X86-NEXT:    subss %xmm1, %xmm0461; SSE-X86-NEXT:    cvttss2si %xmm0, %eax462; SSE-X86-NEXT:    xorl %ecx, %eax463; SSE-X86-NEXT:    retl464;465; SSE-X64-LABEL: fptoui_f32toi32:466; SSE-X64:       # %bb.0:467; SSE-X64-NEXT:    cvttss2si %xmm0, %rax468; SSE-X64-NEXT:    # kill: def $eax killed $eax killed $rax469; SSE-X64-NEXT:    retq470;471; AVX1-X86-LABEL: fptoui_f32toi32:472; AVX1-X86:       # %bb.0:473; AVX1-X86-NEXT:    pushl %ebp474; AVX1-X86-NEXT:    .cfi_def_cfa_offset 8475; AVX1-X86-NEXT:    .cfi_offset %ebp, -8476; AVX1-X86-NEXT:    movl %esp, %ebp477; AVX1-X86-NEXT:    .cfi_def_cfa_register %ebp478; AVX1-X86-NEXT:    andl $-8, %esp479; AVX1-X86-NEXT:    subl $8, %esp480; AVX1-X86-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero481; AVX1-X86-NEXT:    vmovss %xmm0, (%esp)482; AVX1-X86-NEXT:    flds (%esp)483; AVX1-X86-NEXT:    fisttpll (%esp)484; AVX1-X86-NEXT:    wait485; AVX1-X86-NEXT:    movl (%esp), %eax486; AVX1-X86-NEXT:    movl %ebp, %esp487; AVX1-X86-NEXT:    popl %ebp488; AVX1-X86-NEXT:    .cfi_def_cfa %esp, 4489; AVX1-X86-NEXT:    retl490;491; AVX1-X64-LABEL: fptoui_f32toi32:492; AVX1-X64:       # %bb.0:493; AVX1-X64-NEXT:    vcvttss2si %xmm0, %rax494; AVX1-X64-NEXT:    # kill: def $eax killed $eax killed $rax495; AVX1-X64-NEXT:    retq496;497; AVX512-X86-LABEL: fptoui_f32toi32:498; AVX512-X86:       # %bb.0:499; AVX512-X86-NEXT:    vcvttss2usi {{[0-9]+}}(%esp), %eax500; AVX512-X86-NEXT:    retl501;502; AVX512-X64-LABEL: fptoui_f32toi32:503; AVX512-X64:       # %bb.0:504; AVX512-X64-NEXT:    vcvttss2usi %xmm0, %eax505; AVX512-X64-NEXT:    retq506;507; X87-LABEL: fptoui_f32toi32:508; X87:       # %bb.0:509; X87-NEXT:    pushl %ebp510; X87-NEXT:    .cfi_def_cfa_offset 8511; X87-NEXT:    .cfi_offset %ebp, -8512; X87-NEXT:    movl %esp, %ebp513; X87-NEXT:    .cfi_def_cfa_register %ebp514; X87-NEXT:    andl $-8, %esp515; X87-NEXT:    subl $16, %esp516; X87-NEXT:    flds 8(%ebp)517; X87-NEXT:    wait518; X87-NEXT:    fnstcw {{[0-9]+}}(%esp)519; X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax520; X87-NEXT:    orl $3072, %eax # imm = 0xC00521; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)522; X87-NEXT:    fldcw {{[0-9]+}}(%esp)523; X87-NEXT:    fistpll {{[0-9]+}}(%esp)524; X87-NEXT:    fldcw {{[0-9]+}}(%esp)525; X87-NEXT:    movl {{[0-9]+}}(%esp), %eax526; X87-NEXT:    movl %ebp, %esp527; X87-NEXT:    popl %ebp528; X87-NEXT:    .cfi_def_cfa %esp, 4529; X87-NEXT:    retl530  %result = call i32 @llvm.experimental.constrained.fptoui.i32.f32(float %x,531                                               metadata !"fpexcept.strict") #0532  ret i32 %result533}534 535define i64 @fptoui_f32toi64(float %x) #0 {536; SSE-X86-LABEL: fptoui_f32toi64:537; SSE-X86:       # %bb.0:538; SSE-X86-NEXT:    pushl %ebp539; SSE-X86-NEXT:    .cfi_def_cfa_offset 8540; SSE-X86-NEXT:    .cfi_offset %ebp, -8541; SSE-X86-NEXT:    movl %esp, %ebp542; SSE-X86-NEXT:    .cfi_def_cfa_register %ebp543; SSE-X86-NEXT:    andl $-8, %esp544; SSE-X86-NEXT:    subl $16, %esp545; SSE-X86-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero546; SSE-X86-NEXT:    movss {{.*#+}} xmm1 = [9.22337203E+18,0.0E+0,0.0E+0,0.0E+0]547; SSE-X86-NEXT:    comiss %xmm0, %xmm1548; SSE-X86-NEXT:    jbe .LBB9_2549; SSE-X86-NEXT:  # %bb.1:550; SSE-X86-NEXT:    xorps %xmm1, %xmm1551; SSE-X86-NEXT:  .LBB9_2:552; SSE-X86-NEXT:    subss %xmm1, %xmm0553; SSE-X86-NEXT:    movss %xmm0, {{[0-9]+}}(%esp)554; SSE-X86-NEXT:    setbe %al555; SSE-X86-NEXT:    flds {{[0-9]+}}(%esp)556; SSE-X86-NEXT:    wait557; SSE-X86-NEXT:    fnstcw {{[0-9]+}}(%esp)558; SSE-X86-NEXT:    movzwl {{[0-9]+}}(%esp), %ecx559; SSE-X86-NEXT:    orl $3072, %ecx # imm = 0xC00560; SSE-X86-NEXT:    movw %cx, {{[0-9]+}}(%esp)561; SSE-X86-NEXT:    fldcw {{[0-9]+}}(%esp)562; SSE-X86-NEXT:    fistpll {{[0-9]+}}(%esp)563; SSE-X86-NEXT:    fldcw {{[0-9]+}}(%esp)564; SSE-X86-NEXT:    movzbl %al, %edx565; SSE-X86-NEXT:    shll $31, %edx566; SSE-X86-NEXT:    xorl {{[0-9]+}}(%esp), %edx567; SSE-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax568; SSE-X86-NEXT:    movl %ebp, %esp569; SSE-X86-NEXT:    popl %ebp570; SSE-X86-NEXT:    .cfi_def_cfa %esp, 4571; SSE-X86-NEXT:    retl572;573; SSE-X64-LABEL: fptoui_f32toi64:574; SSE-X64:       # %bb.0:575; SSE-X64-NEXT:    movss {{.*#+}} xmm2 = [9.22337203E+18,0.0E+0,0.0E+0,0.0E+0]576; SSE-X64-NEXT:    comiss %xmm2, %xmm0577; SSE-X64-NEXT:    xorps %xmm1, %xmm1578; SSE-X64-NEXT:    jb .LBB9_2579; SSE-X64-NEXT:  # %bb.1:580; SSE-X64-NEXT:    movaps %xmm2, %xmm1581; SSE-X64-NEXT:  .LBB9_2:582; SSE-X64-NEXT:    subss %xmm1, %xmm0583; SSE-X64-NEXT:    cvttss2si %xmm0, %rcx584; SSE-X64-NEXT:    setae %al585; SSE-X64-NEXT:    movzbl %al, %eax586; SSE-X64-NEXT:    shlq $63, %rax587; SSE-X64-NEXT:    xorq %rcx, %rax588; SSE-X64-NEXT:    retq589;590; AVX1-X86-LABEL: fptoui_f32toi64:591; AVX1-X86:       # %bb.0:592; AVX1-X86-NEXT:    pushl %ebp593; AVX1-X86-NEXT:    .cfi_def_cfa_offset 8594; AVX1-X86-NEXT:    .cfi_offset %ebp, -8595; AVX1-X86-NEXT:    movl %esp, %ebp596; AVX1-X86-NEXT:    .cfi_def_cfa_register %ebp597; AVX1-X86-NEXT:    andl $-8, %esp598; AVX1-X86-NEXT:    subl $8, %esp599; AVX1-X86-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero600; AVX1-X86-NEXT:    vmovss {{.*#+}} xmm1 = [9.22337203E+18,0.0E+0,0.0E+0,0.0E+0]601; AVX1-X86-NEXT:    vcomiss %xmm0, %xmm1602; AVX1-X86-NEXT:    jbe .LBB9_2603; AVX1-X86-NEXT:  # %bb.1:604; AVX1-X86-NEXT:    vxorps %xmm1, %xmm1, %xmm1605; AVX1-X86-NEXT:  .LBB9_2:606; AVX1-X86-NEXT:    vsubss %xmm1, %xmm0, %xmm0607; AVX1-X86-NEXT:    vmovss %xmm0, (%esp)608; AVX1-X86-NEXT:    flds (%esp)609; AVX1-X86-NEXT:    fisttpll (%esp)610; AVX1-X86-NEXT:    wait611; AVX1-X86-NEXT:    setbe %al612; AVX1-X86-NEXT:    movzbl %al, %edx613; AVX1-X86-NEXT:    shll $31, %edx614; AVX1-X86-NEXT:    xorl {{[0-9]+}}(%esp), %edx615; AVX1-X86-NEXT:    movl (%esp), %eax616; AVX1-X86-NEXT:    movl %ebp, %esp617; AVX1-X86-NEXT:    popl %ebp618; AVX1-X86-NEXT:    .cfi_def_cfa %esp, 4619; AVX1-X86-NEXT:    retl620;621; AVX1-X64-LABEL: fptoui_f32toi64:622; AVX1-X64:       # %bb.0:623; AVX1-X64-NEXT:    vmovss {{.*#+}} xmm1 = [9.22337203E+18,0.0E+0,0.0E+0,0.0E+0]624; AVX1-X64-NEXT:    vcomiss %xmm1, %xmm0625; AVX1-X64-NEXT:    vxorps %xmm2, %xmm2, %xmm2626; AVX1-X64-NEXT:    jb .LBB9_2627; AVX1-X64-NEXT:  # %bb.1:628; AVX1-X64-NEXT:    vmovaps %xmm1, %xmm2629; AVX1-X64-NEXT:  .LBB9_2:630; AVX1-X64-NEXT:    vsubss %xmm2, %xmm0, %xmm0631; AVX1-X64-NEXT:    vcvttss2si %xmm0, %rcx632; AVX1-X64-NEXT:    setae %al633; AVX1-X64-NEXT:    movzbl %al, %eax634; AVX1-X64-NEXT:    shlq $63, %rax635; AVX1-X64-NEXT:    xorq %rcx, %rax636; AVX1-X64-NEXT:    retq637;638; AVX512-X86-LABEL: fptoui_f32toi64:639; AVX512-X86:       # %bb.0:640; AVX512-X86-NEXT:    pushl %ebp641; AVX512-X86-NEXT:    .cfi_def_cfa_offset 8642; AVX512-X86-NEXT:    .cfi_offset %ebp, -8643; AVX512-X86-NEXT:    movl %esp, %ebp644; AVX512-X86-NEXT:    .cfi_def_cfa_register %ebp645; AVX512-X86-NEXT:    andl $-8, %esp646; AVX512-X86-NEXT:    subl $8, %esp647; AVX512-X86-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero648; AVX512-X86-NEXT:    vmovss {{.*#+}} xmm1 = [9.22337203E+18,0.0E+0,0.0E+0,0.0E+0]649; AVX512-X86-NEXT:    xorl %edx, %edx650; AVX512-X86-NEXT:    vcomiss %xmm0, %xmm1651; AVX512-X86-NEXT:    setbe %dl652; AVX512-X86-NEXT:    kmovw %edx, %k1653; AVX512-X86-NEXT:    vmovss %xmm1, %xmm1, %xmm1 {%k1} {z}654; AVX512-X86-NEXT:    vsubss %xmm1, %xmm0, %xmm0655; AVX512-X86-NEXT:    vmovss %xmm0, (%esp)656; AVX512-X86-NEXT:    flds (%esp)657; AVX512-X86-NEXT:    fisttpll (%esp)658; AVX512-X86-NEXT:    wait659; AVX512-X86-NEXT:    shll $31, %edx660; AVX512-X86-NEXT:    xorl {{[0-9]+}}(%esp), %edx661; AVX512-X86-NEXT:    movl (%esp), %eax662; AVX512-X86-NEXT:    movl %ebp, %esp663; AVX512-X86-NEXT:    popl %ebp664; AVX512-X86-NEXT:    .cfi_def_cfa %esp, 4665; AVX512-X86-NEXT:    retl666;667; AVX512-X64-LABEL: fptoui_f32toi64:668; AVX512-X64:       # %bb.0:669; AVX512-X64-NEXT:    vcvttss2usi %xmm0, %rax670; AVX512-X64-NEXT:    retq671;672; X87-LABEL: fptoui_f32toi64:673; X87:       # %bb.0:674; X87-NEXT:    pushl %ebp675; X87-NEXT:    .cfi_def_cfa_offset 8676; X87-NEXT:    .cfi_offset %ebp, -8677; X87-NEXT:    movl %esp, %ebp678; X87-NEXT:    .cfi_def_cfa_register %ebp679; X87-NEXT:    andl $-8, %esp680; X87-NEXT:    subl $16, %esp681; X87-NEXT:    flds 8(%ebp)682; X87-NEXT:    flds {{\.?LCPI[0-9]+_[0-9]+}}683; X87-NEXT:    fcom %st(1)684; X87-NEXT:    wait685; X87-NEXT:    fnstsw %ax686; X87-NEXT:    xorl %edx, %edx687; X87-NEXT:    # kill: def $ah killed $ah killed $ax688; X87-NEXT:    sahf689; X87-NEXT:    setbe %al690; X87-NEXT:    fldz691; X87-NEXT:    jbe .LBB9_2692; X87-NEXT:  # %bb.1:693; X87-NEXT:    fstp %st(1)694; X87-NEXT:    fldz695; X87-NEXT:  .LBB9_2:696; X87-NEXT:    fstp %st(0)697; X87-NEXT:    fsubrp %st, %st(1)698; X87-NEXT:    wait699; X87-NEXT:    fnstcw {{[0-9]+}}(%esp)700; X87-NEXT:    movzwl {{[0-9]+}}(%esp), %ecx701; X87-NEXT:    orl $3072, %ecx # imm = 0xC00702; X87-NEXT:    movw %cx, {{[0-9]+}}(%esp)703; X87-NEXT:    fldcw {{[0-9]+}}(%esp)704; X87-NEXT:    fistpll {{[0-9]+}}(%esp)705; X87-NEXT:    fldcw {{[0-9]+}}(%esp)706; X87-NEXT:    movb %al, %dl707; X87-NEXT:    shll $31, %edx708; X87-NEXT:    xorl {{[0-9]+}}(%esp), %edx709; X87-NEXT:    movl {{[0-9]+}}(%esp), %eax710; X87-NEXT:    movl %ebp, %esp711; X87-NEXT:    popl %ebp712; X87-NEXT:    .cfi_def_cfa %esp, 4713; X87-NEXT:    retl714  %result = call i64 @llvm.experimental.constrained.fptoui.i64.f32(float %x,715                                               metadata !"fpexcept.strict") #0716  ret i64 %result717}718 719define i8 @fptosi_f64toi8(double %x) #0 {720; SSE-X86-LABEL: fptosi_f64toi8:721; SSE-X86:       # %bb.0:722; SSE-X86-NEXT:    cvttsd2si {{[0-9]+}}(%esp), %eax723; SSE-X86-NEXT:    # kill: def $al killed $al killed $eax724; SSE-X86-NEXT:    retl725;726; SSE-X64-LABEL: fptosi_f64toi8:727; SSE-X64:       # %bb.0:728; SSE-X64-NEXT:    cvttsd2si %xmm0, %eax729; SSE-X64-NEXT:    # kill: def $al killed $al killed $eax730; SSE-X64-NEXT:    retq731;732; AVX-X86-LABEL: fptosi_f64toi8:733; AVX-X86:       # %bb.0:734; AVX-X86-NEXT:    vcvttsd2si {{[0-9]+}}(%esp), %eax735; AVX-X86-NEXT:    # kill: def $al killed $al killed $eax736; AVX-X86-NEXT:    retl737;738; AVX-X64-LABEL: fptosi_f64toi8:739; AVX-X64:       # %bb.0:740; AVX-X64-NEXT:    vcvttsd2si %xmm0, %eax741; AVX-X64-NEXT:    # kill: def $al killed $al killed $eax742; AVX-X64-NEXT:    retq743;744; X87-LABEL: fptosi_f64toi8:745; X87:       # %bb.0:746; X87-NEXT:    subl $8, %esp747; X87-NEXT:    .cfi_def_cfa_offset 12748; X87-NEXT:    fldl {{[0-9]+}}(%esp)749; X87-NEXT:    wait750; X87-NEXT:    fnstcw {{[0-9]+}}(%esp)751; X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax752; X87-NEXT:    orl $3072, %eax # imm = 0xC00753; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)754; X87-NEXT:    fldcw {{[0-9]+}}(%esp)755; X87-NEXT:    fistps {{[0-9]+}}(%esp)756; X87-NEXT:    fldcw {{[0-9]+}}(%esp)757; X87-NEXT:    movzbl {{[0-9]+}}(%esp), %eax758; X87-NEXT:    addl $8, %esp759; X87-NEXT:    .cfi_def_cfa_offset 4760; X87-NEXT:    retl761  %result = call i8 @llvm.experimental.constrained.fptosi.i8.f64(double %x,762                                               metadata !"fpexcept.strict") #0763  ret i8 %result764}765 766define i16 @fptosi_f64toi16(double %x) #0 {767; SSE-X86-LABEL: fptosi_f64toi16:768; SSE-X86:       # %bb.0:769; SSE-X86-NEXT:    cvttsd2si {{[0-9]+}}(%esp), %eax770; SSE-X86-NEXT:    # kill: def $ax killed $ax killed $eax771; SSE-X86-NEXT:    retl772;773; SSE-X64-LABEL: fptosi_f64toi16:774; SSE-X64:       # %bb.0:775; SSE-X64-NEXT:    cvttsd2si %xmm0, %eax776; SSE-X64-NEXT:    # kill: def $ax killed $ax killed $eax777; SSE-X64-NEXT:    retq778;779; AVX-X86-LABEL: fptosi_f64toi16:780; AVX-X86:       # %bb.0:781; AVX-X86-NEXT:    vcvttsd2si {{[0-9]+}}(%esp), %eax782; AVX-X86-NEXT:    # kill: def $ax killed $ax killed $eax783; AVX-X86-NEXT:    retl784;785; AVX-X64-LABEL: fptosi_f64toi16:786; AVX-X64:       # %bb.0:787; AVX-X64-NEXT:    vcvttsd2si %xmm0, %eax788; AVX-X64-NEXT:    # kill: def $ax killed $ax killed $eax789; AVX-X64-NEXT:    retq790;791; X87-LABEL: fptosi_f64toi16:792; X87:       # %bb.0:793; X87-NEXT:    subl $8, %esp794; X87-NEXT:    .cfi_def_cfa_offset 12795; X87-NEXT:    fldl {{[0-9]+}}(%esp)796; X87-NEXT:    wait797; X87-NEXT:    fnstcw {{[0-9]+}}(%esp)798; X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax799; X87-NEXT:    orl $3072, %eax # imm = 0xC00800; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)801; X87-NEXT:    fldcw {{[0-9]+}}(%esp)802; X87-NEXT:    fistps {{[0-9]+}}(%esp)803; X87-NEXT:    fldcw {{[0-9]+}}(%esp)804; X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax805; X87-NEXT:    addl $8, %esp806; X87-NEXT:    .cfi_def_cfa_offset 4807; X87-NEXT:    retl808  %result = call i16 @llvm.experimental.constrained.fptosi.i16.f64(double %x,809                                               metadata !"fpexcept.strict") #0810  ret i16 %result811}812 813define i32 @fptosi_f64toi32(double %x) #0 {814; SSE-X86-LABEL: fptosi_f64toi32:815; SSE-X86:       # %bb.0:816; SSE-X86-NEXT:    cvttsd2si {{[0-9]+}}(%esp), %eax817; SSE-X86-NEXT:    retl818;819; SSE-X64-LABEL: fptosi_f64toi32:820; SSE-X64:       # %bb.0:821; SSE-X64-NEXT:    cvttsd2si %xmm0, %eax822; SSE-X64-NEXT:    retq823;824; AVX-X86-LABEL: fptosi_f64toi32:825; AVX-X86:       # %bb.0:826; AVX-X86-NEXT:    vcvttsd2si {{[0-9]+}}(%esp), %eax827; AVX-X86-NEXT:    retl828;829; AVX-X64-LABEL: fptosi_f64toi32:830; AVX-X64:       # %bb.0:831; AVX-X64-NEXT:    vcvttsd2si %xmm0, %eax832; AVX-X64-NEXT:    retq833;834; X87-LABEL: fptosi_f64toi32:835; X87:       # %bb.0:836; X87-NEXT:    subl $8, %esp837; X87-NEXT:    .cfi_def_cfa_offset 12838; X87-NEXT:    fldl {{[0-9]+}}(%esp)839; X87-NEXT:    wait840; X87-NEXT:    fnstcw (%esp)841; X87-NEXT:    movzwl (%esp), %eax842; X87-NEXT:    orl $3072, %eax # imm = 0xC00843; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)844; X87-NEXT:    fldcw {{[0-9]+}}(%esp)845; X87-NEXT:    fistpl {{[0-9]+}}(%esp)846; X87-NEXT:    fldcw (%esp)847; X87-NEXT:    movl {{[0-9]+}}(%esp), %eax848; X87-NEXT:    addl $8, %esp849; X87-NEXT:    .cfi_def_cfa_offset 4850; X87-NEXT:    retl851  %result = call i32 @llvm.experimental.constrained.fptosi.i32.f64(double %x,852                                               metadata !"fpexcept.strict") #0853  ret i32 %result854}855 856define i64 @fptosi_f64toi64(double %x) #0 {857; SSE-X86-LABEL: fptosi_f64toi64:858; SSE-X86:       # %bb.0:859; SSE-X86-NEXT:    pushl %ebp860; SSE-X86-NEXT:    .cfi_def_cfa_offset 8861; SSE-X86-NEXT:    .cfi_offset %ebp, -8862; SSE-X86-NEXT:    movl %esp, %ebp863; SSE-X86-NEXT:    .cfi_def_cfa_register %ebp864; SSE-X86-NEXT:    andl $-8, %esp865; SSE-X86-NEXT:    subl $16, %esp866; SSE-X86-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero867; SSE-X86-NEXT:    movsd %xmm0, {{[0-9]+}}(%esp)868; SSE-X86-NEXT:    fldl {{[0-9]+}}(%esp)869; SSE-X86-NEXT:    wait870; SSE-X86-NEXT:    fnstcw {{[0-9]+}}(%esp)871; SSE-X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax872; SSE-X86-NEXT:    orl $3072, %eax # imm = 0xC00873; SSE-X86-NEXT:    movw %ax, {{[0-9]+}}(%esp)874; SSE-X86-NEXT:    fldcw {{[0-9]+}}(%esp)875; SSE-X86-NEXT:    fistpll {{[0-9]+}}(%esp)876; SSE-X86-NEXT:    fldcw {{[0-9]+}}(%esp)877; SSE-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax878; SSE-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx879; SSE-X86-NEXT:    movl %ebp, %esp880; SSE-X86-NEXT:    popl %ebp881; SSE-X86-NEXT:    .cfi_def_cfa %esp, 4882; SSE-X86-NEXT:    retl883;884; SSE-X64-LABEL: fptosi_f64toi64:885; SSE-X64:       # %bb.0:886; SSE-X64-NEXT:    cvttsd2si %xmm0, %rax887; SSE-X64-NEXT:    retq888;889; AVX-X86-LABEL: fptosi_f64toi64:890; AVX-X86:       # %bb.0:891; AVX-X86-NEXT:    pushl %ebp892; AVX-X86-NEXT:    .cfi_def_cfa_offset 8893; AVX-X86-NEXT:    .cfi_offset %ebp, -8894; AVX-X86-NEXT:    movl %esp, %ebp895; AVX-X86-NEXT:    .cfi_def_cfa_register %ebp896; AVX-X86-NEXT:    andl $-8, %esp897; AVX-X86-NEXT:    subl $8, %esp898; AVX-X86-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero899; AVX-X86-NEXT:    vmovsd %xmm0, (%esp)900; AVX-X86-NEXT:    fldl (%esp)901; AVX-X86-NEXT:    fisttpll (%esp)902; AVX-X86-NEXT:    wait903; AVX-X86-NEXT:    movl (%esp), %eax904; AVX-X86-NEXT:    movl {{[0-9]+}}(%esp), %edx905; AVX-X86-NEXT:    movl %ebp, %esp906; AVX-X86-NEXT:    popl %ebp907; AVX-X86-NEXT:    .cfi_def_cfa %esp, 4908; AVX-X86-NEXT:    retl909;910; AVX-X64-LABEL: fptosi_f64toi64:911; AVX-X64:       # %bb.0:912; AVX-X64-NEXT:    vcvttsd2si %xmm0, %rax913; AVX-X64-NEXT:    retq914;915; X87-LABEL: fptosi_f64toi64:916; X87:       # %bb.0:917; X87-NEXT:    pushl %ebp918; X87-NEXT:    .cfi_def_cfa_offset 8919; X87-NEXT:    .cfi_offset %ebp, -8920; X87-NEXT:    movl %esp, %ebp921; X87-NEXT:    .cfi_def_cfa_register %ebp922; X87-NEXT:    andl $-8, %esp923; X87-NEXT:    subl $16, %esp924; X87-NEXT:    fldl 8(%ebp)925; X87-NEXT:    wait926; X87-NEXT:    fnstcw {{[0-9]+}}(%esp)927; X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax928; X87-NEXT:    orl $3072, %eax # imm = 0xC00929; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)930; X87-NEXT:    fldcw {{[0-9]+}}(%esp)931; X87-NEXT:    fistpll {{[0-9]+}}(%esp)932; X87-NEXT:    fldcw {{[0-9]+}}(%esp)933; X87-NEXT:    movl {{[0-9]+}}(%esp), %eax934; X87-NEXT:    movl {{[0-9]+}}(%esp), %edx935; X87-NEXT:    movl %ebp, %esp936; X87-NEXT:    popl %ebp937; X87-NEXT:    .cfi_def_cfa %esp, 4938; X87-NEXT:    retl939  %result = call i64 @llvm.experimental.constrained.fptosi.i64.f64(double %x,940                                               metadata !"fpexcept.strict") #0941  ret i64 %result942}943 944define i1 @fptoui_f64toi1(double %x) #0 {945; SSE-X86-LABEL: fptoui_f64toi1:946; SSE-X86:       # %bb.0:947; SSE-X86-NEXT:    cvttsd2si {{[0-9]+}}(%esp), %eax948; SSE-X86-NEXT:    # kill: def $al killed $al killed $eax949; SSE-X86-NEXT:    retl950;951; SSE-X64-LABEL: fptoui_f64toi1:952; SSE-X64:       # %bb.0:953; SSE-X64-NEXT:    cvttsd2si %xmm0, %eax954; SSE-X64-NEXT:    # kill: def $al killed $al killed $eax955; SSE-X64-NEXT:    retq956;957; AVX-X86-LABEL: fptoui_f64toi1:958; AVX-X86:       # %bb.0:959; AVX-X86-NEXT:    vcvttsd2si {{[0-9]+}}(%esp), %eax960; AVX-X86-NEXT:    # kill: def $al killed $al killed $eax961; AVX-X86-NEXT:    retl962;963; AVX-X64-LABEL: fptoui_f64toi1:964; AVX-X64:       # %bb.0:965; AVX-X64-NEXT:    vcvttsd2si %xmm0, %eax966; AVX-X64-NEXT:    # kill: def $al killed $al killed $eax967; AVX-X64-NEXT:    retq968;969; X87-LABEL: fptoui_f64toi1:970; X87:       # %bb.0:971; X87-NEXT:    subl $8, %esp972; X87-NEXT:    .cfi_def_cfa_offset 12973; X87-NEXT:    fldl {{[0-9]+}}(%esp)974; X87-NEXT:    wait975; X87-NEXT:    fnstcw {{[0-9]+}}(%esp)976; X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax977; X87-NEXT:    orl $3072, %eax # imm = 0xC00978; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)979; X87-NEXT:    fldcw {{[0-9]+}}(%esp)980; X87-NEXT:    fistps {{[0-9]+}}(%esp)981; X87-NEXT:    fldcw {{[0-9]+}}(%esp)982; X87-NEXT:    movzbl {{[0-9]+}}(%esp), %eax983; X87-NEXT:    addl $8, %esp984; X87-NEXT:    .cfi_def_cfa_offset 4985; X87-NEXT:    retl986  %result = call i1 @llvm.experimental.constrained.fptoui.i1.f64(double %x,987                                               metadata !"fpexcept.strict") #0988  ret i1 %result989}990 991define i8 @fptoui_f64toi8(double %x) #0 {992; SSE-X86-LABEL: fptoui_f64toi8:993; SSE-X86:       # %bb.0:994; SSE-X86-NEXT:    cvttsd2si {{[0-9]+}}(%esp), %eax995; SSE-X86-NEXT:    # kill: def $al killed $al killed $eax996; SSE-X86-NEXT:    retl997;998; SSE-X64-LABEL: fptoui_f64toi8:999; SSE-X64:       # %bb.0:1000; SSE-X64-NEXT:    cvttsd2si %xmm0, %eax1001; SSE-X64-NEXT:    # kill: def $al killed $al killed $eax1002; SSE-X64-NEXT:    retq1003;1004; AVX-X86-LABEL: fptoui_f64toi8:1005; AVX-X86:       # %bb.0:1006; AVX-X86-NEXT:    vcvttsd2si {{[0-9]+}}(%esp), %eax1007; AVX-X86-NEXT:    # kill: def $al killed $al killed $eax1008; AVX-X86-NEXT:    retl1009;1010; AVX-X64-LABEL: fptoui_f64toi8:1011; AVX-X64:       # %bb.0:1012; AVX-X64-NEXT:    vcvttsd2si %xmm0, %eax1013; AVX-X64-NEXT:    # kill: def $al killed $al killed $eax1014; AVX-X64-NEXT:    retq1015;1016; X87-LABEL: fptoui_f64toi8:1017; X87:       # %bb.0:1018; X87-NEXT:    subl $8, %esp1019; X87-NEXT:    .cfi_def_cfa_offset 121020; X87-NEXT:    fldl {{[0-9]+}}(%esp)1021; X87-NEXT:    wait1022; X87-NEXT:    fnstcw {{[0-9]+}}(%esp)1023; X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax1024; X87-NEXT:    orl $3072, %eax # imm = 0xC001025; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)1026; X87-NEXT:    fldcw {{[0-9]+}}(%esp)1027; X87-NEXT:    fistps {{[0-9]+}}(%esp)1028; X87-NEXT:    fldcw {{[0-9]+}}(%esp)1029; X87-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1030; X87-NEXT:    addl $8, %esp1031; X87-NEXT:    .cfi_def_cfa_offset 41032; X87-NEXT:    retl1033  %result = call i8 @llvm.experimental.constrained.fptoui.i8.f64(double %x,1034                                               metadata !"fpexcept.strict") #01035  ret i8 %result1036}1037 1038define i16 @fptoui_f64toi16(double %x) #0 {1039; SSE-X86-LABEL: fptoui_f64toi16:1040; SSE-X86:       # %bb.0:1041; SSE-X86-NEXT:    cvttsd2si {{[0-9]+}}(%esp), %eax1042; SSE-X86-NEXT:    # kill: def $ax killed $ax killed $eax1043; SSE-X86-NEXT:    retl1044;1045; SSE-X64-LABEL: fptoui_f64toi16:1046; SSE-X64:       # %bb.0:1047; SSE-X64-NEXT:    cvttsd2si %xmm0, %eax1048; SSE-X64-NEXT:    # kill: def $ax killed $ax killed $eax1049; SSE-X64-NEXT:    retq1050;1051; AVX-X86-LABEL: fptoui_f64toi16:1052; AVX-X86:       # %bb.0:1053; AVX-X86-NEXT:    vcvttsd2si {{[0-9]+}}(%esp), %eax1054; AVX-X86-NEXT:    # kill: def $ax killed $ax killed $eax1055; AVX-X86-NEXT:    retl1056;1057; AVX-X64-LABEL: fptoui_f64toi16:1058; AVX-X64:       # %bb.0:1059; AVX-X64-NEXT:    vcvttsd2si %xmm0, %eax1060; AVX-X64-NEXT:    # kill: def $ax killed $ax killed $eax1061; AVX-X64-NEXT:    retq1062;1063; X87-LABEL: fptoui_f64toi16:1064; X87:       # %bb.0:1065; X87-NEXT:    subl $8, %esp1066; X87-NEXT:    .cfi_def_cfa_offset 121067; X87-NEXT:    fldl {{[0-9]+}}(%esp)1068; X87-NEXT:    wait1069; X87-NEXT:    fnstcw (%esp)1070; X87-NEXT:    movzwl (%esp), %eax1071; X87-NEXT:    orl $3072, %eax # imm = 0xC001072; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)1073; X87-NEXT:    fldcw {{[0-9]+}}(%esp)1074; X87-NEXT:    fistpl {{[0-9]+}}(%esp)1075; X87-NEXT:    fldcw (%esp)1076; X87-NEXT:    movl {{[0-9]+}}(%esp), %eax1077; X87-NEXT:    # kill: def $ax killed $ax killed $eax1078; X87-NEXT:    addl $8, %esp1079; X87-NEXT:    .cfi_def_cfa_offset 41080; X87-NEXT:    retl1081  %result = call i16 @llvm.experimental.constrained.fptoui.i16.f64(double %x,1082                                               metadata !"fpexcept.strict") #01083  ret i16 %result1084}1085 1086define i32 @fptoui_f64toi32(double %x) #0 {1087; SSE-X86-LABEL: fptoui_f64toi32:1088; SSE-X86:       # %bb.0:1089; SSE-X86-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero1090; SSE-X86-NEXT:    movsd {{.*#+}} xmm2 = [2.147483648E+9,0.0E+0]1091; SSE-X86-NEXT:    comisd %xmm0, %xmm21092; SSE-X86-NEXT:    xorpd %xmm1, %xmm11093; SSE-X86-NEXT:    ja .LBB17_21094; SSE-X86-NEXT:  # %bb.1:1095; SSE-X86-NEXT:    movapd %xmm2, %xmm11096; SSE-X86-NEXT:  .LBB17_2:1097; SSE-X86-NEXT:    setbe %al1098; SSE-X86-NEXT:    movzbl %al, %ecx1099; SSE-X86-NEXT:    shll $31, %ecx1100; SSE-X86-NEXT:    subsd %xmm1, %xmm01101; SSE-X86-NEXT:    cvttsd2si %xmm0, %eax1102; SSE-X86-NEXT:    xorl %ecx, %eax1103; SSE-X86-NEXT:    retl1104;1105; SSE-X64-LABEL: fptoui_f64toi32:1106; SSE-X64:       # %bb.0:1107; SSE-X64-NEXT:    cvttsd2si %xmm0, %rax1108; SSE-X64-NEXT:    # kill: def $eax killed $eax killed $rax1109; SSE-X64-NEXT:    retq1110;1111; AVX1-X86-LABEL: fptoui_f64toi32:1112; AVX1-X86:       # %bb.0:1113; AVX1-X86-NEXT:    pushl %ebp1114; AVX1-X86-NEXT:    .cfi_def_cfa_offset 81115; AVX1-X86-NEXT:    .cfi_offset %ebp, -81116; AVX1-X86-NEXT:    movl %esp, %ebp1117; AVX1-X86-NEXT:    .cfi_def_cfa_register %ebp1118; AVX1-X86-NEXT:    andl $-8, %esp1119; AVX1-X86-NEXT:    subl $8, %esp1120; AVX1-X86-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero1121; AVX1-X86-NEXT:    vmovsd %xmm0, (%esp)1122; AVX1-X86-NEXT:    fldl (%esp)1123; AVX1-X86-NEXT:    fisttpll (%esp)1124; AVX1-X86-NEXT:    wait1125; AVX1-X86-NEXT:    movl (%esp), %eax1126; AVX1-X86-NEXT:    movl %ebp, %esp1127; AVX1-X86-NEXT:    popl %ebp1128; AVX1-X86-NEXT:    .cfi_def_cfa %esp, 41129; AVX1-X86-NEXT:    retl1130;1131; AVX1-X64-LABEL: fptoui_f64toi32:1132; AVX1-X64:       # %bb.0:1133; AVX1-X64-NEXT:    vcvttsd2si %xmm0, %rax1134; AVX1-X64-NEXT:    # kill: def $eax killed $eax killed $rax1135; AVX1-X64-NEXT:    retq1136;1137; AVX512-X86-LABEL: fptoui_f64toi32:1138; AVX512-X86:       # %bb.0:1139; AVX512-X86-NEXT:    vcvttsd2usi {{[0-9]+}}(%esp), %eax1140; AVX512-X86-NEXT:    retl1141;1142; AVX512-X64-LABEL: fptoui_f64toi32:1143; AVX512-X64:       # %bb.0:1144; AVX512-X64-NEXT:    vcvttsd2usi %xmm0, %eax1145; AVX512-X64-NEXT:    retq1146;1147; X87-LABEL: fptoui_f64toi32:1148; X87:       # %bb.0:1149; X87-NEXT:    pushl %ebp1150; X87-NEXT:    .cfi_def_cfa_offset 81151; X87-NEXT:    .cfi_offset %ebp, -81152; X87-NEXT:    movl %esp, %ebp1153; X87-NEXT:    .cfi_def_cfa_register %ebp1154; X87-NEXT:    andl $-8, %esp1155; X87-NEXT:    subl $16, %esp1156; X87-NEXT:    fldl 8(%ebp)1157; X87-NEXT:    wait1158; X87-NEXT:    fnstcw {{[0-9]+}}(%esp)1159; X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax1160; X87-NEXT:    orl $3072, %eax # imm = 0xC001161; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)1162; X87-NEXT:    fldcw {{[0-9]+}}(%esp)1163; X87-NEXT:    fistpll {{[0-9]+}}(%esp)1164; X87-NEXT:    fldcw {{[0-9]+}}(%esp)1165; X87-NEXT:    movl {{[0-9]+}}(%esp), %eax1166; X87-NEXT:    movl %ebp, %esp1167; X87-NEXT:    popl %ebp1168; X87-NEXT:    .cfi_def_cfa %esp, 41169; X87-NEXT:    retl1170  %result = call i32 @llvm.experimental.constrained.fptoui.i32.f64(double %x,1171                                               metadata !"fpexcept.strict") #01172  ret i32 %result1173}1174 1175define i64 @fptoui_f64toi64(double %x) #0 {1176; SSE-X86-LABEL: fptoui_f64toi64:1177; SSE-X86:       # %bb.0:1178; SSE-X86-NEXT:    pushl %ebp1179; SSE-X86-NEXT:    .cfi_def_cfa_offset 81180; SSE-X86-NEXT:    .cfi_offset %ebp, -81181; SSE-X86-NEXT:    movl %esp, %ebp1182; SSE-X86-NEXT:    .cfi_def_cfa_register %ebp1183; SSE-X86-NEXT:    andl $-8, %esp1184; SSE-X86-NEXT:    subl $16, %esp1185; SSE-X86-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero1186; SSE-X86-NEXT:    movsd {{.*#+}} xmm1 = [9.2233720368547758E+18,0.0E+0]1187; SSE-X86-NEXT:    comisd %xmm0, %xmm11188; SSE-X86-NEXT:    jbe .LBB18_21189; SSE-X86-NEXT:  # %bb.1:1190; SSE-X86-NEXT:    xorpd %xmm1, %xmm11191; SSE-X86-NEXT:  .LBB18_2:1192; SSE-X86-NEXT:    subsd %xmm1, %xmm01193; SSE-X86-NEXT:    movsd %xmm0, {{[0-9]+}}(%esp)1194; SSE-X86-NEXT:    setbe %al1195; SSE-X86-NEXT:    fldl {{[0-9]+}}(%esp)1196; SSE-X86-NEXT:    wait1197; SSE-X86-NEXT:    fnstcw {{[0-9]+}}(%esp)1198; SSE-X86-NEXT:    movzwl {{[0-9]+}}(%esp), %ecx1199; SSE-X86-NEXT:    orl $3072, %ecx # imm = 0xC001200; SSE-X86-NEXT:    movw %cx, {{[0-9]+}}(%esp)1201; SSE-X86-NEXT:    fldcw {{[0-9]+}}(%esp)1202; SSE-X86-NEXT:    fistpll {{[0-9]+}}(%esp)1203; SSE-X86-NEXT:    fldcw {{[0-9]+}}(%esp)1204; SSE-X86-NEXT:    movzbl %al, %edx1205; SSE-X86-NEXT:    shll $31, %edx1206; SSE-X86-NEXT:    xorl {{[0-9]+}}(%esp), %edx1207; SSE-X86-NEXT:    movl {{[0-9]+}}(%esp), %eax1208; SSE-X86-NEXT:    movl %ebp, %esp1209; SSE-X86-NEXT:    popl %ebp1210; SSE-X86-NEXT:    .cfi_def_cfa %esp, 41211; SSE-X86-NEXT:    retl1212;1213; SSE-X64-LABEL: fptoui_f64toi64:1214; SSE-X64:       # %bb.0:1215; SSE-X64-NEXT:    movsd {{.*#+}} xmm2 = [9.2233720368547758E+18,0.0E+0]1216; SSE-X64-NEXT:    comisd %xmm2, %xmm01217; SSE-X64-NEXT:    xorpd %xmm1, %xmm11218; SSE-X64-NEXT:    jb .LBB18_21219; SSE-X64-NEXT:  # %bb.1:1220; SSE-X64-NEXT:    movapd %xmm2, %xmm11221; SSE-X64-NEXT:  .LBB18_2:1222; SSE-X64-NEXT:    subsd %xmm1, %xmm01223; SSE-X64-NEXT:    cvttsd2si %xmm0, %rcx1224; SSE-X64-NEXT:    setae %al1225; SSE-X64-NEXT:    movzbl %al, %eax1226; SSE-X64-NEXT:    shlq $63, %rax1227; SSE-X64-NEXT:    xorq %rcx, %rax1228; SSE-X64-NEXT:    retq1229;1230; AVX1-X86-LABEL: fptoui_f64toi64:1231; AVX1-X86:       # %bb.0:1232; AVX1-X86-NEXT:    pushl %ebp1233; AVX1-X86-NEXT:    .cfi_def_cfa_offset 81234; AVX1-X86-NEXT:    .cfi_offset %ebp, -81235; AVX1-X86-NEXT:    movl %esp, %ebp1236; AVX1-X86-NEXT:    .cfi_def_cfa_register %ebp1237; AVX1-X86-NEXT:    andl $-8, %esp1238; AVX1-X86-NEXT:    subl $8, %esp1239; AVX1-X86-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero1240; AVX1-X86-NEXT:    vmovsd {{.*#+}} xmm1 = [9.2233720368547758E+18,0.0E+0]1241; AVX1-X86-NEXT:    vcomisd %xmm0, %xmm11242; AVX1-X86-NEXT:    jbe .LBB18_21243; AVX1-X86-NEXT:  # %bb.1:1244; AVX1-X86-NEXT:    vxorpd %xmm1, %xmm1, %xmm11245; AVX1-X86-NEXT:  .LBB18_2:1246; AVX1-X86-NEXT:    vsubsd %xmm1, %xmm0, %xmm01247; AVX1-X86-NEXT:    vmovsd %xmm0, (%esp)1248; AVX1-X86-NEXT:    fldl (%esp)1249; AVX1-X86-NEXT:    fisttpll (%esp)1250; AVX1-X86-NEXT:    wait1251; AVX1-X86-NEXT:    setbe %al1252; AVX1-X86-NEXT:    movzbl %al, %edx1253; AVX1-X86-NEXT:    shll $31, %edx1254; AVX1-X86-NEXT:    xorl {{[0-9]+}}(%esp), %edx1255; AVX1-X86-NEXT:    movl (%esp), %eax1256; AVX1-X86-NEXT:    movl %ebp, %esp1257; AVX1-X86-NEXT:    popl %ebp1258; AVX1-X86-NEXT:    .cfi_def_cfa %esp, 41259; AVX1-X86-NEXT:    retl1260;1261; AVX1-X64-LABEL: fptoui_f64toi64:1262; AVX1-X64:       # %bb.0:1263; AVX1-X64-NEXT:    vmovsd {{.*#+}} xmm1 = [9.2233720368547758E+18,0.0E+0]1264; AVX1-X64-NEXT:    vcomisd %xmm1, %xmm01265; AVX1-X64-NEXT:    vxorpd %xmm2, %xmm2, %xmm21266; AVX1-X64-NEXT:    jb .LBB18_21267; AVX1-X64-NEXT:  # %bb.1:1268; AVX1-X64-NEXT:    vmovapd %xmm1, %xmm21269; AVX1-X64-NEXT:  .LBB18_2:1270; AVX1-X64-NEXT:    vsubsd %xmm2, %xmm0, %xmm01271; AVX1-X64-NEXT:    vcvttsd2si %xmm0, %rcx1272; AVX1-X64-NEXT:    setae %al1273; AVX1-X64-NEXT:    movzbl %al, %eax1274; AVX1-X64-NEXT:    shlq $63, %rax1275; AVX1-X64-NEXT:    xorq %rcx, %rax1276; AVX1-X64-NEXT:    retq1277;1278; AVX512-X86-LABEL: fptoui_f64toi64:1279; AVX512-X86:       # %bb.0:1280; AVX512-X86-NEXT:    pushl %ebp1281; AVX512-X86-NEXT:    .cfi_def_cfa_offset 81282; AVX512-X86-NEXT:    .cfi_offset %ebp, -81283; AVX512-X86-NEXT:    movl %esp, %ebp1284; AVX512-X86-NEXT:    .cfi_def_cfa_register %ebp1285; AVX512-X86-NEXT:    andl $-8, %esp1286; AVX512-X86-NEXT:    subl $8, %esp1287; AVX512-X86-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero1288; AVX512-X86-NEXT:    vmovsd {{.*#+}} xmm1 = [9.2233720368547758E+18,0.0E+0]1289; AVX512-X86-NEXT:    xorl %edx, %edx1290; AVX512-X86-NEXT:    vcomisd %xmm0, %xmm11291; AVX512-X86-NEXT:    setbe %dl1292; AVX512-X86-NEXT:    kmovw %edx, %k11293; AVX512-X86-NEXT:    vmovsd %xmm1, %xmm1, %xmm1 {%k1} {z}1294; AVX512-X86-NEXT:    vsubsd %xmm1, %xmm0, %xmm01295; AVX512-X86-NEXT:    vmovsd %xmm0, (%esp)1296; AVX512-X86-NEXT:    fldl (%esp)1297; AVX512-X86-NEXT:    fisttpll (%esp)1298; AVX512-X86-NEXT:    wait1299; AVX512-X86-NEXT:    shll $31, %edx1300; AVX512-X86-NEXT:    xorl {{[0-9]+}}(%esp), %edx1301; AVX512-X86-NEXT:    movl (%esp), %eax1302; AVX512-X86-NEXT:    movl %ebp, %esp1303; AVX512-X86-NEXT:    popl %ebp1304; AVX512-X86-NEXT:    .cfi_def_cfa %esp, 41305; AVX512-X86-NEXT:    retl1306;1307; AVX512-X64-LABEL: fptoui_f64toi64:1308; AVX512-X64:       # %bb.0:1309; AVX512-X64-NEXT:    vcvttsd2usi %xmm0, %rax1310; AVX512-X64-NEXT:    retq1311;1312; X87-LABEL: fptoui_f64toi64:1313; X87:       # %bb.0:1314; X87-NEXT:    pushl %ebp1315; X87-NEXT:    .cfi_def_cfa_offset 81316; X87-NEXT:    .cfi_offset %ebp, -81317; X87-NEXT:    movl %esp, %ebp1318; X87-NEXT:    .cfi_def_cfa_register %ebp1319; X87-NEXT:    andl $-8, %esp1320; X87-NEXT:    subl $16, %esp1321; X87-NEXT:    fldl 8(%ebp)1322; X87-NEXT:    flds {{\.?LCPI[0-9]+_[0-9]+}}1323; X87-NEXT:    fcom %st(1)1324; X87-NEXT:    wait1325; X87-NEXT:    fnstsw %ax1326; X87-NEXT:    xorl %edx, %edx1327; X87-NEXT:    # kill: def $ah killed $ah killed $ax1328; X87-NEXT:    sahf1329; X87-NEXT:    setbe %al1330; X87-NEXT:    fldz1331; X87-NEXT:    jbe .LBB18_21332; X87-NEXT:  # %bb.1:1333; X87-NEXT:    fstp %st(1)1334; X87-NEXT:    fldz1335; X87-NEXT:  .LBB18_2:1336; X87-NEXT:    fstp %st(0)1337; X87-NEXT:    fsubrp %st, %st(1)1338; X87-NEXT:    wait1339; X87-NEXT:    fnstcw {{[0-9]+}}(%esp)1340; X87-NEXT:    movzwl {{[0-9]+}}(%esp), %ecx1341; X87-NEXT:    orl $3072, %ecx # imm = 0xC001342; X87-NEXT:    movw %cx, {{[0-9]+}}(%esp)1343; X87-NEXT:    fldcw {{[0-9]+}}(%esp)1344; X87-NEXT:    fistpll {{[0-9]+}}(%esp)1345; X87-NEXT:    fldcw {{[0-9]+}}(%esp)1346; X87-NEXT:    movb %al, %dl1347; X87-NEXT:    shll $31, %edx1348; X87-NEXT:    xorl {{[0-9]+}}(%esp), %edx1349; X87-NEXT:    movl {{[0-9]+}}(%esp), %eax1350; X87-NEXT:    movl %ebp, %esp1351; X87-NEXT:    popl %ebp1352; X87-NEXT:    .cfi_def_cfa %esp, 41353; X87-NEXT:    retl1354  %result = call i64 @llvm.experimental.constrained.fptoui.i64.f64(double %x,1355                                               metadata !"fpexcept.strict") #01356  ret i64 %result1357}1358 1359attributes #0 = { strictfp }1360