diff options
author | Dan Gohman <gohman@apple.com> | 2010-07-12 20:46:04 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-07-12 20:46:04 +0000 |
commit | cfbf0ed8b03bbff5b4045c97dca3f93a4e6b834d (patch) | |
tree | d91d1048611de592ae82afb564786b97a5eb83a9 /test/CodeGen/X86/break-sse-dep.ll | |
parent | 4d5fe97c479ed3a2736755a3b821f5ff99c67cdc (diff) | |
download | external_llvm-cfbf0ed8b03bbff5b4045c97dca3f93a4e6b834d.zip external_llvm-cfbf0ed8b03bbff5b4045c97dca3f93a4e6b834d.tar.gz external_llvm-cfbf0ed8b03bbff5b4045c97dca3f93a4e6b834d.tar.bz2 |
Apply the SSE dependence idiom for SSE unary operations to
SD instructions too, in addition to SS instructions. And
add a comment about it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108191 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86/break-sse-dep.ll')
-rw-r--r-- | test/CodeGen/X86/break-sse-dep.ll | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/test/CodeGen/X86/break-sse-dep.ll b/test/CodeGen/X86/break-sse-dep.ll index 027d2f1..094cbc7 100644 --- a/test/CodeGen/X86/break-sse-dep.ll +++ b/test/CodeGen/X86/break-sse-dep.ll @@ -19,3 +19,44 @@ entry: %1 = fptrunc double %0 to float ret float %1 } + +define float @squirtf(float* %x) nounwind { +entry: +; CHECK: squirtf: +; CHECK: movss (%rdi), %xmm0 +; CHECK: sqrtss %xmm0, %xmm0 + %z = load float* %x + %t = call float @llvm.sqrt.f32(float %z) + ret float %t +} + +define double @squirt(double* %x) nounwind { +entry: +; CHECK: squirt: +; CHECK: movsd (%rdi), %xmm0 +; CHECK: sqrtsd %xmm0, %xmm0 + %z = load double* %x + %t = call double @llvm.sqrt.f64(double %z) + ret double %t +} + +define float @squirtf_size(float* %x) nounwind optsize { +entry: +; CHECK: squirtf_size: +; CHECK: sqrtss (%rdi), %xmm0 + %z = load float* %x + %t = call float @llvm.sqrt.f32(float %z) + ret float %t +} + +define double @squirt_size(double* %x) nounwind optsize { +entry: +; CHECK: squirt_size: +; CHECK: sqrtsd (%rdi), %xmm0 + %z = load double* %x + %t = call double @llvm.sqrt.f64(double %z) + ret double %t +} + +declare float @llvm.sqrt.f32(float) +declare double @llvm.sqrt.f64(double) |