aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-01-26 20:12:07 +0000
committerChris Lattner <sabre@nondot.org>2008-01-26 20:12:07 +0000
commit4d53049c92c1d362db3e9f3697e398ec38934408 (patch)
treeb2a64506d9e68d88bdd43565181a412e24696f4a /lib
parentba96fbc164e90855a7773a67669e24bad4d674c8 (diff)
downloadexternal_llvm-4d53049c92c1d362db3e9f3697e398ec38934408.zip
external_llvm-4d53049c92c1d362db3e9f3697e398ec38934408.tar.gz
external_llvm-4d53049c92c1d362db3e9f3697e398ec38934408.tar.bz2
Add some notes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46405 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Target/X86/README-SSE.txt18
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/Target/X86/README-SSE.txt b/lib/Target/X86/README-SSE.txt
index cadfc20..fe6fa85 100644
--- a/lib/Target/X86/README-SSE.txt
+++ b/lib/Target/X86/README-SSE.txt
@@ -704,3 +704,21 @@ This currently compiles to:
We should use movmskp{s|d} instead.
+//===---------------------------------------------------------------------===//
+
+CodeGen/X86/vec_align.ll tests whether we can turn 4 scalar loads into a single
+(aligned) vector load. This functionality has a couple of problems.
+
+1. The code to infer alignment from loads of globals is in the X86 backend,
+ not the dag combiner. This is because dagcombine2 needs to be able to see
+ through the X86ISD::Wrapper node, which DAGCombine can't really do.
+2. The code for turning 4 x load into a single vector load is target
+ independent and should be moved to the dag combiner.
+3. The code for turning 4 x load into a vector load can only handle a direct
+ load from a global or a direct load from the stack. It should be generalized
+ to handle any load from P, P+4, P+8, P+12, where P can be anything.
+4. The alignment inference code cannot handle loads from globals in non-static
+ mode because it doesn't look through the extra dyld stub load. If you try
+ vec_align.ll without -relocation-model=static, you'll see what I mean.
+
+//===---------------------------------------------------------------------===//