summaryrefslogtreecommitdiff
path: root/lib/Target/X86/README-SSE.txt
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-10-04 05:52:13 +0000
committerChris Lattner <sabre@nondot.org>2006-10-04 05:52:13 +0000
commit68e8b9e775db991486c38146536b6fe1100c7cca (patch)
tree2116f2046556082c23617fe29d7a1a15f169ac38 /lib/Target/X86/README-SSE.txt
parent3a15503c82a804fcca47b5490e8fb42735ca4131 (diff)
downloadllvm-68e8b9e775db991486c38146536b6fe1100c7cca.tar.gz
llvm-68e8b9e775db991486c38146536b6fe1100c7cca.tar.bz2
llvm-68e8b9e775db991486c38146536b6fe1100c7cca.tar.xz
add a note :(
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30717 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/README-SSE.txt')
-rw-r--r--lib/Target/X86/README-SSE.txt24
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/Target/X86/README-SSE.txt b/lib/Target/X86/README-SSE.txt
index e019afa966..a22cebf165 100644
--- a/lib/Target/X86/README-SSE.txt
+++ b/lib/Target/X86/README-SSE.txt
@@ -4,6 +4,30 @@
//===---------------------------------------------------------------------===//
+There are serious issues folding loads into "scalar sse" intrinsics. For
+example, this:
+
+float minss4( float x, float *y ) {
+ return _mm_cvtss_f32(_mm_min_ss(_mm_set_ss(x),_mm_set_ss(*y)));
+}
+
+compiles to:
+
+_minss4:
+ subl $4, %esp
+ movl 12(%esp), %eax
+*** movss 8(%esp), %xmm0
+*** movss (%eax), %xmm1
+*** minss %xmm1, %xmm0
+ movss %xmm0, (%esp)
+ flds (%esp)
+ addl $4, %esp
+ ret
+
+Each operand of the minss is a load. At least one should be folded!
+
+//===---------------------------------------------------------------------===//
+
When compiled with unsafemath enabled, "main" should enable SSE DAZ mode and
other fast SSE modes.