diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/fmf-flags.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/fmf-flags.ll | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/llvm/test/CodeGen/X86/fmf-flags.ll b/llvm/test/CodeGen/X86/fmf-flags.ll index ca520b3d675..81a34b510e0 100644 --- a/llvm/test/CodeGen/X86/fmf-flags.ll +++ b/llvm/test/CodeGen/X86/fmf-flags.ll @@ -7,9 +7,18 @@ declare float @llvm.sqrt.f32(float %x); define float @fast_recip_sqrt(float %x) { ; X64-LABEL: fast_recip_sqrt: ; X64: # %bb.0: -; X64-NEXT: sqrtss %xmm0, %xmm1 -; X64-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero -; X64-NEXT: divss %xmm1, %xmm0 +; X64-NEXT: rsqrtss %xmm0, %xmm1 +; X64-NEXT: xorps %xmm2, %xmm2 +; X64-NEXT: cmpeqss %xmm0, %xmm2 +; X64-NEXT: mulss %xmm1, %xmm0 +; X64-NEXT: movss {{.*}}(%rip), %xmm3 +; X64-NEXT: mulss %xmm0, %xmm3 +; X64-NEXT: mulss %xmm1, %xmm0 +; X64-NEXT: addss {{.*}}(%rip), %xmm0 +; X64-NEXT: mulss %xmm3, %xmm0 +; X64-NEXT: andnps %xmm0, %xmm2 +; X64-NEXT: movss {{.*}}(%rip), %xmm0 +; X64-NEXT: divss %xmm2, %xmm0 ; X64-NEXT: retq ; ; X86-LABEL: fast_recip_sqrt: |