Commit Graph

35243 Commits

Author SHA1 Message Date
Chris Lattner
c0b42e9558 add a skeleton for part 4
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43246 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-23 06:27:55 +00:00
Chris Lattner
35abbf518f complete the codegen chapter
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43245 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-23 06:23:57 +00:00
Owen Anderson
bad82d8c94 Now with valid HTML 4.01!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43244 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-23 06:22:21 +00:00
Owen Anderson
a6f31fe9a1 Add a link to the "writing an optimization" tutorial.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43243 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-23 06:17:39 +00:00
Owen Anderson
a7dfb75726 Add downloadable code sample for tutorial 2.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43242 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-23 06:05:37 +00:00
Owen Anderson
c04ee69007 Add the second of the "basic topics" tutorials.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43241 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-23 06:03:24 +00:00
Owen Anderson
485eff5f90 Reorder the optimization and bitcode tutorials.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43240 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-23 06:02:14 +00:00
Chris Lattner
d93a584eae Fix up a broken #include, move code to its own section, add conclusions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43239 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-23 05:43:01 +00:00
Chris Lattner
d3f0cddb62 Finish up expr codegen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43238 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-23 04:51:30 +00:00
Chris Lattner
28571edba8 several improvements suggested by Dan, thanks!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43237 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-23 04:27:44 +00:00
Evan Cheng
4102eb57bb Fix memcpy lowering when addresses are 4-byte aligned but size is not multiple of 4.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43234 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 22:11:27 +00:00
Dan Gohman
ac72058dd6 The #include <iterator> isn't needed in this header.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43232 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 20:44:10 +00:00
Dan Gohman
02e4fa7d5f Strength reduction improvements.
- Avoid attempting stride-reuse in the case that there are users that
   aren't addresses. In that case, there will be places where the
   multiplications won't be folded away, so it's better to try to
   strength-reduce them.

 - Several SSE intrinsics have operands that strength-reduction can
   treat as addresses. The previous item makes this more visible, as
   any non-address use of an IV can inhibit stride-reuse.

 - Make ValidStride aware of whether there's likely to be a base
   register in the address computation. This prevents it from thinking
   that things like stride 9 are valid on x86 when the base register is
   already occupied.

