brintos

brintos / llvm-project-archived public Read only

0
0
Text · 45.9 KiB · f0aa382 Raw
1390 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 float @llvm.experimental.constrained.sitofp.f32.i1(i1, metadata, metadata)11declare float @llvm.experimental.constrained.sitofp.f32.i8(i8, metadata, metadata)12declare float @llvm.experimental.constrained.sitofp.f32.i16(i16, metadata, metadata)13declare float @llvm.experimental.constrained.sitofp.f32.i32(i32, metadata, metadata)14declare float @llvm.experimental.constrained.sitofp.f32.i64(i64, metadata, metadata)15declare float @llvm.experimental.constrained.uitofp.f32.i1(i1, metadata, metadata)16declare float @llvm.experimental.constrained.uitofp.f32.i8(i8, metadata, metadata)17declare float @llvm.experimental.constrained.uitofp.f32.i16(i16, metadata, metadata)18declare float @llvm.experimental.constrained.uitofp.f32.i32(i32, metadata, metadata)19declare float @llvm.experimental.constrained.uitofp.f32.i64(i64, metadata, metadata)20 21declare double @llvm.experimental.constrained.sitofp.f64.i1(i1, metadata, metadata)22declare double @llvm.experimental.constrained.sitofp.f64.i8(i8, metadata, metadata)23declare double @llvm.experimental.constrained.sitofp.f64.i16(i16, metadata, metadata)24declare double @llvm.experimental.constrained.sitofp.f64.i32(i32, metadata, metadata)25declare double @llvm.experimental.constrained.sitofp.f64.i64(i64, metadata, metadata)26declare double @llvm.experimental.constrained.uitofp.f64.i1(i1, metadata, metadata)27declare double @llvm.experimental.constrained.uitofp.f64.i8(i8, metadata, metadata)28declare double @llvm.experimental.constrained.uitofp.f64.i16(i16, metadata, metadata)29declare double @llvm.experimental.constrained.uitofp.f64.i32(i32, metadata, metadata)30declare double @llvm.experimental.constrained.uitofp.f64.i64(i64, metadata, metadata)31 32define float @sitofp_i1tof32(i1 %x) #0 {33; SSE-X86-LABEL: sitofp_i1tof32:34; SSE-X86:       # %bb.0:35; SSE-X86-NEXT:    pushl %eax36; SSE-X86-NEXT:    .cfi_def_cfa_offset 837; SSE-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax38; SSE-X86-NEXT:    andb $1, %al39; SSE-X86-NEXT:    negb %al40; SSE-X86-NEXT:    movsbl %al, %eax41; SSE-X86-NEXT:    cvtsi2ss %eax, %xmm042; SSE-X86-NEXT:    movss %xmm0, (%esp)43; SSE-X86-NEXT:    flds (%esp)44; SSE-X86-NEXT:    wait45; SSE-X86-NEXT:    popl %eax46; SSE-X86-NEXT:    .cfi_def_cfa_offset 447; SSE-X86-NEXT:    retl48;49; SSE-X64-LABEL: sitofp_i1tof32:50; SSE-X64:       # %bb.0:51; SSE-X64-NEXT:    andb $1, %dil52; SSE-X64-NEXT:    negb %dil53; SSE-X64-NEXT:    movsbl %dil, %eax54; SSE-X64-NEXT:    cvtsi2ss %eax, %xmm055; SSE-X64-NEXT:    retq56;57; AVX-X86-LABEL: sitofp_i1tof32:58; AVX-X86:       # %bb.0:59; AVX-X86-NEXT:    pushl %eax60; AVX-X86-NEXT:    .cfi_def_cfa_offset 861; AVX-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax62; AVX-X86-NEXT:    andb $1, %al63; AVX-X86-NEXT:    negb %al64; AVX-X86-NEXT:    movsbl %al, %eax65; AVX-X86-NEXT:    vcvtsi2ss %eax, %xmm7, %xmm066; AVX-X86-NEXT:    vmovss %xmm0, (%esp)67; AVX-X86-NEXT:    flds (%esp)68; AVX-X86-NEXT:    wait69; AVX-X86-NEXT:    popl %eax70; AVX-X86-NEXT:    .cfi_def_cfa_offset 471; AVX-X86-NEXT:    retl72;73; AVX-X64-LABEL: sitofp_i1tof32:74; AVX-X64:       # %bb.0:75; AVX-X64-NEXT:    andb $1, %dil76; AVX-X64-NEXT:    negb %dil77; AVX-X64-NEXT:    movsbl %dil, %eax78; AVX-X64-NEXT:    vcvtsi2ss %eax, %xmm15, %xmm079; AVX-X64-NEXT:    retq80;81; X87-LABEL: sitofp_i1tof32:82; X87:       # %bb.0:83; X87-NEXT:    pushl %eax84; X87-NEXT:    .cfi_def_cfa_offset 885; X87-NEXT:    movzbl {{[0-9]+}}(%esp), %eax86; X87-NEXT:    andb $1, %al87; X87-NEXT:    negb %al88; X87-NEXT:    movsbl %al, %eax89; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)90; X87-NEXT:    filds {{[0-9]+}}(%esp)91; X87-NEXT:    wait92; X87-NEXT:    popl %eax93; X87-NEXT:    .cfi_def_cfa_offset 494; X87-NEXT:    retl95  %result = call float @llvm.experimental.constrained.sitofp.f32.i1(i1 %x,96                                               metadata !"round.dynamic",97                                               metadata !"fpexcept.strict") #098  ret float %result99}100 101define float @sitofp_i8tof32(i8 %x) #0 {102; SSE-X86-LABEL: sitofp_i8tof32:103; SSE-X86:       # %bb.0:104; SSE-X86-NEXT:    pushl %eax105; SSE-X86-NEXT:    .cfi_def_cfa_offset 8106; SSE-X86-NEXT:    movsbl {{[0-9]+}}(%esp), %eax107; SSE-X86-NEXT:    cvtsi2ss %eax, %xmm0108; SSE-X86-NEXT:    movss %xmm0, (%esp)109; SSE-X86-NEXT:    flds (%esp)110; SSE-X86-NEXT:    wait111; SSE-X86-NEXT:    popl %eax112; SSE-X86-NEXT:    .cfi_def_cfa_offset 4113; SSE-X86-NEXT:    retl114;115; SSE-X64-LABEL: sitofp_i8tof32:116; SSE-X64:       # %bb.0:117; SSE-X64-NEXT:    movsbl %dil, %eax118; SSE-X64-NEXT:    cvtsi2ss %eax, %xmm0119; SSE-X64-NEXT:    retq120;121; AVX-X86-LABEL: sitofp_i8tof32:122; AVX-X86:       # %bb.0:123; AVX-X86-NEXT:    pushl %eax124; AVX-X86-NEXT:    .cfi_def_cfa_offset 8125; AVX-X86-NEXT:    movsbl {{[0-9]+}}(%esp), %eax126; AVX-X86-NEXT:    vcvtsi2ss %eax, %xmm7, %xmm0127; AVX-X86-NEXT:    vmovss %xmm0, (%esp)128; AVX-X86-NEXT:    flds (%esp)129; AVX-X86-NEXT:    wait130; AVX-X86-NEXT:    popl %eax131; AVX-X86-NEXT:    .cfi_def_cfa_offset 4132; AVX-X86-NEXT:    retl133;134; AVX-X64-LABEL: sitofp_i8tof32:135; AVX-X64:       # %bb.0:136; AVX-X64-NEXT:    movsbl %dil, %eax137; AVX-X64-NEXT:    vcvtsi2ss %eax, %xmm15, %xmm0138; AVX-X64-NEXT:    retq139;140; X87-LABEL: sitofp_i8tof32:141; X87:       # %bb.0:142; X87-NEXT:    pushl %eax143; X87-NEXT:    .cfi_def_cfa_offset 8144; X87-NEXT:    movsbl {{[0-9]+}}(%esp), %eax145; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)146; X87-NEXT:    filds {{[0-9]+}}(%esp)147; X87-NEXT:    wait148; X87-NEXT:    popl %eax149; X87-NEXT:    .cfi_def_cfa_offset 4150; X87-NEXT:    retl151  %result = call float @llvm.experimental.constrained.sitofp.f32.i8(i8 %x,152                                               metadata !"round.dynamic",153                                               metadata !"fpexcept.strict") #0154  ret float %result155}156 157define float @sitofp_i16tof32(i16 %x) #0 {158; SSE-X86-LABEL: sitofp_i16tof32:159; SSE-X86:       # %bb.0:160; SSE-X86-NEXT:    pushl %eax161; SSE-X86-NEXT:    .cfi_def_cfa_offset 8162; SSE-X86-NEXT:    movswl {{[0-9]+}}(%esp), %eax163; SSE-X86-NEXT:    cvtsi2ss %eax, %xmm0164; SSE-X86-NEXT:    movss %xmm0, (%esp)165; SSE-X86-NEXT:    flds (%esp)166; SSE-X86-NEXT:    wait167; SSE-X86-NEXT:    popl %eax168; SSE-X86-NEXT:    .cfi_def_cfa_offset 4169; SSE-X86-NEXT:    retl170;171; SSE-X64-LABEL: sitofp_i16tof32:172; SSE-X64:       # %bb.0:173; SSE-X64-NEXT:    movswl %di, %eax174; SSE-X64-NEXT:    cvtsi2ss %eax, %xmm0175; SSE-X64-NEXT:    retq176;177; AVX-X86-LABEL: sitofp_i16tof32:178; AVX-X86:       # %bb.0:179; AVX-X86-NEXT:    pushl %eax180; AVX-X86-NEXT:    .cfi_def_cfa_offset 8181; AVX-X86-NEXT:    movswl {{[0-9]+}}(%esp), %eax182; AVX-X86-NEXT:    vcvtsi2ss %eax, %xmm7, %xmm0183; AVX-X86-NEXT:    vmovss %xmm0, (%esp)184; AVX-X86-NEXT:    flds (%esp)185; AVX-X86-NEXT:    wait186; AVX-X86-NEXT:    popl %eax187; AVX-X86-NEXT:    .cfi_def_cfa_offset 4188; AVX-X86-NEXT:    retl189;190; AVX-X64-LABEL: sitofp_i16tof32:191; AVX-X64:       # %bb.0:192; AVX-X64-NEXT:    movswl %di, %eax193; AVX-X64-NEXT:    vcvtsi2ss %eax, %xmm15, %xmm0194; AVX-X64-NEXT:    retq195;196; X87-LABEL: sitofp_i16tof32:197; X87:       # %bb.0:198; X87-NEXT:    pushl %eax199; X87-NEXT:    .cfi_def_cfa_offset 8200; X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax201; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)202; X87-NEXT:    filds {{[0-9]+}}(%esp)203; X87-NEXT:    wait204; X87-NEXT:    popl %eax205; X87-NEXT:    .cfi_def_cfa_offset 4206; X87-NEXT:    retl207  %result = call float @llvm.experimental.constrained.sitofp.f32.i16(i16 %x,208                                               metadata !"round.dynamic",209                                               metadata !"fpexcept.strict") #0210  ret float %result211}212 213define float @sitofp_i32tof32(i32 %x) #0 {214; SSE-X86-LABEL: sitofp_i32tof32:215; SSE-X86:       # %bb.0:216; SSE-X86-NEXT:    pushl %eax217; SSE-X86-NEXT:    .cfi_def_cfa_offset 8218; SSE-X86-NEXT:    cvtsi2ssl {{[0-9]+}}(%esp), %xmm0219; SSE-X86-NEXT:    movss %xmm0, (%esp)220; SSE-X86-NEXT:    flds (%esp)221; SSE-X86-NEXT:    wait222; SSE-X86-NEXT:    popl %eax223; SSE-X86-NEXT:    .cfi_def_cfa_offset 4224; SSE-X86-NEXT:    retl225;226; SSE-X64-LABEL: sitofp_i32tof32:227; SSE-X64:       # %bb.0:228; SSE-X64-NEXT:    cvtsi2ss %edi, %xmm0229; SSE-X64-NEXT:    retq230;231; AVX-X86-LABEL: sitofp_i32tof32:232; AVX-X86:       # %bb.0:233; AVX-X86-NEXT:    pushl %eax234; AVX-X86-NEXT:    .cfi_def_cfa_offset 8235; AVX-X86-NEXT:    vcvtsi2ssl {{[0-9]+}}(%esp), %xmm7, %xmm0236; AVX-X86-NEXT:    vmovss %xmm0, (%esp)237; AVX-X86-NEXT:    flds (%esp)238; AVX-X86-NEXT:    wait239; AVX-X86-NEXT:    popl %eax240; AVX-X86-NEXT:    .cfi_def_cfa_offset 4241; AVX-X86-NEXT:    retl242;243; AVX-X64-LABEL: sitofp_i32tof32:244; AVX-X64:       # %bb.0:245; AVX-X64-NEXT:    vcvtsi2ss %edi, %xmm15, %xmm0246; AVX-X64-NEXT:    retq247;248; X87-LABEL: sitofp_i32tof32:249; X87:       # %bb.0:250; X87-NEXT:    pushl %eax251; X87-NEXT:    .cfi_def_cfa_offset 8252; X87-NEXT:    movl {{[0-9]+}}(%esp), %eax253; X87-NEXT:    movl %eax, (%esp)254; X87-NEXT:    fildl (%esp)255; X87-NEXT:    wait256; X87-NEXT:    popl %eax257; X87-NEXT:    .cfi_def_cfa_offset 4258; X87-NEXT:    retl259  %result = call float @llvm.experimental.constrained.sitofp.f32.i32(i32 %x,260                                               metadata !"round.dynamic",261                                               metadata !"fpexcept.strict") #0262  ret float %result263}264 265define float @sitofp_i64tof32(i64 %x) #0 {266; SSE-X86-LABEL: sitofp_i64tof32:267; SSE-X86:       # %bb.0:268; SSE-X86-NEXT:    pushl %eax269; SSE-X86-NEXT:    .cfi_def_cfa_offset 8270; SSE-X86-NEXT:    fildll {{[0-9]+}}(%esp)271; SSE-X86-NEXT:    fstps (%esp)272; SSE-X86-NEXT:    flds (%esp)273; SSE-X86-NEXT:    wait274; SSE-X86-NEXT:    popl %eax275; SSE-X86-NEXT:    .cfi_def_cfa_offset 4276; SSE-X86-NEXT:    retl277;278; SSE-X64-LABEL: sitofp_i64tof32:279; SSE-X64:       # %bb.0:280; SSE-X64-NEXT:    cvtsi2ss %rdi, %xmm0281; SSE-X64-NEXT:    retq282;283; AVX-X86-LABEL: sitofp_i64tof32:284; AVX-X86:       # %bb.0:285; AVX-X86-NEXT:    pushl %eax286; AVX-X86-NEXT:    .cfi_def_cfa_offset 8287; AVX-X86-NEXT:    fildll {{[0-9]+}}(%esp)288; AVX-X86-NEXT:    fstps (%esp)289; AVX-X86-NEXT:    flds (%esp)290; AVX-X86-NEXT:    wait291; AVX-X86-NEXT:    popl %eax292; AVX-X86-NEXT:    .cfi_def_cfa_offset 4293; AVX-X86-NEXT:    retl294;295; AVX-X64-LABEL: sitofp_i64tof32:296; AVX-X64:       # %bb.0:297; AVX-X64-NEXT:    vcvtsi2ss %rdi, %xmm15, %xmm0298; AVX-X64-NEXT:    retq299;300; X87-LABEL: sitofp_i64tof32:301; X87:       # %bb.0:302; X87-NEXT:    fildll {{[0-9]+}}(%esp)303; X87-NEXT:    wait304; X87-NEXT:    retl305  %result = call float @llvm.experimental.constrained.sitofp.f32.i64(i64 %x,306                                               metadata !"round.dynamic",307                                               metadata !"fpexcept.strict") #0308  ret float %result309}310 311define float @uitofp_i1tof32(i1 %x) #0 {312; SSE-X86-LABEL: uitofp_i1tof32:313; SSE-X86:       # %bb.0:314; SSE-X86-NEXT:    pushl %eax315; SSE-X86-NEXT:    .cfi_def_cfa_offset 8316; SSE-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax317; SSE-X86-NEXT:    andb $1, %al318; SSE-X86-NEXT:    movzbl %al, %eax319; SSE-X86-NEXT:    cvtsi2ss %eax, %xmm0320; SSE-X86-NEXT:    movss %xmm0, (%esp)321; SSE-X86-NEXT:    flds (%esp)322; SSE-X86-NEXT:    wait323; SSE-X86-NEXT:    popl %eax324; SSE-X86-NEXT:    .cfi_def_cfa_offset 4325; SSE-X86-NEXT:    retl326;327; SSE-X64-LABEL: uitofp_i1tof32:328; SSE-X64:       # %bb.0:329; SSE-X64-NEXT:    andl $1, %edi330; SSE-X64-NEXT:    cvtsi2ss %edi, %xmm0331; SSE-X64-NEXT:    retq332;333; AVX-X86-LABEL: uitofp_i1tof32:334; AVX-X86:       # %bb.0:335; AVX-X86-NEXT:    pushl %eax336; AVX-X86-NEXT:    .cfi_def_cfa_offset 8337; AVX-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax338; AVX-X86-NEXT:    andb $1, %al339; AVX-X86-NEXT:    movzbl %al, %eax340; AVX-X86-NEXT:    vcvtsi2ss %eax, %xmm7, %xmm0341; AVX-X86-NEXT:    vmovss %xmm0, (%esp)342; AVX-X86-NEXT:    flds (%esp)343; AVX-X86-NEXT:    wait344; AVX-X86-NEXT:    popl %eax345; AVX-X86-NEXT:    .cfi_def_cfa_offset 4346; AVX-X86-NEXT:    retl347;348; AVX-X64-LABEL: uitofp_i1tof32:349; AVX-X64:       # %bb.0:350; AVX-X64-NEXT:    andl $1, %edi351; AVX-X64-NEXT:    vcvtsi2ss %edi, %xmm15, %xmm0352; AVX-X64-NEXT:    retq353;354; X87-LABEL: uitofp_i1tof32:355; X87:       # %bb.0:356; X87-NEXT:    pushl %eax357; X87-NEXT:    .cfi_def_cfa_offset 8358; X87-NEXT:    movzbl {{[0-9]+}}(%esp), %eax359; X87-NEXT:    andb $1, %al360; X87-NEXT:    movzbl %al, %eax361; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)362; X87-NEXT:    filds {{[0-9]+}}(%esp)363; X87-NEXT:    wait364; X87-NEXT:    popl %eax365; X87-NEXT:    .cfi_def_cfa_offset 4366; X87-NEXT:    retl367  %result = call float @llvm.experimental.constrained.uitofp.f32.i1(i1 %x,368                                               metadata !"round.dynamic",369                                               metadata !"fpexcept.strict") #0370  ret float %result371}372 373define float @uitofp_i8tof32(i8 %x) #0 {374; SSE-X86-LABEL: uitofp_i8tof32:375; SSE-X86:       # %bb.0:376; SSE-X86-NEXT:    pushl %eax377; SSE-X86-NEXT:    .cfi_def_cfa_offset 8378; SSE-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax379; SSE-X86-NEXT:    cvtsi2ss %eax, %xmm0380; SSE-X86-NEXT:    movss %xmm0, (%esp)381; SSE-X86-NEXT:    flds (%esp)382; SSE-X86-NEXT:    wait383; SSE-X86-NEXT:    popl %eax384; SSE-X86-NEXT:    .cfi_def_cfa_offset 4385; SSE-X86-NEXT:    retl386;387; SSE-X64-LABEL: uitofp_i8tof32:388; SSE-X64:       # %bb.0:389; SSE-X64-NEXT:    movzbl %dil, %eax390; SSE-X64-NEXT:    cvtsi2ss %eax, %xmm0391; SSE-X64-NEXT:    retq392;393; AVX-X86-LABEL: uitofp_i8tof32:394; AVX-X86:       # %bb.0:395; AVX-X86-NEXT:    pushl %eax396; AVX-X86-NEXT:    .cfi_def_cfa_offset 8397; AVX-X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax398; AVX-X86-NEXT:    vcvtsi2ss %eax, %xmm7, %xmm0399; AVX-X86-NEXT:    vmovss %xmm0, (%esp)400; AVX-X86-NEXT:    flds (%esp)401; AVX-X86-NEXT:    wait402; AVX-X86-NEXT:    popl %eax403; AVX-X86-NEXT:    .cfi_def_cfa_offset 4404; AVX-X86-NEXT:    retl405;406; AVX-X64-LABEL: uitofp_i8tof32:407; AVX-X64:       # %bb.0:408; AVX-X64-NEXT:    movzbl %dil, %eax409; AVX-X64-NEXT:    vcvtsi2ss %eax, %xmm15, %xmm0410; AVX-X64-NEXT:    retq411;412; X87-LABEL: uitofp_i8tof32:413; X87:       # %bb.0:414; X87-NEXT:    pushl %eax415; X87-NEXT:    .cfi_def_cfa_offset 8416; X87-NEXT:    movzbl {{[0-9]+}}(%esp), %eax417; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)418; X87-NEXT:    filds {{[0-9]+}}(%esp)419; X87-NEXT:    wait420; X87-NEXT:    popl %eax421; X87-NEXT:    .cfi_def_cfa_offset 4422; X87-NEXT:    retl423  %result = call float @llvm.experimental.constrained.uitofp.f32.i8(i8 %x,424                                               metadata !"round.dynamic",425                                               metadata !"fpexcept.strict") #0426  ret float %result427}428 429define float @uitofp_i16tof32(i16 %x) #0 {430; SSE-X86-LABEL: uitofp_i16tof32:431; SSE-X86:       # %bb.0:432; SSE-X86-NEXT:    pushl %eax433; SSE-X86-NEXT:    .cfi_def_cfa_offset 8434; SSE-X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax435; SSE-X86-NEXT:    cvtsi2ss %eax, %xmm0436; SSE-X86-NEXT:    movss %xmm0, (%esp)437; SSE-X86-NEXT:    flds (%esp)438; SSE-X86-NEXT:    wait439; SSE-X86-NEXT:    popl %eax440; SSE-X86-NEXT:    .cfi_def_cfa_offset 4441; SSE-X86-NEXT:    retl442;443; SSE-X64-LABEL: uitofp_i16tof32:444; SSE-X64:       # %bb.0:445; SSE-X64-NEXT:    movzwl %di, %eax446; SSE-X64-NEXT:    cvtsi2ss %eax, %xmm0447; SSE-X64-NEXT:    retq448;449; AVX-X86-LABEL: uitofp_i16tof32:450; AVX-X86:       # %bb.0:451; AVX-X86-NEXT:    pushl %eax452; AVX-X86-NEXT:    .cfi_def_cfa_offset 8453; AVX-X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax454; AVX-X86-NEXT:    vcvtsi2ss %eax, %xmm7, %xmm0455; AVX-X86-NEXT:    vmovss %xmm0, (%esp)456; AVX-X86-NEXT:    flds (%esp)457; AVX-X86-NEXT:    wait458; AVX-X86-NEXT:    popl %eax459; AVX-X86-NEXT:    .cfi_def_cfa_offset 4460; AVX-X86-NEXT:    retl461;462; AVX-X64-LABEL: uitofp_i16tof32:463; AVX-X64:       # %bb.0:464; AVX-X64-NEXT:    movzwl %di, %eax465; AVX-X64-NEXT:    vcvtsi2ss %eax, %xmm15, %xmm0466; AVX-X64-NEXT:    retq467;468; X87-LABEL: uitofp_i16tof32:469; X87:       # %bb.0:470; X87-NEXT:    pushl %eax471; X87-NEXT:    .cfi_def_cfa_offset 8472; X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax473; X87-NEXT:    movl %eax, (%esp)474; X87-NEXT:    fildl (%esp)475; X87-NEXT:    wait476; X87-NEXT:    popl %eax477; X87-NEXT:    .cfi_def_cfa_offset 4478; X87-NEXT:    retl479  %result = call float @llvm.experimental.constrained.uitofp.f32.i16(i16 %x,480                                               metadata !"round.dynamic",481                                               metadata !"fpexcept.strict") #0482  ret float %result483}484 485define float @uitofp_i32tof32(i32 %x) #0 {486; SSE-X86-LABEL: uitofp_i32tof32:487; SSE-X86:       # %bb.0:488; SSE-X86-NEXT:    pushl %ebp489; SSE-X86-NEXT:    .cfi_def_cfa_offset 8490; SSE-X86-NEXT:    .cfi_offset %ebp, -8491; SSE-X86-NEXT:    movl %esp, %ebp492; SSE-X86-NEXT:    .cfi_def_cfa_register %ebp493; SSE-X86-NEXT:    andl $-8, %esp494; SSE-X86-NEXT:    subl $16, %esp495; SSE-X86-NEXT:    movl 8(%ebp), %eax496; SSE-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)497; SSE-X86-NEXT:    movl $0, {{[0-9]+}}(%esp)498; SSE-X86-NEXT:    fildll {{[0-9]+}}(%esp)499; SSE-X86-NEXT:    fstps {{[0-9]+}}(%esp)500; SSE-X86-NEXT:    flds {{[0-9]+}}(%esp)501; SSE-X86-NEXT:    wait502; SSE-X86-NEXT:    movl %ebp, %esp503; SSE-X86-NEXT:    popl %ebp504; SSE-X86-NEXT:    .cfi_def_cfa %esp, 4505; SSE-X86-NEXT:    retl506;507; SSE-X64-LABEL: uitofp_i32tof32:508; SSE-X64:       # %bb.0:509; SSE-X64-NEXT:    movl %edi, %eax510; SSE-X64-NEXT:    cvtsi2ss %rax, %xmm0511; SSE-X64-NEXT:    retq512;513; AVX1-X86-LABEL: uitofp_i32tof32:514; AVX1-X86:       # %bb.0:515; AVX1-X86-NEXT:    pushl %ebp516; AVX1-X86-NEXT:    .cfi_def_cfa_offset 8517; AVX1-X86-NEXT:    .cfi_offset %ebp, -8518; AVX1-X86-NEXT:    movl %esp, %ebp519; AVX1-X86-NEXT:    .cfi_def_cfa_register %ebp520; AVX1-X86-NEXT:    andl $-8, %esp521; AVX1-X86-NEXT:    subl $16, %esp522; AVX1-X86-NEXT:    movl 8(%ebp), %eax523; AVX1-X86-NEXT:    movl %eax, {{[0-9]+}}(%esp)524; AVX1-X86-NEXT:    movl $0, {{[0-9]+}}(%esp)525; AVX1-X86-NEXT:    fildll {{[0-9]+}}(%esp)526; AVX1-X86-NEXT:    fstps {{[0-9]+}}(%esp)527; AVX1-X86-NEXT:    flds {{[0-9]+}}(%esp)528; AVX1-X86-NEXT:    wait529; AVX1-X86-NEXT:    movl %ebp, %esp530; AVX1-X86-NEXT:    popl %ebp531; AVX1-X86-NEXT:    .cfi_def_cfa %esp, 4532; AVX1-X86-NEXT:    retl533;534; AVX1-X64-LABEL: uitofp_i32tof32:535; AVX1-X64:       # %bb.0:536; AVX1-X64-NEXT:    movl %edi, %eax537; AVX1-X64-NEXT:    vcvtsi2ss %rax, %xmm15, %xmm0538; AVX1-X64-NEXT:    retq539;540; AVX512-X86-LABEL: uitofp_i32tof32:541; AVX512-X86:       # %bb.0:542; AVX512-X86-NEXT:    pushl %eax543; AVX512-X86-NEXT:    .cfi_def_cfa_offset 8544; AVX512-X86-NEXT:    vcvtusi2ssl {{[0-9]+}}(%esp), %xmm7, %xmm0545; AVX512-X86-NEXT:    vmovss %xmm0, (%esp)546; AVX512-X86-NEXT:    flds (%esp)547; AVX512-X86-NEXT:    wait548; AVX512-X86-NEXT:    popl %eax549; AVX512-X86-NEXT:    .cfi_def_cfa_offset 4550; AVX512-X86-NEXT:    retl551;552; AVX512-X64-LABEL: uitofp_i32tof32:553; AVX512-X64:       # %bb.0:554; AVX512-X64-NEXT:    vcvtusi2ss %edi, %xmm15, %xmm0555; AVX512-X64-NEXT:    retq556;557; X87-LABEL: uitofp_i32tof32:558; X87:       # %bb.0:559; X87-NEXT:    pushl %ebp560; X87-NEXT:    .cfi_def_cfa_offset 8561; X87-NEXT:    .cfi_offset %ebp, -8562; X87-NEXT:    movl %esp, %ebp563; X87-NEXT:    .cfi_def_cfa_register %ebp564; X87-NEXT:    andl $-8, %esp565; X87-NEXT:    subl $8, %esp566; X87-NEXT:    movl 8(%ebp), %eax567; X87-NEXT:    movl %eax, (%esp)568; X87-NEXT:    movl $0, {{[0-9]+}}(%esp)569; X87-NEXT:    fildll (%esp)570; X87-NEXT:    wait571; X87-NEXT:    movl %ebp, %esp572; X87-NEXT:    popl %ebp573; X87-NEXT:    .cfi_def_cfa %esp, 4574; X87-NEXT:    retl575  %result = call float @llvm.experimental.constrained.uitofp.f32.i32(i32 %x,576                                               metadata !"round.dynamic",577                                               metadata !"fpexcept.strict") #0578  ret float %result579}580 581define float @uitofp_i64tof32(i64 %x) #0 {582; SSE-X86-LABEL: uitofp_i64tof32:583; SSE-X86:       # %bb.0:584; SSE-X86-NEXT:    pushl %ebp585; SSE-X86-NEXT:    .cfi_def_cfa_offset 8586; SSE-X86-NEXT:    .cfi_offset %ebp, -8587; SSE-X86-NEXT:    movl %esp, %ebp588; SSE-X86-NEXT:    .cfi_def_cfa_register %ebp589; SSE-X86-NEXT:    andl $-8, %esp590; SSE-X86-NEXT:    subl $16, %esp591; SSE-X86-NEXT:    movl 12(%ebp), %eax592; SSE-X86-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero593; SSE-X86-NEXT:    movlps %xmm0, {{[0-9]+}}(%esp)594; SSE-X86-NEXT:    shrl $31, %eax595; SSE-X86-NEXT:    fildll {{[0-9]+}}(%esp)596; SSE-X86-NEXT:    fadds {{\.?LCPI[0-9]+_[0-9]+}}(,%eax,4)597; SSE-X86-NEXT:    fstps {{[0-9]+}}(%esp)598; SSE-X86-NEXT:    wait599; SSE-X86-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero600; SSE-X86-NEXT:    movss %xmm0, (%esp)601; SSE-X86-NEXT:    flds (%esp)602; SSE-X86-NEXT:    wait603; SSE-X86-NEXT:    movl %ebp, %esp604; SSE-X86-NEXT:    popl %ebp605; SSE-X86-NEXT:    .cfi_def_cfa %esp, 4606; SSE-X86-NEXT:    retl607;608; SSE-X64-LABEL: uitofp_i64tof32:609; SSE-X64:       # %bb.0:610; SSE-X64-NEXT:    movq %rdi, %rax611; SSE-X64-NEXT:    shrq %rax612; SSE-X64-NEXT:    movl %edi, %ecx613; SSE-X64-NEXT:    andl $1, %ecx614; SSE-X64-NEXT:    orq %rax, %rcx615; SSE-X64-NEXT:    testq %rdi, %rdi616; SSE-X64-NEXT:    cmovnsq %rdi, %rcx617; SSE-X64-NEXT:    cvtsi2ss %rcx, %xmm0618; SSE-X64-NEXT:    jns .LBB9_2619; SSE-X64-NEXT:  # %bb.1:620; SSE-X64-NEXT:    addss %xmm0, %xmm0621; SSE-X64-NEXT:  .LBB9_2:622; SSE-X64-NEXT:    retq623;624; AVX-X86-LABEL: uitofp_i64tof32:625; AVX-X86:       # %bb.0:626; AVX-X86-NEXT:    pushl %ebp627; AVX-X86-NEXT:    .cfi_def_cfa_offset 8628; AVX-X86-NEXT:    .cfi_offset %ebp, -8629; AVX-X86-NEXT:    movl %esp, %ebp630; AVX-X86-NEXT:    .cfi_def_cfa_register %ebp631; AVX-X86-NEXT:    andl $-8, %esp632; AVX-X86-NEXT:    subl $16, %esp633; AVX-X86-NEXT:    movl 12(%ebp), %eax634; AVX-X86-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero635; AVX-X86-NEXT:    vmovlps %xmm0, {{[0-9]+}}(%esp)636; AVX-X86-NEXT:    shrl $31, %eax637; AVX-X86-NEXT:    fildll {{[0-9]+}}(%esp)638; AVX-X86-NEXT:    fadds {{\.?LCPI[0-9]+_[0-9]+}}(,%eax,4)639; AVX-X86-NEXT:    fstps {{[0-9]+}}(%esp)640; AVX-X86-NEXT:    wait641; AVX-X86-NEXT:    vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero642; AVX-X86-NEXT:    vmovss %xmm0, (%esp)643; AVX-X86-NEXT:    flds (%esp)644; AVX-X86-NEXT:    wait645; AVX-X86-NEXT:    movl %ebp, %esp646; AVX-X86-NEXT:    popl %ebp647; AVX-X86-NEXT:    .cfi_def_cfa %esp, 4648; AVX-X86-NEXT:    retl649;650; AVX1-X64-LABEL: uitofp_i64tof32:651; AVX1-X64:       # %bb.0:652; AVX1-X64-NEXT:    movq %rdi, %rax653; AVX1-X64-NEXT:    shrq %rax654; AVX1-X64-NEXT:    movl %edi, %ecx655; AVX1-X64-NEXT:    andl $1, %ecx656; AVX1-X64-NEXT:    orq %rax, %rcx657; AVX1-X64-NEXT:    testq %rdi, %rdi658; AVX1-X64-NEXT:    cmovnsq %rdi, %rcx659; AVX1-X64-NEXT:    vcvtsi2ss %rcx, %xmm15, %xmm0660; AVX1-X64-NEXT:    jns .LBB9_2661; AVX1-X64-NEXT:  # %bb.1:662; AVX1-X64-NEXT:    vaddss %xmm0, %xmm0, %xmm0663; AVX1-X64-NEXT:  .LBB9_2:664; AVX1-X64-NEXT:    retq665;666; AVX512-X64-LABEL: uitofp_i64tof32:667; AVX512-X64:       # %bb.0:668; AVX512-X64-NEXT:    vcvtusi2ss %rdi, %xmm15, %xmm0669; AVX512-X64-NEXT:    retq670;671; X87-LABEL: uitofp_i64tof32:672; X87:       # %bb.0:673; X87-NEXT:    pushl %ebp674; X87-NEXT:    .cfi_def_cfa_offset 8675; X87-NEXT:    .cfi_offset %ebp, -8676; X87-NEXT:    movl %esp, %ebp677; X87-NEXT:    .cfi_def_cfa_register %ebp678; X87-NEXT:    andl $-8, %esp679; X87-NEXT:    subl $16, %esp680; X87-NEXT:    movl 8(%ebp), %eax681; X87-NEXT:    movl 12(%ebp), %ecx682; X87-NEXT:    movl %ecx, {{[0-9]+}}(%esp)683; X87-NEXT:    movl %eax, {{[0-9]+}}(%esp)684; X87-NEXT:    shrl $31, %ecx685; X87-NEXT:    fildll {{[0-9]+}}(%esp)686; X87-NEXT:    fadds {{\.?LCPI[0-9]+_[0-9]+}}(,%ecx,4)687; X87-NEXT:    fstps {{[0-9]+}}(%esp)688; X87-NEXT:    flds {{[0-9]+}}(%esp)689; X87-NEXT:    wait690; X87-NEXT:    movl %ebp, %esp691; X87-NEXT:    popl %ebp692; X87-NEXT:    .cfi_def_cfa %esp, 4693; X87-NEXT:    retl694  %result = call float @llvm.experimental.constrained.uitofp.f32.i64(i64 %x,695                                               metadata !"round.dynamic",696                                               metadata !"fpexcept.strict") #0697  ret float %result698}699 700define double @sitofp_i8tof64(i8 %x) #0 {701; SSE-X86-LABEL: sitofp_i8tof64:702; SSE-X86:       # %bb.0:703; SSE-X86-NEXT:    pushl %ebp704; SSE-X86-NEXT:    .cfi_def_cfa_offset 8705; SSE-X86-NEXT:    .cfi_offset %ebp, -8706; SSE-X86-NEXT:    movl %esp, %ebp707; SSE-X86-NEXT:    .cfi_def_cfa_register %ebp708; SSE-X86-NEXT:    andl $-8, %esp709; SSE-X86-NEXT:    subl $8, %esp710; SSE-X86-NEXT:    movsbl 8(%ebp), %eax711; SSE-X86-NEXT:    cvtsi2sd %eax, %xmm0712; SSE-X86-NEXT:    movsd %xmm0, (%esp)713; SSE-X86-NEXT:    fldl (%esp)714; SSE-X86-NEXT:    wait715; SSE-X86-NEXT:    movl %ebp, %esp716; SSE-X86-NEXT:    popl %ebp717; SSE-X86-NEXT:    .cfi_def_cfa %esp, 4718; SSE-X86-NEXT:    retl719;720; SSE-X64-LABEL: sitofp_i8tof64:721; SSE-X64:       # %bb.0:722; SSE-X64-NEXT:    movsbl %dil, %eax723; SSE-X64-NEXT:    cvtsi2sd %eax, %xmm0724; SSE-X64-NEXT:    retq725;726; AVX-X86-LABEL: sitofp_i8tof64:727; AVX-X86:       # %bb.0:728; AVX-X86-NEXT:    pushl %ebp729; AVX-X86-NEXT:    .cfi_def_cfa_offset 8730; AVX-X86-NEXT:    .cfi_offset %ebp, -8731; AVX-X86-NEXT:    movl %esp, %ebp732; AVX-X86-NEXT:    .cfi_def_cfa_register %ebp733; AVX-X86-NEXT:    andl $-8, %esp734; AVX-X86-NEXT:    subl $8, %esp735; AVX-X86-NEXT:    movsbl 8(%ebp), %eax736; AVX-X86-NEXT:    vcvtsi2sd %eax, %xmm7, %xmm0737; AVX-X86-NEXT:    vmovsd %xmm0, (%esp)738; AVX-X86-NEXT:    fldl (%esp)739; AVX-X86-NEXT:    wait740; AVX-X86-NEXT:    movl %ebp, %esp741; AVX-X86-NEXT:    popl %ebp742; AVX-X86-NEXT:    .cfi_def_cfa %esp, 4743; AVX-X86-NEXT:    retl744;745; AVX-X64-LABEL: sitofp_i8tof64:746; AVX-X64:       # %bb.0:747; AVX-X64-NEXT:    movsbl %dil, %eax748; AVX-X64-NEXT:    vcvtsi2sd %eax, %xmm15, %xmm0749; AVX-X64-NEXT:    retq750;751; X87-LABEL: sitofp_i8tof64:752; X87:       # %bb.0:753; X87-NEXT:    pushl %eax754; X87-NEXT:    .cfi_def_cfa_offset 8755; X87-NEXT:    movsbl {{[0-9]+}}(%esp), %eax756; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)757; X87-NEXT:    filds {{[0-9]+}}(%esp)758; X87-NEXT:    wait759; X87-NEXT:    popl %eax760; X87-NEXT:    .cfi_def_cfa_offset 4761; X87-NEXT:    retl762  %result = call double @llvm.experimental.constrained.sitofp.f64.i8(i8 %x,763                                               metadata !"round.dynamic",764                                               metadata !"fpexcept.strict") #0765  ret double %result766}767 768define double @sitofp_i16tof64(i16 %x) #0 {769; SSE-X86-LABEL: sitofp_i16tof64:770; SSE-X86:       # %bb.0:771; SSE-X86-NEXT:    pushl %ebp772; SSE-X86-NEXT:    .cfi_def_cfa_offset 8773; SSE-X86-NEXT:    .cfi_offset %ebp, -8774; SSE-X86-NEXT:    movl %esp, %ebp775; SSE-X86-NEXT:    .cfi_def_cfa_register %ebp776; SSE-X86-NEXT:    andl $-8, %esp777; SSE-X86-NEXT:    subl $8, %esp778; SSE-X86-NEXT:    movswl 8(%ebp), %eax779; SSE-X86-NEXT:    cvtsi2sd %eax, %xmm0780; SSE-X86-NEXT:    movsd %xmm0, (%esp)781; SSE-X86-NEXT:    fldl (%esp)782; SSE-X86-NEXT:    wait783; SSE-X86-NEXT:    movl %ebp, %esp784; SSE-X86-NEXT:    popl %ebp785; SSE-X86-NEXT:    .cfi_def_cfa %esp, 4786; SSE-X86-NEXT:    retl787;788; SSE-X64-LABEL: sitofp_i16tof64:789; SSE-X64:       # %bb.0:790; SSE-X64-NEXT:    movswl %di, %eax791; SSE-X64-NEXT:    cvtsi2sd %eax, %xmm0792; SSE-X64-NEXT:    retq793;794; AVX-X86-LABEL: sitofp_i16tof64:795; AVX-X86:       # %bb.0:796; AVX-X86-NEXT:    pushl %ebp797; AVX-X86-NEXT:    .cfi_def_cfa_offset 8798; AVX-X86-NEXT:    .cfi_offset %ebp, -8799; AVX-X86-NEXT:    movl %esp, %ebp800; AVX-X86-NEXT:    .cfi_def_cfa_register %ebp801; AVX-X86-NEXT:    andl $-8, %esp802; AVX-X86-NEXT:    subl $8, %esp803; AVX-X86-NEXT:    movswl 8(%ebp), %eax804; AVX-X86-NEXT:    vcvtsi2sd %eax, %xmm7, %xmm0805; AVX-X86-NEXT:    vmovsd %xmm0, (%esp)806; AVX-X86-NEXT:    fldl (%esp)807; AVX-X86-NEXT:    wait808; AVX-X86-NEXT:    movl %ebp, %esp809; AVX-X86-NEXT:    popl %ebp810; AVX-X86-NEXT:    .cfi_def_cfa %esp, 4811; AVX-X86-NEXT:    retl812;813; AVX-X64-LABEL: sitofp_i16tof64:814; AVX-X64:       # %bb.0:815; AVX-X64-NEXT:    movswl %di, %eax816; AVX-X64-NEXT:    vcvtsi2sd %eax, %xmm15, %xmm0817; AVX-X64-NEXT:    retq818;819; X87-LABEL: sitofp_i16tof64:820; X87:       # %bb.0:821; X87-NEXT:    pushl %eax822; X87-NEXT:    .cfi_def_cfa_offset 8823; X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax824; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)825; X87-NEXT:    filds {{[0-9]+}}(%esp)826; X87-NEXT:    wait827; X87-NEXT:    popl %eax828; X87-NEXT:    .cfi_def_cfa_offset 4829; X87-NEXT:    retl830  %result = call double @llvm.experimental.constrained.sitofp.f64.i16(i16 %x,831                                               metadata !"round.dynamic",832                                               metadata !"fpexcept.strict") #0833  ret double %result834}835 836define double @sitofp_i32tof64(i32 %x) #0 {837; SSE-X86-LABEL: sitofp_i32tof64:838; SSE-X86:       # %bb.0:839; SSE-X86-NEXT:    pushl %ebp840; SSE-X86-NEXT:    .cfi_def_cfa_offset 8841; SSE-X86-NEXT:    .cfi_offset %ebp, -8842; SSE-X86-NEXT:    movl %esp, %ebp843; SSE-X86-NEXT:    .cfi_def_cfa_register %ebp844; SSE-X86-NEXT:    andl $-8, %esp845; SSE-X86-NEXT:    subl $8, %esp846; SSE-X86-NEXT:    cvtsi2sdl 8(%ebp), %xmm0847; SSE-X86-NEXT:    movsd %xmm0, (%esp)848; SSE-X86-NEXT:    fldl (%esp)849; SSE-X86-NEXT:    wait850; SSE-X86-NEXT:    movl %ebp, %esp851; SSE-X86-NEXT:    popl %ebp852; SSE-X86-NEXT:    .cfi_def_cfa %esp, 4853; SSE-X86-NEXT:    retl854;855; SSE-X64-LABEL: sitofp_i32tof64:856; SSE-X64:       # %bb.0:857; SSE-X64-NEXT:    cvtsi2sd %edi, %xmm0858; SSE-X64-NEXT:    retq859;860; AVX-X86-LABEL: sitofp_i32tof64:861; AVX-X86:       # %bb.0:862; AVX-X86-NEXT:    pushl %ebp863; AVX-X86-NEXT:    .cfi_def_cfa_offset 8864; AVX-X86-NEXT:    .cfi_offset %ebp, -8865; AVX-X86-NEXT:    movl %esp, %ebp866; AVX-X86-NEXT:    .cfi_def_cfa_register %ebp867; AVX-X86-NEXT:    andl $-8, %esp868; AVX-X86-NEXT:    subl $8, %esp869; AVX-X86-NEXT:    vcvtsi2sdl 8(%ebp), %xmm7, %xmm0870; AVX-X86-NEXT:    vmovsd %xmm0, (%esp)871; AVX-X86-NEXT:    fldl (%esp)872; AVX-X86-NEXT:    wait873; AVX-X86-NEXT:    movl %ebp, %esp874; AVX-X86-NEXT:    popl %ebp875; AVX-X86-NEXT:    .cfi_def_cfa %esp, 4876; AVX-X86-NEXT:    retl877;878; AVX-X64-LABEL: sitofp_i32tof64:879; AVX-X64:       # %bb.0:880; AVX-X64-NEXT:    vcvtsi2sd %edi, %xmm15, %xmm0881; AVX-X64-NEXT:    retq882;883; X87-LABEL: sitofp_i32tof64:884; X87:       # %bb.0:885; X87-NEXT:    pushl %eax886; X87-NEXT:    .cfi_def_cfa_offset 8887; X87-NEXT:    movl {{[0-9]+}}(%esp), %eax888; X87-NEXT:    movl %eax, (%esp)889; X87-NEXT:    fildl (%esp)890; X87-NEXT:    wait891; X87-NEXT:    popl %eax892; X87-NEXT:    .cfi_def_cfa_offset 4893; X87-NEXT:    retl894  %result = call double @llvm.experimental.constrained.sitofp.f64.i32(i32 %x,895                                               metadata !"round.dynamic",896                                               metadata !"fpexcept.strict") #0897  ret double %result898}899 900define double @sitofp_i64tof64(i64 %x) #0 {901; SSE-X86-LABEL: sitofp_i64tof64:902; SSE-X86:       # %bb.0:903; SSE-X86-NEXT:    pushl %ebp904; SSE-X86-NEXT:    .cfi_def_cfa_offset 8905; SSE-X86-NEXT:    .cfi_offset %ebp, -8906; SSE-X86-NEXT:    movl %esp, %ebp907; SSE-X86-NEXT:    .cfi_def_cfa_register %ebp908; SSE-X86-NEXT:    andl $-8, %esp909; SSE-X86-NEXT:    subl $8, %esp910; SSE-X86-NEXT:    fildll 8(%ebp)911; SSE-X86-NEXT:    fstpl (%esp)912; SSE-X86-NEXT:    fldl (%esp)913; SSE-X86-NEXT:    wait914; SSE-X86-NEXT:    movl %ebp, %esp915; SSE-X86-NEXT:    popl %ebp916; SSE-X86-NEXT:    .cfi_def_cfa %esp, 4917; SSE-X86-NEXT:    retl918;919; SSE-X64-LABEL: sitofp_i64tof64:920; SSE-X64:       # %bb.0:921; SSE-X64-NEXT:    cvtsi2sd %rdi, %xmm0922; SSE-X64-NEXT:    retq923;924; AVX-X86-LABEL: sitofp_i64tof64:925; AVX-X86:       # %bb.0:926; AVX-X86-NEXT:    pushl %ebp927; AVX-X86-NEXT:    .cfi_def_cfa_offset 8928; AVX-X86-NEXT:    .cfi_offset %ebp, -8929; AVX-X86-NEXT:    movl %esp, %ebp930; AVX-X86-NEXT:    .cfi_def_cfa_register %ebp931; AVX-X86-NEXT:    andl $-8, %esp932; AVX-X86-NEXT:    subl $8, %esp933; AVX-X86-NEXT:    fildll 8(%ebp)934; AVX-X86-NEXT:    fstpl (%esp)935; AVX-X86-NEXT:    fldl (%esp)936; AVX-X86-NEXT:    wait937; AVX-X86-NEXT:    movl %ebp, %esp938; AVX-X86-NEXT:    popl %ebp939; AVX-X86-NEXT:    .cfi_def_cfa %esp, 4940; AVX-X86-NEXT:    retl941;942; AVX-X64-LABEL: sitofp_i64tof64:943; AVX-X64:       # %bb.0:944; AVX-X64-NEXT:    vcvtsi2sd %rdi, %xmm15, %xmm0945; AVX-X64-NEXT:    retq946;947; X87-LABEL: sitofp_i64tof64:948; X87:       # %bb.0:949; X87-NEXT:    fildll {{[0-9]+}}(%esp)950; X87-NEXT:    wait951; X87-NEXT:    retl952  %result = call double @llvm.experimental.constrained.sitofp.f64.i64(i64 %x,953                                               metadata !"round.dynamic",954                                               metadata !"fpexcept.strict") #0955  ret double %result956}957 958define double @uitofp_i1tof64(i1 %x) #0 {959; SSE-X86-LABEL: uitofp_i1tof64:960; SSE-X86:       # %bb.0:961; SSE-X86-NEXT:    pushl %ebp962; SSE-X86-NEXT:    .cfi_def_cfa_offset 8963; SSE-X86-NEXT:    .cfi_offset %ebp, -8964; SSE-X86-NEXT:    movl %esp, %ebp965; SSE-X86-NEXT:    .cfi_def_cfa_register %ebp966; SSE-X86-NEXT:    andl $-8, %esp967; SSE-X86-NEXT:    subl $8, %esp968; SSE-X86-NEXT:    movzbl 8(%ebp), %eax969; SSE-X86-NEXT:    andb $1, %al970; SSE-X86-NEXT:    movzbl %al, %eax971; SSE-X86-NEXT:    cvtsi2sd %eax, %xmm0972; SSE-X86-NEXT:    movsd %xmm0, (%esp)973; SSE-X86-NEXT:    fldl (%esp)974; SSE-X86-NEXT:    wait975; SSE-X86-NEXT:    movl %ebp, %esp976; SSE-X86-NEXT:    popl %ebp977; SSE-X86-NEXT:    .cfi_def_cfa %esp, 4978; SSE-X86-NEXT:    retl979;980; SSE-X64-LABEL: uitofp_i1tof64:981; SSE-X64:       # %bb.0:982; SSE-X64-NEXT:    andl $1, %edi983; SSE-X64-NEXT:    cvtsi2sd %edi, %xmm0984; SSE-X64-NEXT:    retq985;986; AVX-X86-LABEL: uitofp_i1tof64:987; AVX-X86:       # %bb.0:988; AVX-X86-NEXT:    pushl %ebp989; AVX-X86-NEXT:    .cfi_def_cfa_offset 8990; AVX-X86-NEXT:    .cfi_offset %ebp, -8991; AVX-X86-NEXT:    movl %esp, %ebp992; AVX-X86-NEXT:    .cfi_def_cfa_register %ebp993; AVX-X86-NEXT:    andl $-8, %esp994; AVX-X86-NEXT:    subl $8, %esp995; AVX-X86-NEXT:    movzbl 8(%ebp), %eax996; AVX-X86-NEXT:    andb $1, %al997; AVX-X86-NEXT:    movzbl %al, %eax998; AVX-X86-NEXT:    vcvtsi2sd %eax, %xmm7, %xmm0999; AVX-X86-NEXT:    vmovsd %xmm0, (%esp)1000; AVX-X86-NEXT:    fldl (%esp)1001; AVX-X86-NEXT:    wait1002; AVX-X86-NEXT:    movl %ebp, %esp1003; AVX-X86-NEXT:    popl %ebp1004; AVX-X86-NEXT:    .cfi_def_cfa %esp, 41005; AVX-X86-NEXT:    retl1006;1007; AVX-X64-LABEL: uitofp_i1tof64:1008; AVX-X64:       # %bb.0:1009; AVX-X64-NEXT:    andl $1, %edi1010; AVX-X64-NEXT:    vcvtsi2sd %edi, %xmm15, %xmm01011; AVX-X64-NEXT:    retq1012;1013; X87-LABEL: uitofp_i1tof64:1014; X87:       # %bb.0:1015; X87-NEXT:    pushl %eax1016; X87-NEXT:    .cfi_def_cfa_offset 81017; X87-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1018; X87-NEXT:    andb $1, %al1019; X87-NEXT:    movzbl %al, %eax1020; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)1021; X87-NEXT:    filds {{[0-9]+}}(%esp)1022; X87-NEXT:    wait1023; X87-NEXT:    popl %eax1024; X87-NEXT:    .cfi_def_cfa_offset 41025; X87-NEXT:    retl1026  %result = call double @llvm.experimental.constrained.uitofp.f64.i1(i1 %x,1027                                               metadata !"round.dynamic",1028                                               metadata !"fpexcept.strict") #01029  ret double %result1030}1031 1032define double @uitofp_i8tof64(i8 %x) #0 {1033; SSE-X86-LABEL: uitofp_i8tof64:1034; SSE-X86:       # %bb.0:1035; SSE-X86-NEXT:    pushl %ebp1036; SSE-X86-NEXT:    .cfi_def_cfa_offset 81037; SSE-X86-NEXT:    .cfi_offset %ebp, -81038; SSE-X86-NEXT:    movl %esp, %ebp1039; SSE-X86-NEXT:    .cfi_def_cfa_register %ebp1040; SSE-X86-NEXT:    andl $-8, %esp1041; SSE-X86-NEXT:    subl $8, %esp1042; SSE-X86-NEXT:    movzbl 8(%ebp), %eax1043; SSE-X86-NEXT:    cvtsi2sd %eax, %xmm01044; SSE-X86-NEXT:    movsd %xmm0, (%esp)1045; SSE-X86-NEXT:    fldl (%esp)1046; SSE-X86-NEXT:    wait1047; SSE-X86-NEXT:    movl %ebp, %esp1048; SSE-X86-NEXT:    popl %ebp1049; SSE-X86-NEXT:    .cfi_def_cfa %esp, 41050; SSE-X86-NEXT:    retl1051;1052; SSE-X64-LABEL: uitofp_i8tof64:1053; SSE-X64:       # %bb.0:1054; SSE-X64-NEXT:    movzbl %dil, %eax1055; SSE-X64-NEXT:    cvtsi2sd %eax, %xmm01056; SSE-X64-NEXT:    retq1057;1058; AVX-X86-LABEL: uitofp_i8tof64:1059; AVX-X86:       # %bb.0:1060; AVX-X86-NEXT:    pushl %ebp1061; AVX-X86-NEXT:    .cfi_def_cfa_offset 81062; AVX-X86-NEXT:    .cfi_offset %ebp, -81063; AVX-X86-NEXT:    movl %esp, %ebp1064; AVX-X86-NEXT:    .cfi_def_cfa_register %ebp1065; AVX-X86-NEXT:    andl $-8, %esp1066; AVX-X86-NEXT:    subl $8, %esp1067; AVX-X86-NEXT:    movzbl 8(%ebp), %eax1068; AVX-X86-NEXT:    vcvtsi2sd %eax, %xmm7, %xmm01069; AVX-X86-NEXT:    vmovsd %xmm0, (%esp)1070; AVX-X86-NEXT:    fldl (%esp)1071; AVX-X86-NEXT:    wait1072; AVX-X86-NEXT:    movl %ebp, %esp1073; AVX-X86-NEXT:    popl %ebp1074; AVX-X86-NEXT:    .cfi_def_cfa %esp, 41075; AVX-X86-NEXT:    retl1076;1077; AVX-X64-LABEL: uitofp_i8tof64:1078; AVX-X64:       # %bb.0:1079; AVX-X64-NEXT:    movzbl %dil, %eax1080; AVX-X64-NEXT:    vcvtsi2sd %eax, %xmm15, %xmm01081; AVX-X64-NEXT:    retq1082;1083; X87-LABEL: uitofp_i8tof64:1084; X87:       # %bb.0:1085; X87-NEXT:    pushl %eax1086; X87-NEXT:    .cfi_def_cfa_offset 81087; X87-NEXT:    movzbl {{[0-9]+}}(%esp), %eax1088; X87-NEXT:    movw %ax, {{[0-9]+}}(%esp)1089; X87-NEXT:    filds {{[0-9]+}}(%esp)1090; X87-NEXT:    wait1091; X87-NEXT:    popl %eax1092; X87-NEXT:    .cfi_def_cfa_offset 41093; X87-NEXT:    retl1094  %result = call double @llvm.experimental.constrained.uitofp.f64.i8(i8 %x,1095                                               metadata !"round.dynamic",1096                                               metadata !"fpexcept.strict") #01097  ret double %result1098}1099 1100define double @uitofp_i16tof64(i16 %x) #0 {1101; SSE-X86-LABEL: uitofp_i16tof64:1102; SSE-X86:       # %bb.0:1103; SSE-X86-NEXT:    pushl %ebp1104; SSE-X86-NEXT:    .cfi_def_cfa_offset 81105; SSE-X86-NEXT:    .cfi_offset %ebp, -81106; SSE-X86-NEXT:    movl %esp, %ebp1107; SSE-X86-NEXT:    .cfi_def_cfa_register %ebp1108; SSE-X86-NEXT:    andl $-8, %esp1109; SSE-X86-NEXT:    subl $8, %esp1110; SSE-X86-NEXT:    movzwl 8(%ebp), %eax1111; SSE-X86-NEXT:    cvtsi2sd %eax, %xmm01112; SSE-X86-NEXT:    movsd %xmm0, (%esp)1113; SSE-X86-NEXT:    fldl (%esp)1114; SSE-X86-NEXT:    wait1115; SSE-X86-NEXT:    movl %ebp, %esp1116; SSE-X86-NEXT:    popl %ebp1117; SSE-X86-NEXT:    .cfi_def_cfa %esp, 41118; SSE-X86-NEXT:    retl1119;1120; SSE-X64-LABEL: uitofp_i16tof64:1121; SSE-X64:       # %bb.0:1122; SSE-X64-NEXT:    movzwl %di, %eax1123; SSE-X64-NEXT:    cvtsi2sd %eax, %xmm01124; SSE-X64-NEXT:    retq1125;1126; AVX-X86-LABEL: uitofp_i16tof64:1127; AVX-X86:       # %bb.0:1128; AVX-X86-NEXT:    pushl %ebp1129; AVX-X86-NEXT:    .cfi_def_cfa_offset 81130; AVX-X86-NEXT:    .cfi_offset %ebp, -81131; AVX-X86-NEXT:    movl %esp, %ebp1132; AVX-X86-NEXT:    .cfi_def_cfa_register %ebp1133; AVX-X86-NEXT:    andl $-8, %esp1134; AVX-X86-NEXT:    subl $8, %esp1135; AVX-X86-NEXT:    movzwl 8(%ebp), %eax1136; AVX-X86-NEXT:    vcvtsi2sd %eax, %xmm7, %xmm01137; AVX-X86-NEXT:    vmovsd %xmm0, (%esp)1138; AVX-X86-NEXT:    fldl (%esp)1139; AVX-X86-NEXT:    wait1140; AVX-X86-NEXT:    movl %ebp, %esp1141; AVX-X86-NEXT:    popl %ebp1142; AVX-X86-NEXT:    .cfi_def_cfa %esp, 41143; AVX-X86-NEXT:    retl1144;1145; AVX-X64-LABEL: uitofp_i16tof64:1146; AVX-X64:       # %bb.0:1147; AVX-X64-NEXT:    movzwl %di, %eax1148; AVX-X64-NEXT:    vcvtsi2sd %eax, %xmm15, %xmm01149; AVX-X64-NEXT:    retq1150;1151; X87-LABEL: uitofp_i16tof64:1152; X87:       # %bb.0:1153; X87-NEXT:    pushl %eax1154; X87-NEXT:    .cfi_def_cfa_offset 81155; X87-NEXT:    movzwl {{[0-9]+}}(%esp), %eax1156; X87-NEXT:    movl %eax, (%esp)1157; X87-NEXT:    fildl (%esp)1158; X87-NEXT:    wait1159; X87-NEXT:    popl %eax1160; X87-NEXT:    .cfi_def_cfa_offset 41161; X87-NEXT:    retl1162  %result = call double @llvm.experimental.constrained.uitofp.f64.i16(i16 %x,1163                                               metadata !"round.dynamic",1164                                               metadata !"fpexcept.strict") #01165  ret double %result1166}1167 1168define double @uitofp_i32tof64(i32 %x) #0 {1169; SSE-X86-LABEL: uitofp_i32tof64:1170; SSE-X86:       # %bb.0:1171; SSE-X86-NEXT:    pushl %ebp1172; SSE-X86-NEXT:    .cfi_def_cfa_offset 81173; SSE-X86-NEXT:    .cfi_offset %ebp, -81174; SSE-X86-NEXT:    movl %esp, %ebp1175; SSE-X86-NEXT:    .cfi_def_cfa_register %ebp1176; SSE-X86-NEXT:    andl $-8, %esp1177; SSE-X86-NEXT:    subl $16, %esp1178; SSE-X86-NEXT:    movl 8(%ebp), %eax1179; SSE-X86-NEXT:    movl %eax, (%esp)1180; SSE-X86-NEXT:    movl $0, {{[0-9]+}}(%esp)1181; SSE-X86-NEXT:    fildll (%esp)1182; SSE-X86-NEXT:    fstpl {{[0-9]+}}(%esp)1183; SSE-X86-NEXT:    fldl {{[0-9]+}}(%esp)1184; SSE-X86-NEXT:    wait1185; SSE-X86-NEXT:    movl %ebp, %esp1186; SSE-X86-NEXT:    popl %ebp1187; SSE-X86-NEXT:    .cfi_def_cfa %esp, 41188; SSE-X86-NEXT:    retl1189;1190; SSE-X64-LABEL: uitofp_i32tof64:1191; SSE-X64:       # %bb.0:1192; SSE-X64-NEXT:    movl %edi, %eax1193; SSE-X64-NEXT:    cvtsi2sd %rax, %xmm01194; SSE-X64-NEXT:    retq1195;1196; AVX1-X86-LABEL: uitofp_i32tof64:1197; AVX1-X86:       # %bb.0:1198; AVX1-X86-NEXT:    pushl %ebp1199; AVX1-X86-NEXT:    .cfi_def_cfa_offset 81200; AVX1-X86-NEXT:    .cfi_offset %ebp, -81201; AVX1-X86-NEXT:    movl %esp, %ebp1202; AVX1-X86-NEXT:    .cfi_def_cfa_register %ebp1203; AVX1-X86-NEXT:    andl $-8, %esp1204; AVX1-X86-NEXT:    subl $16, %esp1205; AVX1-X86-NEXT:    movl 8(%ebp), %eax1206; AVX1-X86-NEXT:    movl %eax, (%esp)1207; AVX1-X86-NEXT:    movl $0, {{[0-9]+}}(%esp)1208; AVX1-X86-NEXT:    fildll (%esp)1209; AVX1-X86-NEXT:    fstpl {{[0-9]+}}(%esp)1210; AVX1-X86-NEXT:    fldl {{[0-9]+}}(%esp)1211; AVX1-X86-NEXT:    wait1212; AVX1-X86-NEXT:    movl %ebp, %esp1213; AVX1-X86-NEXT:    popl %ebp1214; AVX1-X86-NEXT:    .cfi_def_cfa %esp, 41215; AVX1-X86-NEXT:    retl1216;1217; AVX1-X64-LABEL: uitofp_i32tof64:1218; AVX1-X64:       # %bb.0:1219; AVX1-X64-NEXT:    movl %edi, %eax1220; AVX1-X64-NEXT:    vcvtsi2sd %rax, %xmm15, %xmm01221; AVX1-X64-NEXT:    retq1222;1223; AVX512-X86-LABEL: uitofp_i32tof64:1224; AVX512-X86:       # %bb.0:1225; AVX512-X86-NEXT:    pushl %ebp1226; AVX512-X86-NEXT:    .cfi_def_cfa_offset 81227; AVX512-X86-NEXT:    .cfi_offset %ebp, -81228; AVX512-X86-NEXT:    movl %esp, %ebp1229; AVX512-X86-NEXT:    .cfi_def_cfa_register %ebp1230; AVX512-X86-NEXT:    andl $-8, %esp1231; AVX512-X86-NEXT:    subl $8, %esp1232; AVX512-X86-NEXT:    vcvtusi2sdl 8(%ebp), %xmm7, %xmm01233; AVX512-X86-NEXT:    vmovsd %xmm0, (%esp)1234; AVX512-X86-NEXT:    fldl (%esp)1235; AVX512-X86-NEXT:    wait1236; AVX512-X86-NEXT:    movl %ebp, %esp1237; AVX512-X86-NEXT:    popl %ebp1238; AVX512-X86-NEXT:    .cfi_def_cfa %esp, 41239; AVX512-X86-NEXT:    retl1240;1241; AVX512-X64-LABEL: uitofp_i32tof64:1242; AVX512-X64:       # %bb.0:1243; AVX512-X64-NEXT:    vcvtusi2sd %edi, %xmm15, %xmm01244; AVX512-X64-NEXT:    retq1245;1246; X87-LABEL: uitofp_i32tof64:1247; X87:       # %bb.0:1248; X87-NEXT:    pushl %ebp1249; X87-NEXT:    .cfi_def_cfa_offset 81250; X87-NEXT:    .cfi_offset %ebp, -81251; X87-NEXT:    movl %esp, %ebp1252; X87-NEXT:    .cfi_def_cfa_register %ebp1253; X87-NEXT:    andl $-8, %esp1254; X87-NEXT:    subl $8, %esp1255; X87-NEXT:    movl 8(%ebp), %eax1256; X87-NEXT:    movl %eax, (%esp)1257; X87-NEXT:    movl $0, {{[0-9]+}}(%esp)1258; X87-NEXT:    fildll (%esp)1259; X87-NEXT:    wait1260; X87-NEXT:    movl %ebp, %esp1261; X87-NEXT:    popl %ebp1262; X87-NEXT:    .cfi_def_cfa %esp, 41263; X87-NEXT:    retl1264  %result = call double @llvm.experimental.constrained.uitofp.f64.i32(i32 %x,1265                                               metadata !"round.dynamic",1266                                               metadata !"fpexcept.strict") #01267  ret double %result1268}1269 1270define double @uitofp_i64tof64(i64 %x) #0 {1271; SSE-X86-LABEL: uitofp_i64tof64:1272; SSE-X86:       # %bb.0:1273; SSE-X86-NEXT:    pushl %ebp1274; SSE-X86-NEXT:    .cfi_def_cfa_offset 81275; SSE-X86-NEXT:    .cfi_offset %ebp, -81276; SSE-X86-NEXT:    movl %esp, %ebp1277; SSE-X86-NEXT:    .cfi_def_cfa_register %ebp1278; SSE-X86-NEXT:    andl $-8, %esp1279; SSE-X86-NEXT:    subl $24, %esp1280; SSE-X86-NEXT:    movl 12(%ebp), %eax1281; SSE-X86-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero1282; SSE-X86-NEXT:    movlps %xmm0, {{[0-9]+}}(%esp)1283; SSE-X86-NEXT:    shrl $31, %eax1284; SSE-X86-NEXT:    fildll {{[0-9]+}}(%esp)1285; SSE-X86-NEXT:    fadds {{\.?LCPI[0-9]+_[0-9]+}}(,%eax,4)1286; SSE-X86-NEXT:    fstpl {{[0-9]+}}(%esp)1287; SSE-X86-NEXT:    wait1288; SSE-X86-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero1289; SSE-X86-NEXT:    movsd %xmm0, (%esp)1290; SSE-X86-NEXT:    fldl (%esp)1291; SSE-X86-NEXT:    wait1292; SSE-X86-NEXT:    movl %ebp, %esp1293; SSE-X86-NEXT:    popl %ebp1294; SSE-X86-NEXT:    .cfi_def_cfa %esp, 41295; SSE-X86-NEXT:    retl1296;1297; SSE-X64-LABEL: uitofp_i64tof64:1298; SSE-X64:       # %bb.0:1299; SSE-X64-NEXT:    movq %rdi, %rax1300; SSE-X64-NEXT:    shrq %rax1301; SSE-X64-NEXT:    movl %edi, %ecx1302; SSE-X64-NEXT:    andl $1, %ecx1303; SSE-X64-NEXT:    orq %rax, %rcx1304; SSE-X64-NEXT:    testq %rdi, %rdi1305; SSE-X64-NEXT:    cmovnsq %rdi, %rcx1306; SSE-X64-NEXT:    cvtsi2sd %rcx, %xmm01307; SSE-X64-NEXT:    jns .LBB18_21308; SSE-X64-NEXT:  # %bb.1:1309; SSE-X64-NEXT:    addsd %xmm0, %xmm01310; SSE-X64-NEXT:  .LBB18_2:1311; SSE-X64-NEXT:    retq1312;1313; AVX-X86-LABEL: uitofp_i64tof64:1314; AVX-X86:       # %bb.0:1315; AVX-X86-NEXT:    pushl %ebp1316; AVX-X86-NEXT:    .cfi_def_cfa_offset 81317; AVX-X86-NEXT:    .cfi_offset %ebp, -81318; AVX-X86-NEXT:    movl %esp, %ebp1319; AVX-X86-NEXT:    .cfi_def_cfa_register %ebp1320; AVX-X86-NEXT:    andl $-8, %esp1321; AVX-X86-NEXT:    subl $24, %esp1322; AVX-X86-NEXT:    movl 12(%ebp), %eax1323; AVX-X86-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero1324; AVX-X86-NEXT:    vmovlps %xmm0, {{[0-9]+}}(%esp)1325; AVX-X86-NEXT:    shrl $31, %eax1326; AVX-X86-NEXT:    fildll {{[0-9]+}}(%esp)1327; AVX-X86-NEXT:    fadds {{\.?LCPI[0-9]+_[0-9]+}}(,%eax,4)1328; AVX-X86-NEXT:    fstpl {{[0-9]+}}(%esp)1329; AVX-X86-NEXT:    wait1330; AVX-X86-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero1331; AVX-X86-NEXT:    vmovsd %xmm0, (%esp)1332; AVX-X86-NEXT:    fldl (%esp)1333; AVX-X86-NEXT:    wait1334; AVX-X86-NEXT:    movl %ebp, %esp1335; AVX-X86-NEXT:    popl %ebp1336; AVX-X86-NEXT:    .cfi_def_cfa %esp, 41337; AVX-X86-NEXT:    retl1338;1339; AVX1-X64-LABEL: uitofp_i64tof64:1340; AVX1-X64:       # %bb.0:1341; AVX1-X64-NEXT:    movq %rdi, %rax1342; AVX1-X64-NEXT:    shrq %rax1343; AVX1-X64-NEXT:    movl %edi, %ecx1344; AVX1-X64-NEXT:    andl $1, %ecx1345; AVX1-X64-NEXT:    orq %rax, %rcx1346; AVX1-X64-NEXT:    testq %rdi, %rdi1347; AVX1-X64-NEXT:    cmovnsq %rdi, %rcx1348; AVX1-X64-NEXT:    vcvtsi2sd %rcx, %xmm15, %xmm01349; AVX1-X64-NEXT:    jns .LBB18_21350; AVX1-X64-NEXT:  # %bb.1:1351; AVX1-X64-NEXT:    vaddsd %xmm0, %xmm0, %xmm01352; AVX1-X64-NEXT:  .LBB18_2:1353; AVX1-X64-NEXT:    retq1354;1355; AVX512-X64-LABEL: uitofp_i64tof64:1356; AVX512-X64:       # %bb.0:1357; AVX512-X64-NEXT:    vcvtusi2sd %rdi, %xmm15, %xmm01358; AVX512-X64-NEXT:    retq1359;1360; X87-LABEL: uitofp_i64tof64:1361; X87:       # %bb.0:1362; X87-NEXT:    pushl %ebp1363; X87-NEXT:    .cfi_def_cfa_offset 81364; X87-NEXT:    .cfi_offset %ebp, -81365; X87-NEXT:    movl %esp, %ebp1366; X87-NEXT:    .cfi_def_cfa_register %ebp1367; X87-NEXT:    andl $-8, %esp1368; X87-NEXT:    subl $16, %esp1369; X87-NEXT:    movl 8(%ebp), %eax1370; X87-NEXT:    movl 12(%ebp), %ecx1371; X87-NEXT:    movl %ecx, {{[0-9]+}}(%esp)1372; X87-NEXT:    movl %eax, (%esp)1373; X87-NEXT:    shrl $31, %ecx1374; X87-NEXT:    fildll (%esp)1375; X87-NEXT:    fadds {{\.?LCPI[0-9]+_[0-9]+}}(,%ecx,4)1376; X87-NEXT:    fstpl {{[0-9]+}}(%esp)1377; X87-NEXT:    fldl {{[0-9]+}}(%esp)1378; X87-NEXT:    wait1379; X87-NEXT:    movl %ebp, %esp1380; X87-NEXT:    popl %ebp1381; X87-NEXT:    .cfi_def_cfa %esp, 41382; X87-NEXT:    retl1383  %result = call double @llvm.experimental.constrained.uitofp.f64.i64(i64 %x,1384                                               metadata !"round.dynamic",1385                                               metadata !"fpexcept.strict") #01386  ret double %result1387}1388 1389attributes #0 = { strictfp }1390