Add a random not very important note
authorChris Lattner <sabre@nondot.org>
Thu, 28 Feb 2008 04:52:59 +0000 (04:52 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 28 Feb 2008 04:52:59 +0000 (04:52 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47704 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/README.txt

index eda93145f339986b5b4ee45c21be8c2a3ee02be8..fccddc79f46a2e26868c4722e9b7d729c5d6a4a0 100644 (file)
@@ -1687,3 +1687,41 @@ doload64:
         ret
 
 //===---------------------------------------------------------------------===//
+
+We compile this function:
+
+define i32 @foo(i32 %a, i32 %b, i32 %c, i8 zeroext  %d) nounwind  {
+entry:
+       %tmp2 = icmp eq i8 %d, 0                ; <i1> [#uses=1]
+       br i1 %tmp2, label %bb7, label %bb
+
+bb:            ; preds = %entry
+       %tmp6 = add i32 %b, %a          ; <i32> [#uses=1]
+       ret i32 %tmp6
+
+bb7:           ; preds = %entry
+       %tmp10 = sub i32 %a, %c         ; <i32> [#uses=1]
+       ret i32 %tmp10
+}
+
+to:
+
+_foo:
+       cmpb    $0, 16(%esp)
+       movl    12(%esp), %ecx
+       movl    8(%esp), %eax
+       movl    4(%esp), %edx
+       je      LBB1_2  # bb7
+LBB1_1:        # bb
+       addl    %edx, %eax
+       ret
+LBB1_2:        # bb7
+       movl    %edx, %eax
+       subl    %ecx, %eax
+       ret
+
+The coallescer could coallesce "edx" with "eax" to avoid the movl in LBB1_2
+if it commuted the addl in LBB1_1.
+
+//===---------------------------------------------------------------------===//
+