Also, XFAIL the 2007-08-10-LEA16Use32.ll test; the new logic to avoid
stride-reuse elimintes the LEA in the loop, so the test is no longer
testing what it was intended to test.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43231 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 20:40:42 +00:00
Dan Gohman
8368805e25 Fix the folding of multiplication into addresses on x86, which was broken
by the recent {U,S}MUL_LOHI changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43230 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 20:22:24 +00:00
Evan Cheng
3311876c3c Use ptr type in the immediate field of a BxA instruction so we don't end up selecting 32-bit call instruction for ppc64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43228 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 19:46:19 +00:00
Evan Cheng
76500d52be Add missing paratheses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43227 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 19:42:28 +00:00
Chris Lattner
706a5e6124 add a 'don't use me' marker.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43226 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 19:41:46 +00:00
Duncan Sands
fec3ad3e5f Support for expanding extending loads of integers with
funky bit-widths.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43225 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 19:00:05 +00:00
Dan Gohman
246b2564d3 Move the SCEV object factors from being static members of the individual
SCEV subclasses to being non-static member functions of the ScalarEvolution
class.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43224 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 18:31:58 +00:00
Duncan Sands
245741d2a1 Fix up the logic for result expanding the various extension
operations so they work right for integers with funky
bit-widths.  For example, consider extending i48 to i64
on a 32 bit machine.  The i64 result is expanded to 2 x i32.
We know that the i48 operand will be promoted to i64, then
also expanded to 2 x i32.  If we had the expanded promoted
operand to hand, then expanding the result would be trivial.
Unfortunately at this stage we can only get hold of the
promoted operand.  So instead we kind of hand-expand, doing
explicit shifting and truncating to get the top and bottom
halves of the i64 operand into 2 x i32, which are then used
to expand the result.  This is harmless, because when the
promoted operand is finally expanded all this bit fiddling
turns into trivial operations which are eliminated either
by the expansion code itself or the DAG combiner.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43223 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 18:26:21 +00:00
Chris Lattner
bee175b3dc fit in 80 cols :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43222 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 16:44:31 +00:00
Chris Lattner
2e90204d59 start of chapter 3
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43221 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 07:01:42 +00:00
Owen Anderson
c6311b9d62 Fix a few typos I noticed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43220 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 06:48:28 +00:00
Owen Anderson
c333e4f0cb Add downloadable code samples.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43219 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 06:35:07 +00:00
Chris Lattner
e6c9104eb9 Check in part 2: parser and ast.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43218 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 06:34:15 +00:00
Owen Anderson
d2ae9a9481 Fix some code to make it actually work.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43217 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 06:29:31 +00:00
Bill Wendling
8c6c72d0ba Put correct link in example
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43216 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 05:10:05 +00:00
Chris Lattner
c38ef54f0b add part 1, review appreciated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43215 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 04:32:37 +00:00
Chris Lattner
9de3c39bcf add an outline for "part 2".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43214 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 03:19:07 +00:00
Chris Lattner
7d63bea49c rename tutorial 1 -> JITTutorial1, make unimplemented links not be dead links.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43213 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 03:12:24 +00:00
Evan Cheng
42b08be973 Fix an unfolding bug.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43212 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 03:03:20 +00:00
Evan Cheng
cbfb9b27ef - Only perform the unfolding optimization when the folding in question is modref.
- Remove a bogus assertion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43211 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 03:01:44 +00:00
Chris Lattner
d958a5a9fe add a mechanism for the JIT to invoke a function to lazily create functions as they are referenced.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43210 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 02:50:12 +00:00
Chris Lattner
ec2fcafbea llvm-gcc3 is dead, along with it __main.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43209 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-22 02:39:47 +00:00
Anton Korobeynikov
a024e8ceda Reg2Mem cleanup and optimizations:
- enable phi instructions demotion to stack
 - create alloca instructions in the entry block


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43208 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-21 23:05:16 +00:00
Chris Lattner
c6185038b8 LoadLibraryPermanently doesn't throw.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43207 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-21 22:58:11 +00:00
Chris Lattner
8b5295b7bb Add a convenience method for creating EE's.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43206 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-21 22:57:11 +00:00
Dale Johannesen
61c7ef34e3 Allow for copysign having f80 second argument.
Fixes 5550319.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43205 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-21 01:07:44 +00:00
Chris Lattner
d0e908e830 Add promote operand support for [su]int_to_fp.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43204 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-20 22:57:56 +00:00
Owen Anderson
0ec16ee98e Some improvements based on feedback from Anders.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43203 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-20 06:12:33 +00:00
Owen Anderson
7d69c95759 Fix some weird indenting in code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43202 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-20 05:41:39 +00:00
Owen Anderson
2d279f843c Use getOrInsertFunction() in tutorial 1. This makes for shorter, simpler, and better example code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43201 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-20 05:40:47 +00:00
Owen Anderson
6f1fd94fd3 Add the beginnings of an LLVM tutorial. If anyone has suggestions, comments,
or would like to contribute, let me know!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43200 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-20 05:23:06 +00:00
Chris Lattner
be5a0a4668 Add result promotion of FP_TO_*INT, fixing CodeGen/X86/trunc-to-bool.ll
with the new legalizer.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43199 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-20 04:32:38 +00:00
Chris Lattner
aaeb0c8666 simplify some code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43198 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-20 04:09:48 +00:00
Chris Lattner
d20154c762 Implement promote and expand for operands of memcpy and friends.
This fixes CodeGen/X86/mem*.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43197 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-20 04:07:07 +00:00
Evan Cheng
b9d5e7cdc9 Added missing curly braces which renders the if clause useless in debug build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43196 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-20 04:01:47 +00:00
Dale Johannesen
e526962fc5 Fix a few places vector operations were not getting
the operand's type from the right place.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43195 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-20 00:07:52 +00:00
Evan Cheng
f7c9695a38 Resolve unfold tables ambiguity.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43194 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-19 23:50:58 +00:00
Evan Cheng
40eaa99fa9 New test case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43193 91177308-0d34-0410-b5e6-96231b3b80d8
2007-10-19 22:05:00 +00:00