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 _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits