diff options
author | Evan Cheng <evan.cheng@apple.com> | 2006-01-31 22:26:21 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2006-01-31 22:26:21 +0000 |
commit | 598463fde407795943e30a15aac12e0897fe4857 (patch) | |
tree | ad195c809c3ba6861c6929a6d32ca3071c57a67b | |
parent | b8973bd8f50d7321635e1e07b81a880a0828d185 (diff) | |
download | external_llvm-598463fde407795943e30a15aac12e0897fe4857.zip external_llvm-598463fde407795943e30a15aac12e0897fe4857.tar.gz external_llvm-598463fde407795943e30a15aac12e0897fe4857.tar.bz2 |
Remove entries on fabs and fneg. These are done.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25856 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/X86/README.txt | 49 |
1 files changed, 0 insertions, 49 deletions
diff --git a/lib/Target/X86/README.txt b/lib/Target/X86/README.txt index 40d9dbb..45f2f4a 100644 --- a/lib/Target/X86/README.txt +++ b/lib/Target/X86/README.txt @@ -215,53 +215,6 @@ when it can invert the result of the compare for free. //===---------------------------------------------------------------------===// -The code generated for 'abs' is truly aweful: - -float %foo(float %tmp.38) { - %tmp.39 = setgt float %tmp.38, 0.000000e+00 - %tmp.45 = sub float -0.000000e+00, %tmp.38 - %mem_tmp.0.0 = select bool %tmp.39, float %tmp.38, float %tmp.45 - ret float %mem_tmp.0.0 -} - -_foo: - subl $4, %esp - movss LCPI1_0, %xmm0 - movss 8(%esp), %xmm1 - subss %xmm1, %xmm0 - xorps %xmm2, %xmm2 - ucomiss %xmm2, %xmm1 - setp %al - seta %cl - orb %cl, %al - testb %al, %al - jne LBB_foo_2 # -LBB_foo_1: # - movss %xmm0, %xmm1 -LBB_foo_2: # - movss %xmm1, (%esp) - flds (%esp) - addl $4, %esp - ret - -This should be a high-priority to fix. With the fp-stack, this is a single -instruction. With SSE it could be far better than this. Why is the sequence -above using 'setp'? It shouldn't care about nan's. - -//===---------------------------------------------------------------------===// - -Is there a better way to implement Y = -X (fneg) than the literal code: - -float %test(float %X) { - %Y = sub float -0.0, %X - ret float %Y -} - - movss LCPI1_0, %xmm0 ;; load -0.0 - subss 8(%esp), %xmm0 ;; subtract - -//===---------------------------------------------------------------------===// - None of the SSE instructions are handled in X86RegisterInfo::foldMemoryOperand, which prevents the spiller from folding spill code into the instructions. @@ -358,5 +311,3 @@ _test: This is bad for register pressure, though the dag isel is producing a better schedule. :) - - |