add a note.
authorChris Lattner <sabre@nondot.org>
Thu, 4 Oct 2007 15:47:27 +0000 (15:47 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 4 Oct 2007 15:47:27 +0000 (15:47 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42607 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/README.txt

index 8d090dff3aeb175e23e7a95d0b44fa4035a0d3c9..9c507162cfbcf9f74badd533a68bbbd2d3a0495e 100644 (file)
@@ -1362,3 +1362,43 @@ _foo:
 
 //===---------------------------------------------------------------------===//
 
+We compile this:
+
+void compare (long long foo) {
+  if (foo < 4294967297LL)
+    abort();
+}
+
+to:
+
+_compare:
+        subl    $12, %esp
+        cmpl    $0, 16(%esp)
+        setne   %al
+        movzbw  %al, %ax
+        cmpl    $1, 20(%esp)
+        setg    %cl
+        movzbw  %cl, %cx
+        cmove   %ax, %cx
+        movw    %cx, %ax
+        testb   $1, %al
+        je      LBB1_2  # cond_true
+
+(also really horrible code on ppc).  This is due to the expand code for 64-bit
+compares.  GCC produces multiple branches, which is much nicer:
+
+_compare:
+        pushl   %ebp
+        movl    %esp, %ebp
+        subl    $8, %esp
+        movl    8(%ebp), %eax
+        movl    12(%ebp), %edx
+        subl    $1, %edx
+        jg     L5
+L7:
+        jl      L4
+        cmpl    $0, %eax
+        jbe      L4
+L5:
+
+//===---------------------------------------------------------------------===//