add a high-priority SSE issue from sgefa
authorChris Lattner <sabre@nondot.org>
Sun, 29 Jan 2006 09:14:47 +0000 (09:14 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 29 Jan 2006 09:14:47 +0000 (09:14 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25787 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/README.txt

index 0074eb4336933025ac563f386d7a921157228583..2fdd352ffd7799621262776b6ec3a204ca580a39 100644 (file)
@@ -213,4 +213,38 @@ commutative, it is not matched with the load on both sides.  The dag combiner
 should be made smart enough to cannonicalize the load into the RHS of a compare
 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.