brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · 8c11fe1 Raw
99 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-pc-unknown -mattr=+sse2 | FileCheck -check-prefix=X64 %s3; RUN: llc < %s -mtriple=i686-pc-unknown -mattr=+sse2 | FileCheck -check-prefix=X86 %s4 5; PR190596 7define i32 @isint_return(double %d) nounwind {8; X64-LABEL: isint_return:9; X64:       # %bb.0:10; X64-NEXT:    cvttpd2dq %xmm0, %xmm111; X64-NEXT:    cvtdq2pd %xmm1, %xmm112; X64-NEXT:    cmpeqsd %xmm0, %xmm113; X64-NEXT:    movq %xmm1, %rax14; X64-NEXT:    andl $1, %eax15; X64-NEXT:    # kill: def $eax killed $eax killed $rax16; X64-NEXT:    retq17;18; X86-LABEL: isint_return:19; X86:       # %bb.0:20; X86-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero21; X86-NEXT:    cvttpd2dq %xmm0, %xmm122; X86-NEXT:    cvtdq2pd %xmm1, %xmm123; X86-NEXT:    cmpeqsd %xmm0, %xmm124; X86-NEXT:    movd %xmm1, %eax25; X86-NEXT:    andl $1, %eax26; X86-NEXT:    retl27  %i = fptosi double %d to i3228  %e = sitofp i32 %i to double29  %c = fcmp oeq double %d, %e30  %z = zext i1 %c to i3231  ret i32 %z32}33 34define i32 @isint_float_return(float %f) nounwind {35; X64-LABEL: isint_float_return:36; X64:       # %bb.0:37; X64-NEXT:    cvttps2dq %xmm0, %xmm138; X64-NEXT:    cvtdq2ps %xmm1, %xmm139; X64-NEXT:    cmpeqss %xmm0, %xmm140; X64-NEXT:    movd %xmm1, %eax41; X64-NEXT:    andl $1, %eax42; X64-NEXT:    retq43;44; X86-LABEL: isint_float_return:45; X86:       # %bb.0:46; X86-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero47; X86-NEXT:    cvttps2dq %xmm0, %xmm148; X86-NEXT:    cvtdq2ps %xmm1, %xmm149; X86-NEXT:    cmpeqss %xmm0, %xmm150; X86-NEXT:    movd %xmm1, %eax51; X86-NEXT:    andl $1, %eax52; X86-NEXT:    retl53  %i = fptosi float %f to i3254  %g = sitofp i32 %i to float55  %c = fcmp oeq float %f, %g56  %z = zext i1 %c to i3257  ret i32 %z58}59 60declare void @foo()61 62define void @isint_branch(double %d) nounwind {63; X64-LABEL: isint_branch:64; X64:       # %bb.0:65; X64-NEXT:    cvttpd2dq %xmm0, %xmm166; X64-NEXT:    cvtdq2pd %xmm1, %xmm167; X64-NEXT:    ucomisd %xmm1, %xmm068; X64-NEXT:    jne .LBB2_269; X64-NEXT:    jp .LBB2_270; X64-NEXT:  # %bb.1: # %true71; X64-NEXT:    pushq %rax72; X64-NEXT:    callq foo@PLT73; X64-NEXT:    popq %rax74; X64-NEXT:  .LBB2_2: # %false75; X64-NEXT:    retq76;77; X86-LABEL: isint_branch:78; X86:       # %bb.0:79; X86-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero80; X86-NEXT:    cvttpd2dq %xmm0, %xmm181; X86-NEXT:    cvtdq2pd %xmm1, %xmm182; X86-NEXT:    ucomisd %xmm1, %xmm083; X86-NEXT:    jne .LBB2_284; X86-NEXT:    jp .LBB2_285; X86-NEXT:  # %bb.1: # %true86; X86-NEXT:    calll foo@PLT87; X86-NEXT:  .LBB2_2: # %false88; X86-NEXT:    retl89  %i = fptosi double %d to i3290  %e = sitofp i32 %i to double91  %c = fcmp oeq double %d, %e92  br i1 %c, label %true, label %false93true:94  call void @foo()95  ret void96false:97  ret void98}99