add a note :(

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30717 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2006-10-04 05:52:13 +00:00
parent 3a15503c82
commit 68e8b9e775

View File

@ -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.