move PR9803 to this readme.
[oota-llvm.git] / lib / Target / X86 / README.txt
index 1902485c18206caa37369e4f3054277057ba1090..8237fbd094250af0315e0b7f200b985abd02e9eb 100644 (file)
@@ -2032,3 +2032,31 @@ clamp_float:                            # @clamp_float
 with -ffast-math.
 
 //===---------------------------------------------------------------------===//
+
+This function (from PR9803):
+
+int clamp2(int a) {
+        if (a > 5)
+                a = 5;
+        if (a < 0) 
+                return 0;
+        return a;
+}
+
+Compiles to:
+
+_clamp2:                                ## @clamp2
+        pushq   %rbp
+        movq    %rsp, %rbp
+        cmpl    $5, %edi
+        movl    $5, %ecx
+        cmovlel %edi, %ecx
+        testl   %ecx, %ecx
+        movl    $0, %eax
+        cmovnsl %ecx, %eax
+        popq    %rbp
+        ret
+
+The move of 0 could be scheduled above the test to make it is xor reg,reg.
+
+//===---------------------------------------------------------------------===//