OSDN Git Service

add a note
authorChris Lattner <sabre@nondot.org>
Thu, 12 Oct 2006 22:01:26 +0000 (22:01 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 12 Oct 2006 22:01:26 +0000 (22:01 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30921 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/README.txt

index 3ee32cc..84e1532 100644 (file)
@@ -734,3 +734,30 @@ _foo:
         ret
 
 //===---------------------------------------------------------------------===//
+
+Consider the expansion of:
+
+uint %test3(uint %X) {
+        %tmp1 = rem uint %X, 255
+        ret uint %tmp1
+}
+
+Currently it compiles to:
+
+...
+        movl $2155905153, %ecx
+        movl 8(%esp), %esi
+        movl %esi, %eax
+        mull %ecx
+...
+
+This could be "reassociated" into:
+
+        movl $2155905153, %eax
+        movl 8(%esp), %ecx
+        mull %ecx
+
+to avoid the copy.  In fact, the existing two-address stuff would do this
+except that mul isn't a commutative 2-addr instruction.  I guess this has
+to be done at isel time based on the #uses to mul?
+