[llvm-commits] CVS: llvm/lib/Target/X86/README.txt

Chris Lattner lattner at cs.uiuc.edu
Thu Feb 2 11:43:40 PST 2006



Changes in directory llvm/lib/Target/X86:

README.txt updated: 1.44 -> 1.45
---
Log message:

more notes


---
Diffs of the changes:  (+52 -0)

 README.txt |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 52 insertions(+)


Index: llvm/lib/Target/X86/README.txt
diff -u llvm/lib/Target/X86/README.txt:1.44 llvm/lib/Target/X86/README.txt:1.45
--- llvm/lib/Target/X86/README.txt:1.44	Thu Feb  2 13:16:34 2006
+++ llvm/lib/Target/X86/README.txt	Thu Feb  2 13:43:28 2006
@@ -373,4 +373,56 @@
 
 Doing this correctly is tricky though, as the xor clobbers the flags.
 
+//===---------------------------------------------------------------------===//
+
+We should generate 'test' instead of 'cmp' in various cases, e.g.:
+
+bool %test(int %X) {
+        %Y = shl int %X, ubyte 1
+        %C = seteq int %Y, 0
+        ret bool %C
+}
+bool %test(int %X) {
+        %Y = and int %X, 8
+        %C = seteq int %Y, 0
+        ret bool %C
+}
+
+This may just be a matter of using 'test' to write bigger patterns for X86cmp.
+
+//===---------------------------------------------------------------------===//
+
+Evaluate whether using movapd for SSE reg-reg moves is faster than using
+movsd/movss for them.  It may eliminate false partial register dependences by
+writing the whole result register.
+
+//===---------------------------------------------------------------------===//
+
+SSE should implement 'select_cc' using 'emulated conditional moves' that use
+pcmp/pand/pandn/por to do a selection instead of a conditional branch:
+
+double %X(double %Y, double %Z, double %A, double %B) {
+        %C = setlt double %A, %B
+        %z = add double %Z, 0.0    ;; select operand is not a load
+        %D = select bool %C, double %Y, double %z
+        ret double %D
+}
+
+We currently emit:
+
+_X:
+        subl $12, %esp
+        xorpd %xmm0, %xmm0
+        addsd 24(%esp), %xmm0
+        movsd 32(%esp), %xmm1
+        movsd 16(%esp), %xmm2
+        ucomisd 40(%esp), %xmm1
+        jb LBB_X_2
+LBB_X_1:
+        movsd %xmm0, %xmm2
+LBB_X_2:
+        movsd %xmm2, (%esp)
+        fldl (%esp)
+        addl $12, %esp
+        ret
 






More information about the llvm-commits mailing list