[llvm-commits] CVS: llvm/lib/Target/X86/README.txt
Chris Lattner
lattner at cs.uiuc.edu
Tue Sep 12 21:20:04 PDT 2006
Changes in directory llvm/lib/Target/X86:
README.txt updated: 1.131 -> 1.132
---
Log message:
new note
---
Diffs of the changes: (+32 -0)
README.txt | 32 ++++++++++++++++++++++++++++++++
1 files changed, 32 insertions(+)
Index: llvm/lib/Target/X86/README.txt
diff -u llvm/lib/Target/X86/README.txt:1.131 llvm/lib/Target/X86/README.txt:1.132
--- llvm/lib/Target/X86/README.txt:1.131 Tue Sep 12 22:54:54 2006
+++ llvm/lib/Target/X86/README.txt Tue Sep 12 23:19:50 2006
@@ -643,3 +643,35 @@
This is a simple DAGCombine to propagate the zext through the and.
//===---------------------------------------------------------------------===//
+
+GCC's ix86_expand_int_movcc function (in i386.c) has a ton of interesting
+simplifications for integer "x cmp y ? a : b". For example, instead of:
+
+int G;
+void f(int X, int Y) {
+ G = X < 0 ? 14 : 13;
+}
+
+compiling to:
+
+_f:
+ movl $14, %eax
+ movl $13, %ecx
+ movl 4(%esp), %edx
+ testl %edx, %edx
+ cmovl %eax, %ecx
+ movl %ecx, _G
+ ret
+
+it could be:
+_f:
+ movl 4(%esp), %eax
+ sarl $31, %eax
+ notl %eax
+ addl $14, %eax
+ movl %eax, _G
+ ret
+
+etc.
+
+//===---------------------------------------------------------------------===//
More information about the llvm-commits
mailing list