OSDN Git Service

add a note for something evan noticed
authorChris Lattner <sabre@nondot.org>
Sun, 5 Mar 2006 01:15:18 +0000 (01:15 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 5 Mar 2006 01:15:18 +0000 (01:15 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26539 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/README.txt

index e1bceb1..3e2eaef 100644 (file)
@@ -538,3 +538,31 @@ Currently the load folding imull has a higher complexity than the LEA32 pattern.
 
 Lower memcpy / memset to a series of SSE 128 bit move instructions when it's
 feasible.
+
+//===---------------------------------------------------------------------===//
+
+Teach the coallescer to commute 2-addr instructions, allowing us to eliminate
+the reg-reg copy in this example:
+
+float foo(int *x, float *y, unsigned c) {
+  float res = 0.0;
+  unsigned i;
+  for (i = 0; i < c; i++) {
+    float xx = (float)x[i];
+    xx = xx * y[i];
+    xx += res;
+    res = xx;
+  }
+  return res;
+}
+
+LBB_foo_3:      # no_exit
+        cvtsi2ss %XMM0, DWORD PTR [%EDX + 4*%ESI]
+        mulss %XMM0, DWORD PTR [%EAX + 4*%ESI]
+        addss %XMM0, %XMM1
+        inc %ESI
+        cmp %ESI, %ECX
+****    movaps %XMM1, %XMM0
+        jb LBB_foo_3    # no_exit
+
+//===---------------------------------------------------------------------===//