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

Chris Lattner lattner at cs.uiuc.edu
Thu Feb 2 22:22:24 PST 2006



Changes in directory llvm/lib/Target/X86:

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

remove some target-indep and implemented notes


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

 README.txt |   44 --------------------------------------------
 1 files changed, 44 deletions(-)


Index: llvm/lib/Target/X86/README.txt
diff -u llvm/lib/Target/X86/README.txt:1.45 llvm/lib/Target/X86/README.txt:1.46
--- llvm/lib/Target/X86/README.txt:1.45	Thu Feb  2 13:43:28 2006
+++ llvm/lib/Target/X86/README.txt	Fri Feb  3 00:22:11 2006
@@ -76,11 +76,6 @@
 
 //===---------------------------------------------------------------------===//
 
-Should support emission of the bswap instruction, probably by adding a new
-DAG node for byte swapping.  Also useful on PPC which has byte-swapping loads.
-
-//===---------------------------------------------------------------------===//
-
 Compile this:
 _Bool f(_Bool a) { return a!=1; }
 
@@ -168,45 +163,6 @@
 
 //===---------------------------------------------------------------------===//
 
-For all targets, not just X86:
-When llvm.memcpy, llvm.memset, or llvm.memmove are lowered, they should be 
-optimized to a few store instructions if the source is constant and the length
-is smallish (< 8). This will greatly help some tests like Shootout/strcat.c
-
-//===---------------------------------------------------------------------===//
-
-Solve this DAG isel folding deficiency:
-
-int X, Y;
-
-void fn1(void)
-{
-  X = X | (Y << 3);
-}
-
-compiles to
-
-fn1:
-	movl Y, %eax
-	shll $3, %eax
-	orl X, %eax
-	movl %eax, X
-	ret
-
-The problem is the store's chain operand is not the load X but rather
-a TokenFactor of the load X and load Y, which prevents the folding.
-
-There are two ways to fix this:
-
-1. The dag combiner can start using alias analysis to realize that y/x
-   don't alias, making the store to X not dependent on the load from Y.
-2. The generated isel could be made smarter in the case it can't
-   disambiguate the pointers.
-
-Number 1 is the preferred solution.
-
-//===---------------------------------------------------------------------===//
-
 The instruction selector sometimes misses folding a load into a compare.  The
 pattern is written as (cmp reg, (load p)).  Because the compare isn't 
 commutative, it is not matched with the load on both sides.  The dag combiner






More information about the llvm-commits mailing list